From ecab582c7f3e859e89efe88afd31a574d14bfae4 Mon Sep 17 00:00:00 2001 From: ObeseTermite Date: Sat, 13 Sep 2025 14:42:20 -0700 Subject: [PATCH] Initial commit --- .editorconfig | 4 ++ .gitattributes | 2 + .gitignore | 3 ++ globals.gd | 1 + globals.gd.uid | 1 + icon.svg | 1 + icon.svg.import | 37 ++++++++++++++++++ logic/world/chunk/chunk.gd | 24 ++++++++++++ logic/world/chunk/chunk.gd.uid | 1 + logic/world/chunk/chunk.tscn | 6 +++ logic/world/chunk/tile/tile.gd | 5 +++ logic/world/chunk/tile/tile.gd.uid | 1 + logic/world/chunk/tile/tile_definition.gd | 7 ++++ logic/world/chunk/tile/tile_definition.gd.uid | 1 + .../world/chunk/tile/tile_definition_array.gd | 5 +++ .../chunk/tile/tile_definition_array.gd.uid | 1 + logic/world/chunk/tile/tile_globals.gd | 9 +++++ logic/world/chunk/tile/tile_globals.gd.uid | 1 + project.godot | 26 ++++++++++++ resources/tiles/base_tiles.tres | 25 ++++++++++++ resources/tiles/textures/grass.png | Bin 0 -> 210 bytes resources/tiles/textures/grass.png.import | 34 ++++++++++++++++ resources/tiles/textures/water.png | Bin 0 -> 196 bytes resources/tiles/textures/water.png.import | 34 ++++++++++++++++ 24 files changed, 229 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 globals.gd create mode 100644 globals.gd.uid create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 logic/world/chunk/chunk.gd create mode 100644 logic/world/chunk/chunk.gd.uid create mode 100644 logic/world/chunk/chunk.tscn create mode 100644 logic/world/chunk/tile/tile.gd create mode 100644 logic/world/chunk/tile/tile.gd.uid create mode 100644 logic/world/chunk/tile/tile_definition.gd create mode 100644 logic/world/chunk/tile/tile_definition.gd.uid create mode 100644 logic/world/chunk/tile/tile_definition_array.gd create mode 100644 logic/world/chunk/tile/tile_definition_array.gd.uid create mode 100644 logic/world/chunk/tile/tile_globals.gd create mode 100644 logic/world/chunk/tile/tile_globals.gd.uid create mode 100644 project.godot create mode 100644 resources/tiles/base_tiles.tres create mode 100644 resources/tiles/textures/grass.png create mode 100644 resources/tiles/textures/grass.png.import create mode 100644 resources/tiles/textures/water.png create mode 100644 resources/tiles/textures/water.png.import diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/globals.gd b/globals.gd new file mode 100644 index 0000000..61510e1 --- /dev/null +++ b/globals.gd @@ -0,0 +1 @@ +extends Node diff --git a/globals.gd.uid b/globals.gd.uid new file mode 100644 index 0000000..2f16cf4 --- /dev/null +++ b/globals.gd.uid @@ -0,0 +1 @@ +uid://bodpvbpaxnou5 diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..68ff3ce --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbrv2ri8e1yti" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/logic/world/chunk/chunk.gd b/logic/world/chunk/chunk.gd new file mode 100644 index 0000000..730155f --- /dev/null +++ b/logic/world/chunk/chunk.gd @@ -0,0 +1,24 @@ +extends Node2D + +var tiles : Array[Tile] +var chunk_offset : Vector2i + +func _init() -> void: + for i in range(TileGlobals.chunk_size ** 2): + tiles.append(Tile.new()) + +func get_tile(pos : Vector2i): + return tiles[pos.y * TileGlobals.chunk_size + pos.x] + +func _draw() -> void: + var x : int = 0 + var y : int = 0 + + for tile in tiles: + var tile_definition : TileDefinition = TileGlobals.tile_definitions[tile.id] + draw_texture(tile_definition.texture, Vector2(x, y) * TileGlobals.tile_size) + + x += 1 + if x >= TileGlobals.chunk_size: + y += 1 + x = 0 diff --git a/logic/world/chunk/chunk.gd.uid b/logic/world/chunk/chunk.gd.uid new file mode 100644 index 0000000..033623b --- /dev/null +++ b/logic/world/chunk/chunk.gd.uid @@ -0,0 +1 @@ +uid://bgcupjxa6vqhj diff --git a/logic/world/chunk/chunk.tscn b/logic/world/chunk/chunk.tscn new file mode 100644 index 0000000..72da410 --- /dev/null +++ b/logic/world/chunk/chunk.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://b5shor4eu6vsy"] + +[ext_resource type="Script" uid="uid://bgcupjxa6vqhj" path="res://logic/world/chunk/chunk.gd" id="1_kkcqc"] + +[node name="Chunk" type="Node2D"] +script = ExtResource("1_kkcqc") diff --git a/logic/world/chunk/tile/tile.gd b/logic/world/chunk/tile/tile.gd new file mode 100644 index 0000000..fde4786 --- /dev/null +++ b/logic/world/chunk/tile/tile.gd @@ -0,0 +1,5 @@ +extends Node + +class_name Tile + +var id : int = 0 diff --git a/logic/world/chunk/tile/tile.gd.uid b/logic/world/chunk/tile/tile.gd.uid new file mode 100644 index 0000000..4b23656 --- /dev/null +++ b/logic/world/chunk/tile/tile.gd.uid @@ -0,0 +1 @@ +uid://v68woe1hw3gc diff --git a/logic/world/chunk/tile/tile_definition.gd b/logic/world/chunk/tile/tile_definition.gd new file mode 100644 index 0000000..4803568 --- /dev/null +++ b/logic/world/chunk/tile/tile_definition.gd @@ -0,0 +1,7 @@ +extends Resource + +class_name TileDefinition + +@export var name : String +@export var texture : Texture2D +@export var barrier : bool = false diff --git a/logic/world/chunk/tile/tile_definition.gd.uid b/logic/world/chunk/tile/tile_definition.gd.uid new file mode 100644 index 0000000..c3b15f8 --- /dev/null +++ b/logic/world/chunk/tile/tile_definition.gd.uid @@ -0,0 +1 @@ +uid://cp4p3pk48mwqx diff --git a/logic/world/chunk/tile/tile_definition_array.gd b/logic/world/chunk/tile/tile_definition_array.gd new file mode 100644 index 0000000..ad87d9f --- /dev/null +++ b/logic/world/chunk/tile/tile_definition_array.gd @@ -0,0 +1,5 @@ +extends Resource + +class_name TileDefinitionArray + +@export var tile_definitions : Array[TileDefinition] diff --git a/logic/world/chunk/tile/tile_definition_array.gd.uid b/logic/world/chunk/tile/tile_definition_array.gd.uid new file mode 100644 index 0000000..e8b801f --- /dev/null +++ b/logic/world/chunk/tile/tile_definition_array.gd.uid @@ -0,0 +1 @@ +uid://18w861lh0xyt diff --git a/logic/world/chunk/tile/tile_globals.gd b/logic/world/chunk/tile/tile_globals.gd new file mode 100644 index 0000000..2bba9db --- /dev/null +++ b/logic/world/chunk/tile/tile_globals.gd @@ -0,0 +1,9 @@ +extends Node + +var tile_definitions : Array[TileDefinition] +const chunk_size : int = 16 +const tile_size : int = 16 + +func _init(): + var tile_definition_array : TileDefinitionArray = preload("res://resources/tiles/base_tiles.tres") + tile_definitions = tile_definition_array.tile_definitions diff --git a/logic/world/chunk/tile/tile_globals.gd.uid b/logic/world/chunk/tile/tile_globals.gd.uid new file mode 100644 index 0000000..4c143a4 --- /dev/null +++ b/logic/world/chunk/tile/tile_globals.gd.uid @@ -0,0 +1 @@ +uid://dic4j2rg2nsvb diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..487d92c --- /dev/null +++ b/project.godot @@ -0,0 +1,26 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="FactoryExpansion" +config/features=PackedStringArray("4.4", "GL Compatibility") +config/icon="res://icon.svg" + +[autoload] + +Globals="*res://globals.gd" +TileGlobals="*res://logic/world/chunk/tile/tile_globals.gd" + +[rendering] + +textures/canvas_textures/default_texture_filter=0 +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" diff --git a/resources/tiles/base_tiles.tres b/resources/tiles/base_tiles.tres new file mode 100644 index 0000000..ca61647 --- /dev/null +++ b/resources/tiles/base_tiles.tres @@ -0,0 +1,25 @@ +[gd_resource type="Resource" script_class="TileDefinitionArray" load_steps=7 format=3 uid="uid://7a03sai1i6fd"] + +[ext_resource type="Script" uid="uid://18w861lh0xyt" path="res://logic/world/chunk/tile/tile_definition_array.gd" id="1_58vwe"] +[ext_resource type="Script" uid="uid://cp4p3pk48mwqx" path="res://logic/world/chunk/tile/tile_definition.gd" id="2_12vs5"] +[ext_resource type="Texture2D" uid="uid://31njex15xgpr" path="res://resources/tiles/textures/grass.png" id="3_12vs5"] +[ext_resource type="Texture2D" uid="uid://dhj4m7xfgfr8r" path="res://resources/tiles/textures/water.png" id="4_edm72"] + +[sub_resource type="Resource" id="Resource_c6abn"] +script = ExtResource("2_12vs5") +name = "Water" +texture = ExtResource("4_edm72") +barrier = false +metadata/_custom_type_script = "uid://cp4p3pk48mwqx" + +[sub_resource type="Resource" id="Resource_edm72"] +script = ExtResource("2_12vs5") +name = "Grass" +texture = ExtResource("3_12vs5") +barrier = false +metadata/_custom_type_script = "uid://cp4p3pk48mwqx" + +[resource] +script = ExtResource("1_58vwe") +tile_definitions = Array[ExtResource("2_12vs5")]([SubResource("Resource_c6abn"), SubResource("Resource_edm72")]) +metadata/_custom_type_script = "uid://18w861lh0xyt" diff --git a/resources/tiles/textures/grass.png b/resources/tiles/textures/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..fff7e60cc30614bd02cea30a1bc0e29bd0c0a396 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|dOTemLo9lG zgEk5tP~dRsIx|6alT%iBvEB3nHtFC(_a}@i1wPDYKXv<+RPCj|F;60=q$?Sny!iaR zY@;#PD}E`T8rkHK7mc0klY6+758PeQB3r<2EM&B8ueI{SDZDc$3T#~1yTjPwO@{JA zsm07f$vcY@EcX|Tu(Uk{8@c04o-=q?6NS3j3^ HP6ef+ literal 0 HcmV?d00001 diff --git a/resources/tiles/textures/grass.png.import b/resources/tiles/textures/grass.png.import new file mode 100644 index 0000000..e83442f --- /dev/null +++ b/resources/tiles/textures/grass.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://31njex15xgpr" +path="res://.godot/imported/grass.png-b9f264aaa8345ec83a51549170f38e82.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/tiles/textures/grass.png" +dest_files=["res://.godot/imported/grass.png-b9f264aaa8345ec83a51549170f38e82.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/tiles/textures/water.png b/resources/tiles/textures/water.png new file mode 100644 index 0000000000000000000000000000000000000000..22f192a00439609919482e079e3d3034c2af8d6a GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>O5T>Lo9la z2A$+Rpul4ssGgu(mvde9hoNtILhHBGkfjcvGD5vQI-O*mbKK|`W=PV_&}=rl7*uy8 zgV{mhAdi*fVU-OEQJcii2jty(f=STajVyLv9NN5Ywc54`5ACm sg`BJnu*wK!Z#X;IV3psb|NJkRTFqR_55Lmp1G