Added building structure

Created harvester building
added harvester particles
added nearest resource func
This commit is contained in:
2024-03-11 07:56:22 -05:00
parent d74bfda9a3
commit 4b362fabed
9 changed files with 70 additions and 20 deletions

View File

@@ -2,7 +2,7 @@
[ext_resource type="Texture2D" uid="uid://n806c03hgaq1" path="res://assets/scifi_tilesheet@2.png" id="1_p1crr"]
[ext_resource type="Script" path="res://data/buildings/building_group.gd" id="1_xphre"]
[ext_resource type="Resource" uid="uid://d38xgwstvtcm4" path="res://data/buildings/basic/harvester_building.tres" id="2_7d7fa"]
[ext_resource type="Resource" uid="uid://d38xgwstvtcm4" path="res://data/buildings/basic/harvester/harvester_building.tres" id="2_5rd2r"]
[ext_resource type="Resource" uid="uid://cta6ngelbwo8b" path="res://data/buildings/basic/warehouse_building.tres" id="3_vxs34"]
[sub_resource type="AtlasTexture" id="AtlasTexture_nleix"]
@@ -13,4 +13,4 @@ region = Rect2(1024, 576, 64, 64)
script = ExtResource("1_xphre")
name = "Basic"
atlas_texture = SubResource("AtlasTexture_nleix")
buildings = Array[Resource("res://data/buildings/building.gd")]([ExtResource("2_7d7fa"), ExtResource("3_vxs34")])
buildings = Array[Resource("res://data/buildings/building.gd")]([ExtResource("2_5rd2r"), ExtResource("3_vxs34")])

View File

@@ -0,0 +1,20 @@
extends Building
const CARBON_RESOURCE = preload("res://data/game_resources/carbon/carbon_resource.tres")
func ready(building: BuildingBase) -> void:
var nearest_res := Grid.get_nearest_resource(building.position, CARBON_RESOURCE)
var _distance = building.position.distance_to(nearest_res)
var particles = CPUParticles2D.new()
particles.amount = 60
particles.spread = 8
particles.material = ParticleProcessMaterial.new()
particles.radial_accel_max = _distance * -2.5
particles.radial_accel_min = _distance * -2.55
particles.gravity = Vector2.ZERO
particles.direction = building.position.direction_to(nearest_res)
particles.initial_velocity_max = _distance * 2.25
particles.initial_velocity_min = _distance * 2.2
particles.lifetime = 1.65
building.add_child(particles)

View File

@@ -0,0 +1,18 @@
[gd_resource type="Resource" load_steps=5 format=3 uid="uid://d38xgwstvtcm4"]
[ext_resource type="Texture2D" uid="uid://n806c03hgaq1" path="res://assets/scifi_tilesheet@2.png" id="1_m1sbx"]
[ext_resource type="Script" path="res://data/buildings/basic/harvester/harvester.gd" id="3_fy2m4"]
[ext_resource type="Resource" uid="uid://bpjj0x7jr1k6u" path="res://data/game_resources/carbon/carbon_resource.tres" id="3_xlnq5"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mgt0w"]
atlas = ExtResource("1_m1sbx")
region = Rect2(1088, 128, 64, 64)
[resource]
script = ExtResource("3_fy2m4")
atlas_texture = SubResource("AtlasTexture_mgt0w")
name = "Harvester"
description = "Harvests nearby resources"
cost = {
ExtResource("3_xlnq5"): 100
}

View File

@@ -1,18 +0,0 @@
[gd_resource type="Resource" script_class="Building" load_steps=5 format=3 uid="uid://d38xgwstvtcm4"]
[ext_resource type="Texture2D" uid="uid://n806c03hgaq1" path="res://assets/scifi_tilesheet@2.png" id="1_8uuv4"]
[ext_resource type="Script" path="res://data/buildings/building.gd" id="1_s0c8c"]
[ext_resource type="Resource" uid="uid://bpjj0x7jr1k6u" path="res://data/game_resources/carbon/carbon_resource.tres" id="2_ppxqc"]
[sub_resource type="AtlasTexture" id="AtlasTexture_5nxx0"]
atlas = ExtResource("1_8uuv4")
region = Rect2(1088, 128, 64, 64)
[resource]
script = ExtResource("1_s0c8c")
atlas_texture = SubResource("AtlasTexture_5nxx0")
name = "Harvester"
description = "Harvests nearby"
cost = {
ExtResource("2_ppxqc"): 100
}

View File

@@ -5,3 +5,6 @@ extends Resource
@export var name: String
@export var description: String
@export var cost: Dictionary
func ready(building: BuildingBase) -> void:
pass

View File

@@ -8,6 +8,7 @@ var _building_data: Building
func initialize(data: Building, grid_location: Vector2i) -> void:
_building_data = data
position = Grid.grid_to_world_center(grid_location)
_building_data.ready(self)
func _ready() -> void:
sprite_2d.texture = _building_data.atlas_texture

View File

@@ -0,0 +1,5 @@
extends Resource
class_name BuildingMethods
func ready(building: BuildingBase) -> void:
pass

View File

@@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://7threw5x5tw6"]
[ext_resource type="Script" path="res://data/buildings/building_methods.gd" id="1_ll4rt"]
[node name="BuildingMethods" type="Node2D"]
script = ExtResource("1_ll4rt")

View File

@@ -4,6 +4,8 @@ const GRID_SIZE := 64
var world_grid: TileMap
var world_data: Dictionary = {}
var res_locations := {}
func init(grid: TileMap) -> void:
world_grid = grid
@@ -37,6 +39,19 @@ func get_location_data(pos: Vector2i) -> CellData:
func change_location_resource(pos: Vector2i, data: GameResource) -> void:
world_data[pos].change_resource(data)
world_grid.set_cell(Constants.TilemapLayers.ENVIRONMENT, pos, 0, data.atlas_location)
if not res_locations.has(data):
res_locations[data] = []
res_locations[data].append(Grid.grid_to_world_center(pos))
func get_nearest_resource(pos: Vector2, data: GameResource) -> Vector2:
var distance: float = 9999
var nearest: Vector2
for location: Vector2 in res_locations[data]:
var _dist = pos.distance_to(location)
if _dist < distance:
distance = _dist
nearest = location
return nearest
func change_location_building(pos: Vector2i, data: BuildingBase) -> void:
world_data[pos].change_building(data)