commit ecab582c7f3e859e89efe88afd31a574d14bfae4 Author: ObeseTermite Date: Sat Sep 13 14:42:20 2025 -0700 Initial commit 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 0000000..fff7e60 Binary files /dev/null and b/resources/tiles/textures/grass.png differ 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 0000000..22f192a Binary files /dev/null and b/resources/tiles/textures/water.png differ diff --git a/resources/tiles/textures/water.png.import b/resources/tiles/textures/water.png.import new file mode 100644 index 0000000..edd9669 --- /dev/null +++ b/resources/tiles/textures/water.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhj4m7xfgfr8r" +path="res://.godot/imported/water.png-0df44c59650310c522d02ac1e8165335.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/tiles/textures/water.png" +dest_files=["res://.godot/imported/water.png-0df44c59650310c522d02ac1e8165335.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