From 0bb8ce47c0e42c54ad57947c1ac6c07bfcaa6760 Mon Sep 17 00:00:00 2001 From: Jens Becker Date: Wed, 29 Jul 2026 22:54:19 +0200 Subject: [PATCH] bisschen gui bisschen moving timeline --- Company.cs | 55 +++++- CompanyStatsContainer.cs | 20 +++ CompanyStatsContainer.cs.uid | 1 + CompanyStatsContainer.tscn | 71 ++++++++ CurrentTimeLine.cs | 9 +- DaySchedule.cs | 8 +- DaySchedule.tscn | 7 +- EventBus.cs | 8 + EventBus.cs.uid | 1 + Main.cs | 14 +- Main.tscn | 162 +++++++----------- ...n.windows.editor.x86_64.dll~RF27eed4e.TMP} | Bin your are an ai ceo.csproj | 3 + 13 files changed, 240 insertions(+), 119 deletions(-) create mode 100644 CompanyStatsContainer.cs create mode 100644 CompanyStatsContainer.cs.uid create mode 100644 CompanyStatsContainer.tscn create mode 100644 EventBus.cs create mode 100644 EventBus.cs.uid rename addons/rider-plugin/bin/windows/{~rider-gdextension.windows.editor.x86_64.dll => ~rider-gdextension.windows.editor.x86_64.dll~RF27eed4e.TMP} (100%) diff --git a/Company.cs b/Company.cs index 36f4c7d..651fa67 100644 --- a/Company.cs +++ b/Company.cs @@ -1,19 +1,57 @@ using Godot; +using yourareanaiceo; [GlobalClass] public partial class Company : Resource { - [Export] - public float Hype { get; set; } + private float _averageSalary = 100; + private float _hype; + private float _money = 1_000; + private float _workers = 1; [Export] - public float Money { get; set; } = 10_000; + public float Hype + { + get => _hype; + set + { + _hype = value; + EmitCompanyStatusChanged(); + } + } [Export] - public float Workers { get; set; } = 1; + public float Money + { + get => _money; + set + { + _money = value; + EmitCompanyStatusChanged(); + } + } [Export] - public float AverageSalary { get; set; } = 100; + public float Workers + { + get => _workers; + set + { + _workers = value; + EmitCompanyStatusChanged(); + } + } + + [Export] + public float AverageSalary + { + get => _averageSalary; + set + { + _averageSalary = value; + EmitCompanyStatusChanged(); + } + } /// /// Cost per Quarter @@ -24,4 +62,11 @@ public partial class Company : Resource /// Runway in Quarters /// public int Runway => Mathf.FloorToInt(Money / Cost); + + private void EmitCompanyStatusChanged() + { + EventBus.CompanyChanged.Invoke(new CompanyStats(Hype, Money, Workers, Runway)); + } + + public record CompanyStats(float Hype, float Money, float Workers, int Runway); } diff --git a/CompanyStatsContainer.cs b/CompanyStatsContainer.cs new file mode 100644 index 0000000..cfb687d --- /dev/null +++ b/CompanyStatsContainer.cs @@ -0,0 +1,20 @@ +using System.Globalization; +using Godot; +using yourareanaiceo; + +[SceneTree] +public partial class CompanyStatsContainer : FoldableContainer +{ + public override void _Ready() + { + EventBus.CompanyChanged += UpdateCompanyStats; + } + + private void UpdateCompanyStats(Company.CompanyStats companyStats) + { + HypeValue.Text = companyStats.Hype.ToString(); + MoneyValue.Text = $"${companyStats.Money.ToString("N0", CultureInfo.CurrentCulture)}"; + WorkersValue.Text = companyStats.Workers.ToString("N0", CultureInfo.CurrentCulture); + RunwayValue.Text = companyStats.Runway.ToString(); + } +} diff --git a/CompanyStatsContainer.cs.uid b/CompanyStatsContainer.cs.uid new file mode 100644 index 0000000..1e8a4b2 --- /dev/null +++ b/CompanyStatsContainer.cs.uid @@ -0,0 +1 @@ +uid://27upjp7k8rvl diff --git a/CompanyStatsContainer.tscn b/CompanyStatsContainer.tscn new file mode 100644 index 0000000..5442540 --- /dev/null +++ b/CompanyStatsContainer.tscn @@ -0,0 +1,71 @@ +[gd_scene format=3 uid="uid://ckdqrg8c0mq8h"] + +[ext_resource type="Script" uid="uid://27upjp7k8rvl" path="res://CompanyStatsContainer.cs" id="1_grkqn"] + +[node name="CompanyStatsContainer" type="FoldableContainer" unique_id=317328071] +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -245.0 +offset_right = 4.535034 +offset_bottom = 149.0 +grow_horizontal = 0 +title = "Your Company Inc." +title_alignment = 1 +script = ExtResource("1_grkqn") + +[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=832183396] +layout_mode = 2 + +[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer" unique_id=1164364814] +modulate = Color(1, 0, 0, 1) +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer4" unique_id=2113984350] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Runway" + +[node name="RunwayValue" type="Label" parent="VBoxContainer/HBoxContainer4" unique_id=1672825837] +unique_name_in_owner = true +layout_mode = 2 +text = "2" + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer" unique_id=1721269664] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer" unique_id=894714403] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Hype" + +[node name="HypeValue" type="Label" parent="VBoxContainer/HBoxContainer" unique_id=1054913799] +unique_name_in_owner = true +layout_mode = 2 +text = "10" + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer" unique_id=1217186337] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2" unique_id=52458700] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Money" + +[node name="MoneyValue" type="Label" parent="VBoxContainer/HBoxContainer2" unique_id=2047724511] +unique_name_in_owner = true +layout_mode = 2 +text = "10.000" + +[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer" unique_id=1968323546] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3" unique_id=1079804700] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Workers" + +[node name="WorkersValue" type="Label" parent="VBoxContainer/HBoxContainer3" unique_id=580114513] +unique_name_in_owner = true +layout_mode = 2 +text = "1" diff --git a/CurrentTimeLine.cs b/CurrentTimeLine.cs index dc38f24..dc5ff31 100644 --- a/CurrentTimeLine.cs +++ b/CurrentTimeLine.cs @@ -4,12 +4,17 @@ using yourareanaiceo; public partial class CurrentTimeLine : Panel { [Export] - float speed = 2f; + private float _speed = 15f; + + public bool Running { get; set; } public override void _Process(double delta) { + if (!Running) + return; + var pos = OffsetTransformPosition; - pos.Y += speed * delta.toFloat(); + pos.Y += _speed * delta.toFloat(); OffsetTransformPosition = pos; } diff --git a/DaySchedule.cs b/DaySchedule.cs index d18c4c8..76d497d 100644 --- a/DaySchedule.cs +++ b/DaySchedule.cs @@ -4,9 +4,6 @@ using Godot; [SceneTree] public partial class DaySchedule : PanelContainer { - [Export] - private Company _company; - [Export] private int _hoursInDay = 6; @@ -21,4 +18,9 @@ public partial class DaySchedule : PanelContainer TimeSlotContainer.AddChild(timeSlot); } } + + public void StartDay() + { + CurrentTimeLine.Running = true; + } } diff --git a/DaySchedule.tscn b/DaySchedule.tscn index b2f56a9..4ce88b4 100644 --- a/DaySchedule.tscn +++ b/DaySchedule.tscn @@ -2,7 +2,6 @@ [ext_resource type="Script" uid="uid://xv51uvc4koyc" path="res://DaySchedule.cs" id="1_b6clr"] [ext_resource type="PackedScene" uid="uid://nnr6u0igggve" path="res://TimeSlot.tscn" id="2_ascl5"] -[ext_resource type="Script" uid="uid://cxr0qf8ut8t4p" path="res://Company.cs" id="2_dtij7"] [ext_resource type="Script" uid="uid://cbbrups0mkp17" path="res://CurrentTimeLine.cs" id="3_dtij7"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cm0pq"] @@ -17,10 +16,6 @@ corner_radius_top_right = 4 corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 -[sub_resource type="Resource" id="Resource_b6clr"] -script = ExtResource("2_dtij7") -metadata/_custom_type_script = "uid://cxr0qf8ut8t4p" - [sub_resource type="StyleBoxLine" id="StyleBoxLine_r0du0"] color = Color(1, 0, 0, 1) thickness = 5 @@ -40,7 +35,6 @@ grow_vertical = 2 mouse_filter = 2 theme_override_styles/panel = SubResource("StyleBoxFlat_cm0pq") script = ExtResource("1_b6clr") -_company = SubResource("Resource_b6clr") [node name="TimeSlotContainer" type="VBoxContainer" parent="." unique_id=1932322928] unique_name_in_owner = true @@ -83,6 +77,7 @@ visible = false layout_mode = 2 [node name="CurrentTimeLine" type="Panel" parent="." unique_id=961292687] +unique_name_in_owner = true custom_minimum_size = Vector2(0, 5) clip_contents = true layout_mode = 2 diff --git a/EventBus.cs b/EventBus.cs new file mode 100644 index 0000000..9062aa2 --- /dev/null +++ b/EventBus.cs @@ -0,0 +1,8 @@ +using System; + +namespace yourareanaiceo; + +public static class EventBus +{ + public static Action CompanyChanged; +} diff --git a/EventBus.cs.uid b/EventBus.cs.uid new file mode 100644 index 0000000..d475f17 --- /dev/null +++ b/EventBus.cs.uid @@ -0,0 +1 @@ +uid://dc2a1pri8vkds diff --git a/Main.cs b/Main.cs index d240ec2..8054d44 100644 --- a/Main.cs +++ b/Main.cs @@ -1,4 +1,16 @@ using Godot; [SceneTree] -public partial class Main : Node2D { } +public partial class Main : Node2D +{ + [Export] + public Company Company; + + public override void _Ready() + { + Company = new Company(); + Company.Hype = 0; + + ExecuteButton.Pressed += () => DaySchedule.StartDay(); + } +} diff --git a/Main.tscn b/Main.tscn index d440a39..e3b9f39 100644 --- a/Main.tscn +++ b/Main.tscn @@ -3,18 +3,27 @@ [ext_resource type="Script" uid="uid://d1h0qvskvk1wu" path="res://Main.cs" id="1_3dxm6"] [ext_resource type="PackedScene" uid="uid://dciugg77wsy6p" path="res://MeetingPhysicsBox.tscn" id="1_glv2v"] [ext_resource type="PackedScene" uid="uid://covomnw8s7k1n" path="res://DaySchedule.tscn" id="1_r0du0"] +[ext_resource type="PackedScene" uid="uid://ckdqrg8c0mq8h" path="res://CompanyStatsContainer.tscn" id="2_trn2v"] [ext_resource type="Resource" uid="uid://mifwco1yj8kc" path="res://resources/meetings/coffee_meeting.tres" id="3_r0du0"] [ext_resource type="Resource" uid="uid://du72uxjqr0h4a" path="res://resources/meetings/lockin.tres" id="4_cm0pq"] [ext_resource type="Resource" uid="uid://bcd4qf4i84pwf" path="res://resources/meetings/work_product_1.tres" id="5_fos0i"] [ext_resource type="Script" uid="uid://bs531c76ivhtf" path="res://DropZone.cs" id="7_lgr22"] -[sub_resource type="LabelSettings" id="LabelSettings_sko1m"] -font_size = 64 -stacked_outline_count = 1 -stacked_shadow_count = 1 -stacked_outline_0/size = 9 -stacked_shadow_0/offset = Vector2(4, 4) -stacked_shadow_0/outline_size = 2 +[sub_resource type="Gradient" id="Gradient_trn2v"] +offsets = PackedFloat32Array(0, 0.5518293, 1) +colors = PackedColorArray(0.19215687, 0, 0.24313726, 1, 0.25238776, 0.18853581, 0.16752905, 1, 0.1764706, 0, 0.3529412, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_trn2v"] +noise_type = 3 +fractal_type = 2 +domain_warp_enabled = true +domain_warp_type = 1 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_trn2v"] +width = 1980 +height = 1020 +noise = SubResource("FastNoiseLite_trn2v") +color_ramp = SubResource("Gradient_trn2v") [sub_resource type="RectangleShape2D" id="RectangleShape2D_sko1m"] size = Vector2(727.5, 20) @@ -30,6 +39,20 @@ unique_name_in_owner = true position = Vector2(775, 36) gizmo_extents = 40.0 +[node name="TextureRect" type="TextureRect" parent="." unique_id=594808349] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -990.0 +offset_top = -510.0 +offset_right = 990.0 +offset_bottom = 510.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("NoiseTexture2D_trn2v") + [node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1328071901] [node name="Control" type="Control" parent="CanvasLayer" unique_id=947212855] @@ -41,97 +64,30 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -[node name="Day" type="Label" parent="CanvasLayer/Control" unique_id=1593831007] +[node name="CompanyStatsContainer" parent="CanvasLayer/Control" unique_id=317328071 instance=ExtResource("2_trn2v")] layout_mode = 1 -offset_left = 142.0 -offset_right = 260.0 -offset_bottom = 88.0 -text = "Day" -label_settings = SubResource("LabelSettings_sko1m") - -[node name="Inbox" type="Label" parent="CanvasLayer/Control" unique_id=163179205] -layout_mode = 1 -anchors_preset = 1 -anchor_left = 1.0 -anchor_right = 1.0 -offset_left = -464.0 -offset_right = -290.0 -offset_bottom = 88.0 -grow_horizontal = 0 -text = "Inbox" -label_settings = SubResource("LabelSettings_sko1m") - -[node name="PanelContainer" type="FoldableContainer" parent="CanvasLayer/Control" unique_id=1121461524] -layout_mode = 1 -anchors_preset = 1 -anchor_left = 1.0 -anchor_right = 1.0 -offset_left = -245.0 -offset_right = 4.535034 -offset_bottom = 149.0 -grow_horizontal = 0 -title = "Your Company Inc." -title_alignment = 1 - -[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/Control/PanelContainer" unique_id=1331001176] -layout_mode = 2 - -[node name="HBoxContainer4" type="HBoxContainer" parent="CanvasLayer/Control/PanelContainer/VBoxContainer" unique_id=879116080] -modulate = Color(1, 0, 0, 1) -layout_mode = 2 - -[node name="Label" type="Label" parent="CanvasLayer/Control/PanelContainer/VBoxContainer/HBoxContainer4" unique_id=54936711] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Runway" - -[node name="Label2" type="Label" parent="CanvasLayer/Control/PanelContainer/VBoxContainer/HBoxContainer4" unique_id=111473790] -layout_mode = 2 -text = "2" - -[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/Control/PanelContainer/VBoxContainer" unique_id=500602395] -layout_mode = 2 - -[node name="Label" type="Label" parent="CanvasLayer/Control/PanelContainer/VBoxContainer/HBoxContainer" unique_id=1599952499] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Hype" - -[node name="Label2" type="Label" parent="CanvasLayer/Control/PanelContainer/VBoxContainer/HBoxContainer" unique_id=780587971] -layout_mode = 2 -text = "10" - -[node name="HBoxContainer2" type="HBoxContainer" parent="CanvasLayer/Control/PanelContainer/VBoxContainer" unique_id=981225226] -layout_mode = 2 - -[node name="Label" type="Label" parent="CanvasLayer/Control/PanelContainer/VBoxContainer/HBoxContainer2" unique_id=1687312201] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Money" - -[node name="Label2" type="Label" parent="CanvasLayer/Control/PanelContainer/VBoxContainer/HBoxContainer2" unique_id=172841693] -layout_mode = 2 -text = "10.000" - -[node name="HBoxContainer3" type="HBoxContainer" parent="CanvasLayer/Control/PanelContainer/VBoxContainer" unique_id=2146415473] -layout_mode = 2 - -[node name="Label" type="Label" parent="CanvasLayer/Control/PanelContainer/VBoxContainer/HBoxContainer3" unique_id=1336632204] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Workers" - -[node name="Label2" type="Label" parent="CanvasLayer/Control/PanelContainer/VBoxContainer/HBoxContainer3" unique_id=617177241] -layout_mode = 2 -text = "1" +offset_left = -249.53503 +offset_right = 0.0 [node name="DaySchedule" parent="." unique_id=457829015 instance=ExtResource("1_r0du0")] -offset_left = 106.0 -offset_top = 117.0 -offset_right = 320.0 -offset_bottom = 571.0 +unique_name_in_owner = true +offset_left = -493.0 +offset_top = -277.00006 +offset_right = -279.0 +offset_bottom = 176.99994 + +[node name="ExecuteButton" type="Button" parent="." unique_id=312490567] +unique_name_in_owner = true +offset_left = -513.0 +offset_top = 214.99994 +offset_right = -264.0 +offset_bottom = 281.99994 +theme_override_constants/outline_size = 12 +theme_override_font_sizes/font_size = 36 +text = "Execute Day" [node name="Box" type="StaticBody2D" parent="." unique_id=56956355] +position = Vector2(-599, -322.00006) [node name="CollisionShape2D" type="CollisionShape2D" parent="Box" unique_id=220723577] position = Vector2(766.75, 611) @@ -150,45 +106,45 @@ position = Vector2(1120, -339) shape = SubResource("RectangleShape2D_ig7tw") [node name="Meeting" parent="." unique_id=796440984 instance=ExtResource("1_glv2v")] -position = Vector2(634, -454) +position = Vector2(35, -776.00006) MeetingResource = ExtResource("3_r0du0") [node name="Meeting4" parent="." unique_id=1960552374 instance=ExtResource("1_glv2v")] -position = Vector2(707, -340) +position = Vector2(108, -662.00006) rotation = 0.24779713 MeetingResource = ExtResource("4_cm0pq") [node name="Meeting5" parent="." unique_id=1692042144 instance=ExtResource("1_glv2v")] -position = Vector2(851, -500) +position = Vector2(252, -822.00006) rotation = 0.24779713 MeetingResource = ExtResource("5_fos0i") [node name="Meeting6" parent="." unique_id=2120697586 instance=ExtResource("1_glv2v")] -position = Vector2(604, -619.99994) +position = Vector2(5, -942) rotation = 0.24779713 MeetingResource = ExtResource("3_r0du0") [node name="Meeting7" parent="." unique_id=2144014406 instance=ExtResource("1_glv2v")] -position = Vector2(857, -661) +position = Vector2(258, -983.00006) rotation = 0.24779713 MeetingResource = ExtResource("3_r0du0") [node name="Meeting8" parent="." unique_id=1157887697 instance=ExtResource("1_glv2v")] -position = Vector2(964, -555) +position = Vector2(365, -877.00006) rotation = 0.24779713 [node name="Meeting9" parent="." unique_id=1055632102 instance=ExtResource("1_glv2v")] -position = Vector2(614, -732.99994) +position = Vector2(15, -1055) rotation = 0.24779713 MeetingResource = ExtResource("5_fos0i") [node name="Meeting2" parent="." unique_id=1691479453 instance=ExtResource("1_glv2v")] -position = Vector2(937, -352) +position = Vector2(338, -674.00006) rotation = -0.5541229 MeetingResource = ExtResource("3_r0du0") [node name="Meeting3" parent="." unique_id=673551448 instance=ExtResource("1_glv2v")] -position = Vector2(762.9999, -181.00012) +position = Vector2(163.99982, -503.0002) rotation = -0.18364333 MeetingResource = ExtResource("3_r0du0") @@ -201,3 +157,5 @@ offset_right = 1080.0 offset_bottom = 571.0 mouse_filter = 2 script = ExtResource("7_lgr22") + +[node name="Camera2D" type="Camera2D" parent="." unique_id=1154975713] diff --git a/addons/rider-plugin/bin/windows/~rider-gdextension.windows.editor.x86_64.dll b/addons/rider-plugin/bin/windows/~rider-gdextension.windows.editor.x86_64.dll~RF27eed4e.TMP similarity index 100% rename from addons/rider-plugin/bin/windows/~rider-gdextension.windows.editor.x86_64.dll rename to addons/rider-plugin/bin/windows/~rider-gdextension.windows.editor.x86_64.dll~RF27eed4e.TMP diff --git a/your are an ai ceo.csproj b/your are an ai ceo.csproj index c939901..85b1ae2 100644 --- a/your are an ai ceo.csproj +++ b/your are an ai ceo.csproj @@ -8,4 +8,7 @@ + + +