goonscape/game/test_helpers.go

142 lines
2.9 KiB
Go

package game
import (
"sync"
"gitea.boner.be/bdnugget/goonscape/game/mock"
rl "github.com/gen2brain/raylib-go/raylib"
)
var (
mockInput struct {
sync.Mutex
keyPressed map[int32]bool
keyDown map[int32]bool
mousePressed map[int32]bool
mousePosition rl.Vector2
mouseRay rl.Ray
mouseWheel float32
charPressed rune
}
)
func init() {
resetMockInput()
setupMockFunctions()
}
func setupMockFunctions() {
mock.IsKeyPressed = mockIsKeyPressed
mock.IsKeyDown = mockIsKeyDown
mock.IsMouseButtonPressed = mockIsMouseButtonPressed
mock.GetMousePosition = mockGetMousePosition
mock.GetMouseRay = mockGetMouseRay
mock.GetMouseWheelMove = mockGetMouseWheelMove
mock.GetCharPressed = mockGetCharPressed
}
func resetMockInput() {
mockInput.Lock()
defer mockInput.Unlock()
mockInput.keyPressed = make(map[int32]bool)
mockInput.keyDown = make(map[int32]bool)
mockInput.mousePressed = make(map[int32]bool)
mockInput.mousePosition = rl.Vector2{}
mockInput.mouseRay = rl.Ray{}
mockInput.mouseWheel = 0
mockInput.charPressed = 0
}
// Mock input simulation functions
func simulateKeyPress(key int32) {
mockInput.Lock()
mockInput.keyPressed[key] = true
mockInput.Unlock()
}
func simulateKeyDown(key int32, isDown bool) {
mockInput.Lock()
mockInput.keyDown[key] = isDown
mockInput.Unlock()
}
func simulateMouseButton(button int32, isPressed bool) {
mockInput.Lock()
mockInput.mousePressed[button] = isPressed
mockInput.Unlock()
}
func simulateMousePosition(x, y float32) {
mockInput.Lock()
mockInput.mousePosition = rl.Vector2{X: x, Y: y}
mockInput.Unlock()
}
func simulateMouseRay(ray rl.Ray) {
mockInput.Lock()
mockInput.mouseRay = ray
mockInput.Unlock()
}
func simulateMouseWheel(move float32) {
mockInput.Lock()
mockInput.mouseWheel = move
mockInput.Unlock()
}
func simulateCharInput(char rune) {
mockInput.Lock()
mockInput.charPressed = char
mockInput.Unlock()
}
// Mock raylib functions
func mockIsKeyPressed(key int32) bool {
mockInput.Lock()
defer mockInput.Unlock()
return mockInput.keyPressed[key]
}
func mockIsKeyDown(key int32) bool {
mockInput.Lock()
defer mockInput.Unlock()
return mockInput.keyDown[key]
}
func mockIsMouseButtonPressed(button int32) bool {
mockInput.Lock()
defer mockInput.Unlock()
return mockInput.mousePressed[button]
}
func mockGetMousePosition() rl.Vector2 {
mockInput.Lock()
defer mockInput.Unlock()
return mockInput.mousePosition
}
func mockGetMouseRay(mousePos rl.Vector2, camera rl.Camera3D) rl.Ray {
mockInput.Lock()
defer mockInput.Unlock()
return mockInput.mouseRay
}
func mockGetMouseWheelMove() float32 {
mockInput.Lock()
defer mockInput.Unlock()
return mockInput.mouseWheel
}
func mockGetCharPressed() rune {
mockInput.Lock()
defer mockInput.Unlock()
return mockInput.charPressed
}
// Add more mock implementations...
// Add this helper function
func toInt32(button rl.MouseButton) int32 {
return int32(button)
}