Ejemplo n.º 1
0
def decode_story(data: str, store: VarStore) -> Story:
    story = Story(store)

    node_store: Dict[str, Node] = {}

    story_dict = json.loads(data)

    for node_hash, node_dict in story_dict['nodes'].items():
        node = _decode_basic_node(node_dict, story)
        node_store[str(node_hash)] = node

    story.change_beginning(node_store[str(story_dict['beginning'])])

    for ending in story_dict['endings']:
        story.add_ending(node_store[str(ending)])

    for node_hash, node_dict in story_dict['nodes'].items():
        _decode_outgoing(node_store[str(node_hash)], node_store,
                         node_dict['outgoing'])

    return story
Ejemplo n.º 2
0
def create_test_story() -> Story:

    store = VarStore()
    story = Story(store)

    # Create nodes
    n1 = story.create_node('n1')
    n2 = story.create_node('n2')
    n3 = story.create_node('n3')
    n4 = story.create_node('n4')
    end1 = story.create_node('end1')
    dead1 = story.create_node('dead-end')

    n1.set_text('Currently at n1')
    n2.set_text('Currently at n2')
    n3.set_text('Currently at n3')
    n4.set_text('Currently at n4')
    end1.set_text('Ending #1')
    dead1.set_text('Dead-end reached')

    block3 = VarCommand('test', '=', 5)
    goto_4_1 = [VarCommand('test', '+', 7), VarCommand('test2', '+', 'abd')]
    req4 = VarCommand('test', '=', 5)

    n3.add_change(block3)
    n4.add_requirement(req4)

    n1.add_outgoing(n2, 'Goto 2', None)
    n1.add_outgoing(n3, 'Goto 3', None)
    n2.add_outgoing(n3, 'Goto 3', None)
    n3.add_outgoing(n4, 'Goto 4', None)
    n3.add_outgoing(dead1, 'Goto dead-end', None)
    n4.add_outgoing(end1, 'Goto ending 1', None)
    n4.add_outgoing(n1, 'Goto 1', goto_4_1)

    story.change_beginning(n1)
    story.add_ending(end1)

    return story