Exemple #1
0
def filter_keep(story):
  result = []
  for sch, bnd in ans.bindings(KEEP, story):
    result.append(bnd[sch])
  # Unique key handling:
  max_unique_key = None
  for pr in story:
    b = ans.bind(SC["unique_key_used"], pr)
    if b:
      k = int(str(b["unique_key_used.Key"]))
      if max_unique_key == None or k > max_unique_key:
        max_unique_key = k
    b = ans.bind(SC["max_unique"], pr)
    if b:
      k = int(str(b["max_unique.Key"]))
      if max_unique_key == None or k > max_unique_key:
        max_unique_key = k
  if max_unique_key == None:
    result.append(Pr("max_unique", Pr(0)))
  else:
    result.append(Pr("max_unique", Pr(max_unique_key)))
  return result
Exemple #2
0
def filter_keep(story):
    result = []
    for sch, bnd in ans.bindings(KEEP, story):
        result.append(bnd[sch])
    # Unique key handling:
    max_unique_key = None
    for pr in story:
        b = ans.bind(SC["unique_key_used"], pr)
        if b:
            k = int(str(b["unique_key_used.Key"]))
            if max_unique_key == None or k > max_unique_key:
                max_unique_key = k
        b = ans.bind(SC["max_unique"], pr)
        if b:
            k = int(str(b["max_unique.Key"]))
            if max_unique_key == None or k > max_unique_key:
                max_unique_key = k
    if max_unique_key == None:
        result.append(Pr("max_unique", Pr(0)))
    else:
        result.append(Pr("max_unique", Pr(max_unique_key)))
    return result
Exemple #3
0
def find_node_structure(story):
  """
  Takes a story and looks at successor/3 predicates to determine the structure
  of nodes in the story, returning a dictionary that maps node names to both
  successor and predecessor entries: successor entries being option->node
  mappings and predecessor entries being a list of nodes that have this node as
  a successor.
  """
  result = {}
  for pr in story:
    scc = ans.bind(SUCCESSOR, pr)
    if scc:
      frm = scc["successor.From"].unquoted()
      opt = scc["successor.option.Opt"].unquoted()
      to = scc["successor.To"].unquoted()
      if frm not in result:
        result[frm] = {"successors":{}, "predecessors":[]}
      if to not in result:
        result[to] = {"successors":{}, "predecessors":[]}
      result[frm]["successors"][opt] = to
      result[to]["predecessors"].append(frm)
  return result
Exemple #4
0
def all_polished_nodes(story):
  for pr in story:
    b = ans.bind(SC["polished"], pr)
    if b:
      yield b["node_status.Node"]
Exemple #5
0
def all_successors(story):
  for pr in story:
    b = ans.bind(SC["successor"], pr)
    if b:
      yield (b["successor.From"], b["successor.option.Opt"], b["successor.To"])
Exemple #6
0
def all_options(story):
  for pr in story:
    b = ans.bind(SC["option"], pr)
    if b:
      yield (b["at.Node"], b["at.option.Opt"])
Exemple #7
0
def all_vignette_beginnings(story):
  # TODO: Fix me!
  for pr in story:
    b = ans.bind(SC["setup"], pr)
    if b:
      yield b["setup.Node"]
Exemple #8
0
def all_endings(story):
  for pr in story:
    b = ans.bind(SC["node_type"], pr)
    if b and str(b["node_type.Type"]) == "ending":
      yield b["node_type.Node"]
Exemple #9
0
def all_nodes(story):
  for pr in story:
    b = ans.bind(SC["story_node"], pr)
    if b:
      yield b["story_node.Node"]
Exemple #10
0
def all_initialized_nodes(story):
  for pr in story:
    b = ans.bind(SC["setup"], pr)
    if b:
      yield b["setup.Node"]
Exemple #11
0
def all_polished_nodes(story):
    for pr in story:
        b = ans.bind(SC["polished"], pr)
        if b:
            yield b["node_status.Node"]
Exemple #12
0
def all_successors(story):
    for pr in story:
        b = ans.bind(SC["successor"], pr)
        if b:
            yield (b["successor.From"], b["successor.option.Opt"],
                   b["successor.To"])
Exemple #13
0
def all_options(story):
    for pr in story:
        b = ans.bind(SC["option"], pr)
        if b:
            yield (b["at.Node"], b["at.option.Opt"])
Exemple #14
0
def all_vignette_beginnings(story):
    # TODO: Fix me!
    for pr in story:
        b = ans.bind(SC["setup"], pr)
        if b:
            yield b["setup.Node"]
Exemple #15
0
def all_endings(story):
    for pr in story:
        b = ans.bind(SC["node_type"], pr)
        if b and str(b["node_type.Type"]) == "ending":
            yield b["node_type.Node"]
Exemple #16
0
def all_nodes(story):
    for pr in story:
        b = ans.bind(SC["story_node"], pr)
        if b:
            yield b["story_node.Node"]