diff --git a/media/image/crate_tiles.png b/media/image/crate_tiles.png index e598410..eba33e1 100644 Binary files a/media/image/crate_tiles.png and b/media/image/crate_tiles.png differ diff --git a/src/actor/Box.gd b/src/actor/Box.gd index 73d0725..c14eeef 100644 --- a/src/actor/Box.gd +++ b/src/actor/Box.gd @@ -7,6 +7,7 @@ var is_push = false onready var node_audio : AudioStreamPlayer2D = $AudioHit onready var node_anim : AnimationPlayer = $AnimationPlayer onready var node_sprite : Sprite = $Sprite +onready var sprite_mat : ShaderMaterial = node_sprite.material var spr_pos := Vector2.ZERO var push_clock := 0.0 @@ -17,8 +18,13 @@ var shake_dist = 0 var scene_slam = preload("res://src/fx/Slam.tscn") +var images = [1, 4, 5, 6, 7] +export var is_refresh_frame := 0 setget pick_frame + func _ready(): - if Engine.editor_hint or Shared.is_level_select: return + if Engine.editor_hint: return + pick_frame() + if Shared.is_level_select: return spr_pos = node_sprite.position @@ -63,3 +69,10 @@ func push(dir : int): a.push(dir) move_x(dir) push_dir = dir + +func pick_frame(arg = null): + #randomize() + node_sprite.frame = images[randi() % images.size()] + node_sprite.flip_h = randf() > 0.5 + sprite_mat.set_shader_param("flip", float(randf() > 0.5)) + diff --git a/src/actor/Box.tscn b/src/actor/Box.tscn index 0a9805d..ef13cb8 100644 --- a/src/actor/Box.tscn +++ b/src/actor/Box.tscn @@ -6,11 +6,13 @@ [ext_resource path="res://src/shader/palette_swap_2.gdshader" type="Shader" id=4] [sub_resource type="ShaderMaterial" id=2] +resource_local_to_scene = true shader = ExtResource( 4 ) shader_param/c0 = Color( 1, 1, 1, 1 ) -shader_param/s0 = Color( 0.670588, 0.321569, 0.211765, 1 ) +shader_param/s0 = Color( 0.8, 0.188235, 0, 1 ) shader_param/c1 = Color( 0, 0, 0, 1 ) -shader_param/s1 = Color( 1, 0.639216, 0, 1 ) +shader_param/s1 = Color( 1, 0.768627, 0, 1 ) +shader_param/flip = 0.0 [sub_resource type="Animation" id=1] resource_name = "hit" @@ -57,7 +59,7 @@ position = Vector2( 4, 4 ) texture = ExtResource( 1 ) hframes = 4 vframes = 4 -frame = 1 +frame = 6 [node name="AudioHit" type="AudioStreamPlayer2D" parent="."] stream = ExtResource( 2 ) diff --git a/src/menu/AttractMode.gd b/src/menu/AttractMode.gd index 2359b7f..dc0e16a 100644 --- a/src/menu/AttractMode.gd +++ b/src/menu/AttractMode.gd @@ -38,6 +38,7 @@ func set_button_box(): box[3].position = Vector2(64, -16) box[3].speed = Vector2.ZERO box[3].remainder = Vector2.ZERO + box[3].pick_frame() func set_box_stack(): box[0].position = Vector2(160, -16) @@ -47,6 +48,7 @@ func set_box_stack(): for i in 3: # 0, 1, 2 box[i].speed = Vector2.ZERO box[i].remainder = Vector2.ZERO + box[i].pick_frame() func btnx(arg : int): p.btnx = arg diff --git a/src/shader/palette_swap_2.gdshader b/src/shader/palette_swap_2.gdshader index 4ef8368..82167b5 100644 --- a/src/shader/palette_swap_2.gdshader +++ b/src/shader/palette_swap_2.gdshader @@ -4,15 +4,16 @@ uniform vec4 c0 : hint_color = vec4(0.0); uniform vec4 s0 : hint_color = vec4(0.0); uniform vec4 c1 : hint_color = vec4(0.0); uniform vec4 s1 : hint_color = vec4(0.0); +uniform float flip : hint_range(0.0, 1.0) = 0.0; void fragment(){ vec4 col = texture(TEXTURE, UV); if (col == c0){ - col = s0; + col = mix(s0, s1, flip); } else if (col == c1){ - col = s1; + col = mix(s1, s0, flip); } COLOR = col;