initial game files
This commit is contained in:
commit
24a05c557d
14 changed files with 319 additions and 0 deletions
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Normalize EOL for all files that Git considers text files.
|
||||
* text=auto eol=lf
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Godot 4+ specific ignores
|
||||
.godot/
|
BIN
art/buildings/building_grid.png
Normal file
BIN
art/buildings/building_grid.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
34
art/buildings/building_grid.png.import
Normal file
34
art/buildings/building_grid.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dabmo11wkiwm3"
|
||||
path="res://.godot/imported/building_grid.png-27ba2469cfdf76b27d7100fd4fe14939.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/buildings/building_grid.png"
|
||||
dest_files=["res://.godot/imported/building_grid.png-27ba2469cfdf76b27d7100fd4fe14939.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
|
1
icon.svg
Normal file
1
icon.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg height="128" width="128" xmlns="http://www.w3.org/2000/svg"><g transform="translate(32 32)"><path d="m-16-32c-8.86 0-16 7.13-16 15.99v95.98c0 8.86 7.13 15.99 16 15.99h96c8.86 0 16-7.13 16-15.99v-95.98c0-8.85-7.14-15.99-16-15.99z" fill="#363d52"/><path d="m-16-32c-8.86 0-16 7.13-16 15.99v95.98c0 8.86 7.13 15.99 16 15.99h96c8.86 0 16-7.13 16-15.99v-95.98c0-8.85-7.14-15.99-16-15.99zm0 4h96c6.64 0 12 5.35 12 11.99v95.98c0 6.64-5.35 11.99-12 11.99h-96c-6.64 0-12-5.35-12-11.99v-95.98c0-6.64 5.36-11.99 12-11.99z" fill-opacity=".4"/></g><g stroke-width="9.92746" transform="matrix(.10073078 0 0 .10073078 12.425923 2.256365)"><path d="m0 0s-.325 1.994-.515 1.976l-36.182-3.491c-2.879-.278-5.115-2.574-5.317-5.459l-.994-14.247-27.992-1.997-1.904 12.912c-.424 2.872-2.932 5.037-5.835 5.037h-38.188c-2.902 0-5.41-2.165-5.834-5.037l-1.905-12.912-27.992 1.997-.994 14.247c-.202 2.886-2.438 5.182-5.317 5.46l-36.2 3.49c-.187.018-.324-1.978-.511-1.978l-.049-7.83 30.658-4.944 1.004-14.374c.203-2.91 2.551-5.263 5.463-5.472l38.551-2.75c.146-.01.29-.016.434-.016 2.897 0 5.401 2.166 5.825 5.038l1.959 13.286h28.005l1.959-13.286c.423-2.871 2.93-5.037 5.831-5.037.142 0 .284.005.423.015l38.556 2.75c2.911.209 5.26 2.562 5.463 5.472l1.003 14.374 30.645 4.966z" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 919.24059 771.67186)"/><path d="m0 0v-47.514-6.035-5.492c.108-.001.216-.005.323-.015l36.196-3.49c1.896-.183 3.382-1.709 3.514-3.609l1.116-15.978 31.574-2.253 2.175 14.747c.282 1.912 1.922 3.329 3.856 3.329h38.188c1.933 0 3.573-1.417 3.855-3.329l2.175-14.747 31.575 2.253 1.115 15.978c.133 1.9 1.618 3.425 3.514 3.609l36.182 3.49c.107.01.214.014.322.015v4.711l.015.005v54.325c5.09692 6.4164715 9.92323 13.494208 13.621 19.449-5.651 9.62-12.575 18.217-19.976 26.182-6.864-3.455-13.531-7.369-19.828-11.534-3.151 3.132-6.7 5.694-10.186 8.372-3.425 2.751-7.285 4.768-10.946 7.118 1.09 8.117 1.629 16.108 1.846 24.448-9.446 4.754-19.519 7.906-29.708 10.17-4.068-6.837-7.788-14.241-11.028-21.479-3.842.642-7.702.88-11.567.926v.006c-.027 0-.052-.006-.075-.006-.024 0-.049.006-.073.006v-.006c-3.872-.046-7.729-.284-11.572-.926-3.238 7.238-6.956 14.642-11.03 21.479-10.184-2.264-20.258-5.416-29.703-10.17.216-8.34.755-16.331 1.848-24.448-3.668-2.35-7.523-4.367-10.949-7.118-3.481-2.678-7.036-5.24-10.188-8.372-6.297 4.165-12.962 8.079-19.828 11.534-7.401-7.965-14.321-16.562-19.974-26.182 4.4426579-6.973692 9.2079702-13.9828876 13.621-19.449z" fill="#478cbf" transform="matrix(4.162611 0 0 -4.162611 104.69892 525.90697)"/><path d="m0 0-1.121-16.063c-.135-1.936-1.675-3.477-3.611-3.616l-38.555-2.751c-.094-.007-.188-.01-.281-.01-1.916 0-3.569 1.406-3.852 3.33l-2.211 14.994h-31.459l-2.211-14.994c-.297-2.018-2.101-3.469-4.133-3.32l-38.555 2.751c-1.936.139-3.476 1.68-3.611 3.616l-1.121 16.063-32.547 3.138c.015-3.498.06-7.33.06-8.093 0-34.374 43.605-50.896 97.781-51.086h.066.067c54.176.19 97.766 16.712 97.766 51.086 0 .777.047 4.593.063 8.093z" fill="#478cbf" transform="matrix(4.162611 0 0 -4.162611 784.07144 817.24284)"/><path d="m0 0c0-12.052-9.765-21.815-21.813-21.815-12.042 0-21.81 9.763-21.81 21.815 0 12.044 9.768 21.802 21.81 21.802 12.048 0 21.813-9.758 21.813-21.802" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 389.21484 625.67104)"/><path d="m0 0c0-7.994-6.479-14.473-14.479-14.473-7.996 0-14.479 6.479-14.479 14.473s6.483 14.479 14.479 14.479c8 0 14.479-6.485 14.479-14.479" fill="#414042" transform="matrix(4.162611 0 0 -4.162611 367.36686 631.05679)"/><path d="m0 0c-3.878 0-7.021 2.858-7.021 6.381v20.081c0 3.52 3.143 6.381 7.021 6.381s7.028-2.861 7.028-6.381v-20.081c0-3.523-3.15-6.381-7.028-6.381" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 511.99336 724.73954)"/><path d="m0 0c0-12.052 9.765-21.815 21.815-21.815 12.041 0 21.808 9.763 21.808 21.815 0 12.044-9.767 21.802-21.808 21.802-12.05 0-21.815-9.758-21.815-21.802" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 634.78706 625.67104)"/><path d="m0 0c0-7.994 6.477-14.473 14.471-14.473 8.002 0 14.479 6.479 14.479 14.473s-6.477 14.479-14.479 14.479c-7.994 0-14.471-6.485-14.471-14.479" fill="#414042" transform="matrix(4.162611 0 0 -4.162611 656.64056 631.05679)"/></g></svg>
|
After Width: | Height: | Size: 4.1 KiB |
37
icon.svg.import
Normal file
37
icon.svg.import
Normal file
|
@ -0,0 +1,37 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cxn2fno1j7vf5"
|
||||
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
|
20
project.godot
Normal file
20
project.godot
Normal file
|
@ -0,0 +1,20 @@
|
|||
; 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="ACSIM"
|
||||
run/main_scene="res://scenes/Main.tscn"
|
||||
config/features=PackedStringArray("4.0", "Forward Plus")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[autoload]
|
||||
|
||||
Globals="*res://scripts/Globals.gd"
|
4
scenes/Building.gd
Normal file
4
scenes/Building.gd
Normal file
|
@ -0,0 +1,4 @@
|
|||
extends Node2D
|
||||
|
||||
func _process(delta):
|
||||
position = get_viewport().get_mouse_position()
|
10
scenes/Building.tscn
Normal file
10
scenes/Building.tscn
Normal file
|
@ -0,0 +1,10 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://sqvd1ev6ubp"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/Building.gd" id="1_uqlnt"]
|
||||
[ext_resource type="Texture2D" uid="uid://dabmo11wkiwm3" path="res://art/buildings/building_grid.png" id="1_yd1tr"]
|
||||
|
||||
[node name="Building" type="Node2D"]
|
||||
script = ExtResource("1_uqlnt")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("1_yd1tr")
|
70
scenes/Main.tscn
Normal file
70
scenes/Main.tscn
Normal file
|
@ -0,0 +1,70 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://ciperl36hv26g"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/Main.gd" id="1_ysxum"]
|
||||
[ext_resource type="Script" path="res://scripts/View.gd" id="2_rg0qh"]
|
||||
[ext_resource type="Script" path="res://scripts/Control.gd" id="3_1t1c8"]
|
||||
|
||||
[node name="Main" type="Node"]
|
||||
script = ExtResource("1_ysxum")
|
||||
|
||||
[node name="View" type="Node2D" parent="."]
|
||||
script = ExtResource("2_rg0qh")
|
||||
|
||||
[node name="Control" type="Control" parent="."]
|
||||
layout_mode = 3
|
||||
anchor_right = 0.193
|
||||
anchor_bottom = 0.299
|
||||
offset_left = 265.0
|
||||
offset_top = 243.0
|
||||
offset_right = 82.664
|
||||
offset_bottom = 89.248
|
||||
script = ExtResource("3_1t1c8")
|
||||
|
||||
[node name="ConstructionPanel" type="Panel" parent="Control"]
|
||||
layout_mode = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
|
||||
[node name="button_residental" type="Button" parent="Control/ConstructionPanel"]
|
||||
layout_mode = 0
|
||||
offset_right = 8.0
|
||||
offset_bottom = 8.0
|
||||
|
||||
[node name="button_commercial" type="Button" parent="Control/ConstructionPanel"]
|
||||
layout_mode = 0
|
||||
offset_right = 8.0
|
||||
offset_bottom = 8.0
|
||||
|
||||
[node name="button_industrial" type="Button" parent="Control/ConstructionPanel"]
|
||||
layout_mode = 0
|
||||
offset_right = 8.0
|
||||
offset_bottom = 8.0
|
||||
|
||||
[node name="button_roads" type="Button" parent="Control/ConstructionPanel"]
|
||||
layout_mode = 0
|
||||
offset_right = 8.0
|
||||
offset_bottom = 8.0
|
||||
|
||||
[node name="button_demolish" type="Button" parent="Control/ConstructionPanel"]
|
||||
layout_mode = 0
|
||||
offset_right = 8.0
|
||||
offset_bottom = 8.0
|
||||
|
||||
[node name="button_services" type="Button" parent="Control/ConstructionPanel"]
|
||||
layout_mode = 0
|
||||
offset_right = 8.0
|
||||
offset_bottom = 8.0
|
||||
|
||||
[node name="button_social" type="Button" parent="Control/ConstructionPanel"]
|
||||
layout_mode = 0
|
||||
offset_right = 8.0
|
||||
offset_bottom = 8.0
|
||||
|
||||
[connection signal="button_pressed" from="Control" to="View" method="_on_control_button_pressed"]
|
||||
[connection signal="pressed" from="Control/ConstructionPanel/button_residental" to="Control" method="_on_button_residental_pressed"]
|
||||
[connection signal="pressed" from="Control/ConstructionPanel/button_commercial" to="Control" method="_on_button_commercial_pressed"]
|
||||
[connection signal="pressed" from="Control/ConstructionPanel/button_industrial" to="Control" method="_on_button_industrial_pressed"]
|
||||
[connection signal="pressed" from="Control/ConstructionPanel/button_roads" to="Control" method="_on_button_roads_pressed"]
|
||||
[connection signal="pressed" from="Control/ConstructionPanel/button_demolish" to="Control" method="_on_button_demolish_pressed"]
|
||||
[connection signal="pressed" from="Control/ConstructionPanel/button_services" to="Control" method="_on_button_services_pressed"]
|
||||
[connection signal="pressed" from="Control/ConstructionPanel/button_social" to="Control" method="_on_button_social_pressed"]
|
69
scripts/Control.gd
Normal file
69
scripts/Control.gd
Normal file
|
@ -0,0 +1,69 @@
|
|||
extends Control
|
||||
|
||||
# var view = get_node("../View")
|
||||
|
||||
signal button_pressed(button_name)
|
||||
|
||||
var BUTTON_SIZE = Vector2i(50,50)
|
||||
|
||||
# name, position
|
||||
var buttons = {
|
||||
"button_residental": [Vector2(0,0), "R"],
|
||||
"button_commercial": [Vector2(50,0), "C"],
|
||||
"button_industrial": [Vector2(100,00), "I"],
|
||||
"button_roads": [Vector2(0,50), "Rd"],
|
||||
"button_demolish": [Vector2(50,50), "Dm"],
|
||||
"button_services": [Vector2(100,50), "Sv"],
|
||||
"button_social": [Vector2(150,50), "So"],
|
||||
}
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
adjust_construction_panel()
|
||||
$ConstructionPanel.set_size(Vector2(500, 120))
|
||||
create_buttons()
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(_delta):
|
||||
pass
|
||||
|
||||
func adjust_construction_panel():
|
||||
$ConstructionPanel.set_size(Vector2i(500, 120))
|
||||
$ConstructionPanel.set_position(Vector2i(0, -200))
|
||||
|
||||
# defines construction toolbar buttons
|
||||
func create_buttons():
|
||||
for button in buttons:
|
||||
var values = buttons[button]
|
||||
var node_path = get_node("ConstructionPanel/" + str(button))
|
||||
|
||||
if(!node_path):
|
||||
push_error("Error: Button '" + button + "' not found when trying to set it's properties in Control.gd!")
|
||||
|
||||
node_path.set_size(BUTTON_SIZE)
|
||||
node_path.set_position(values[0])
|
||||
node_path.set_anchor(SIDE_TOP, anchor_top)
|
||||
node_path.set_text(values[1])
|
||||
node_path.show()
|
||||
|
||||
# sends signals which View catches and places selected type of buildings
|
||||
func _on_button_residental_pressed():
|
||||
emit_signal("button_pressed", Globals.TYPE_RESIDENTIAL)
|
||||
|
||||
func _on_button_commercial_pressed():
|
||||
emit_signal("button_pressed", Globals.TYPE_COMMERCIAL)
|
||||
|
||||
func _on_button_industrial_pressed():
|
||||
emit_signal("button_pressed", Globals.TYPE_INDUSTRIAL)
|
||||
|
||||
func _on_button_roads_pressed():
|
||||
emit_signal("button_pressed", Globals.TYPE_ROADS)
|
||||
|
||||
func _on_button_demolish_pressed():
|
||||
emit_signal("button_pressed", Globals.TYPE_DEMOLISH)
|
||||
|
||||
func _on_button_services_pressed():
|
||||
emit_signal("button_pressed", Globals.TYPE_SERVICES)
|
||||
|
||||
func _on_button_social_pressed():
|
||||
emit_signal("button_pressed", Globals.TYPE_SOCIAL)
|
17
scripts/Globals.gd
Normal file
17
scripts/Globals.gd
Normal file
|
@ -0,0 +1,17 @@
|
|||
extends Node
|
||||
|
||||
const SCENE_PATH:String = "res://scenes/"
|
||||
const ART_PATH:String = "res://art/"
|
||||
const SCRIPT_PATH:String = "res://scripts"
|
||||
|
||||
const DEFAULT_X_RES:int = 1920
|
||||
const DEFAULT_Y_RES:int = 1080
|
||||
|
||||
const TYPE_RESIDENTIAL = "residential"
|
||||
const TYPE_COMMERCIAL = "commercial"
|
||||
const TYPE_INDUSTRIAL = "industrial"
|
||||
const TYPE_SERVICES = "services"
|
||||
const TYPE_SOCIAL = "social"
|
||||
const TYPE_POWERPLANT = "powerplant"
|
||||
const TYPE_ROADS = "roads"
|
||||
const TYPE_DEMOLISH = "demolish"
|
19
scripts/Main.gd
Normal file
19
scripts/Main.gd
Normal file
|
@ -0,0 +1,19 @@
|
|||
# - "Cube Clicker 2000" where you click a spot and a cube appears there.
|
||||
# - Then add different shapes or colors of cubes.
|
||||
# - Then clamp their positions to be on a grid.
|
||||
# - Then make it so that when you add yellow cubes, yellow desire meter goes down and green meter goes up.
|
||||
# - Then click a bunch of grey cubes in a row and have them automatically flatten out into flat grey cubes (roads).
|
||||
# - Then click and drag to draw the lines of grey cubes.
|
||||
# - etc.
|
||||
|
||||
extends Node
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
DisplayServer.window_set_size(
|
||||
Vector2i(Globals.DEFAULT_X_RES, Globals.DEFAULT_Y_RES)
|
||||
)
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(_delta):
|
||||
pass
|
34
scripts/View.gd
Normal file
34
scripts/View.gd
Normal file
|
@ -0,0 +1,34 @@
|
|||
extends Node2D
|
||||
|
||||
var gui
|
||||
var building
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
pass
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(_delta):
|
||||
pass
|
||||
|
||||
|
||||
func _on_control_button_pressed(button_name):
|
||||
# create new building, in Building node it is attached to mouse cursor
|
||||
var scene = load(Globals.SCENE_PATH + "Building.tscn")
|
||||
building = scene.instantiate()
|
||||
add_child(building)
|
||||
|
||||
#for _i in self.get_children():
|
||||
# print(_i)
|
||||
|
||||
# stop processing the sprite (fix it in place). no idea if it is a good idea yet..
|
||||
|
||||
|
||||
# print(button_name + " button pressed in Control! :-0")
|
||||
|
||||
func _input(event):
|
||||
# places the building on cursor. a bad way!
|
||||
if Input.is_anything_pressed() and building != null:
|
||||
building.set_process(false)
|
||||
building = null
|
||||
# print(event.as_text())
|
Loading…
Add table
Add a link
Reference in a new issue