diff --git a/.idea/.idea.Babushka/.idea/libraries/GdSdk_Master.xml b/.idea/.idea.Babushka/.idea/libraries/GdSdk_Master.xml new file mode 100644 index 0000000..8b941bb --- /dev/null +++ b/.idea/.idea.Babushka/.idea/libraries/GdSdk_Master.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg01.png b/art/mockups/Jelena 2d/jelena_mockup_bg01.png new file mode 100644 index 0000000..d822521 Binary files /dev/null and b/art/mockups/Jelena 2d/jelena_mockup_bg01.png differ diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg01.png.import b/art/mockups/Jelena 2d/jelena_mockup_bg01.png.import new file mode 100644 index 0000000..2c67647 --- /dev/null +++ b/art/mockups/Jelena 2d/jelena_mockup_bg01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxrc50i65wuc4" +path="res://.godot/imported/jelena_mockup_bg01.png-cc3dfbce628943c004eb173dfba7e870.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/mockups/Jelena 2d/jelena_mockup_bg01.png" +dest_files=["res://.godot/imported/jelena_mockup_bg01.png-cc3dfbce628943c004eb173dfba7e870.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 diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg_00.png b/art/mockups/Jelena 2d/jelena_mockup_bg_00.png new file mode 100644 index 0000000..6a93690 Binary files /dev/null and b/art/mockups/Jelena 2d/jelena_mockup_bg_00.png differ diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg_00.png.import b/art/mockups/Jelena 2d/jelena_mockup_bg_00.png.import new file mode 100644 index 0000000..1b83e27 --- /dev/null +++ b/art/mockups/Jelena 2d/jelena_mockup_bg_00.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://gqxm5sx2vrul" +path="res://.godot/imported/jelena_mockup_bg_00.png-70fb64f64bb030a57b3ff16b17be8d3a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/mockups/Jelena 2d/jelena_mockup_bg_00.png" +dest_files=["res://.godot/imported/jelena_mockup_bg_00.png-70fb64f64bb030a57b3ff16b17be8d3a.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 diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg_02.png b/art/mockups/Jelena 2d/jelena_mockup_bg_02.png new file mode 100644 index 0000000..6014c1f Binary files /dev/null and b/art/mockups/Jelena 2d/jelena_mockup_bg_02.png differ diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg_02.png.import b/art/mockups/Jelena 2d/jelena_mockup_bg_02.png.import new file mode 100644 index 0000000..23ca835 --- /dev/null +++ b/art/mockups/Jelena 2d/jelena_mockup_bg_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0e8a7qsfkhy3" +path="res://.godot/imported/jelena_mockup_bg_02.png-899b810d79a456076fba4fe824432ba8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/mockups/Jelena 2d/jelena_mockup_bg_02.png" +dest_files=["res://.godot/imported/jelena_mockup_bg_02.png-899b810d79a456076fba4fe824432ba8.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 diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg_03.png b/art/mockups/Jelena 2d/jelena_mockup_bg_03.png new file mode 100644 index 0000000..812b098 Binary files /dev/null and b/art/mockups/Jelena 2d/jelena_mockup_bg_03.png differ diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg_03.png.import b/art/mockups/Jelena 2d/jelena_mockup_bg_03.png.import new file mode 100644 index 0000000..de1e282 --- /dev/null +++ b/art/mockups/Jelena 2d/jelena_mockup_bg_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3mym0d0u1q83" +path="res://.godot/imported/jelena_mockup_bg_03.png-c91bc71c32e447abe39ce2e7b25ee6af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/mockups/Jelena 2d/jelena_mockup_bg_03.png" +dest_files=["res://.godot/imported/jelena_mockup_bg_03.png-c91bc71c32e447abe39ce2e7b25ee6af.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 diff --git a/prefabs/farm/base_plant_2d.tscn b/prefabs/farm/base_plant_2d.tscn new file mode 100644 index 0000000..f3c9d02 --- /dev/null +++ b/prefabs/farm/base_plant_2d.tscn @@ -0,0 +1,124 @@ +[gd_scene load_steps=6 format=3 uid="uid://c3hwbwo423nbm"] + +[ext_resource type="Script" uid="uid://cms357f23fmfy" path="res://scripts/CSharp/Common/Farming/PlantBehaviour2D.cs" id="1_tikj4"] +[ext_resource type="Texture2D" uid="uid://dtr4uga5uspg" path="res://art/farm/farming/farmobjekte/tomaten/tomaten baby.png" id="2_rmjrk"] +[ext_resource type="Texture2D" uid="uid://b2gu6ur2xc7s4" path="res://art/farm/farming/farmobjekte/tomaten/tomaten blume.png" id="3_goh03"] +[ext_resource type="Texture2D" uid="uid://cnwd3mb3jnuxm" path="res://art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png" id="4_u4cty"] +[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interaction_area_2d.tscn" id="5_tikj4"] + +[node name="BasePlant" type="Node2D" node_paths=PackedStringArray("_seeds", "_smallPlants", "_bigPlants", "_readyPlants")] +script = ExtResource("1_tikj4") +_seeds = [NodePath("Seeds/TomatoSeed"), NodePath("Seeds/TomatoSeed2"), NodePath("Seeds/TomatoSeed3")] +_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), NodePath("SmallPlant/03"), NodePath("SmallPlant/04")] +_bigPlants = [NodePath("BigPlant/01"), NodePath("BigPlant/02"), NodePath("BigPlant/03"), NodePath("BigPlant/04")] +_readyPlants = [NodePath("ReadyPlant/01"), NodePath("ReadyPlant/02"), NodePath("ReadyPlant/03"), NodePath("ReadyPlant/04")] + +[node name="Seeds" type="Node2D" parent="."] +position = Vector2(0, 0.5) + +[node name="TomatoSeed" type="Sprite2D" parent="Seeds"] +visible = false +texture = ExtResource("2_rmjrk") +flip_v = true +region_enabled = true +region_rect = Rect2(-2, 15, 85, 81) + +[node name="TomatoSeed2" type="Sprite2D" parent="Seeds"] +visible = false +texture = ExtResource("2_rmjrk") +flip_v = true +region_enabled = true +region_rect = Rect2(15, 177, 84, 108) + +[node name="TomatoSeed3" type="Sprite2D" parent="Seeds"] +visible = false +texture = ExtResource("2_rmjrk") +flip_v = true +region_enabled = true +region_rect = Rect2(3, 337, 85, 82) + +[node name="SmallPlant" type="Node2D" parent="."] +position = Vector2(0, 0.5) + +[node name="01" type="Sprite2D" parent="SmallPlant"] +visible = false +texture = ExtResource("2_rmjrk") +region_enabled = true +region_rect = Rect2(203, 1, 128, 164) + +[node name="02" type="Sprite2D" parent="SmallPlant"] +visible = false +texture = ExtResource("2_rmjrk") +region_enabled = true +region_rect = Rect2(218, 204, 112, 130) + +[node name="03" type="Sprite2D" parent="SmallPlant"] +visible = false +texture = ExtResource("2_rmjrk") +region_enabled = true +region_rect = Rect2(224, 399, 105, 105) + +[node name="04" type="Sprite2D" parent="SmallPlant"] +visible = false +texture = ExtResource("2_rmjrk") +region_enabled = true +region_rect = Rect2(228, 600, 85, 92) + +[node name="BigPlant" type="Node2D" parent="."] +position = Vector2(0, 2) + +[node name="01" type="Sprite2D" parent="BigPlant"] +visible = false +texture = ExtResource("3_goh03") +region_enabled = true +region_rect = Rect2(-8, 1, 498, 682) + +[node name="02" type="Sprite2D" parent="BigPlant"] +visible = false +texture = ExtResource("3_goh03") +region_enabled = true +region_rect = Rect2(575, 82, 516, 591) + +[node name="03" type="Sprite2D" parent="BigPlant"] +visible = false +texture = ExtResource("3_goh03") +region_enabled = true +region_rect = Rect2(-25, 694, 521, 687) + +[node name="04" type="Sprite2D" parent="BigPlant"] +visible = false +texture = ExtResource("3_goh03") +region_enabled = true +region_rect = Rect2(546, 697, 535, 687) + +[node name="ReadyPlant" type="Node2D" parent="."] +position = Vector2(0, 2.3) + +[node name="01" type="Sprite2D" parent="ReadyPlant"] +visible = false +texture = ExtResource("4_u4cty") +region_enabled = true +region_rect = Rect2(399, 3, 679, 808) + +[node name="02" type="Sprite2D" parent="ReadyPlant"] +visible = false +texture = ExtResource("4_u4cty") +region_enabled = true +region_rect = Rect2(1077, 109, 633, 695) + +[node name="03" type="Sprite2D" parent="ReadyPlant"] +visible = false +texture = ExtResource("4_u4cty") +region_enabled = true +region_rect = Rect2(415, 838, 639, 817) + +[node name="04" type="Sprite2D" parent="ReadyPlant"] +visible = false +texture = ExtResource("4_u4cty") +region_enabled = true +region_rect = Rect2(1167, 863, 528, 785) + +[node name="InteractionArea" parent="." instance=ExtResource("5_tikj4")] +position = Vector2(0, 2.3) + +[connection signal="Interacted" from="InteractionArea" to="." method="Grow"] diff --git a/prefabs/interactions/sprite_switcher_2d.tscn b/prefabs/interactions/sprite_switcher_2d.tscn new file mode 100644 index 0000000..00286a7 --- /dev/null +++ b/prefabs/interactions/sprite_switcher_2d.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=3 format=3 uid="uid://ce0mc0ddijmyi"] + +[ext_resource type="Script" uid="uid://pemu31f6fe4l" path="res://scripts/CSharp/Common/SpriteSwitcher2D.cs" id="1_aktjx"] +[ext_resource type="Texture2D" uid="uid://3pj2q7wtuion" path="res://art/farm/farming/farmobjekte/hoe.png" id="2_gxaiv"] + +[node name="SpriteSwitcher2d" type="Node2D" node_paths=PackedStringArray("_firstSprite", "_secondSprite")] +script = ExtResource("1_aktjx") +_firstSprite = NodePath("FirstSprite") +_secondSprite = NodePath("SecondSprite") + +[node name="FirstSprite" type="Sprite2D" parent="."] +modulate = Color(0.00322664, 0.644252, 0.264198, 1) +texture = ExtResource("2_gxaiv") +region_enabled = true +region_rect = Rect2(989, 189, 339, 1228) + +[node name="SecondSprite" type="Sprite2D" parent="."] +visible = false +modulate = Color(1, 0, 0, 1) +texture = ExtResource("2_gxaiv") +region_enabled = true +region_rect = Rect2(1006, 197, 321, 1226) diff --git a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs.uid b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs.uid new file mode 100644 index 0000000..4887a5a --- /dev/null +++ b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs.uid @@ -0,0 +1 @@ +uid://cms357f23fmfy diff --git a/scripts/CSharp/Common/SpriteSwitcher2D.cs.uid b/scripts/CSharp/Common/SpriteSwitcher2D.cs.uid new file mode 100644 index 0000000..fae6491 --- /dev/null +++ b/scripts/CSharp/Common/SpriteSwitcher2D.cs.uid @@ -0,0 +1 @@ +uid://pemu31f6fe4l diff --git a/shader/HSV.gdshader b/shader/HSV.gdshader new file mode 100644 index 0000000..018b9bb --- /dev/null +++ b/shader/HSV.gdshader @@ -0,0 +1,92 @@ +shader_type canvas_item; + +// Hue is in normalized value [0.0, 1.0] where 0.0 means no change. +// For example, 0.1 shifts hue by 36° (0.1 * 360°). +uniform float hue_shift : hint_range(-1.0, 1.0) = 0.0; +// Saturation multiplier. 1.0 means no change. +uniform float saturation_mult : hint_range(0.0, 2.0) = 1.0; +// Value (brightness in HSV) multiplier. 1.0 means no change. +uniform float value_mult : hint_range(0.0, 2.0) = 1.0; +// Brightness addition in RGB space. 0.0 means no change. +uniform float brightness_add : hint_range(-1.0, 1.0) = 0.0; +// Contrast multiplier in RGB space. 1.0 means no change. +uniform float contrast_mult : hint_range(0.0, 2.0) = 1.0; + +// Converts an RGB color to HSV. +vec3 rgb2hsv(vec3 c) { + float cMax = max(max(c.r, c.g), c.b); + float cMin = min(min(c.r, c.g), c.b); + float delta = cMax - cMin; + + float h = 0.0; + if(delta < 0.00001) { + h = 0.0; + } else if(cMax == c.r) { + h = mod(((c.g - c.b) / delta), 6.0); + } else if(cMax == c.g) { + h = ((c.b - c.r) / delta) + 2.0; + } else { + h = ((c.r - c.g) / delta) + 4.0; + } + h /= 6.0; + if(h < 0.0) h += 1.0; + + float s = (cMax <= 0.0) ? 0.0 : (delta / cMax); + float v = cMax; + return vec3(h, s, v); +} + +// Converts an HSV color back to RGB. +vec3 hsv2rgb(vec3 c) { + float h = c.x * 6.0; + float s = c.y; + float v = c.z; + + float c_val = v * s; + float x = c_val * (1.0 - abs(mod(h, 2.0) - 1.0)); + vec3 rgb; + + if (0.0 <= h && h < 1.0) { + rgb = vec3(c_val, x, 0.0); + } else if (1.0 <= h && h < 2.0) { + rgb = vec3(x, c_val, 0.0); + } else if (2.0 <= h && h < 3.0) { + rgb = vec3(0.0, c_val, x); + } else if (3.0 <= h && h < 4.0) { + rgb = vec3(0.0, x, c_val); + } else if (4.0 <= h && h < 5.0) { + rgb = vec3(x, 0.0, c_val); + } else if (5.0 <= h && h < 6.0) { + rgb = vec3(c_val, 0.0, x); + } else { + rgb = vec3(0.0, 0.0, 0.0); + } + float m = v - c_val; + return rgb + vec3(m); +} + +void fragment() { + // Get the original texture color. + vec4 tex_color = texture(TEXTURE, UV); + vec3 col = tex_color.rgb; + + // Adjust brightness and contrast in RGB space. + // The contrast formula shifts the color around mid-gray (0.5). + col = (col - 0.5) * contrast_mult + 0.5 + brightness_add; + + // Convert to HSV to adjust hue, saturation, and value. + vec3 hsv = rgb2hsv(col); + + // Apply hue shift and wrap the value [0,1]. + hsv.x = mod(hsv.x + hue_shift, 1.0); + + // Adjust saturation and value multipliers. + hsv.y *= saturation_mult; + hsv.z *= value_mult; + + // Convert back to RGB. + col = hsv2rgb(hsv); + + // Output the final color while preserving the original alpha. + COLOR = vec4(col, tex_color.a); +} diff --git a/shader/HSV.gdshader.uid b/shader/HSV.gdshader.uid new file mode 100644 index 0000000..3c6b325 --- /dev/null +++ b/shader/HSV.gdshader.uid @@ -0,0 +1 @@ +uid://do5og8uubh2m5 diff --git a/shader/repeat_texture.gdshader b/shader/repeat_texture.gdshader new file mode 100644 index 0000000..0a00989 --- /dev/null +++ b/shader/repeat_texture.gdshader @@ -0,0 +1,10 @@ +shader_type canvas_item; + +uniform vec2 tiling_scale = vec2(5.0, 5.0); +uniform sampler2D noise : repeat_enable; + +void fragment() { + vec2 uv = vec2(UV.x * tiling_scale.x, UV.y * tiling_scale.y); // Change 10.0 to control tiling scale + COLOR = texture(TEXTURE, fract(uv)); +} + diff --git a/shader/repeat_texture.gdshader.uid b/shader/repeat_texture.gdshader.uid new file mode 100644 index 0000000..2154e3a --- /dev/null +++ b/shader/repeat_texture.gdshader.uid @@ -0,0 +1 @@ +uid://xnky830dtfsn