Mercurial > sypikslang
annotate gamelib/tests/repl_game.py @ 224:e4f9513c9dd0
Include mission name in the results
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 12 May 2012 22:33:05 +0200 |
parents | a40a76012bd7 |
children |
rev | line source |
---|---|
23
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
1 from gamelib.gamestate import Game |
80
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
58
diff
changeset
|
2 from gamelib.constants import SUCCESS, FAILURE, NEW_SCIENCE, NEW_SCHEMATIC |
23
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
3 |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
4 |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
5 class ReplGame(object): |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
6 def __init__(self, init_data=None): |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
7 self.game = Game(init_data=init_data) |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
8 self._begin_turn() |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
9 |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
10 def _begin_turn(self): |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
11 self.game.start_turn() |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
12 self.display_state() |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
13 |
29 | 14 def display_turn_data(self): |
28 | 15 print "Repute:", self.game.reputation |
16 print "Moneys:", self.game.money | |
26 | 17 print "Points:", self.game.points |
29 | 18 |
19 def display_science(self): | |
23
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
20 print "Science:" |
26 | 21 self.science = [] |
23
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
22 for science in self.game.lab.science: |
58
52913ba12988
Check for multiple points in can_spend
Neil Muller <drnlmuller@gmail.com>
parents:
33
diff
changeset
|
23 if science.can_spend(self.game.lab, 1): |
26 | 24 self.science.append(science) |
25 print " %s. %s (%s)" % ( | |
26 len(self.science), science.NAME, science.points) | |
27 else: | |
28 print " -- %s (%s)" % (science.NAME, science.points) | |
29 | 29 |
30 def display_equipment(self): | |
31 print "Equipment:" | |
32 self.equipment = [] | |
33 for equipment in self.game.get_available_equipment(): | |
34 self.equipment.append(equipment) | |
35 print " %s. %s (%s) $%s" % ( | |
36 len(self.equipment), equipment.NAME, equipment.points, | |
37 equipment.COST) | |
38 | |
39 def display_missions(self): | |
28 | 40 print "Missions:" |
29 | 41 self.missions = [] |
33
12c33aac7684
Gate certain missions by reputation.
Jeremy Thurgood <firxen@gmail.com>
parents:
29
diff
changeset
|
42 for mission in self.game.get_available_missions(): |
29 | 43 self.missions.append(mission) |
44 print " %s. %s\n %s" % ( | |
45 len(self.missions), mission.NAME, mission.SHORT_DESCRIPTION) | |
46 | |
47 def display_state(self): | |
48 print "-" * 10, "NEW TURN", "-" * 30 | |
49 self.display_turn_data() | |
50 print "" | |
51 self.display_science() | |
52 print "" | |
53 self.display_equipment() | |
54 print "" | |
55 self.display_missions() | |
28 | 56 print "-" * 50 |
23
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
57 |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
58 def next_turn(self, research_list, missions): |
29 | 59 missions = [(self.missions[i[0] - 1], |
60 [self.equipment[i[j] - 1] for j in range(1, len(i))]) | |
61 for i in missions] | |
26 | 62 research_list = [self.science[i - 1] for i in research_list] |
23
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
63 self.game.cur_allocation.extend(research_list) |
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
64 self.game.cur_missions.extend(missions) |
29 | 65 print "-" * 10, "RESULTS", "-" * 31 |
80
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
58
diff
changeset
|
66 messages = self.game.end_turn() |
224
e4f9513c9dd0
Include mission name in the results
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
67 for miss, msg_type, msg in messages: |
e4f9513c9dd0
Include mission name in the results
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
68 if miss: |
e4f9513c9dd0
Include mission name in the results
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
69 print 'Mission: %s' % miss |
80
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
58
diff
changeset
|
70 if msg_type == NEW_SCIENCE or msg_type == NEW_SCHEMATIC: |
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
58
diff
changeset
|
71 print msg |
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
58
diff
changeset
|
72 elif msg_type == FAILURE: |
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
58
diff
changeset
|
73 print 'Mission failure: %s' % msg |
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
58
diff
changeset
|
74 elif msg_type == SUCCESS: |
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
58
diff
changeset
|
75 print 'Success: %s' % msg |
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
58
diff
changeset
|
76 else: |
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
58
diff
changeset
|
77 print 'Unhandled result %d: %s' % (msg_type, msg) |
23
f6a3b213857b
Fix up some game state logic, add very basic REPL game interface.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
78 self._begin_turn() |