-
Notifications
You must be signed in to change notification settings - Fork 1
/
api.go
194 lines (170 loc) · 4.48 KB
/
api.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
package engosdl
import (
"fmt"
"os"
"time"
"github.com/rs/zerolog"
"github.com/veandco/go-sdl2/sdl"
)
// Logger is the system logger to be used by the application.
var Logger zerolog.Logger
// gameEngine is the game engine singlenton instance.
var gameEngine *Engine
// componentManager is the component manager in charge of tracking all
// components registered in the application.
var componentManager *ComponentManager
func init() {
file, err := os.Create("engosdl.log")
if err != nil {
panic(err)
}
//"2006-01-02T15:04:05.999999999Z07:00"
zerolog.TimeFieldFormat = time.RFC3339Nano
Logger = zerolog.New(file).With().Timestamp().Logger()
Logger.Info().Msg("start engosdl")
Logger.Info().Msg("create component manager")
componentManager = NewComponentManager("component-manager")
}
// Frames per second constants.
const (
_fps uint32 = 30
_delay uint32 = 1000 / _fps
)
// Graphics format constants.
const (
// FormatBMP identifies sprites in BMP format.
FormatBMP int = 1
// FormatPNG identifies sprites in PNG format.
FormatPNG int = 2
// FormatJPG identifies sprites in JPG format.
FormatJPG int = 3
)
// Sound format constants.
const (
// SoundMP3 identifies sound in MP3 format.
SoundMP3 int = 1
// SoundWAV identifies sound in WAV format.
SoundWAV int = 2
)
// Movement constants.
const (
// No Movement.
MoveNo int = 0
// Move up in the screen (negative Y axis).
MoveUp int = 1
// Move down in the screen (positive Y axis).
MoveDown int = 2
// Move left in the screen (negative X axis).
MoveLeft int = 4
// Move right in the screen (positive X axis).
MoveRight int = 8
)
// Location constants.
const (
// Up location.
Up int = 1
// Down location.
Down int = 2
// Left location.
Left int = 3
// Right location.
Right int = 4
)
// Collision box modes.
const (
// Box or rectangle mode. Collision box is a rectangle.
ModeBox int = 1
// Circle mode. Collision box is a circle.
ModeCircle int = 2
)
// GetComponentManager gets the component manager.
func GetComponentManager() *ComponentManager {
return componentManager
}
// GetEngine returns the singleton game engine.
func GetEngine() *Engine {
return gameEngine
}
// GetCursorManager returns the engine cursor manager.
func GetCursorManager() ICursorManager {
if engine := GetEngine(); engine != nil {
return engine.GetCursorManager()
}
return nil
}
// GetDelegateManager returns the engine delegate manager.
func GetDelegateManager() IDelegateManager {
if engine := GetEngine(); engine != nil {
return engine.GetDelegateManager()
}
return nil
}
// GetEventManager returns the engine event manager.
func GetEventManager() IEventManager {
if engine := GetEngine(); engine != nil {
return engine.GetEventManager()
}
return nil
}
// GetFontManager returns the engine font manager.
func GetFontManager() IFontManager {
if engine := GetEngine(); engine != nil {
return engine.GetFontManager()
}
return nil
}
// GetGameManager returns the engine game manager.
func GetGameManager() IGameManager {
if engine := GetEngine(); engine != nil {
return engine.GetGameManager()
}
return nil
}
// GetRenderer returns the engine renderer.
func GetRenderer() *sdl.Renderer {
if engine := GetEngine(); engine != nil {
return engine.GetRenderer()
}
return nil
}
// GetResourceManager returns the engine resource handler.
func GetResourceManager() IResourceManager {
if engine := GetEngine(); engine != nil {
return engine.GetResourceManager()
}
return nil
}
// GetSceneManager returns the engine scene handler.
func GetSceneManager() ISceneManager {
if engine := GetEngine(); engine != nil {
return engine.GetSceneManager()
}
return nil
}
// GetSoundManager returns the engine sound handler.
func GetSoundManager() ISoundManager {
if engine := GetEngine(); engine != nil {
return engine.GetSoundManager()
}
return nil
}
// EntitiesInCollision identifies entities being passed in a collision
// notification.
func EntitiesInCollision(entity IEntity, params ...interface{}) (IEntity, IEntity, error) {
collisionEntityOne := params[0].(*Entity)
collisionEntityTwo := params[1].(*Entity)
var me, other IEntity
var result error = nil
if entity.GetID() == collisionEntityOne.GetID() {
me = collisionEntityOne
other = collisionEntityTwo
} else if entity.GetID() == collisionEntityTwo.GetID() {
me = collisionEntityTwo
other = collisionEntityOne
} else {
me = collisionEntityOne
other = collisionEntityTwo
result = fmt.Errorf("entity %s not found in collision", entity.GetName())
}
return me, other, result
}