Mercurial > skaapsteker
annotate scripts/npc-test @ 227:13b912f40a10
Add --all option for testing NPCs and sprite creation.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Thu, 07 Apr 2011 01:35:26 +0200 |
parents | 2cbeeef5867c |
children | a661b6621ec4 |
rev | line source |
---|---|
153
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
2 "Skaapsteker npc tester" |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
3 |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
4 import os.path |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
5 import sys |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
6 import optparse |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
7 from pprint import pprint |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
8 |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
9 sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
10 |
196
a4c4e2f34162
Remove DummyWorld since npc-test now uses the real world.
Simon Cross <hodgestar@gmail.com>
parents:
195
diff
changeset
|
11 from skaapsteker.dialogue import DSM, DsmEvent |
195 | 12 from skaapsteker.gamestate import GameState |
153
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
13 |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
14 |
227
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
15 def run(npc_name, game_json): |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
16 game = GameState(game_json) |
222 | 17 npc = getattr(game.world.npcs, npc_name) |
18 dsm = DSM(npc_name, game.world, npc.dsm, npc.state) | |
153
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
19 |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
20 print "States:" |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
21 print "-------" |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
22 pprint(dsm.states.keys()) |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
23 print |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
24 |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
25 while True: |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
26 state = dsm.get_state() |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
27 print "%s:" % dsm.state, state.text |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
28 print "--" |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
29 for i, choice in state.choices: |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
30 print "%d: %s" % (i, choice) |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
31 print "L: Leave" |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
32 print "--" |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
33 |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
34 key = raw_input("Choice? ") |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
35 key = key.strip().upper() |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
36 if key == "L": |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
37 break |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
38 elif key.isdigit(): |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
39 dsm.choice(int(key)) |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
40 |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
41 print "--" |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
42 |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
43 |
227
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
44 def test_all(game_json): |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
45 game = GameState(game_json) |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
46 |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
47 print "Testing NPCs" |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
48 print "============" |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
49 for npc_name in game.world.npcs: |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
50 print "Checking", npc_name, "...", |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
51 npc = getattr(game.world.npcs, npc_name) |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
52 dsm = DSM(npc_name, game.world, npc.dsm, npc.state) |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
53 print "ok" |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
54 print |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
55 |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
56 print "Testing Sprites" |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
57 print "===============" |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
58 for level in game.world.levels: |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
59 print "Checking", level, "...", |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
60 game.create_sprites(level) |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
61 print "ok" |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
62 print |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
63 |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
64 |
153
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
65 def main(): |
227
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
66 parser = optparse.OptionParser(usage="%prog [options] <npc name>") |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
67 parser.add_option("--all", action="store_true", default=False, |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
68 dest="test_all", help="test all NPCs in game") |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
69 parser.add_option("--game", default="game.json", |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
70 dest="game", help="game .json file to use") |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
71 |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
72 opts, args = parser.parse_args() |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
73 |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
74 if opts.test_all: |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
75 test_all(opts.game) |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
76 return |
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
77 |
153
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
78 if len(args) != 1: |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
79 p.error("Must provide an npc json file") |
227
13b912f40a10
Add --all option for testing NPCs and sprite creation.
Simon Cross <hodgestar@gmail.com>
parents:
222
diff
changeset
|
80 run(args[0], game) |
153
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
81 |
704d23022f09
Start of dialogue tree / NPC state machine support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
82 if __name__ == '__main__': |
195 | 83 main() |