コード例 #1
0
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)
コード例 #2
0
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()
コード例 #3
0
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()
コード例 #4
0
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()
コード例 #5
0
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
コード例 #6
0
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
コード例 #7
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)
コード例 #8
0
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])
コード例 #9
0
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()
コード例 #10
0
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()
コード例 #11
0
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()
コード例 #12
0
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)
コード例 #13
0
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()
コード例 #14
0
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
コード例 #15
0
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)
コード例 #16
0
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)
コード例 #17
0
def run_sound(e, loops):
    v = resolve_expr(e)
    print("sound", v)
    play_sound(v, loops)
コード例 #18
0
def run_timer(e1, e2):
    v1 = resolve_expr(e1)
    v2 = resolve_expr(e2)
    print("timer", v1, v2)
    sleep(int(v1))
    state.next_setting = v2
コード例 #19
0
def run_viewscreen(x, y):
    x = resolve_expr(x)
    y = resolve_expr(y)
コード例 #20
0
def run_goto(e):
    v = resolve_expr(e)
    print("goto", v, "previous value:", state.next_setting)
    state.next_setting = v