diff --git a/rpi/main.py b/rpi/main.py index b5e373e..0144c43 100644 --- a/rpi/main.py +++ b/rpi/main.py @@ -86,6 +86,8 @@ program2_drain_counter = 0 program2_done = False program2_scroll_progress = 0 program2_spacing_counter = 0 +program2_draw_col = 0 +program2_current_vehicle = None VEHICLES = [ [[0,0,0,0,0,0,0,0],[0,0,1,1,1,1,1,0],[1,1,1,1,1,1,1,1],[0,1,0,0,0,0,1,0]], @@ -363,16 +365,20 @@ def draw_vehicle(index, pos_x, pos_y): def reset_program2(): global program2_scroll_progress, program2_spacing_counter global program2_vehicles_spawned, program2_drain_counter, program2_done + global program2_draw_col, program2_current_vehicle program2_scroll_progress = 0 program2_spacing_counter = 0 program2_vehicles_spawned = 0 program2_drain_counter = 0 program2_done = False + program2_draw_col = 0 + program2_current_vehicle = None def handle_program2(spacing=4, scroll_slowness=1, y=0, max_vehicles=0): global program2_scroll_progress, program2_spacing_counter global program2_vehicles_spawned, program2_drain_counter, program2_done + global program2_draw_col, program2_current_vehicle if scroll_slowness > program2_scroll_progress: program2_scroll_progress += 1 @@ -387,10 +393,23 @@ def handle_program2(spacing=4, scroll_slowness=1, y=0, max_vehicles=0): program2_done = True return - program2_spacing_counter -= 1 - if program2_spacing_counter <= 0: - draw_vehicle(random.randint(0, 11), config.DISPLAY_MAX_X - 7, y) - program2_spacing_counter = 8 + spacing + if program2_spacing_counter > 0: + program2_spacing_counter -= 1 + return + + veh = VEHICLES[random.randint(0, 11)] if program2_draw_col == 0 else program2_current_vehicle + if program2_draw_col == 0: + program2_current_vehicle = veh + + vr, vg, vb = config.VEHICLE_COLOR + for row in range(4): + if veh[row][program2_draw_col]: + low_level.set_pixel(config.DISPLAY_MAX_X, y + row, vr, vg, vb) + + program2_draw_col += 1 + if program2_draw_col >= 8: + program2_draw_col = 0 + program2_spacing_counter = spacing if max_vehicles > 0: program2_vehicles_spawned += 1