diff options
| author | nokoe <nokoe@mailbox.org> | 2024-07-08 01:44:06 +0200 | 
|---|---|---|
| committer | nokoe <nokoe@mailbox.org> | 2024-07-08 01:44:06 +0200 | 
| commit | ea08be33bf29179249866daf8ba10df53546361c (patch) | |
| tree | e902aa1a700676070e4038341ceb53f561e59cfb /client/map/tiles | |
| parent | 1f4e22ae0193b25e65f5beea111d25c98877d647 (diff) | |
| download | hurrycurry-ea08be33bf29179249866daf8ba10df53546361c.tar hurrycurry-ea08be33bf29179249866daf8ba10df53546361c.tar.bz2 hurrycurry-ea08be33bf29179249866daf8ba10df53546361c.tar.zst | |
add fence
Diffstat (limited to 'client/map/tiles')
| -rw-r--r-- | client/map/tiles/counter.gd | 22 | ||||
| -rw-r--r-- | client/map/tiles/fence.gd | 33 | ||||
| -rw-r--r-- | client/map/tiles/fence_corner.res | bin | 0 -> 4533 bytes | |||
| -rw-r--r-- | client/map/tiles/fence_corner.tscn | 10 | ||||
| -rw-r--r-- | client/map/tiles/fence_straight.res | bin | 0 -> 4243 bytes | |||
| -rw-r--r-- | client/map/tiles/fence_straight.tscn | 10 | ||||
| -rw-r--r-- | client/map/tiles/fence_t.res | bin | 0 -> 4858 bytes | |||
| -rw-r--r-- | client/map/tiles/fence_t.tscn | 10 | ||||
| -rw-r--r-- | client/map/tiles/floor.gd | 7 | ||||
| -rw-r--r-- | client/map/tiles/grass.gd | 8 | ||||
| -rw-r--r-- | client/map/tiles/path.gd | 7 | ||||
| -rw-r--r-- | client/map/tiles/tile.gd | 9 | ||||
| -rw-r--r-- | client/map/tiles/wall_tile.gd | 3 | 
13 files changed, 97 insertions, 22 deletions
| diff --git a/client/map/tiles/counter.gd b/client/map/tiles/counter.gd index 62868087..d511e90d 100644 --- a/client/map/tiles/counter.gd +++ b/client/map/tiles/counter.gd @@ -1,28 +1,33 @@  # 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 Counter  extends FullTile -const counters: Array = [ +const COUNTERS: Array = [  	"counter",  	"pan",  	"sink",  	"oven",  ] +const FLOORS: Array = [ +	"floor", +	"grass", +] +  enum CounterKind {  	OUTER_CORNER,  	STRAIGHT, @@ -43,7 +48,7 @@ func _init(rename: String, neighbors: Array):  	for start in range(4):  		var series = 0  		for i in range(4): -			if neighbors[(start + i) % 4] == "floor": +			if Counter.is_floor(neighbors[(start + i) % 4]):  				series += 1  			else:  				break @@ -67,4 +72,7 @@ func _init(rename: String, neighbors: Array):  static func is_counter(tile_name_t) -> bool:  	if tile_name_t == null:  		return false -	return tile_name_t.ends_with("crate") or counters.has(tile_name_t) +	return tile_name_t.ends_with("crate") or COUNTERS.has(tile_name_t) + +static func is_floor(floor_name) -> bool: +	return FLOORS.has(floor_name) diff --git a/client/map/tiles/fence.gd b/client/map/tiles/fence.gd new file mode 100644 index 00000000..61383959 --- /dev/null +++ b/client/map/tiles/fence.gd @@ -0,0 +1,33 @@ +# 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 Fence +extends WallTile + +func _init(rename: String, neighbors: Array): +	super(rename, neighbors) +	match kind: +		WallKind.STRAIGHT: +			base.add_child(load("res://map/tiles/fence_straight.tscn").instantiate()) +		WallKind.OUTER_CORNER: +			base.add_child(load("res://map/tiles/fence_corner.tscn").instantiate()) +		WallKind.T: +			base.add_child(load("res://map/tiles/fence_t.tscn").instantiate()) +		WallKind.CROSS: +			push_warning("no wall cross available!") +			base.add_child(load("res://map/tiles/fence_straight.tscn").instantiate()) + +func get_base_mesh(): +	return preload("res://map/tiles/grass.tscn").instantiate() diff --git a/client/map/tiles/fence_corner.res b/client/map/tiles/fence_corner.resBinary files differ new file mode 100644 index 00000000..14e345a6 --- /dev/null +++ b/client/map/tiles/fence_corner.res diff --git a/client/map/tiles/fence_corner.tscn b/client/map/tiles/fence_corner.tscn new file mode 100644 index 00000000..b7b0d356 --- /dev/null +++ b/client/map/tiles/fence_corner.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://cvac5lq82xqhq"] + +[ext_resource type="ArrayMesh" uid="uid://25vo0ohcya7a" path="res://map/tiles/fence_corner.res" id="1_5aqc4"] + +[node name="FenceCorner" type="Node3D"] + +[node name="Mesh" type="MeshInstance3D" parent="."] +transform = Transform3D(-2.18557e-06, 0, 50, 0, 50, 0, -50, 0, -2.18557e-06, 0, 0, 0) +mesh = ExtResource("1_5aqc4") +skeleton = NodePath("") diff --git a/client/map/tiles/fence_straight.res b/client/map/tiles/fence_straight.resBinary files differ new file mode 100644 index 00000000..c3975138 --- /dev/null +++ b/client/map/tiles/fence_straight.res diff --git a/client/map/tiles/fence_straight.tscn b/client/map/tiles/fence_straight.tscn new file mode 100644 index 00000000..d31af10d --- /dev/null +++ b/client/map/tiles/fence_straight.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://d0w3mrbe8w8m0"] + +[ext_resource type="ArrayMesh" uid="uid://d1jfqqjhaqsgn" path="res://map/tiles/fence_straight.res" id="1_4ta43"] + +[node name="FenceStraight" type="Node3D"] + +[node name="Mesh" type="MeshInstance3D" parent="."] +transform = Transform3D(-2.18557e-06, 0, 50, 0, 50, 0, -50, 0, -2.18557e-06, 0, 0, 0) +mesh = ExtResource("1_4ta43") +skeleton = NodePath("") diff --git a/client/map/tiles/fence_t.res b/client/map/tiles/fence_t.resBinary files differ new file mode 100644 index 00000000..93043f7c --- /dev/null +++ b/client/map/tiles/fence_t.res diff --git a/client/map/tiles/fence_t.tscn b/client/map/tiles/fence_t.tscn new file mode 100644 index 00000000..1efb3fe8 --- /dev/null +++ b/client/map/tiles/fence_t.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://bk6ufdmbtrkkh"] + +[ext_resource type="ArrayMesh" uid="uid://b8v4k4o8cusn4" path="res://map/tiles/fence_t.res" id="1_i484t"] + +[node name="FenceT" type="Node3D"] + +[node name="Mesh" type="MeshInstance3D" parent="."] +transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0) +mesh = ExtResource("1_i484t") +skeleton = NodePath("") diff --git a/client/map/tiles/floor.gd b/client/map/tiles/floor.gd index 6a158c67..37e13686 100644 --- a/client/map/tiles/floor.gd +++ b/client/map/tiles/floor.gd @@ -16,8 +16,5 @@  class_name Floor  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) +func get_base_mesh(): +	return preload("res://map/tiles/floor.tscn").instantiate() diff --git a/client/map/tiles/grass.gd b/client/map/tiles/grass.gd index 15ee7603..1c0dd844 100644 --- a/client/map/tiles/grass.gd +++ b/client/map/tiles/grass.gd @@ -22,15 +22,15 @@ const GRASS_COUNT: int = 16  func _init(rename: String, _neighbors: Array):  	super(rename, _neighbors) -	var grass_tile = preload("res://map/tiles/grass.tscn").instantiate() -	grass_tile.position += Vector3(0.5, 0, 0.5) -	add_child(grass_tile)  	var random = RandomNumberGenerator.new()  	random.seed = rename.hash()  	for _i in Global.get_setting("grass_amount"):  		var g: Node3D = GRASS_SIDE.instantiate() -		grass_tile.add_child(g) +		base_mesh.add_child(g)  		g.position = Vector3(random.randf_range(-.5, .5), 0, random.randf_range(-.5, .5))  		g.rotation = Vector3(0, random.randf_range(0, PI), 0) + +func get_base_mesh(): +	return preload("res://map/tiles/grass.tscn").instantiate() diff --git a/client/map/tiles/path.gd b/client/map/tiles/path.gd index 76c49b64..02240632 100644 --- a/client/map/tiles/path.gd +++ b/client/map/tiles/path.gd @@ -16,8 +16,5 @@  class_name Path  extends Tile -func _init(rename: String, _neighbors: Array): -	super(rename, _neighbors) -	var path_tile = preload("res://map/tiles/path.tscn").instantiate() -	path_tile.position += Vector3(0.5, 0, 0.5) -	add_child(path_tile) +func get_base_mesh(): +	return preload("res://map/tiles/path.tscn").instantiate() diff --git a/client/map/tiles/tile.gd b/client/map/tiles/tile.gd index 6a73c596..38e425f0 100644 --- a/client/map/tiles/tile.gd +++ b/client/map/tiles/tile.gd @@ -17,6 +17,7 @@ class_name Tile  extends Node3D  var base = Node3D.new() +var base_mesh  var item: Item = null  var item_base: Node3D @@ -39,6 +40,11 @@ func _init(rename: String, _neighbors: Array):  	item_base_.name = "ItemBase"  	base.add_child(item_base_)  	item_base = item_base_ +	base_mesh = get_base_mesh() +	if base_mesh != null: +		var m: Node3D = base_mesh +		m.position += Vector3(0.5, 0, 0.5) +		add_child(m)  func turn_facing(facing: Facing):  	base.rotation.y = facing * 0.5 * PI + PI @@ -80,3 +86,6 @@ func take_item() -> Item:  	var i = item  	item = null  	return i + +func get_base_mesh(): +	return null diff --git a/client/map/tiles/wall_tile.gd b/client/map/tiles/wall_tile.gd index b876990e..ae3ac9e1 100644 --- a/client/map/tiles/wall_tile.gd +++ b/client/map/tiles/wall_tile.gd @@ -20,7 +20,8 @@ const WALLS: Array = [  	"wall",  	"wall-window",  	"counter-window", -	"door" +	"door", +	"fence"  ]  enum WallKind { | 
