two buildings working!
created research building base
This commit is contained in:
@@ -1,9 +1,10 @@
|
|||||||
[gd_resource type="Resource" script_class="BuildingGroup" load_steps=6 format=3 uid="uid://dqv53okb3evb7"]
|
[gd_resource type="Resource" script_class="BuildingGroup" load_steps=7 format=3 uid="uid://dqv53okb3evb7"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://n806c03hgaq1" path="res://assets/scifi_tilesheet@2.png" id="1_p1crr"]
|
[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="Script" path="res://data/buildings/building_group.gd" id="1_xphre"]
|
||||||
[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://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/warehouse_building.tres" id="3_vxs34"]
|
[ext_resource type="Resource" uid="uid://cta6ngelbwo8b" path="res://data/buildings/basic/warehouse/warehouse_building.tres" id="3_vxs34"]
|
||||||
|
[ext_resource type="Resource" uid="uid://bibep1rd0jml2" path="res://data/buildings/basic/researcher/researcher_building.tres" id="4_fxdio"]
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_nleix"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_nleix"]
|
||||||
atlas = ExtResource("1_p1crr")
|
atlas = ExtResource("1_p1crr")
|
||||||
@@ -13,4 +14,4 @@ region = Rect2(1024, 576, 64, 64)
|
|||||||
script = ExtResource("1_xphre")
|
script = ExtResource("1_xphre")
|
||||||
name = "Basic"
|
name = "Basic"
|
||||||
atlas_texture = SubResource("AtlasTexture_nleix")
|
atlas_texture = SubResource("AtlasTexture_nleix")
|
||||||
buildings = Array[Resource("res://data/buildings/building.gd")]([ExtResource("2_5rd2r"), ExtResource("3_vxs34")])
|
buildings = Array[Resource("res://data/buildings/building.gd")]([ExtResource("2_5rd2r"), ExtResource("3_vxs34"), ExtResource("4_fxdio")])
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ func initialize(building: BuildingBase) -> void:
|
|||||||
nearest_res = Grid.get_nearest_resource(building.position, CARBON_RESOURCE)
|
nearest_res = Grid.get_nearest_resource(building.position, CARBON_RESOURCE)
|
||||||
_distance = building.position.distance_to(nearest_res)
|
_distance = building.position.distance_to(nearest_res)
|
||||||
_direction = nearest_res.direction_to(building.position)
|
_direction = nearest_res.direction_to(building.position)
|
||||||
|
BuildingManager.add_resource_building(CARBON_RESOURCE, building)
|
||||||
|
|
||||||
func ready(building: BuildingBase) -> void:
|
func ready(building: BuildingBase) -> void:
|
||||||
var particles = HARVESTER_PARTICLES.instantiate()
|
var particles = HARVESTER_PARTICLES.instantiate()
|
||||||
|
|||||||
1
data/buildings/basic/researcher/researcher.gd
Normal file
1
data/buildings/basic/researcher/researcher.gd
Normal file
@@ -0,0 +1 @@
|
|||||||
|
extends Building
|
||||||
18
data/buildings/basic/researcher/researcher_building.tres
Normal file
18
data/buildings/basic/researcher/researcher_building.tres
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
[gd_resource type="Resource" load_steps=5 format=3 uid="uid://bibep1rd0jml2"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://n806c03hgaq1" path="res://assets/scifi_tilesheet@2.png" id="1_kruad"]
|
||||||
|
[ext_resource type="Resource" uid="uid://bpjj0x7jr1k6u" path="res://data/game_resources/carbon/carbon_resource.tres" id="2_hybxl"]
|
||||||
|
[ext_resource type="Script" path="res://data/buildings/basic/researcher/researcher.gd" id="3_h2kjx"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ejp6g"]
|
||||||
|
atlas = ExtResource("1_kruad")
|
||||||
|
region = Rect2(1024, 128, 64, 64)
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("3_h2kjx")
|
||||||
|
atlas_texture = SubResource("AtlasTexture_ejp6g")
|
||||||
|
name = "Researcher"
|
||||||
|
description = "Research new buildings and technologies"
|
||||||
|
cost = {
|
||||||
|
ExtResource("2_hybxl"): 6000
|
||||||
|
}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
extends Building
|
extends Building
|
||||||
|
|
||||||
|
const CARBON_RESOURCE = preload("res://data/game_resources/carbon/carbon_resource.tres")
|
||||||
|
|
||||||
func initialize(building: BuildingBase) -> void:
|
func initialize(building: BuildingBase) -> void:
|
||||||
pass
|
BuildingManager.add_storage_building(CARBON_RESOURCE, building)
|
||||||
|
|
||||||
func ready(building: BuildingBase) -> void:
|
func ready(building: BuildingBase) -> void:
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ config/icon="res://icon.svg"
|
|||||||
|
|
||||||
Grid="*res://scripts/autoloads/grid.gd"
|
Grid="*res://scripts/autoloads/grid.gd"
|
||||||
ResourceManager="*res://scripts/autoloads/resource_manager.gd"
|
ResourceManager="*res://scripts/autoloads/resource_manager.gd"
|
||||||
|
BuildingManager="*res://scripts/autoloads/building_manager.gd"
|
||||||
|
|
||||||
[debug]
|
[debug]
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
[gd_scene load_steps=11 format=3 uid="uid://m0us5xqa3gnk"]
|
[gd_scene load_steps=10 format=3 uid="uid://m0us5xqa3gnk"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scripts/world.gd" id="1_yf6q1"]
|
[ext_resource type="Script" path="res://scripts/world.gd" id="1_yf6q1"]
|
||||||
[ext_resource type="Resource" uid="uid://dr00rd4f42jqe" path="res://data/game_resources/gem/gem_resource.tres" id="2_rn4a2"]
|
[ext_resource type="Resource" uid="uid://dr00rd4f42jqe" path="res://data/game_resources/gem/gem_resource.tres" id="2_rn4a2"]
|
||||||
[ext_resource type="TileSet" uid="uid://d1sh6dy2w10b0" path="res://data/scifi_tileset.tres" id="2_sa7dm"]
|
[ext_resource type="TileSet" uid="uid://d1sh6dy2w10b0" path="res://data/scifi_tileset.tres" id="2_sa7dm"]
|
||||||
[ext_resource type="Resource" uid="uid://bpjj0x7jr1k6u" path="res://data/game_resources/carbon/carbon_resource.tres" id="3_pq6ic"]
|
[ext_resource type="Resource" uid="uid://bpjj0x7jr1k6u" path="res://data/game_resources/carbon/carbon_resource.tres" id="3_pq6ic"]
|
||||||
[ext_resource type="Script" path="res://scripts/building_manager.gd" id="4_61js3"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://n806c03hgaq1" path="res://assets/scifi_tilesheet@2.png" id="5_qhth7"]
|
[ext_resource type="Texture2D" uid="uid://n806c03hgaq1" path="res://assets/scifi_tilesheet@2.png" id="5_qhth7"]
|
||||||
[ext_resource type="Script" path="res://scripts/gui.gd" id="6_yuatk"]
|
[ext_resource type="Script" path="res://scripts/gui.gd" id="6_yuatk"]
|
||||||
|
|
||||||
@@ -37,9 +36,6 @@ layer_3/tile_data = PackedInt32Array()
|
|||||||
layer_4/name = "buildings"
|
layer_4/name = "buildings"
|
||||||
layer_4/tile_data = PackedInt32Array()
|
layer_4/tile_data = PackedInt32Array()
|
||||||
|
|
||||||
[node name="BuildingManager" type="Node2D" parent="."]
|
|
||||||
script = ExtResource("4_61js3")
|
|
||||||
|
|
||||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||||
|
|
||||||
[node name="GUI" type="Control" parent="CanvasLayer"]
|
[node name="GUI" type="Control" parent="CanvasLayer"]
|
||||||
|
|||||||
17
scripts/autoloads/building_manager.gd
Normal file
17
scripts/autoloads/building_manager.gd
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
extends Node
|
||||||
|
|
||||||
|
var _resource_buildings = {}
|
||||||
|
var _storage_buildings = {}
|
||||||
|
|
||||||
|
func add_resource_building(res: GameResource, building: BuildingBase) -> void:
|
||||||
|
if not _resource_buildings.has(res):
|
||||||
|
_resource_buildings[res] = []
|
||||||
|
_resource_buildings[res].append(building)
|
||||||
|
|
||||||
|
func add_storage_building(res: GameResource, building: BuildingBase) -> void:
|
||||||
|
if not _storage_buildings.has(res):
|
||||||
|
_storage_buildings[res] = []
|
||||||
|
_storage_buildings[res].append(building)
|
||||||
|
|
||||||
|
func get_storage_count_for_resource(res: GameResource) -> int:
|
||||||
|
return 0 if not _storage_buildings.has(res) else _storage_buildings[res].size()
|
||||||
@@ -13,7 +13,7 @@ func _on_gained_resource(res: GameResource) -> void:
|
|||||||
func pickup(resource: GameResource) -> void:
|
func pickup(resource: GameResource) -> void:
|
||||||
if not resources.has(resource):
|
if not resources.has(resource):
|
||||||
resources[resource] = 0
|
resources[resource] = 0
|
||||||
var pickup_amount = min(resource.pickup_value, resource.storage_max - resources[resource])
|
var pickup_amount = min(resource.pickup_value, get_resource_limit(resource) - resources[resource])
|
||||||
if pickup_amount > 0:
|
if pickup_amount > 0:
|
||||||
resources[resource] += pickup_amount
|
resources[resource] += pickup_amount
|
||||||
var changed_resources := {
|
var changed_resources := {
|
||||||
@@ -35,6 +35,9 @@ func use_resources(cost: Dictionary) -> void:
|
|||||||
changed_resources[res] = -cost[res]
|
changed_resources[res] = -cost[res]
|
||||||
changed_resource.emit(ResourceChangedSignal.new(changed_resources))
|
changed_resource.emit(ResourceChangedSignal.new(changed_resources))
|
||||||
|
|
||||||
|
func get_resource_limit(resource: GameResource) -> int:
|
||||||
|
return resource.storage_max * (1 + BuildingManager.get_storage_count_for_resource(resource))
|
||||||
|
|
||||||
#func _on_timer_timeout() -> void:
|
#func _on_timer_timeout() -> void:
|
||||||
#var corrupted_resources := Grid.get_corrupted_resources()
|
#var corrupted_resources := Grid.get_corrupted_resources()
|
||||||
#if corrupted_resources.size() > 0:
|
#if corrupted_resources.size() > 0:
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
extends Node2D
|
|
||||||
|
|
||||||
@onready var world: World = $".."
|
|
||||||
var base = preload("res://scene/base.tscn")
|
|
||||||
var building = preload("res://data/buildings/hub.tres")
|
|
||||||
|
|
||||||
#func _unhandled_input(event):
|
|
||||||
#if event is InputEventMouseButton and event.is_pressed() and event.button_index == MOUSE_BUTTON_LEFT:
|
|
||||||
#var build: Base = base.instantiate()
|
|
||||||
#build.position = get_global_mouse_position()
|
|
||||||
#build.world = world
|
|
||||||
#build.building_data = building.duplicate(true)
|
|
||||||
#add_child(build)
|
|
||||||
#world_grid.set_cell(2, world_grid.local_to_map(get_global_mouse_position()), 0, Vector2i(16,2))
|
|
||||||
@@ -29,11 +29,11 @@ func _on_resource_manager_changed_resource(changed: ResourceChangedSignal) -> vo
|
|||||||
data.value = changed.changed_resources[resource]
|
data.value = changed.changed_resources[resource]
|
||||||
_resource_displays[resource] = data
|
_resource_displays[resource] = data
|
||||||
|
|
||||||
label.text = "%s / %s" % [data.value, resource.storage_max]
|
label.text = "%s / %s" % [data.value, ResourceManager.get_resource_limit(resource)]
|
||||||
else:
|
else:
|
||||||
var data: ResourceData = _resource_displays[resource]
|
var data: ResourceData = _resource_displays[resource]
|
||||||
data.value += changed.changed_resources[resource]
|
data.value += changed.changed_resources[resource]
|
||||||
data.label.text = "%s / %s" % [data.value, resource.storage_max]
|
data.label.text = "%s / %s" % [data.value, ResourceManager.get_resource_limit(resource)]
|
||||||
|
|
||||||
class ResourceData:
|
class ResourceData:
|
||||||
var image: TextureRect
|
var image: TextureRect
|
||||||
|
|||||||
Reference in New Issue
Block a user