summaryrefslogtreecommitdiff
path: root/src/entities
diff options
context:
space:
mode:
authorDavid Luevano Alvarado <david@luevano.xyz>2022-06-05 14:09:41 -0600
committerDavid Luevano Alvarado <david@luevano.xyz>2022-06-05 14:09:41 -0600
commit14538d486de312af41ce012836861468b8fb7897 (patch)
tree569d09c43fd7724a5fbb0898f5c1d1db3fd64b3d /src/entities
parent4b42a8ba26f21e2c6c766fa747c8b93a115a53b2 (diff)
finish all necessary for playability
Diffstat (limited to 'src/entities')
-rw-r--r--src/entities/actors/snake/scenes/Head.tscn4
-rw-r--r--src/entities/actors/snake/scripts/dash_state.gd1
-rw-r--r--src/entities/actors/snake/scripts/head.gd14
-rw-r--r--src/entities/actors/snake/scripts/jump_state.gd18
-rw-r--r--src/entities/actors/snake/scripts/normal_state.gd5
-rw-r--r--src/entities/actors/snake/scripts/slow_state.gd1
-rw-r--r--src/entities/actors/snake/scripts/state_machine.gd13
-rw-r--r--src/entities/food/scripts/food.gd3
-rw-r--r--src/entities/food/scripts/food_basic.gd4
-rw-r--r--src/entities/food/scripts/food_manager.gd7
-rw-r--r--src/entities/food/scripts/food_special.gd4
11 files changed, 47 insertions, 27 deletions
diff --git a/src/entities/actors/snake/scenes/Head.tscn b/src/entities/actors/snake/scenes/Head.tscn
index d69cbf8..b9180c3 100644
--- a/src/entities/actors/snake/scenes/Head.tscn
+++ b/src/entities/actors/snake/scenes/Head.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=14 format=2]
+[gd_scene load_steps=15 format=2]
[ext_resource path="res://entities/actors/snake/sprites/head.png" type="Texture" id=1]
[ext_resource path="res://entities/actors/snake/scripts/head.gd" type="Script" id=2]
@@ -7,6 +7,7 @@
[ext_resource path="res://entities/actors/snake/scripts/normal_state.gd" type="Script" id=5]
[ext_resource path="res://entities/actors/snake/scripts/dash_state.gd" type="Script" id=6]
[ext_resource path="res://entities/actors/snake/scripts/slow_state.gd" type="Script" id=7]
+[ext_resource path="res://entities/actors/snake/scripts/jump_state.gd" type="Script" id=8]
[sub_resource type="AtlasTexture" id=2]
atlas = ExtResource( 3 )
@@ -52,6 +53,7 @@ script = ExtResource( 6 )
script = ExtResource( 7 )
[node name="JumpState" type="Node" parent="StateMachine"]
+script = ExtResource( 8 )
[node name="Tongue" type="AnimatedSprite" parent="."]
position = Vector2( 0, -5 )
diff --git a/src/entities/actors/snake/scripts/dash_state.gd b/src/entities/actors/snake/scripts/dash_state.gd
index 3eb0bdf..a23b241 100644
--- a/src/entities/actors/snake/scripts/dash_state.gd
+++ b/src/entities/actors/snake/scripts/dash_state.gd
@@ -19,6 +19,7 @@ func exit():
func physics_process(delta: float) -> void:
+ fsm.rotate_on_input()
fsm.player.velocity = fsm.player.direction * Global.SNAKE_SPEED
fsm.player.velocity = fsm.player.move_and_slide(fsm.player.velocity)
diff --git a/src/entities/actors/snake/scripts/head.gd b/src/entities/actors/snake/scripts/head.gd
index e6824a7..2853d00 100644
--- a/src/entities/actors/snake/scripts/head.gd
+++ b/src/entities/actors/snake/scripts/head.gd
@@ -12,9 +12,11 @@ var velocity: Vector2 = Vector2.ZERO
var direction: Vector2 = Vector2.UP
var _time_elapsed: float = 0.0
-var can_dash: bool = true
-var can_slow: bool = true
-var can_jump: bool = true
+var stats: Stats = SaveData.get_stats()
+
+var can_dash: bool = false
+var can_slow: bool = false
+var can_jump: bool = false
func _ready() -> void:
@@ -22,6 +24,12 @@ func _ready() -> void:
Event.connect("snake_started_dash", self, "_on_snake_started_dash")
Event.connect("snake_started_slow", self, "_on_snake_started_slow")
Event.connect("snake_started_jump", self, "_on_snake_started_jump")
+
+ print(stats.get_stats())
+ can_dash = stats.trait_dash
+ can_slow = stats.trait_slow
+ can_jump = stats.trait_jump
+
tongue_sprite.visible = false
diff --git a/src/entities/actors/snake/scripts/jump_state.gd b/src/entities/actors/snake/scripts/jump_state.gd
index 396ceb4..329b426 100644
--- a/src/entities/actors/snake/scripts/jump_state.gd
+++ b/src/entities/actors/snake/scripts/jump_state.gd
@@ -6,22 +6,24 @@ var fsm: StateMachine
func enter():
if fsm.DEBUG:
print("Got inside %s." % name)
- Event.emit_signal("snake_started_dash")
- Global.SNAKE_SPEED = Global.SNAKE_DASH_SPEED
- yield(get_tree().create_timer(Global.SNAKE_DASH_TIME), "timeout")
+ Event.emit_signal("snake_started_jump")
+ fsm.player.set_collision_mask_bit(1, false)
+ fsm.player.set_collision_mask_bit(2, false)
+ Global.SNAKE_SPEED = Global.SNAKE_JUMP_SPEED
+ yield(get_tree().create_timer(Global.SNAKE_JUMP_TIME), "timeout")
exit()
func exit():
- Event.emit_signal("snake_finished_dash")
+ fsm.player.set_collision_mask_bit(1, true)
+ fsm.player.set_collision_mask_bit(2, true)
Global.SNAKE_SPEED = Global.SNAKE_SPEED_BACKUP
+ Event.emit_signal("snake_finished_jump")
fsm.back()
-func physics_process(delta: float) -> float:
+func physics_process(delta: float) -> void:
fsm.player.velocity = fsm.player.direction * Global.SNAKE_SPEED
fsm.player.velocity = fsm.player.move_and_slide(fsm.player.velocity)
- fsm.slow_down_on_collisions(Global.SNAKE_DASH_SPEED)
-
- return delta
+ fsm.slow_down_on_collisions(Global.SNAKE_JUMP_SPEED)
diff --git a/src/entities/actors/snake/scripts/normal_state.gd b/src/entities/actors/snake/scripts/normal_state.gd
index 11981a3..1a9c1b1 100644
--- a/src/entities/actors/snake/scripts/normal_state.gd
+++ b/src/entities/actors/snake/scripts/normal_state.gd
@@ -13,6 +13,7 @@ func exit(next_state):
func physics_process(delta: float) -> void:
+ fsm.rotate_on_input()
fsm.player.velocity = fsm.player.direction * Global.SNAKE_SPEED
fsm.player.velocity = fsm.player.move_and_slide(fsm.player.velocity)
@@ -24,5 +25,5 @@ func input(event: InputEvent) -> void:
exit("DashState")
if fsm.player.can_slow and event.is_action_pressed("slow"):
exit("SlowState")
- # if fsm.player.can_jump and event.is_action_pressed("jump"):
- # exit("JumpState")
+ if fsm.player.can_jump and event.is_action_pressed("jump"):
+ exit("JumpState")
diff --git a/src/entities/actors/snake/scripts/slow_state.gd b/src/entities/actors/snake/scripts/slow_state.gd
index 8d54bfb..3a2c94b 100644
--- a/src/entities/actors/snake/scripts/slow_state.gd
+++ b/src/entities/actors/snake/scripts/slow_state.gd
@@ -19,6 +19,7 @@ func exit():
func physics_process(delta: float) -> float:
+ fsm.rotate_on_input()
fsm.player.velocity = fsm.player.direction * Global.SNAKE_SPEED
fsm.player.velocity = fsm.player.move_and_slide(fsm.player.velocity)
diff --git a/src/entities/actors/snake/scripts/state_machine.gd b/src/entities/actors/snake/scripts/state_machine.gd
index b63f272..93e76b9 100644
--- a/src/entities/actors/snake/scripts/state_machine.gd
+++ b/src/entities/actors/snake/scripts/state_machine.gd
@@ -40,20 +40,21 @@ func _process(delta: float) -> void:
func _physics_process(delta: float) -> void:
- if Input.is_action_pressed("move_left"):
- player.rotate_to(player.LEFT)
- if Input.is_action_pressed("move_right"):
- player.rotate_to(player.RIGHT)
-
# state specific code, move_and_slide is called here
if state.has_method("physics_process"):
state.physics_process(delta)
handle_slow_speeds()
-
player.handle_time_elapsed(delta)
+func rotate_on_input() -> void:
+ if Input.is_action_pressed("move_left"):
+ player.rotate_to(player.LEFT)
+ if Input.is_action_pressed("move_right"):
+ player.rotate_to(player.RIGHT)
+
+
func slow_down_on_collisions(speed_backup: float):
if player.get_last_slide_collision():
Global.SNAKE_SPEED = player.velocity.length()
diff --git a/src/entities/food/scripts/food.gd b/src/entities/food/scripts/food.gd
index 386f0e5..e4bbc21 100644
--- a/src/entities/food/scripts/food.gd
+++ b/src/entities/food/scripts/food.gd
@@ -21,7 +21,7 @@ func update_texture() -> void:
_sprite.texture = texture[properties["type"]]
-func set_properties(pos: Vector2, loc: Vector2, special: bool, type: int, points: int=1, ttl: float = -1.0) -> void:
+func set_properties(pos: Vector2, loc: Vector2, special: bool, type: int, points: int=1, special_points: int=1, ttl: float = -1.0) -> void:
properties["global_position"] = pos
global_position = pos
properties["location"] = loc
@@ -29,6 +29,7 @@ func set_properties(pos: Vector2, loc: Vector2, special: bool, type: int, points
properties["type"] = type
properties["points"] = points
+ properties["special_points"] = special_points
properties["ttl"] = ttl
if properties["ttl"] != -1.0:
timer.wait_time = properties["ttl"]
diff --git a/src/entities/food/scripts/food_basic.gd b/src/entities/food/scripts/food_basic.gd
index 8090cdc..cfeec18 100644
--- a/src/entities/food/scripts/food_basic.gd
+++ b/src/entities/food/scripts/food_basic.gd
@@ -3,10 +3,12 @@ extends Food
enum Type {
APPLE,
- BANANA
+ BANANA,
+ RAT
}
func _ready():
texture[Type.APPLE] = preload("res://entities/food/sprites/apple.png")
texture[Type.BANANA] = preload("res://entities/food/sprites/banana.png")
+ texture[Type.RAT] = preload("res://entities/food/sprites/rat.png")
diff --git a/src/entities/food/scripts/food_manager.gd b/src/entities/food/scripts/food_manager.gd
index a605f9e..e6c7248 100644
--- a/src/entities/food/scripts/food_manager.gd
+++ b/src/entities/food/scripts/food_manager.gd
@@ -41,7 +41,10 @@ func _place_new_basic_food() -> void:
var loc: Vector2 = pos_loc[1]
# need to set the position first, else it will spawn on the middle and the moved
- food.set_properties(pos, loc, false, type)
+ if type == FoodBasic.Type.RAT:
+ food.set_properties(pos, loc, false, type, Global.POINTS_TO_GROW / 2)
+ else:
+ food.set_properties(pos, loc, false, type)
add_child(food)
food.update_texture()
current_basic_food.append(loc)
@@ -57,7 +60,7 @@ func _place_new_special_food() -> void:
var loc: Vector2 = pos_loc[1]
# need to set the position first, else it will spawn on the middle and the moved
- food.set_properties(pos, loc, true, type, Global.POINTS_TO_GROW)
+ food.set_properties(pos, loc, true, type, Global.POINTS_TO_GROW, Global.POINTS_TO_GROW / Global.POINTS_TO_GROW)
add_child(food)
food.update_texture()
current_special_food.append(loc)
diff --git a/src/entities/food/scripts/food_special.gd b/src/entities/food/scripts/food_special.gd
index c2fde78..45d0c56 100644
--- a/src/entities/food/scripts/food_special.gd
+++ b/src/entities/food/scripts/food_special.gd
@@ -3,9 +3,8 @@ extends Food
enum Type {
BUNNY,
- FROG,
TURTLE,
- RAT
+ FROG
}
@@ -13,4 +12,3 @@ func _ready():
texture[Type.BUNNY] = preload("res://entities/food/sprites/bunny.png")
texture[Type.FROG] = preload("res://entities/food/sprites/frog.png")
texture[Type.TURTLE] = preload("res://entities/food/sprites/turtle.png")
- texture[Type.RAT] = preload("res://entities/food/sprites/rat.png")