diff options
Diffstat (limited to 'client/map')
| -rw-r--r-- | client/map/map.gd | 29 | ||||
| -rw-r--r-- | client/map/map.tscn | 44 | ||||
| -rw-r--r-- | client/map/progress.gd | 1 | 
3 files changed, 33 insertions, 41 deletions
| diff --git a/client/map/map.gd b/client/map/map.gd new file mode 100644 index 00000000..1cd0bd30 --- /dev/null +++ b/client/map/map.gd @@ -0,0 +1,29 @@ +class_name Map +extends Node3D + +var tile_by_pos: Dictionary = {} + + +func get_tile_name(position: Vector2i): +	var e = tile_by_pos[str(position)] +	if e != null: return e[0] +	else: return null +func get_tile_instance(position: Vector2i) -> Tile: +	var e = tile_by_pos[str(position)] +	if e != null: return e[1] +	else: return null + +func set_tile(position: Vector2i, name: String, neighbors: Array = [null,null,null,null]) -> Tile: +	var tile = TileFactory.produce(name, str(position), neighbors) +	add_child(tile) +	tile.position = Vector3(position.x, 0, position.y) +	tile_by_pos[str(position)] = [name, tile] +	return tile + +func remove_tile_if_exists(pos: Vector2i): +	var tile = get_tile_instance(pos) +	if tile == null: return +	if tile.item != null: tile.item.queue_free() +	tile_by_pos.erase(str(pos)) +	tile.name += "_queued_free" +	tile.queue_free() diff --git a/client/map/map.tscn b/client/map/map.tscn index 612729f4..df359214 100644 --- a/client/map/map.tscn +++ b/client/map/map.tscn @@ -1,44 +1,6 @@ -[gd_scene load_steps=2 format=3 uid="uid://duqkg22yre6ry"] +[gd_scene load_steps=2 format=3 uid="uid://b4gone8fu53r7"] -[sub_resource type="GDScript" id="GDScript_qftmc"] -script/source = "# Undercooked - a game about cooking -# Copyright 2024 nokoe -# Copyright 2024 tpart -# Copyright 2024 metamuffin -# -# 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 Map -extends Node3D - -var tile_by_pos: Dictionary = {} - -func update(pos, tile_name, neighbors): -	var node_name = str(pos) - -	if has_node(node_name): -		queue_free_rename(get_node(node_name)) - -	var instance: Tile = TileFactory.produce(tile_name, node_name, neighbors) - -	instance.position = Vector3(pos[0], 0, pos[1]) -	tile_by_pos[str(Vector2i(pos[0], pos[1]))] = instance -	add_child(instance) - -func queue_free_rename(node: Node) -> void: -	node.name += \"_queued_free\" -	node.queue_free() -" +[ext_resource type="Script" path="res://map/map.gd" id="1_3en0a"]  [node name="Map" type="Node3D"] -script = SubResource("GDScript_qftmc") +script = ExtResource("1_3en0a") diff --git a/client/map/progress.gd b/client/map/progress.gd index 4d6494f6..dd855a36 100644 --- a/client/map/progress.gd +++ b/client/map/progress.gd @@ -20,3 +20,4 @@ func set_progress(progress: float, bad: bool):  	var mat: ShaderMaterial = self.get_active_material(0)  	mat.set_shader_parameter("progress", progress)  	mat.set_shader_parameter("bad", bad) + | 
