diff --git a/README.md b/README.md
index 2feb355..43c17cf 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+
# StarOpenSource CORE (aka. SOSCORE aka. CORE) [![Please don't upload to GitHub](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page)
SOSCORE/CORE is a framework that simplifies development for games and applications made in Godot 4.
diff --git a/config.gd.example b/config.gd.example
index 4e82b35..1d26477 100644
--- a/config.gd.example
+++ b/config.gd.example
@@ -47,3 +47,28 @@ var wmgr_title = "Application/Game using CORE"
## 3 | Fullscreen
## 4 | Exclusive fullscreen
var wmgr_mode = 0
+
+# Splash
+## splash_enabled
+## Type: bool
+## Default value: false
+## Enables or disables the splash screen at startup.
+## Can be manually enabled with core.splash.display()
+var splash_enabled = true
+## splash_image
+## Type: String
+## Default value: "res://CORE/soscore.png"
+## The path to your image that will be displayed
+## in the center of the splash screen.
+var splash_image = "res://CORE/soscore.png"
+## splash_image_size
+## Type: float
+## Default value: 256
+## The size of your splash image. Used for both x and y.
+var splash_image_size = 256
+## splash_color
+## Type: String
+## Default value: "000000"
+## The splash screen's background color. Do not include
+## a "#" at the start.
+var splash_color = "000000"
diff --git a/core.gd b/core.gd
index 3390e97..3ef0b3b 100644
--- a/core.gd
+++ b/core.gd
@@ -9,54 +9,54 @@ extends Node
const version = "git-develop"
var locked = false
var readycount = 0
-var readylized = false # Fun Fact: "ready" is a signal from "Node" and I (JeremyStarTM) just added "lized" from "initialized" to it to avoid the error thrown by Godot
+var readylized = false # Fun Fact: "ready" is a signal from "Node" and I (JeremyStarTM) just added "lized" from "initialized" to it to avoid a error thrown by Godot
var config = null
var wmgr = null
var smgr = null
var resmgr = null
var autoload = null
var events = null
+var splash = null
-func attach(type:String,component:Script) -> void:
+func attach(type:String,component,do_setup:bool = true) -> void:
if locked:
return
Logger.diag("core","Attaching " + type + " to CORE")
- var comp = Control.new()
- comp.name = type
- comp.set_script(component)
+ var comp = component
+ if do_setup:
+ comp = Control.new()
+ comp.name = type
+ comp.set_script(component)
match(type):
"config":
- add_child(comp)
config = comp
"wmgr":
- add_child(comp)
wmgr = comp
"smgr":
- add_child(comp)
smgr = comp
"resmgr":
- add_child(comp)
resmgr = comp
"autoload":
- add_child(comp)
autoload = comp
"events":
- add_child(comp)
events = comp
+ "splash":
+ splash = comp
_:
Logger.error("core","Failed attaching " + type + " to CORE: Invalid component")
comp.free()
return
+ add_child(comp)
Logger.diag("core","Attached " + type + " successfully")
func setready() -> void:
readycount = readycount+1
- if readycount == 4:
+ if readycount == 6:
readylized = true
func lock() -> void:
locked = true
- Logger.diag("core","CORE is now locked. No new attachments can be made.")
+ Logger.diag("core","CORE is now locked. No new attachments can be added.")
func welcome() -> void:
Logger.info("core","CORE " + version + " welcomes you!It seems like everything is working :)")
diff --git a/coreloader.gd b/coreloader.gd
index 209ddfb..dc59ec0 100644
--- a/coreloader.gd
+++ b/coreloader.gd
@@ -18,6 +18,7 @@ func _ready() -> void:
var scr_resmgr = ResourceLoader.load("res://CORE/resmgr.gd")
var scr_autoload = ResourceLoader.load("res://CORE/autoload.gd")
var scr_events = ResourceLoader.load("res://CORE/events.gd")
+ var scr_splash = ResourceLoader.load("res://CORE/splash.tscn").instantiate()
Logger.info("coreloader","Constructing CORE")
var core = Control.new()
core.name = "core"
@@ -26,8 +27,6 @@ func _ready() -> void:
get_tree().root.add_child(core)
Logger.info("coreloader","Attaching configuration file to CORE")
core.attach("config",scr_config)
- Logger.info("coreloader","Waiting for CORE to initialize")
- await get_tree().create_timer(0.5).timeout
Logger.info("coreloader","Attaching wmgr to CORE")
core.attach("wmgr",scr_wmgr)
Logger.info("coreloader","Attaching smgr to CORE")
@@ -38,6 +37,8 @@ func _ready() -> void:
core.attach("autoload",scr_autoload)
Logger.info("coreloader","Attaching events to CORE")
core.attach("events",scr_events)
+ Logger.info("coreloader","Attaching splash to CORE")
+ core.attach("splash",scr_splash,false)
Logger.info("coreloader","Locking CORE")
core.lock()
Logger.info("coreloader","Waiting for CORE to fully initialize")
diff --git a/soscore.png b/soscore.png
new file mode 100644
index 0000000..fa17ef9
Binary files /dev/null and b/soscore.png differ
diff --git a/splash.gd b/splash.gd
new file mode 100644
index 0000000..42eccb2
--- /dev/null
+++ b/splash.gd
@@ -0,0 +1,34 @@
+extends Node
+
+@onready
+var core = get_node("/root/core")
+@onready
+var enabled = core.config.splash_enabled
+@onready
+var image = core.config.splash_image
+@onready
+var image_size = core.config.splash_image_size
+@onready
+var color = core.config.splash_color
+
+func _ready() -> void:
+ apply_config()
+ if enabled:
+ display()
+ else:
+ $Background.visible = false
+ core.setready()
+
+func apply_config() -> void:
+ $Background.color = color
+ $Background/Image.texture = ResourceLoader.load(image)
+ $Background/Image.size = Vector2i(image_size,image_size)
+
+func display() -> void:
+ Logger.info("splash","Displaying splash screen")
+ get_tree().root.move_child($"/root/ccr",0)
+ $Background.visible = true
+
+func dissolve() -> void:
+ Logger.info("splash","Dissolving splash screen")
+ $Background.visible = false
diff --git a/splash.tscn b/splash.tscn
new file mode 100644
index 0000000..24f2219
--- /dev/null
+++ b/splash.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=3 format=3 uid="uid://biphpytvqtfes"]
+
+[ext_resource type="Script" path="res://CORE/splash.gd" id="1_n4sar"]
+[ext_resource type="Texture2D" uid="uid://pmk2jvrmjy5b" path="res://CORE/soscore.png" id="2_5krj5"]
+
+[node name="splash" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_n4sar")
+
+[node name="Background" type="ColorRect" parent="."]
+layout_mode = 0
+offset_right = 960.0
+offset_bottom = 540.0
+color = Color(0.839216, 0.0196078, 0.196078, 1)
+
+[node name="Image" type="NinePatchRect" parent="Background"]
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -128.0
+offset_top = -128.0
+offset_right = 128.0
+offset_bottom = 128.0
+grow_horizontal = 2
+grow_vertical = 2
+texture = ExtResource("2_5krj5")