view scripts/npc-test @ 153:704d23022f09

Start of dialogue tree / NPC state machine support.
author Simon Cross <hodgestar@gmail.com>
date Tue, 05 Apr 2011 22:18:26 +0200
parents
children 445a28f4b38e
line wrap: on
line source

#!/usr/bin/env python
"Skaapsteker npc tester"

import os.path
import sys
import optparse
from pprint import pprint

sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))

from skaapsteker.dialogue import DSM, DsmEvent, DummyWorld


def run(npc_file):
    world = DummyWorld()
    dsm = DSM(npc_file, world)

    print "States:"
    print "-------"
    pprint(dsm.states.keys())
    print

    while True:
        state = dsm.get_state()
        print "%s:" % dsm.state, state.text
        print "--"
        for i, choice in state.choices:
            print "%d: %s" % (i, choice)
        print "L: Leave"
        print "--"

        key = raw_input("Choice? ")
        key = key.strip().upper()
        if key == "L":
            break
        elif key.isdigit():
            dsm.choice(int(key))

        print "--"


def main():
    p = optparse.OptionParser(usage="%prog [options] <npc json state file>")
    opts, args = p.parse_args()
    if len(args) != 1:
        p.error("Must provide an npc json file")
    run(args[0])

if __name__ == '__main__':
    main()