diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-06-25 15:22:03 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-06-25 15:22:03 +0200 | 
| commit | f961c1f8d25f479d8b91ac537f3a91ab0adc68b1 (patch) | |
| tree | faf6a3297bdaa449b70a18db8e0d1d2132b99dd0 /client/map/tiles/tile.gd | |
| parent | fb063266454462571596931b40560bf3992f7f16 (diff) | |
| parent | 4c6b38bb85d5211df01ee4f9e14a613dbe21be6d (diff) | |
| download | hurrycurry-f961c1f8d25f479d8b91ac537f3a91ab0adc68b1.tar hurrycurry-f961c1f8d25f479d8b91ac537f3a91ab0adc68b1.tar.bz2 hurrycurry-f961c1f8d25f479d8b91ac537f3a91ab0adc68b1.tar.zst | |
Merge branch 'master' of codeberg.org:metamuffin/undercooked
Diffstat (limited to 'client/map/tiles/tile.gd')
| -rw-r--r-- | client/map/tiles/tile.gd | 76 | 
1 files changed, 76 insertions, 0 deletions
| 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 | 
