Add initial implementation of game mechanics and resources management
This commit is contained in:
13
Scenes/Followers/FollowerMarker.tscn
Normal file
13
Scenes/Followers/FollowerMarker.tscn
Normal file
@@ -0,0 +1,13 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cqkye7yykakns"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://djaf0gv8s7qib" path="res://Scripts/FollowerMarker.cs" id="1_e1v1v"]
|
||||
[ext_resource type="Texture2D" uid="uid://dcs48aa84w21u" path="res://icon.svg" id="2_woadh"]
|
||||
|
||||
[node name="FollowerMarker" type="Marker2D"]
|
||||
script = ExtResource("1_e1v1v")
|
||||
metadata/_custom_type_script = "uid://djaf0gv8s7qib"
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
scale = Vector2(0.235, 0.235)
|
||||
texture = ExtResource("2_woadh")
|
12
Scenes/Followers/followers_tier_1.tscn
Normal file
12
Scenes/Followers/followers_tier_1.tscn
Normal file
@@ -0,0 +1,12 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://c2d3ageprpd0o"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cj5libcgnhjml" path="res://Scripts/Follower.cs" id="1_ifsko"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhrbjqmhqdpef" path="res://Sprites/Follower.png" id="1_miahy"]
|
||||
|
||||
[node name="FollowersTier1" type="Node2D"]
|
||||
script = ExtResource("1_ifsko")
|
||||
metadata/_custom_type_script = "uid://cj5libcgnhjml"
|
||||
|
||||
[node name="Follower" type="Sprite2D" parent="."]
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_miahy")
|
29
Scenes/Followers/followers_tier_2.tscn
Normal file
29
Scenes/Followers/followers_tier_2.tscn
Normal file
@@ -0,0 +1,29 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://8jnnbe76xjhl"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cj5libcgnhjml" path="res://Scripts/Follower.cs" id="1_1fjl1"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhrbjqmhqdpef" path="res://Sprites/Follower.png" id="1_dwkko"]
|
||||
|
||||
[node name="FollowersTier2" type="Node2D"]
|
||||
script = ExtResource("1_1fjl1")
|
||||
Tier = 1
|
||||
metadata/_custom_type_script = "uid://cj5libcgnhjml"
|
||||
|
||||
[node name="Follower" type="Sprite2D" parent="."]
|
||||
position = Vector2(-4.39999, -4)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_dwkko")
|
||||
|
||||
[node name="Follower2" type="Sprite2D" parent="."]
|
||||
position = Vector2(-0.399994, -4)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_dwkko")
|
||||
|
||||
[node name="Follower3" type="Sprite2D" parent="."]
|
||||
position = Vector2(4.60001, -4)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_dwkko")
|
||||
|
||||
[node name="Follower4" type="Sprite2D" parent="."]
|
||||
position = Vector2(7.60001, -4)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_dwkko")
|
49
Scenes/Followers/followers_tier_3.tscn
Normal file
49
Scenes/Followers/followers_tier_3.tscn
Normal file
@@ -0,0 +1,49 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://gqqycnreclv2"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cj5libcgnhjml" path="res://Scripts/Follower.cs" id="1_dfylr"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhrbjqmhqdpef" path="res://Sprites/Follower.png" id="1_ep0q4"]
|
||||
|
||||
[node name="FollowersTier3" type="Node2D"]
|
||||
script = ExtResource("1_dfylr")
|
||||
Tier = 2
|
||||
metadata/_custom_type_script = "uid://cj5libcgnhjml"
|
||||
|
||||
[node name="Follower" type="Sprite2D" parent="."]
|
||||
position = Vector2(-11.4, -12)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ep0q4")
|
||||
|
||||
[node name="Follower2" type="Sprite2D" parent="."]
|
||||
position = Vector2(-7.39999, -12)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ep0q4")
|
||||
|
||||
[node name="Follower3" type="Sprite2D" parent="."]
|
||||
position = Vector2(-2.39999, -12)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ep0q4")
|
||||
|
||||
[node name="Follower4" type="Sprite2D" parent="."]
|
||||
position = Vector2(0.600006, -12)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ep0q4")
|
||||
|
||||
[node name="Follower5" type="Sprite2D" parent="."]
|
||||
position = Vector2(2.60001, -9.53674e-07)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ep0q4")
|
||||
|
||||
[node name="Follower6" type="Sprite2D" parent="."]
|
||||
position = Vector2(6.60001, -9.53674e-07)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ep0q4")
|
||||
|
||||
[node name="Follower7" type="Sprite2D" parent="."]
|
||||
position = Vector2(11.6, -9.53674e-07)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ep0q4")
|
||||
|
||||
[node name="Follower8" type="Sprite2D" parent="."]
|
||||
position = Vector2(14.6, -9.53674e-07)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ep0q4")
|
68
Scenes/Followers/followers_tier_4.tscn
Normal file
68
Scenes/Followers/followers_tier_4.tscn
Normal file
@@ -0,0 +1,68 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://c04rof865kdfb"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cj5libcgnhjml" path="res://Scripts/Follower.cs" id="1_0bt7d"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhrbjqmhqdpef" path="res://Sprites/Follower.png" id="1_ttwdp"]
|
||||
|
||||
[node name="FollowersTier4" type="Node2D"]
|
||||
script = ExtResource("1_0bt7d")
|
||||
metadata/_custom_type_script = "uid://cj5libcgnhjml"
|
||||
|
||||
[node name="Follower" type="Sprite2D" parent="."]
|
||||
position = Vector2(-5.39999, -17)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower2" type="Sprite2D" parent="."]
|
||||
position = Vector2(-1.39999, -17)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower3" type="Sprite2D" parent="."]
|
||||
position = Vector2(3.60001, -17)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower4" type="Sprite2D" parent="."]
|
||||
position = Vector2(6.60001, -17)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower5" type="Sprite2D" parent="."]
|
||||
position = Vector2(8.60001, -5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower6" type="Sprite2D" parent="."]
|
||||
position = Vector2(12.6, -5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower7" type="Sprite2D" parent="."]
|
||||
position = Vector2(17.6, -5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower8" type="Sprite2D" parent="."]
|
||||
position = Vector2(20.6, -5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower9" type="Sprite2D" parent="."]
|
||||
position = Vector2(-18.4, -5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower10" type="Sprite2D" parent="."]
|
||||
position = Vector2(-14.4, -5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower11" type="Sprite2D" parent="."]
|
||||
position = Vector2(-9.39999, -5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
||||
|
||||
[node name="Follower12" type="Sprite2D" parent="."]
|
||||
position = Vector2(-6.39999, -5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_ttwdp")
|
88
Scenes/Followers/followers_tier_5.tscn
Normal file
88
Scenes/Followers/followers_tier_5.tscn
Normal file
@@ -0,0 +1,88 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://iairc1nudt6c"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cj5libcgnhjml" path="res://Scripts/Follower.cs" id="1_4yvkn"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhrbjqmhqdpef" path="res://Sprites/Follower.png" id="1_28luu"]
|
||||
|
||||
[node name="FollowersTier5" type="Node2D"]
|
||||
script = ExtResource("1_4yvkn")
|
||||
metadata/_custom_type_script = "uid://cj5libcgnhjml"
|
||||
|
||||
[node name="Follower" type="Sprite2D" parent="."]
|
||||
position = Vector2(-7.39999, -15)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower2" type="Sprite2D" parent="."]
|
||||
position = Vector2(-3.39999, -15)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower3" type="Sprite2D" parent="."]
|
||||
position = Vector2(1.60001, -15)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower4" type="Sprite2D" parent="."]
|
||||
position = Vector2(4.60001, -15)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower5" type="Sprite2D" parent="."]
|
||||
position = Vector2(6.60001, -3)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower6" type="Sprite2D" parent="."]
|
||||
position = Vector2(10.6, -3)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower7" type="Sprite2D" parent="."]
|
||||
position = Vector2(15.6, -3)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower8" type="Sprite2D" parent="."]
|
||||
position = Vector2(18.6, -3)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower9" type="Sprite2D" parent="."]
|
||||
position = Vector2(-20.4, -3)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower10" type="Sprite2D" parent="."]
|
||||
position = Vector2(-16.4, -3)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower11" type="Sprite2D" parent="."]
|
||||
position = Vector2(-11.4, -3)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower12" type="Sprite2D" parent="."]
|
||||
position = Vector2(-8.39999, -3)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower13" type="Sprite2D" parent="."]
|
||||
position = Vector2(-7.39999, 5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower14" type="Sprite2D" parent="."]
|
||||
position = Vector2(-3.39999, 5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower15" type="Sprite2D" parent="."]
|
||||
position = Vector2(1.60001, 5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
||||
|
||||
[node name="Follower16" type="Sprite2D" parent="."]
|
||||
position = Vector2(4.60001, 5)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("1_28luu")
|
14
Scenes/Huts/HutMarker.tscn
Normal file
14
Scenes/Huts/HutMarker.tscn
Normal file
@@ -0,0 +1,14 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://be5d0d3aweg0l"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://djaf0gv8s7qib" path="res://Scripts/FollowerMarker.cs" id="1_yfid6"]
|
||||
[ext_resource type="Texture2D" uid="uid://dcs48aa84w21u" path="res://icon.svg" id="2_om77d"]
|
||||
|
||||
[node name="HutMarker" type="Marker2D"]
|
||||
script = ExtResource("1_yfid6")
|
||||
metadata/_custom_type_script = "uid://djaf0gv8s7qib"
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
modulate = Color(0.605674, 1.66051e-06, 3.85046e-07, 1)
|
||||
scale = Vector2(0.235, 0.235)
|
||||
texture = ExtResource("2_om77d")
|
12
Scenes/Huts/hut_tier_1.tscn
Normal file
12
Scenes/Huts/hut_tier_1.tscn
Normal file
@@ -0,0 +1,12 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dbg6c4m1v1rsh"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cj5libcgnhjml" path="res://Scripts/Follower.cs" id="1_ymswo"]
|
||||
[ext_resource type="Texture2D" uid="uid://clnujxe12l86u" path="res://Sprites/Hut.png" id="2_1pksg"]
|
||||
|
||||
[node name="HutTier1" type="Node2D"]
|
||||
script = ExtResource("1_ymswo")
|
||||
metadata/_custom_type_script = "uid://cj5libcgnhjml"
|
||||
|
||||
[node name="Hut" type="Sprite2D" parent="."]
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("2_1pksg")
|
17
Scenes/Huts/hut_tier_2.tscn
Normal file
17
Scenes/Huts/hut_tier_2.tscn
Normal file
@@ -0,0 +1,17 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cd4hc5b87uyqm"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cj5libcgnhjml" path="res://Scripts/Follower.cs" id="1_22ax8"]
|
||||
[ext_resource type="Texture2D" uid="uid://clnujxe12l86u" path="res://Sprites/Hut.png" id="2_xvtw0"]
|
||||
|
||||
[node name="HutTier2" type="Node2D"]
|
||||
script = ExtResource("1_22ax8")
|
||||
metadata/_custom_type_script = "uid://cj5libcgnhjml"
|
||||
|
||||
[node name="Hut" type="Sprite2D" parent="."]
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("2_xvtw0")
|
||||
|
||||
[node name="Hut2" type="Sprite2D" parent="."]
|
||||
position = Vector2(27, 0)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("2_xvtw0")
|
22
Scenes/Huts/hut_tier_3.tscn
Normal file
22
Scenes/Huts/hut_tier_3.tscn
Normal file
@@ -0,0 +1,22 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dh6g38sit4hna"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cj5libcgnhjml" path="res://Scripts/Follower.cs" id="1_ltla2"]
|
||||
[ext_resource type="Texture2D" uid="uid://clnujxe12l86u" path="res://Sprites/Hut.png" id="2_un0i8"]
|
||||
|
||||
[node name="HutTier3" type="Node2D"]
|
||||
script = ExtResource("1_ltla2")
|
||||
metadata/_custom_type_script = "uid://cj5libcgnhjml"
|
||||
|
||||
[node name="Hut" type="Sprite2D" parent="."]
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("2_un0i8")
|
||||
|
||||
[node name="Hut2" type="Sprite2D" parent="."]
|
||||
position = Vector2(27, 0)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("2_un0i8")
|
||||
|
||||
[node name="Hut3" type="Sprite2D" parent="."]
|
||||
position = Vector2(-46, 0)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("2_un0i8")
|
44
Scenes/Main/Main.cs
Normal file
44
Scenes/Main/Main.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using Godot;
|
||||
using ParasiticGod.Scripts.Core;
|
||||
using ParasiticGod.Scripts.Singletons;
|
||||
|
||||
namespace ParasiticGod.Scenes.Main;
|
||||
|
||||
public partial class Main : Node
|
||||
{
|
||||
[Export] private Label _faithLabel;
|
||||
[Export] private Label _followersLabel;
|
||||
[Export] private Label _corruptionLabel;
|
||||
[Export] private MiraclePanel _miraclePanel;
|
||||
[Export] private Sprite2D _worldSprite;
|
||||
[Export] private Color _deadWorldColor = new Color("#581845");
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
GameBus.Instance.StateChanged += OnStateChanged;
|
||||
|
||||
_miraclePanel.PopulateInitialButtons(GameBus.Instance.AllMiracles);
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
{
|
||||
GameBus.Instance.StateChanged -= OnStateChanged;
|
||||
}
|
||||
|
||||
private void OnStateChanged(GameState newState)
|
||||
{
|
||||
_faithLabel.Text = $"Faith: {newState.Faith:F0} (+{newState.FaithPerSecond:F1}/s)";
|
||||
_followersLabel.Text = $"Followers: {newState.Followers}";
|
||||
_corruptionLabel.Text = $"Corruption: {newState.Corruption:F0}%";
|
||||
|
||||
UpdateWorldVisuals(newState.Corruption);
|
||||
}
|
||||
|
||||
private void UpdateWorldVisuals(double corruption)
|
||||
{
|
||||
if (_worldSprite.Material is not ShaderMaterial shaderMaterial) return;
|
||||
|
||||
var ratio = (float)corruption / 100.0f;
|
||||
shaderMaterial.SetShaderParameter("corruption_level", ratio);
|
||||
}
|
||||
}
|
1
Scenes/Main/Main.cs.uid
Normal file
1
Scenes/Main/Main.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://t71ewkpa5uqs
|
229
Scenes/Main/Main.tscn
Normal file
229
Scenes/Main/Main.tscn
Normal file
@@ -0,0 +1,229 @@
|
||||
[gd_scene load_steps=18 format=3 uid="uid://bfil8sd154327"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://t71ewkpa5uqs" path="res://Scenes/Main/Main.cs" id="1_p8rbg"]
|
||||
[ext_resource type="Script" uid="uid://b77vh831r1e3c" path="res://Scenes/Main/MiraclePanel.cs" id="2_hcu3t"]
|
||||
[ext_resource type="PackedScene" uid="uid://rj1fsdlhju5y" path="res://Scenes/Main/miracle_button.tscn" id="3_qdkat"]
|
||||
[ext_resource type="Texture2D" uid="uid://dg6ac3jb1366r" path="res://Sprites/globe.svg" id="4_i3fi7"]
|
||||
[ext_resource type="PackedScene" uid="uid://be5d0d3aweg0l" path="res://Scenes/Huts/HutMarker.tscn" id="6_cv8e0"]
|
||||
[ext_resource type="Script" uid="uid://dj2wyrq07gfp2" path="res://Scripts/PopulationVisualizer.cs" id="8_cv8e0"]
|
||||
[ext_resource type="Resource" uid="uid://8ooxfo2wdbhu" path="res://Resources/Tiers/Followers/follower_tier_1.tres" id="9_hkvnm"]
|
||||
[ext_resource type="Shader" uid="uid://bf8nk145fjkgh" path="res://Shaders/corruption_shader.gdshader" id="9_wgovn"]
|
||||
[ext_resource type="Resource" uid="uid://cejeb3467iiyl" path="res://Resources/Tiers/Followers/follower_tier_2.tres" id="10_5ci8a"]
|
||||
[ext_resource type="PackedScene" uid="uid://cqkye7yykakns" path="res://Scenes/Followers/FollowerMarker.tscn" id="11_5ci8a"]
|
||||
[ext_resource type="Resource" uid="uid://q0rha23lx4wl" path="res://Resources/Tiers/Followers/follower_tier_3.tres" id="11_18xdc"]
|
||||
[ext_resource type="Resource" uid="uid://i1oo0q84q8ps" path="res://Resources/Tiers/Followers/follower_tier_4.tres" id="12_epx8f"]
|
||||
[ext_resource type="Resource" uid="uid://bwu8k7cyjhf8c" path="res://Resources/Tiers/Followers/follower_tier_5.tres" id="13_hcu3t"]
|
||||
[ext_resource type="Resource" uid="uid://bbkbssvptkyvh" path="res://Resources/Tiers/Huts/hut_tier_1.tres" id="14_18xdc"]
|
||||
[ext_resource type="Resource" uid="uid://co2sdpwpajjqi" path="res://Resources/Tiers/Huts/hut_tier_2.tres" id="15_epx8f"]
|
||||
[ext_resource type="Resource" uid="uid://b8k30qsd434dp" path="res://Resources/Tiers/Huts/hut_tier_3.tres" id="16_hcu3t"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_cv8e0"]
|
||||
shader = ExtResource("9_wgovn")
|
||||
shader_parameter/terrain_color = Color(0.152941, 0.682353, 0.376471, 1)
|
||||
shader_parameter/corrupted_color = Color(0.3, 0.1, 0.2, 1)
|
||||
shader_parameter/corruption_level = 0.0
|
||||
shader_parameter/tolerance = 0.1
|
||||
|
||||
[node name="World" type="Node2D" node_paths=PackedStringArray("_faithLabel", "_followersLabel", "_corruptionLabel", "_miraclePanel", "_worldSprite")]
|
||||
script = ExtResource("1_p8rbg")
|
||||
_faithLabel = NodePath("UiLayer/Control/MarginContainer/Main/Top/FaithLabel")
|
||||
_followersLabel = NodePath("UiLayer/Control/MarginContainer/Main/Top/FollowersLabel")
|
||||
_corruptionLabel = NodePath("UiLayer/Control/MarginContainer/Main/Top/CorruptionLabel")
|
||||
_miraclePanel = NodePath("UiLayer/Control/MarginContainer/Main/Bottom")
|
||||
_worldSprite = NodePath("World Sprite")
|
||||
|
||||
[node name="UiLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="Control" type="Control" parent="UiLayer"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="UiLayer/Control"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 8
|
||||
theme_override_constants/margin_top = 8
|
||||
theme_override_constants/margin_right = 8
|
||||
theme_override_constants/margin_bottom = 8
|
||||
|
||||
[node name="Main" type="VBoxContainer" parent="UiLayer/Control/MarginContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 0
|
||||
|
||||
[node name="Top" type="HBoxContainer" parent="UiLayer/Control/MarginContainer/Main"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="FaithLabel" type="Label" parent="UiLayer/Control/MarginContainer/Main/Top"]
|
||||
layout_mode = 2
|
||||
text = "Faith Label"
|
||||
|
||||
[node name="FollowersLabel" type="Label" parent="UiLayer/Control/MarginContainer/Main/Top"]
|
||||
layout_mode = 2
|
||||
text = "FollowersLabel"
|
||||
|
||||
[node name="CorruptionLabel" type="Label" parent="UiLayer/Control/MarginContainer/Main/Top"]
|
||||
layout_mode = 2
|
||||
text = "CorruptionLabel"
|
||||
|
||||
[node name="Bottom" type="GridContainer" parent="UiLayer/Control/MarginContainer/Main"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 6
|
||||
columns = 3
|
||||
script = ExtResource("2_hcu3t")
|
||||
_miracleButtonScene = ExtResource("3_qdkat")
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="."]
|
||||
|
||||
[node name="World Sprite" type="Sprite2D" parent="."]
|
||||
material = SubResource("ShaderMaterial_cv8e0")
|
||||
position = Vector2(-34, -25)
|
||||
scale = Vector2(2.41247, 2.41247)
|
||||
texture = ExtResource("4_i3fi7")
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="Hut Markers" type="Node2D" parent="."]
|
||||
|
||||
[node name="HutMarker" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(-1, -29)
|
||||
|
||||
[node name="HutMarker2" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(124, -45)
|
||||
|
||||
[node name="HutMarker3" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(301, -41)
|
||||
|
||||
[node name="HutMarker4" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(392, -192)
|
||||
|
||||
[node name="HutMarker5" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(267, -207)
|
||||
|
||||
[node name="HutMarker6" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(418, -292)
|
||||
|
||||
[node name="HutMarker7" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(491, -413)
|
||||
|
||||
[node name="HutMarker8" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(613, -173)
|
||||
|
||||
[node name="HutMarker9" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(465, -76)
|
||||
|
||||
[node name="HutMarker10" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(352, 168)
|
||||
|
||||
[node name="HutMarker11" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(382, 347)
|
||||
|
||||
[node name="HutMarker12" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(88, 365)
|
||||
|
||||
[node name="HutMarker13" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(-111, 431)
|
||||
|
||||
[node name="HutMarker14" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(175, 513)
|
||||
|
||||
[node name="HutMarker15" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(-228, 311)
|
||||
|
||||
[node name="HutMarker16" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(-439, 282)
|
||||
|
||||
[node name="HutMarker17" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(-334, 162)
|
||||
|
||||
[node name="HutMarker18" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(-341, 428)
|
||||
|
||||
[node name="HutMarker19" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(-148, 567)
|
||||
|
||||
[node name="HutMarker20" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(65, 472)
|
||||
|
||||
[node name="HutMarker21" parent="Hut Markers" instance=ExtResource("6_cv8e0")]
|
||||
position = Vector2(-209, 28)
|
||||
|
||||
[node name="Followers Markers" type="Node2D" parent="."]
|
||||
|
||||
[node name="FollowerMarker" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
|
||||
[node name="FollowerMarker2" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(97, 1)
|
||||
|
||||
[node name="FollowerMarker3" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(222, -34)
|
||||
|
||||
[node name="FollowerMarker4" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(317, -127)
|
||||
|
||||
[node name="FollowerMarker5" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(508, -175)
|
||||
|
||||
[node name="FollowerMarker6" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(568, -317)
|
||||
|
||||
[node name="FollowerMarker7" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(636, -27)
|
||||
|
||||
[node name="FollowerMarker8" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(575, 144)
|
||||
|
||||
[node name="FollowerMarker9" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(365, 215)
|
||||
|
||||
[node name="FollowerMarker10" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(134, 371)
|
||||
|
||||
[node name="FollowerMarker11" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(21, 563)
|
||||
|
||||
[node name="FollowerMarker12" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(-39, 469)
|
||||
|
||||
[node name="FollowerMarker13" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(-257, 402)
|
||||
|
||||
[node name="FollowerMarker14" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(-178, 229)
|
||||
|
||||
[node name="FollowerMarker15" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(-304, 206)
|
||||
|
||||
[node name="FollowerMarker16" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(-463, 349)
|
||||
|
||||
[node name="FollowerMarker17" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(-240, 42)
|
||||
|
||||
[node name="FollowerMarker18" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(-88, -32)
|
||||
|
||||
[node name="FollowerMarker19" parent="Followers Markers" instance=ExtResource("11_5ci8a")]
|
||||
position = Vector2(82, -234)
|
||||
|
||||
[node name="FollowerPopulationVisualizer" type="Node" parent="." node_paths=PackedStringArray("_markersContainer")]
|
||||
script = ExtResource("8_cv8e0")
|
||||
_markersContainer = NodePath("../Followers Markers")
|
||||
_tiers = Array[Object]([ExtResource("9_hkvnm"), ExtResource("10_5ci8a"), ExtResource("11_18xdc"), ExtResource("12_epx8f"), ExtResource("13_hcu3t")])
|
||||
metadata/_custom_type_script = "uid://dj2wyrq07gfp2"
|
||||
|
||||
[node name="HutPopulationVisualizer" type="Node" parent="." node_paths=PackedStringArray("_markersContainer")]
|
||||
script = ExtResource("8_cv8e0")
|
||||
_markersContainer = NodePath("../Hut Markers")
|
||||
_unitsPerMarker = 1
|
||||
_tiers = Array[Object]([ExtResource("14_18xdc"), ExtResource("15_epx8f"), ExtResource("16_hcu3t")])
|
||||
metadata/_custom_type_script = "uid://dj2wyrq07gfp2"
|
42
Scenes/Main/MiracleButton.cs
Normal file
42
Scenes/Main/MiracleButton.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using Godot;
|
||||
using ParasiticGod.Scripts.Core;
|
||||
using ParasiticGod.Scripts.Singletons;
|
||||
|
||||
namespace ParasiticGod.Scenes.Main;
|
||||
|
||||
public partial class MiracleButton : Button
|
||||
{
|
||||
private MiracleDefinition _miracle;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
if (_miracle == null)
|
||||
{
|
||||
GD.PrintErr($"MiracleButton '{Name}' has no MiracleDefinition assigned.");
|
||||
SetProcess(false);
|
||||
return;
|
||||
}
|
||||
|
||||
Text = $"{_miracle.Name}\nCost: {_miracle.FaithCost} Faith";
|
||||
|
||||
Pressed += OnPressed;
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
{
|
||||
Pressed -= OnPressed;
|
||||
}
|
||||
|
||||
private void OnPressed()
|
||||
{
|
||||
GameBus.Instance.PerformMiracle(_miracle);
|
||||
}
|
||||
|
||||
public void SetMiracle(MiracleDefinition miracle)
|
||||
{
|
||||
_miracle = miracle;
|
||||
Text = $"{_miracle.Name}\nCost: {_miracle.FaithCost} Faith";
|
||||
}
|
||||
|
||||
public MiracleDefinition GetMiracle() { return _miracle; }
|
||||
}
|
1
Scenes/Main/MiracleButton.cs.uid
Normal file
1
Scenes/Main/MiracleButton.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://ctjmwgucwh3le
|
61
Scenes/Main/MiraclePanel.cs
Normal file
61
Scenes/Main/MiraclePanel.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System.Collections.Generic;
|
||||
using Godot;
|
||||
using ParasiticGod.Scripts.Core;
|
||||
using ParasiticGod.Scripts.Singletons;
|
||||
|
||||
namespace ParasiticGod.Scenes.Main;
|
||||
|
||||
public partial class MiraclePanel : GridContainer
|
||||
{
|
||||
[Export] private PackedScene _miracleButtonScene;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
GameBus.Instance.MiraclesUnlocked += OnMiraclesUnlocked;
|
||||
GameBus.Instance.MiracleCompleted += OnMiracleCompleted;
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
{
|
||||
GameBus.Instance.MiraclesUnlocked -= OnMiraclesUnlocked;
|
||||
GameBus.Instance.MiracleCompleted -= OnMiracleCompleted;
|
||||
}
|
||||
|
||||
public void PopulateInitialButtons(Dictionary<string, MiracleDefinition> miracles)
|
||||
{
|
||||
foreach (var miracle in miracles.Values)
|
||||
{
|
||||
if (miracle.UnlockedByDefault)
|
||||
{
|
||||
AddButtonForMiracle(miracle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMiraclesUnlocked(List<MiracleDefinition> miracles)
|
||||
{
|
||||
foreach (var miracle in miracles)
|
||||
{
|
||||
AddButtonForMiracle(miracle);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMiracleCompleted(MiracleDefinition miracle)
|
||||
{
|
||||
foreach (var child in GetChildren())
|
||||
{
|
||||
if (child is MiracleButton button && button.GetMiracle() == miracle)
|
||||
{
|
||||
button.QueueFree();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void AddButtonForMiracle(MiracleDefinition miracle)
|
||||
{
|
||||
var buttonInstance = _miracleButtonScene.Instantiate<MiracleButton>();
|
||||
buttonInstance.SetMiracle(miracle);
|
||||
AddChild(buttonInstance);
|
||||
}
|
||||
}
|
1
Scenes/Main/MiraclePanel.cs.uid
Normal file
1
Scenes/Main/MiraclePanel.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b77vh831r1e3c
|
9
Scenes/Main/miracle_button.tscn
Normal file
9
Scenes/Main/miracle_button.tscn
Normal file
@@ -0,0 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://rj1fsdlhju5y"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ctjmwgucwh3le" path="res://Scenes/Main/MiracleButton.cs" id="1_sxcu0"]
|
||||
|
||||
[node name="MiracleButton" type="Button"]
|
||||
custom_minimum_size = Vector2(128, 64)
|
||||
offset_right = 8.0
|
||||
offset_bottom = 8.0
|
||||
script = ExtResource("1_sxcu0")
|
Reference in New Issue
Block a user