diff options
Diffstat (limited to 'client/map/tiles')
-rw-r--r-- | client/map/tiles/floor.gd | 60 | ||||
-rw-r--r-- | client/map/tiles/tile.gd | 76 |
2 files changed, 78 insertions, 58 deletions
diff --git a/client/map/tiles/floor.gd b/client/map/tiles/floor.gd index c5089feb..6a158c67 100644 --- a/client/map/tiles/floor.gd +++ b/client/map/tiles/floor.gd @@ -14,66 +14,10 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Floor -extends Node3D - -var base = Node3D.new() -var item: Item = null -var item_base: Node3D - -enum Facing { - NEG_Y = 0, - NEG_X = 1, - Y = 2, - X = 3, -} +extends Tile func _init(rename: String, _neighbors: Array): + super(rename, _neighbors) var floor_tile = load("res://map/tiles/floor.tscn").instantiate() floor_tile.position += Vector3(0.5, 0, 0.5) add_child(floor_tile) - base.name = "Base" - base.position += Vector3(0.5, 0, 0.5) - add_child(base) - self.name = rename - var item_base_ = Node3D.new() - # this method is supposed to be overriden - @warning_ignore("static_called_on_instance") - item_base_.position = interact_target() - item_base_.name = "ItemBase" - base.add_child(item_base_) - item_base = item_base_ - -func turn_facing(facing: Facing): - base.rotate_y(facing * 0.5 * PI + PI) - -# defines where items go when interacting -static func interact_target() -> Vector3: - return Vector3(0, 0, 0) - -# actions when interacting, e.g. animations -func interact(): - pass - -func progress(p: float, warn: bool): - if item != null: - item.progress(p, warn) - -func finish(warn: bool): - if item != null: - item.finish(warn) - -func put_item(i: Item): - if item != null: - push_error("already holding an item") - set_item(i) - -func set_item(i: Item): - if item != null: - item.queue_free() - item = i - i.owned_by = item_base - -func take_item() -> Item: - var i = item - item = null - return i diff --git a/client/map/tiles/tile.gd b/client/map/tiles/tile.gd new file mode 100644 index 00000000..039a6c1b --- /dev/null +++ b/client/map/tiles/tile.gd @@ -0,0 +1,76 @@ +# Undercooked - a game about cooking +# Copyright 2024 nokoe +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, version 3 of the License only. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +class_name Tile +extends Node3D + +var base = Node3D.new() +var item: Item = null +var item_base: Node3D + +enum Facing { + NEG_Y = 0, + NEG_X = 1, + Y = 2, + X = 3, +} + +func _init(rename: String, _neighbors: Array): + base.name = "Base" + base.position += Vector3(0.5, 0, 0.5) + add_child(base) + self.name = rename + var item_base_ = Node3D.new() + # this method is supposed to be overriden + @warning_ignore("static_called_on_instance") + item_base_.position = interact_target() + item_base_.name = "ItemBase" + base.add_child(item_base_) + item_base = item_base_ + +func turn_facing(facing: Facing): + base.rotate_y(facing * 0.5 * PI + PI) + +# defines where items go when interacting +static func interact_target() -> Vector3: + return Vector3(0, 0, 0) + +# actions when interacting, e.g. animations +func interact(): + pass + +func progress(p: float, warn: bool): + if item != null: + item.progress(p, warn) + +func finish(warn: bool): + if item != null: + item.finish(warn) + +func put_item(i: Item): + if item != null: + push_error("already holding an item") + set_item(i) + +func set_item(i: Item): + if item != null: + item.queue_free() + item = i + i.owned_by = item_base + +func take_item() -> Item: + var i = item + item = null + return i |