7
7
"gopherLand2/src/game/entity"
8
8
"gopherLand2/src/game/gameMap"
9
9
"gopherLand2/src/game/ressources"
10
- "time "
10
+ "gopherLand2/src/localInstance/input "
11
11
)
12
12
13
13
type Game struct {
@@ -19,45 +19,44 @@ type Game struct {
19
19
GameMap gameMap.GameMap // A map
20
20
21
21
// Local Player
22
- Player entity.Player // Playable player
23
- Channel chan string // Controls the player
24
- Tick int // Tick of the game
25
- TickMS int // Delay between each tick in ms
22
+ Player entity.Player // Playable player
23
+ Tick int // Tick of the game
24
+ TickMS int // Delay between each tick in ms
25
+
26
+ // PlayerInputChannel for getting input of player
27
+ PlayerInputChannel chan input.KeyPressed // Controls the player
26
28
27
29
// Multiplayer data
28
- PlayerPos map [string ]entity.Pos
30
+ PlayerInfos map [string ]entity.PlayerInfo
29
31
30
32
// Channels for multiplayer
31
- PlayerPosChannel chan entity.PlayerInfo // Channel for sending own player position if multiplayer
32
- AllPlayersPosChannel chan []byte // Channel for receiving all players positions if multiplayer
33
+ PlayerPosChannel chan entity.PlayerInfo // Channel for sending own player position if multiplayer
34
+ AllPlayerInfosChannel chan []byte // Channel for receiving all players positions if multiplayer
33
35
}
34
36
35
37
// Create a new game with a channel that receive players' actions
36
- func New (ch chan string ) Game {
38
+ func New (ch chan input. KeyPressed ) Game {
37
39
// Load game's config
38
40
cfg := loadConfig ()
39
41
40
42
// Create Game
41
43
g := Game {
42
- Config : cfg ,
43
- Ressources : ressources .New (cfg .Size ),
44
- GameMap : gameMap .New (),
45
- Player : entity.Player {},
46
- Channel : ch ,
47
- Tick : 0 ,
48
- TickMS : cfg .TickMS ,
44
+ Config : cfg ,
45
+ Ressources : ressources .New (cfg .Size ),
46
+ GameMap : gameMap .New (),
47
+ Player : entity.Player {},
48
+ PlayerInputChannel : ch ,
49
+ Tick : 0 ,
50
+ TickMS : cfg .TickMS ,
49
51
}
50
52
51
53
return g
52
54
}
53
55
54
- // Run the game
56
+ // Run the game, function called by ebiten's Update() function (in file gameWindow.go)
55
57
func (g * Game ) Run () {
56
- for {
57
- g .Tick ++
58
- time .Sleep (time .Duration (g .TickMS ) * time .Millisecond )
59
- g .ComputeTick ()
60
- }
58
+ g .Tick ++
59
+ g .ComputeTick ()
61
60
}
62
61
63
62
// Add a new player
@@ -79,24 +78,21 @@ func (g *Game) SetPlayerNickname(nickname string) {
79
78
}
80
79
81
80
// Bind a channel for sending to multiplayer server player's data
82
- func (g * Game ) BindMultiplayerChannels (playerPosChannel chan entity.PlayerInfo , allPlayersPosChannel chan []byte ) {
81
+ func (g * Game ) BindMultiplayerChannels (playerPosChannel chan entity.PlayerInfo , allPlayerInfosChannel chan []byte ) {
83
82
g .PlayerPosChannel = playerPosChannel
84
- g .AllPlayersPosChannel = allPlayersPosChannel
83
+ g .AllPlayerInfosChannel = allPlayerInfosChannel
85
84
go g .UpdateAllPlayers ()
86
85
}
87
86
88
87
// Update all player in case of server send data
89
88
func (g * Game ) UpdateAllPlayers () {
90
89
for {
91
- data := <- g .AllPlayersPosChannel
92
- playersConnected := map [string ]entity.Pos {}
90
+ data := <- g .AllPlayerInfosChannel
91
+ playersConnected := map [string ]entity.PlayerInfo {}
93
92
err := json .Unmarshal (bytes .Trim (data , string ([]byte {0 })), & playersConnected )
94
93
if err != nil {
95
- fmt .Println ("Error parsing players' data sent by server: " + err .Error ())
96
-
97
- fmt .Println (string (data ))
94
+ fmt .Println ("Error parsing players' data sent by server: " + string (data ) + " - Error:" + err .Error ())
98
95
}
99
-
100
- g .PlayerPos = playersConnected
96
+ g .PlayerInfos = playersConnected
101
97
}
102
98
}
0 commit comments