def run_setflag(f, v): f = resolve_expr(f) v = resolve_expr(v) if (f in state.definitions["variables"]): state.definitions["variables"][f] = v else: print("flag %s not found in variable list" % f) assert (False) print("setflag", f, v)
def run_soundarea(m, s): m = resolve_expr(m) s = resolve_expr(s) print("soundarea", m, s) bmp = load_bmp(m) state.sareas.append((bmp, s)) state.screen.blit(bmp, [0, 0]) pygame.display.flip()
def run_dossierbitmap(x, y): x = resolve_expr(x) y = resolve_expr(y) x, y = scale_point(x, y) assert (state.dossier_current_sheet is not None) assert (state.dossier_current_suspect is not None) bmp = load_bmp(state.dossiers[state.dossier_current_suspect][ state.dossier_current_sheet]) state.screen.blit(bmp, [x, y]) pygame.display.flip()
def run_dossierprevsuspect(b, x, y): b = resolve_expr(b) x = resolve_expr(x) y = resolve_expr(y) x, y = scale_point(x, y) bmp = load_bmp(b) state.dossier_previous_suspect = (bmp, x, y) state.screen.blit(bmp, [x, y]) pygame.display.flip()
def run_transition(v, e): v = resolve_expr(v) e = resolve_expr(e) if state.mode == 1: state.current_view_frame = load_bmp(state.game_frame) state.screen.blit(state.current_view_frame, [0, 0]) print("play transition", v) if (v != '""'): state.video_to_play = (v, e) else: assert (state.next_setting is None) state.next_setting = e
def run_dossieradd(b1, b2): b1 = resolve_expr(b1) b2 = resolve_expr(b2) #b1 = convert_path(b1) if b2 != '""': pass #b2 = convert_path(b2) else: b2 = None state.dossiers.append((b1, b2)) if state.dossier_current_sheet is None: state.dossier_current_sheet = 0 state.dossier_current_suspect = 0
def run_chgmode(v, e, x): v = resolve_expr(v) e = resolve_expr(e) if x is not None: x = resolve_expr(x) print("chgmode", v, e, x) state.next_setting = e state.mode = v if state.mode == 0: state.gorigin = [0, 0] elif state.mode == 1: state.gorigin = scale_point(63, 48) else: print("mode", state.mode) assert (False)
def run_ifelse(ie): assert (ie.data == "ifelse") assert (len(ie.children) == 3) v = resolve_expr(ie.children[0]) v = resolve_variable(v) if (v is None): print("Uninitialized variable %s" % v) assert (False) assert (type(v) == str or type(v) == int) assert (v != "0" and v != "" and v != '""' and v != "NULL") if (v == "FALSE" or v == 0): if (ie.children[2].data) == "statements": run_statements(ie.children[2]) elif (ie.children[2].data) == "statement": run_statement(ie.children[2]) else: print("TRUE!") if (ie.children[1].data) == "statements": run_statements(ie.children[1]) elif (ie.children[1].data) == "statement": run_statement(ie.children[1])
def run_savegame(b): b = resolve_expr(b) bmp = load_bmp(b) state.save_game = (bmp, 0, 0) state.screen.blit(bmp, [0, 0]) pygame.display.flip()
def run_dossierchgsheet(b, n, x, y): b = resolve_expr(b) n = resolve_expr(n) x = resolve_expr(x) y = resolve_expr(y) x, y = scale_point(x, y) bmp = load_bmp(b) if n == 1: state.dossier_next_sheet = (bmp, x, y) else: state.dossier_previous_sheet = (bmp, x, y) state.screen.blit(bmp, [x, y]) pygame.display.flip()
def run_bitmap(e, x, y): if (type(x) != int): x = resolve_expr(x) x = int(x) if (type(y) != int): y = resolve_expr(y) y = int(y) v = resolve_expr(e) print("bitmap", v, x, y, state.screen) bmp = load_bmp(v) if state.mode == 1: x, y = state.gorigin else: x, y = scale_point(x, y) state.screen.blit(bmp, [x, y]) pygame.display.flip()
def add_sound(s, t, v, x): if v is not None: v = resolve_expr(v) if x is not None: x = resolve_expr(x) if t not in state.sounds: state.sounds[t] = dict() s = resolve_expr(s).replace('"', '') if s == '': assert (x is None and v is None) return s = s + ".wav" print("add_sound", s, t) #if s not in state.sounds[t]: if s not in state.played_sounds: state.sounds[t][s] = (v, x)
def run_mask(m, e, c, x, y, drawn): m = resolve_expr(m) e = resolve_expr(e) c = resolve_expr(c) x = resolve_expr(x) y = resolve_expr(y) print("mask", m, e, c, x, y) bmp = load_bmp(m) if state.mode == 1: x, y = state.gorigin else: x, y = scale_point(x, y) print("mask (updated)", x, y) state.masks.append((bmp, x, y, e, "NULL", c)) if drawn: state.screen.blit(bmp, [x, y]) pygame.display.flip()
def run_movie(v, e): v = resolve_expr(v) e = resolve_expr(e) if state.mode == 1: state.current_view_frame = load_bmp(state.game_frame) state.screen.blit(state.current_view_frame, [0, 0]) print("play movie", v) if (v != '""' and v not in state.played_movies): state.video_to_play = (v, e) state.played_movies.append(v) elif (v == '""'): state.repeated_movie_exit = e assert (state.next_setting is None) state.next_setting = e else: print("movie", v, "already played") state.next_setting = state.repeated_movie_exit
def run_exit(e, x, r): r = resolve_expr(r) x = resolve_expr(x) e = resolve_expr(e) if (r in state.definitions["rects"]): r = state.definitions["rects"][r] r = resolve_expr(r) (a, b, c, d) = r a, b = scale_point(a, b) c, d = scale_point(c, d) a = a + state.gorigin[0] b = b + state.gorigin[1] c = c + state.gorigin[0] d = d + state.gorigin[1] state.exits.append((a, b, c, d, e, x)) print("exit", e, r)
def run_setmodified(x): x = resolve_expr(x) x = resolve_variable(x) assert (type(x) == str or type(x) == int) assert (x != "0" and x != "" and x != '""' and x != "NULL") if (x == "FALSE"): state.modified = False elif (x == "TRUE"): state.modified = True else: assert (False)
def run_sound(e, loops): v = resolve_expr(e) print("sound", v) play_sound(v, loops)
def run_timer(e1, e2): v1 = resolve_expr(e1) v2 = resolve_expr(e2) print("timer", v1, v2) sleep(int(v1)) state.next_setting = v2
def run_viewscreen(x, y): x = resolve_expr(x) y = resolve_expr(y)
def run_goto(e): v = resolve_expr(e) print("goto", v, "previous value:", state.next_setting) state.next_setting = v