Skip to content

Commit

Permalink
wiiide timelines
Browse files Browse the repository at this point in the history
  • Loading branch information
Patashu committed Mar 28, 2023
1 parent 5c48014 commit ca1486b
Show file tree
Hide file tree
Showing 7 changed files with 112 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
source_md5="ebde03d5fdb114dcc10ba7c06e0c5233"
dest_md5="6d50577e0a9b6c7ba9e942362f736b28"
source_md5="c4bc8df352768dcc2bc5319d67df53eb"
dest_md5="905577366ef035c218398a26011da39f"

Binary file not shown.
9 changes: 5 additions & 4 deletions GameLogic.gd
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,9 @@ var cell_size = 24;
var undo_effect_strength = 0;
var undo_effect_per_second = 0;
var undo_effect_color = Color(0, 0, 0, 0);
var heavy_color = Color(1.0, 0, 0, 0);
var light_color = Color(0, 0.58, 1.0, 0);
var meta_color = Color(0.5, 0.5, 0.5, 0);
var heavy_color = Color(1.0, 0, 0, 1);
var light_color = Color(0, 0.58, 1.0, 1);
var meta_color = Color(0.5, 0.5, 0.5, 1);
var ui_stack = [];

#replay system
Expand Down Expand Up @@ -353,6 +353,7 @@ func extract_actors(tilename: String, actorname: String, heaviness: int, strengt
actor.fall_speed = fall_speed;
actor.climbs = climbs;
actor.is_character = false;
actor.color = color;

func initialize_name_to_sprites() -> void:
# TODO: actor names can be an enum like tiles
Expand Down Expand Up @@ -622,7 +623,7 @@ func try_enter(actor: Actor, dir: Vector2, chrono: int, can_push: bool, hypothet
func set_actor_var(actor: Actor, prop: String, value, chrono: int) -> void:
var old_value = actor.get(prop);
if (chrono < Chrono.GHOSTS):
add_undo_event([Undo.set_actor_var, actor, prop, old_value], chrono);
add_undo_event([Undo.set_actor_var, actor, prop, old_value, value], chrono);
actor.set(prop, value);
else:
var ghost = get_deepest_ghost(actor);
Expand Down
4 changes: 2 additions & 2 deletions LevelScene.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ cell_size = Vector2( 24, 24 )
format = 1
tile_data = PoolIntArray( 0, 14, 0, 1, 14, 0, 2, 14, 0, 3, 14, 0, 4, 14, 0, 5, 14, 0, 6, 14, 0, 7, 14, 0, 8, 14, 0, 9, 14, 0, 10, 14, 0, 11, 14, 0, 12, 14, 0, 13, 14, 0, 14, 14, 0, 15, 14, 0, 16, 14, 0, 17, 14, 0, 18, 14, 0, 19, 14, 0, 20, 14, 0, 65536, 14, 0, 65556, 14, 0, 131072, 14, 0, 131092, 14, 0, 196608, 14, 0, 196612, 14, 0, 196613, 14, 0, 196614, 14, 0, 196628, 14, 0, 262144, 14, 0, 262147, 14, 0, 262148, 14, 0, 262150, 14, 0, 262151, 14, 0, 262164, 14, 0, 327680, 14, 0, 327682, 14, 0, 327683, 14, 0, 327687, 14, 0, 327688, 14, 0, 327700, 14, 0, 393216, 14, 0, 393217, 14, 0, 393218, 14, 0, 393224, 14, 0, 393225, 14, 0, 393236, 14, 0, 458752, 14, 0, 458754, 14, 0, 458760, 14, 0, 458768, 14, 0, 458772, 14, 0, 524288, 14, 0, 524289, 8, 0, 524297, 2, 0, 524300, 14, 0, 524302, 7, 0, 524304, 14, 0, 524306, 1, 0, 524308, 14, 0, 589824, 14, 0, 589825, 14, 0, 589826, 14, 0, 589827, 14, 0, 589828, 14, 0, 589829, 14, 0, 589830, 14, 0, 589831, 14, 0, 589832, 14, 0, 589833, 14, 0, 589834, 14, 0, 589835, 14, 0, 589836, 14, 0, 589837, 14, 0, 589838, 14, 0, 589839, 14, 0, 589840, 14, 0, 589841, 14, 0, 589842, 14, 0, 589843, 14, 0, 589844, 14, 0, 655368, 14, 0, 720904, 14, 0 )

[node name="GhostsFolder" type="Node2D" parent="."]

[node name="ActorsFolder" type="Node2D" parent="."]

[node name="GhostsFolder" type="Node2D" parent="."]

[node name="GameLogic" type="Node" parent="."]
script = ExtResource( 3 )

Expand Down
93 changes: 92 additions & 1 deletion timeline/TimelineSlot.gd
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,98 @@ func _ready() -> void:
pass # Replace with function body.

func fill(buffer: Array) -> void:
pass
var relevant_buffer = [];
for event in buffer:
if event[0] == 0 or event[0] == 1: # move or set_actor_var
# also filter out airborne 2 for now
if event[0] == 1 and event[2] == "airborne" and event[4] == 2:
continue
# reverse order since undo buffer is 'in reverse order'
relevant_buffer.push_front(event);
if relevant_buffer.size() <= 0:
return
var scale = 1;
var size = 12;
var y_start = 0;
if (relevant_buffer.size() == 1):
scale = 2;
elif (relevant_buffer.size() == 2):
y_start = 6;
elif (relevant_buffer.size() <= 4):
pass
elif (relevant_buffer.size() <= 6):
size = 8;
y_start = 4;
else:
size = 8;
y_start = 0;
for i in range(relevant_buffer.size()):
var event = relevant_buffer[i];
var sprite = Sprite.new();
timelinesymbols.add_child(sprite);
sprite.offset = Vector2(size/2, size/2);
sprite.position.x = 0 + (i%(24/size))*size;
sprite.position.y = y_start + floor(i/(24/size))*size;
sprite.scale = Vector2(scale, scale);
sprite.modulate = event[1].color;
sprite.texture = get_texture_for_event(event, size);

func get_texture_for_event(event: Array, size: int) -> Texture:
#add_undo_event([Undo.move, actor, dir], chrono);
#add_undo_event([Undo.set_actor_var, actor, prop, old_value], chrono);
if event[0] == 0: #move
var dir = event[2];
if dir == Vector2.LEFT:
if size == 8:
return preload("res://timeline/timeline-left-8.png");
elif size == 12:
return preload("res://timeline/timeline-left-12.png");
elif dir == Vector2.RIGHT:
if size == 8:
return preload("res://timeline/timeline-right-8.png");
elif size == 12:
return preload("res://timeline/timeline-right-12.png");
elif dir == Vector2.UP:
if size == 8:
return preload("res://timeline/timeline-up-8.png");
elif size == 12:
return preload("res://timeline/timeline-up-12.png");
elif dir == Vector2.DOWN:
if size == 8:
return preload("res://timeline/timeline-down-8.png");
elif size == 12:
return preload("res://timeline/timeline-down-12.png");
pass
if event[0] == 1: #set_actor_var
var prop = event[2];
var new_value = event[4];
if prop == "airborne":
if new_value == 2:
pass
elif new_value == 1:
if size == 8:
return preload("res://timeline/timeline-airborne-1-8.png");
elif size == 12:
return preload("res://timeline/timeline-airborne-1-12.png");
elif new_value == 0:
if size == 8:
return preload("res://timeline/timeline-airborne-0-8.png");
elif size == 12:
return preload("res://timeline/timeline-airborne-0-12.png");
elif new_value == -1:
if size == 8:
return preload("res://timeline/timeline-grounded-8.png");
elif size == 12:
return preload("res://timeline/timeline-grounded-12.png");
elif prop == "broken":
if new_value == true:
if size == 8:
return preload("res://timeline/timeline-broken-8.png");
elif size == 12:
return preload("res://timeline/timeline-broken-12.png");
pass

return null

func clear(color: Color) -> void:
for sprite in timelinesymbols.get_children():
Expand Down
15 changes: 11 additions & 4 deletions timeline/TimelineViewer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ var is_heavy = false;
var current_move = 0;
var max_moves = 0;
var yy = 24;
var xx = 24;
var y_max = 11;
onready var timelineslots = self.get_node("TimelineSlots");
onready var timelinedivider = self.get_node("TimelineDivider");

Expand All @@ -13,13 +15,15 @@ func _ready() -> void:
if (is_heavy):
timelinedivider.texture = preload("res://timeline/timeline-divider-heavy.png");
else:
xx = -24;
timelinedivider.texture = preload("res://timeline/timeline-divider-light.png");
reset();

func reset() -> void:
if (timelinedivider == null):
return
current_move = 0;
timelinedivider.position.x = 0;
timelinedivider.position.y = 0;
for slot in timelineslots.get_children():
slot.queue_free();
Expand All @@ -30,20 +34,23 @@ func reset() -> void:
else:
slot.texture = preload("res://timeline/timeline-slot-light-24.png");
timelineslots.add_child(slot);
slot.position.y += yy*i;
slot.position.y += yy*(i%y_max);
slot.position.x += xx*floor(i/y_max);

func add_turn(buffer: Array) -> void:
if current_move >= (max_moves - 1):
if current_move >= (max_moves):
return
timelineslots.get_child(current_move).fill(buffer);
current_move += 1;
timelinedivider.position.y += yy;
timelinedivider.position.y = yy*(current_move%y_max);
timelinedivider.position.x = xx*floor(current_move/y_max);

func remove_turn(color: Color) -> void:
if current_move <= 0:
return
current_move -= 1;
timelinedivider.position.y -= yy;
timelinedivider.position.y = yy*(current_move%y_max);
timelinedivider.position.x = xx*floor(current_move/y_max);
timelineslots.get_child(current_move).clear(color);

# Called every frame. 'delta' is the elapsed time since the previous frame.
Expand Down
Binary file modified timeline/timeline-grounded-8.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit ca1486b

Please sign in to comment.