Skip to content

Commit ae208d7

Browse files
author
p.witvoet
committed
- implemented unit loading from file (support for pre-deployed scenario's)
- initial situation update is now correctly sent to all observer clients
1 parent ac568f7 commit ae208d7

23 files changed

+274
-173
lines changed

levels/bean_island.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
#================================================================================
2929
# Player starting buildings
30-
player1 = level.addPlayer()
30+
player1 = level.getPlayerData(0)
3131
player1.addBuilding(level.getBuildingAtPosition(Point(1, 4)))
3232
player1.addBuilding(level.getBuildingAtPosition(Point(2, 4)))
3333
player1.addBuilding(level.getBuildingAtPosition(Point(1, 6)))
@@ -40,7 +40,7 @@
4040
player1.addBuilding(level.getBuildingAtPosition(Point(1, 10)))
4141
player1.addBuilding(level.getBuildingAtPosition(Point(2, 10)))
4242

43-
player2 = level.addPlayer()
43+
player2 = level.getPlayerData(1)
4444
player2.addBuilding(level.getBuildingAtPosition(Point(13, 4)))
4545
player2.addBuilding(level.getBuildingAtPosition(Point(14, 4)))
4646
player2.addBuilding(level.getBuildingAtPosition(Point(12, 6)))

levels/central_island.aws

0 Bytes
Binary file not shown.

levels/crater_isle.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
#================================================================================
2929
# Player starting level.getBuildingAtPosition(Point(Point(
30-
player1 = level.addPlayer()
30+
player1 = level.getPlayerData(0)
3131
player1.addBuilding(level.getBuildingAtPosition(Point(5, 3)))
3232
player1.addBuilding(level.getBuildingAtPosition(Point(6, 3)))
3333
player1.addBuilding(level.getBuildingAtPosition(Point(7, 3)))
@@ -40,7 +40,7 @@
4040
player1.addBuilding(level.getBuildingAtPosition(Point(9, 5)))
4141
player1.addBuilding(level.getBuildingAtPosition(Point(6, 6)))
4242

43-
player2 = level.addPlayer()
43+
player2 = level.getPlayerData(1)
4444
player2.addBuilding(level.getBuildingAtPosition(Point(11, 12)))
4545
player2.addBuilding(level.getBuildingAtPosition(Point(10, 13)))
4646
player2.addBuilding(level.getBuildingAtPosition(Point(11, 13)))

levels/duo_falls.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
#================================================================================
2727
# Player starting buildings
28-
player1 = level.addPlayer()
28+
player1 = level.getPlayerData(0)
2929
player1.addBuilding(level.getBuildingAtPosition(Point(3, 5)))
3030
player1.addBuilding(level.getBuildingAtPosition(Point(5, 5)))
3131
player1.addBuilding(level.getBuildingAtPosition(Point(4, 6)))
@@ -38,7 +38,7 @@
3838
player1.addBuilding(level.getBuildingAtPosition(Point(5, 9)))
3939
player1.addBuilding(level.getBuildingAtPosition(Point(6, 9)))
4040

41-
player2 = level.addPlayer()
41+
player2 = level.getPlayerData(1)
4242
player2.addBuilding(level.getBuildingAtPosition(Point(21, 2)))
4343
player2.addBuilding(level.getBuildingAtPosition(Point(22, 2)))
4444
player2.addBuilding(level.getBuildingAtPosition(Point(25, 2)))

levels/lost_river.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@
2727

2828
#================================================================================
2929
# Player starting buildings
30-
player1 = level.addPlayer()
30+
player1 = level.getPlayerData(0)
3131
player1.addBuilding(level.getBuildingAtPosition(Point(2, 8)))
3232
player1.addBuilding(level.getBuildingAtPosition(Point(4, 8)))
3333
player1.addBuilding(level.getBuildingAtPosition(Point(1, 9)))
3434
player1.addBuilding(level.getBuildingAtPosition(Point(2, 9)))
3535
player1.addBuilding(level.getBuildingAtPosition(Point(3, 9)))
3636
player1.addBuilding(level.getBuildingAtPosition(Point(2, 10)))
3737

38-
player2 = level.addPlayer()
38+
player2 = level.getPlayerData(1)
3939
player2.addBuilding(level.getBuildingAtPosition(Point(29, 6)))
4040
player2.addBuilding(level.getBuildingAtPosition(Point(30, 6)))
4141
player2.addBuilding(level.getBuildingAtPosition(Point(28, 7)))

levels/mirror_islands.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@
2727

2828
#================================================================================
2929
# Player starting buildings
30-
player1 = level.addPlayer()
30+
player1 = level.getPlayerData(0)
3131
player1.addBuilding(level.getBuildingAtPosition(Point(1, 6)))
3232
player1.addBuilding(level.getBuildingAtPosition(Point(3, 6)))
3333
player1.addBuilding(level.getBuildingAtPosition(Point(1, 7)))
3434
player1.addBuilding(level.getBuildingAtPosition(Point(2, 7)))
3535
player1.addBuilding(level.getBuildingAtPosition(Point(1, 8)))
3636
player1.addBuilding(level.getBuildingAtPosition(Point(3, 8)))
3737

38-
player2 = level.addPlayer()
38+
player2 = level.getPlayerData(1)
3939
player2.addBuilding(level.getBuildingAtPosition(Point(22, 2)))
4040
player2.addBuilding(level.getBuildingAtPosition(Point(26, 2)))
4141
player2.addBuilding(level.getBuildingAtPosition(Point(29, 2)))

levels/spann_island.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222

2323
#================================================================================
2424
# Player starting buildings
25-
player1 = level.addPlayer()
25+
player1 = level.getPlayerData(0)
2626
player1.addBuilding(level.getBuildingAtPosition(Point(1, 5)))
2727
player1.addBuilding(level.getBuildingAtPosition(Point(1, 6)))
2828
player1.addBuilding(level.getBuildingAtPosition(Point(2, 6)))
2929
player1.addBuilding(level.getBuildingAtPosition(Point(2, 7)))
3030
player1.addBuilding(level.getBuildingAtPosition(Point(3, 7)))
3131

32-
player2 = level.addPlayer()
32+
player2 = level.getPlayerData(1)
3333
player2.addBuilding(level.getBuildingAtPosition(Point(11, 1)))
3434
player2.addBuilding(level.getBuildingAtPosition(Point(13, 1)))
3535
player2.addBuilding(level.getBuildingAtPosition(Point(12, 2)))

levels/spring_lakes.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -40,25 +40,25 @@
4040

4141
#================================================================================
4242
# Player starting buildings
43-
player1 = level.addPlayer()
43+
player1 = level.getPlayerData(0)
4444
player1.addBuilding(level.getBuildingAtPosition(Point(6, 6)))
4545
player1.addBuilding(level.getBuildingAtPosition(Point(8, 6)))
4646
player1.addBuilding(level.getBuildingAtPosition(Point(6, 8)))
4747
player1.addBuilding(level.getBuildingAtPosition(Point(8, 8)))
4848

49-
player2 = level.addPlayer()
49+
player2 = level.getPlayerData(1)
5050
player2.addBuilding(level.getBuildingAtPosition(Point(20, 2)))
5151
player2.addBuilding(level.getBuildingAtPosition(Point(22, 2)))
5252
player2.addBuilding(level.getBuildingAtPosition(Point(20, 4)))
5353
player2.addBuilding(level.getBuildingAtPosition(Point(22, 4)))
5454

55-
player3 = level.addPlayer()
55+
player3 = level.getPlayerData(2)
5656
player3.addBuilding(level.getBuildingAtPosition(Point(6, 22)))
5757
player3.addBuilding(level.getBuildingAtPosition(Point(8, 22)))
5858
player3.addBuilding(level.getBuildingAtPosition(Point(6, 24)))
5959
player3.addBuilding(level.getBuildingAtPosition(Point(8, 24)))
6060

61-
player4 = level.addPlayer()
61+
player4 = level.getPlayerData(4)
6262
player4.addBuilding(level.getBuildingAtPosition(Point(24, 18)))
6363
player4.addBuilding(level.getBuildingAtPosition(Point(26, 18)))
6464
player4.addBuilding(level.getBuildingAtPosition(Point(24, 20)))

run server.bat

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ TITLE AI Wars - Server
22

33
CD source
44

5-
python run_server.py localhost 7777 river_bridges.aws aiwars.py
5+
python run_server.py localhost 7777 central_island.aws aiwars.py
66

77
PAUSE

source/core/buildingUpdate.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import copy
22
from building import *
3+
from point import *
34
from serialization import *
45

56

@@ -42,7 +43,7 @@ def fromStream(self, stream):
4243

4344
self.oldBuilding, readBytesCount = self.__buildingFromStream(stream[totalReadBytesCount:], oldBuildingID)
4445
totalReadBytesCount += readBytesCount
45-
self.newBuilding, readBytesCount = self.__buildingFromStreamFromStream(stream[totalReadBytesCount:], newBuildingID)
46+
self.newBuilding, readBytesCount = self.__buildingFromStream(stream[totalReadBytesCount:], newBuildingID)
4647
totalReadBytesCount += readBytesCount
4748

4849
return totalReadBytesCount
@@ -52,7 +53,7 @@ def __buildingFromStream(self, stream, buildingID):
5253
if buildingID == 0:
5354
return (None, 0)
5455
else:
55-
building = Building(self.game.gameDatabase, None, 0, Point(0, 0), None)
56+
building = Building(self.game, None, 0, Point(0, 0), None)
5657
readBytesCount = building.fromStream(stream)
5758
return (building, readBytesCount)
5859
#

source/core/clientPlayerController.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,7 @@ def startGame(self, message):
167167
self.client.sendMessage(STC_START_GAME, message)
168168
#
169169

170-
# Player-specific
171-
172-
173-
# Observer-specific
170+
def sendSituationUpdate(self, message):
171+
self.client.sendMessage(STC_SITUATION_UPDATE, message)
172+
#
174173
#

source/core/level.py

+14-5
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,20 @@ def reset(self):
2727
self.author = 'Unknown'
2828
self.description = 'No description'
2929
self.supportedDatabases = []
30-
self.playersData = []
30+
self.playersData = {}
3131

3232
self.terrain = []
3333
self.buildings = []
3434
#
3535

36+
def getBuildingsForPlayerNumber(self, playerNumber):
37+
return self.playersData.values()[playerNumber].buildings
38+
#
39+
40+
def getUnitsForPlayerNumber(self, playerNumber):
41+
return self.playersData.values()[playerNumber].units
42+
#
43+
3644
def loadFromFile(self, filename):
3745
extension = os.path.splitext(filename)[1]
3846
if self.mapLoaders.has_key(extension):
@@ -65,10 +73,11 @@ def addBuilding(self, building):
6573
self.buildings.append(building)
6674
#
6775

68-
def addPlayer(self):
69-
playerData = LevelPlayerData()
70-
self.playersData.append(playerData)
71-
return playerData
76+
def getPlayerData(self, team):
77+
if not self.playersData.has_key(team):
78+
playerData = LevelPlayerData()
79+
self.playersData[team] = playerData
80+
return self.playersData[team]
7281
#
7382

7483
def getPlayersCount(self):

0 commit comments

Comments
 (0)