diff --git a/resources/characters/duchex.tres b/resources/characters/duchex.tres index a9e1182..e241868 100644 --- a/resources/characters/duchex.tres +++ b/resources/characters/duchex.tres @@ -10,9 +10,8 @@ [resource] script = ExtResource("2_cyb15") +name = "Duchex" chara_sprite = ExtResource("1_tppor") -mask_eyes_location = Vector2(-45.45, -247.75) -mask_mouth_location = Vector2(-39.935, -169.95) traits = Array[ExtResource("3_s53hh")]([ExtResource("4_tppor"), ExtResource("5_cyb15"), ExtResource("6_tppor"), ExtResource("7_03y2d")]) preferences = Dictionary[int, int]({ 0: 0, diff --git a/resources/characters/duke.tres b/resources/characters/duke.tres index 35a13fb..09534b7 100644 --- a/resources/characters/duke.tres +++ b/resources/characters/duke.tres @@ -10,9 +10,8 @@ [resource] script = ExtResource("2_ce0p8") +name = "Duke" chara_sprite = ExtResource("1_d1fpd") -mask_eyes_location = Vector2(-45.45, -247.75) -mask_mouth_location = Vector2(-39.935, -169.95) traits = Array[ExtResource("3_n21sh")]([ExtResource("4_d1fpd"), ExtResource("5_12asi"), ExtResource("6_12asi"), ExtResource("7_d1fpd")]) preferences = Dictionary[int, int]({ 5: 0, diff --git a/resources/characters/king.tres b/resources/characters/king.tres index ab5f5da..cd7d6bb 100644 --- a/resources/characters/king.tres +++ b/resources/characters/king.tres @@ -10,6 +10,7 @@ [resource] script = ExtResource("3_vvog1") +name = "King" chara_sprite = ExtResource("1_k1rnw") mask_eyes_position = Vector2(-21.75, -274.015) mask_eyes_rotation = 0.06981317007977318 diff --git a/resources/characters/queen.tres b/resources/characters/queen.tres index 3649187..abd5387 100644 --- a/resources/characters/queen.tres +++ b/resources/characters/queen.tres @@ -11,9 +11,8 @@ [resource] script = ExtResource("2_g8bvo") +name = "Queen" chara_sprite = ExtResource("1_g8bvo") -mask_eyes_location = Vector2(-45.45, -247.75) -mask_mouth_location = Vector2(-39.935, -169.95) traits = Array[ExtResource("3_dkw07")]([ExtResource("9_aywjr"), ExtResource("8_j0xhd"), ExtResource("10_tw1u2"), ExtResource("8_d1164"), ExtResource("11_utmh4")]) preferences = Dictionary[int, int]({ 5: 2, diff --git a/scenes/character/chara_resource.gd b/scenes/character/chara_resource.gd index a859b95..54c176f 100644 --- a/scenes/character/chara_resource.gd +++ b/scenes/character/chara_resource.gd @@ -11,6 +11,7 @@ enum Preference { } @export_category("General") +@export var name: String @export var chara_sprite: Texture2D: set(value): chara_sprite = value diff --git a/scenes/character/character.gd b/scenes/character/character.gd index 7a80746..dcc3f4e 100644 --- a/scenes/character/character.gd +++ b/scenes/character/character.gd @@ -15,6 +15,9 @@ class_name Character @onready var mask_mouth: Mask = $MaskMouth func _on_chara_resource_changed() -> void: + if chara_resource == null: + return + face.texture = chara_resource.chara_sprite diff --git a/scenes/main.tscn b/scenes/main.tscn index 7280e61..368198d 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -1,7 +1,16 @@ [gd_scene format=3 uid="uid://cukfdjcnb5tm6"] [ext_resource type="PackedScene" uid="uid://bvpyqyftqhy45" path="res://scenes/character/character.tscn" id="1_o5qli"] -[ext_resource type="Texture2D" uid="uid://cftllq6l7xclt" path="res://icon.svg" id="2_0wfyh"] +[ext_resource type="Script" uid="uid://b1w0ocrgjkjen" path="res://scenes/managers/game_manager.gd" id="2_0wfyh"] +[ext_resource type="Script" uid="uid://bwam50qxikpw4" path="res://scenes/character/chara_resource.gd" id="3_o6xl0"] +[ext_resource type="Resource" uid="uid://c87odmn680x7" path="res://resources/characters/duchex.tres" id="4_tipki"] +[ext_resource type="Resource" uid="uid://gy4ygqrjj5ys" path="res://resources/characters/duke.tres" id="5_85g3d"] +[ext_resource type="Resource" uid="uid://da2ptl3f7h0ot" path="res://resources/characters/king.tres" id="6_choun"] +[ext_resource type="Resource" uid="uid://wq3g1j3l4gl6" path="res://resources/characters/queen.tres" id="7_ya4ey"] +[ext_resource type="Script" uid="uid://d26mv2xtvmpqt" path="res://scenes/mask/mask_resource.gd" id="8_ya4ey"] +[ext_resource type="Resource" uid="uid://cuf1ocb4px4m3" path="res://resources/masks/cat.tres" id="9_eb6dy"] +[ext_resource type="Resource" uid="uid://pdiaprcknftw" path="res://resources/masks/mute.tres" id="10_trceg"] +[ext_resource type="Resource" uid="uid://cbcqtj8mxngfy" path="res://resources/masks/unracist.tres" id="11_a8y0u"] [node name="Main" type="Node2D" unique_id=875553242] @@ -9,14 +18,7 @@ position = Vector2(933, 598) scale = Vector2(0.5488516, 0.5501616) -[node name="Node2D" type="Node2D" parent="." unique_id=423016219] - -[node name="Sprite2D2" type="Sprite2D" parent="." unique_id=897724120] -position = Vector2(437, 790.00006) -scale = Vector2(2.623044, 6.1738076) -texture = ExtResource("2_0wfyh") - -[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1584569522] -position = Vector2(846, 943) -scale = Vector2(9.480545, 1.8921106) -texture = ExtResource("2_0wfyh") +[node name="GameManager" type="Node" parent="." unique_id=528989100] +script = ExtResource("2_0wfyh") +character_roster = Array[ExtResource("3_o6xl0")]([ExtResource("4_tipki"), ExtResource("5_85g3d"), ExtResource("6_choun"), ExtResource("7_ya4ey")]) +mask_roster = Array[ExtResource("8_ya4ey")]([ExtResource("9_eb6dy"), ExtResource("10_trceg"), ExtResource("11_a8y0u")]) diff --git a/scenes/managers/game_manager.gd b/scenes/managers/game_manager.gd new file mode 100644 index 0000000..51fad21 --- /dev/null +++ b/scenes/managers/game_manager.gd @@ -0,0 +1,55 @@ +@tool +extends Node +class_name GameManager + +@export_category("Complete rosters") +@export var character_roster: Array[CharacterResource] +@export var mask_roster: Array[MaskResource] + +@export_category("Predetermined levels") +@export_group("Level 1") +@export var lvl1_guest_1: MaskedChara +@export var lvl1_guest_2: MaskedChara + +@export_group("Level 2") +@export var lvl2_guest_1: MaskedChara +@export var lvl2_guest_2: MaskedChara + +@export_category("Random levels") +@export var max_roster_size: int = 3; +@export_tool_button("Create chara roster") var create_roster_action = create_new_roster + +var current_chara_roster: Array[MaskedChara] + +enum GameState { + READY, + GUEST_REVIEW, + FINISHED +} +enum Levels { + LVL1, + LVL2, + RANDOM +} +var current_game_state = GameState.READY +var current_level = Levels.LVL1 + +func create_new_roster() -> void: + print("Create new roster") + var already_picked_charas: Array[String] = [] + for i in range(max_roster_size): + var chara: CharacterResource = character_roster.pick_random() + var mask: MaskResource = mask_roster.pick_random() + var all_masks: Array[MaskResource] = [mask] + var masked_chara = MaskedChara.new(chara, all_masks) + current_chara_roster.append(masked_chara) + print("Added %s to roster" % chara.name) + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/scenes/managers/game_manager.gd.uid b/scenes/managers/game_manager.gd.uid new file mode 100644 index 0000000..0191158 --- /dev/null +++ b/scenes/managers/game_manager.gd.uid @@ -0,0 +1 @@ +uid://b1w0ocrgjkjen diff --git a/scenes/managers/masked_chara.gd b/scenes/managers/masked_chara.gd new file mode 100644 index 0000000..573673f --- /dev/null +++ b/scenes/managers/masked_chara.gd @@ -0,0 +1,13 @@ +extends Resource +class_name MaskedChara + +@export var character: CharacterResource +@export var masks: Array[MaskResource] + + +# Make sure that every parameter has a default value. +# Otherwise, there will be problems with creating and editing +# your resource via the inspector. +func _init(p_character: CharacterResource = CharacterResource.new(), p_mask: Array[MaskResource] = []): + character = p_character + masks = p_mask diff --git a/scenes/managers/masked_chara.gd.uid b/scenes/managers/masked_chara.gd.uid new file mode 100644 index 0000000..f1b8610 --- /dev/null +++ b/scenes/managers/masked_chara.gd.uid @@ -0,0 +1 @@ +uid://b8peyg02l0mrn diff --git a/scenes/mask/mask.gd b/scenes/mask/mask.gd index d047ed3..9943433 100644 --- a/scenes/mask/mask.gd +++ b/scenes/mask/mask.gd @@ -14,6 +14,8 @@ class_name Mask func _on_mask_resource_changed() -> void: + if mask_resource == null: + return mask_sprite.texture = mask_resource.mask_sprite # Called when the node enters the scene tree for the first time.