From 8974f0cc56caed03da790e0f6b3a3a01c61acc0c Mon Sep 17 00:00:00 2001 From: akshay Date: Thu, 18 Aug 2022 21:30:21 -0400 Subject: [PATCH] Updated oven to extend Damageable and updated code to override base class properly --- scenes/crafting_station.tscn | 5 ++++- scenes/dev-akshay.tscn | 5 ++++- scenes/item_generator.tscn | 2 ++ scripts/oven/oven.gd | 9 ++++----- scripts/oven/state/broken.gd | 6 ++---- scripts/oven/state/cooking.gd | 3 +-- scripts/oven/state/holding_item.gd | 3 +-- scripts/oven/state/idle.gd | 3 +-- 8 files changed, 19 insertions(+), 17 deletions(-) diff --git a/scenes/crafting_station.tscn b/scenes/crafting_station.tscn index 6dcfc3f..8fe2d44 100644 --- a/scenes/crafting_station.tscn +++ b/scenes/crafting_station.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://scenes/item_holder.tscn" type="PackedScene" id=1] [ext_resource path="res://scripts/crafting_station/crafting_station.gd" type="Script" id=2] @@ -6,6 +6,7 @@ [ext_resource path="res://scenes/item_dump.tscn" type="PackedScene" id=4] [ext_resource path="res://scenes/status_light.tscn" type="PackedScene" id=5] [ext_resource path="res://item_types/repair_kit.tres" type="Resource" id=6] +[ext_resource path="res://item_types/ore.tres" type="Resource" id=7] [sub_resource type="CylinderMesh" id=1] height = 0.936 @@ -57,6 +58,8 @@ unique_name_in_owner = true transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.366242, 0, 0 ) item_type_0 = ExtResource( 6 ) item_count_0 = 1 +item_type_1 = ExtResource( 7 ) +item_count_1 = 2 [node name="status_light" parent="." instance=ExtResource( 5 )] unique_name_in_owner = true diff --git a/scenes/dev-akshay.tscn b/scenes/dev-akshay.tscn index d940fde..ca792d2 100644 --- a/scenes/dev-akshay.tscn +++ b/scenes/dev-akshay.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=27 format=2] +[gd_scene load_steps=28 format=2] [ext_resource path="res://scenes/player.tscn" type="PackedScene" id=1] [ext_resource path="res://scripts/dof_focus.gd" type="Script" id=2] @@ -20,6 +20,7 @@ [ext_resource path="res://scenes/comm_station.tscn" type="PackedScene" id=18] [ext_resource path="res://assets/level/Level.tscn" type="PackedScene" id=19] [ext_resource path="res://scenes/bed.tscn" type="PackedScene" id=20] +[ext_resource path="res://item_types/repair_kit.tres" type="Resource" id=21] [sub_resource type="CylinderShape" id=8] height = 5.22615 @@ -248,9 +249,11 @@ text = "Storage" [node name="item_holder" parent="Storage_Room" instance=ExtResource( 17 )] transform = Transform( 0.0379867, 0, 0.999278, 0, 1, 0, -0.999278, 0, 0.0379867, -0.0128546, 0, -8.17408 ) +start_with_item = ExtResource( 21 ) [node name="item_holder2" parent="Storage_Room" instance=ExtResource( 17 )] transform = Transform( 0.0379867, 0, 0.999278, 0, 1, 0, -0.999278, 0, 0.0379867, -2.64011, 0, -8.27395 ) +start_with_item = ExtResource( 6 ) [node name="item_holder3" parent="Storage_Room" instance=ExtResource( 17 )] transform = Transform( 0.0379867, 0, 0.999278, 0, 1, 0, -0.999278, 0, 0.0379867, 2.23318, 0, -8.0887 ) diff --git a/scenes/item_generator.tscn b/scenes/item_generator.tscn index 1c137e9..2785977 100644 --- a/scenes/item_generator.tscn +++ b/scenes/item_generator.tscn @@ -42,6 +42,8 @@ one_shot = true unique_name_in_owner = true item_type_0 = ExtResource( 6 ) item_count_0 = 1 +item_type_1 = ExtResource( 7 ) +item_count_1 = 2 [node name="status_light" parent="." instance=ExtResource( 5 )] unique_name_in_owner = true diff --git a/scripts/oven/oven.gd b/scripts/oven/oven.gd index 02779d7..a8bbb4c 100644 --- a/scripts/oven/oven.gd +++ b/scripts/oven/oven.gd @@ -1,4 +1,4 @@ -extends Spatial +extends Damageable const StateIdle = preload("res://scripts/oven/state/idle.gd") const StateCooking = preload("res://scripts/oven/state/cooking.gd") @@ -6,8 +6,6 @@ const StateHoldingItem = preload("res://scripts/oven/state/holding_item.gd") const StateBroken = preload("res://scripts/oven/state/broken.gd") export var cook_time: float = 2.0 -export var start_broken: bool = false -export var max_hp: int = 1 var hp: int = max_hp var state = null @@ -38,5 +36,6 @@ func _on_item_holder_item_changed(item): func _on_item_dump_completed(): state.on_item_dump_completed() -func take_damage(): - state.take_damage() +func take_damage(damage : int = 1): + .take_damage(damage) + state.on_damage_taken() diff --git a/scripts/oven/state/broken.gd b/scripts/oven/state/broken.gd index f80423f..67d496d 100644 --- a/scripts/oven/state/broken.gd +++ b/scripts/oven/state/broken.gd @@ -8,7 +8,6 @@ func _init(): pass func enter_from(state): - ctx.remove_from_group("damageable") ctx.get_node("item_dump").enabled = true ctx.get_node("item_dump").reset() ctx.get_node("coin_machine").enabled = false @@ -18,7 +17,6 @@ func enter_from(state): func exit_to(state): assert(state.NAME != "broken") - ctx.add_to_group("damageable") func on_coin_machine_coin_requirement_met(player): assert(false, "should be impossible while broken") @@ -33,5 +31,5 @@ func on_item_dump_completed(): ctx.full_heal() ctx.change_state(ctx.StateIdle.new()) -func take_damage(): - pass # already broken +func on_damage_taken(): + assert(false, "should be impossible while broken") diff --git a/scripts/oven/state/cooking.gd b/scripts/oven/state/cooking.gd index 0104fc1..6a7ce59 100644 --- a/scripts/oven/state/cooking.gd +++ b/scripts/oven/state/cooking.gd @@ -36,8 +36,7 @@ func on_item_holder_item_changed(item): func on_item_dump_completed(): assert(false, "item dump should be disabled") -func take_damage(): - ctx.hp -= 1 +func on_damage_taken(): if ctx.hp <= 0: assert(ctx.get_node("%item_holder").has_item()) ctx.get_node("%item_holder").destroy_item() diff --git a/scripts/oven/state/holding_item.gd b/scripts/oven/state/holding_item.gd index 4df3c38..9c89d95 100644 --- a/scripts/oven/state/holding_item.gd +++ b/scripts/oven/state/holding_item.gd @@ -40,8 +40,7 @@ func on_item_holder_item_changed(item): func on_item_dump_completed(): assert(false, "item dump should be disabled") -func take_damage(): - ctx.hp -= 1 +func on_damage_taken(): if ctx.hp <= 0: if ctx.get_node("%item_holder").has_item(): ctx.get_node("%item_holder").destroy_item() diff --git a/scripts/oven/state/idle.gd b/scripts/oven/state/idle.gd index 4eae896..f202149 100644 --- a/scripts/oven/state/idle.gd +++ b/scripts/oven/state/idle.gd @@ -30,7 +30,6 @@ func on_item_holder_item_changed(item): func on_item_dump_completed(): assert(false, "item dump should be disabled") -func take_damage(): - ctx.hp -= 1 +func on_damage_taken(): if ctx.hp <= 0: ctx.change_state(ctx.StateBroken.new())