Browse Source

Add simple level flow (proof of concept)

develop
Non0w 3 years ago
parent
commit
c5b1cc1e77
12 changed files with 131 additions and 22 deletions
  1. +36
    -14
      jrpg/scenes/TestLVL.tscn
  2. +9
    -2
      jrpg/scenes/TestMain.tscn
  3. +3
    -0
      jrpg/scripts/entities/components/interactions/talk_interaction.gd
  4. +3
    -0
      jrpg/scripts/entities/pickup.gd
  5. +2
    -0
      jrpg/scripts/levels/base_level.gd
  6. +15
    -0
      jrpg/scripts/levels/script_trigger.gd
  7. +5
    -0
      jrpg/scripts/levels/spawner.gd
  8. +31
    -0
      jrpg/scripts/levels/test_coins.gd
  9. +3
    -0
      jrpg/scripts/misc/test_level.gd
  10. +8
    -0
      jrpg/scripts/misc/test_main.gd
  11. +9
    -0
      jrpg/yarn_scripts/event1.yarn
  12. +7
    -6
      jrpg/yarn_scripts/npc_debug.yarn

+ 36
- 14
jrpg/scenes/TestLVL.tscn
File diff suppressed because it is too large
View File


+ 9
- 2
jrpg/scenes/TestMain.tscn View File

@@ -23,6 +23,13 @@ yarnScript = ExtResource( 3 )

[node name="CanvasLayer" type="CanvasLayer" parent="."]

[node name="HUD" parent="CanvasLayer" instance=ExtResource( 7 )]
[node name="UI" type="Control" parent="CanvasLayer"]
anchor_right = 1.0
anchor_bottom = 1.0
__meta__ = {
"_edit_use_anchors_": false
}

[node name="HUD" parent="CanvasLayer/UI" instance=ExtResource( 7 )]

[node name="SpeechPanel" parent="CanvasLayer" instance=ExtResource( 6 )]
[node name="SpeechPanel" parent="CanvasLayer/UI" instance=ExtResource( 6 )]

+ 3
- 0
jrpg/scripts/entities/components/interactions/talk_interaction.gd View File

@@ -8,6 +8,9 @@ export var yarnScript : Resource

var yarnRunner := YarnRunner.new()

func _ready():
yarnRunner.add_command("SpawnCoins", funcref($"../../../Coins", "spawn_coins"))

func on_interact():
if not is_talking:
yarnRunner.say_func = funcref(Controller.speech_panel.text, "on_new_line")


+ 3
- 0
jrpg/scripts/entities/pickup.gd View File

@@ -1,5 +1,7 @@
extends Area

signal picked_up

export var goldToGive : int = 1
var rotateSpeed : float = 5.0

@@ -13,4 +15,5 @@ func _on_Pickup_body_entered(body):
# is this the player? If so give them gold
if body.name == "Player":
body.give_gold(goldToGive)
emit_signal("picked_up")
queue_free()

+ 2
- 0
jrpg/scripts/levels/base_level.gd View File

@@ -2,6 +2,8 @@ extends Node

class_name BaseLevel

signal end

func _enter_tree():
Controller.player_input_enabled = true


+ 15
- 0
jrpg/scripts/levels/script_trigger.gd View File

@@ -0,0 +1,15 @@
extends Node

var prout := false

func _ready():
$YarnRunnerNode.yarnRunner.add_command("Spawn", funcref(self, "spawn"))
func _on_TriggerArea_body_entered(body):
if not prout:
$YarnRunnerNode.start_script()
prout = true

func spawn(entity):
yield(get_tree(), "idle_frame")
$"../Enemy Spawner".spawn($"../Enemy Spawner".character_data)

+ 5
- 0
jrpg/scripts/levels/spawner.gd View File

@@ -1,8 +1,13 @@
extends Node

export var character_data : Resource
export var spawn_on_ready := false

func _ready():
if spawn_on_ready:
spawn(character_data)

func spawn(entity):
var inst = character_data.scene.instance()
inst.name = character_data.name
if character_data.yarn != null:


+ 31
- 0
jrpg/scripts/levels/test_coins.gd View File

@@ -0,0 +1,31 @@
extends Node

signal all_coins_picked_up

export var coin_scene : PackedScene

var prout := false

export var spawn_on_ready := false

var coins := -1

func _ready():
if spawn_on_ready:
spawn_coins(null)

func spawn_coins(args):
yield(get_tree(), "idle_frame")
if not prout:
coins = 0
for spawn in get_children():
var coin = coin_scene.instance()
coin.connect("picked_up", self, "on_coin_picked_up")
coins += 1
spawn.add_child(coin)
prout = true

func on_coin_picked_up():
coins -= 1
if coins == 0:
emit_signal("all_coins_picked_up")

+ 3
- 0
jrpg/scripts/misc/test_level.gd View File

@@ -1,3 +1,6 @@
extends BaseLevel

class_name TestLevel

func _on_Coins_all_coins_picked_up():
emit_signal("end")

+ 8
- 0
jrpg/scripts/misc/test_main.gd View File

@@ -17,11 +17,19 @@ func load_scene(args):
for child in $SceneContainer.get_children():
child.queue_free()
var scene = scenes[scene_key].instance()
scene.connect("end", self, "on_scene_end")
$SceneContainer.add_child(scene)
if scene_key == "TestGameOver":
$CanvasLayer/UI.hide()
else:
$CanvasLayer/UI.show()

func wait_signal(args):
yield(self, "end")

func on_scene_end():
emit_signal("end")

func _input(event):
if event.is_action_pressed("ui_cancel"):
emit_signal("end")

+ 9
- 0
jrpg/yarn_scripts/event1.yarn View File

@@ -0,0 +1,9 @@
title: Start
tags:
colorID: 0
position: 693,546
---
Un personnage apparaît !
<<Spawn enemy_base>>
Un personnage est apparu !
===

+ 7
- 6
jrpg/yarn_scripts/npc_debug.yarn View File

@@ -1,5 +1,6 @@
title: Start
tags:
colorID: 0
position: 701,320
---
Bonjour je suis un npc de debug !
@@ -8,19 +9,19 @@ Bonjour je suis un npc de debug !
===
title: bonjour
tags:
position: 1032.2125854492188,730.3896484375
colorID: 0
position: 1032,730
---
Est-ce que tu aimes la France ?
Est-ce que tu es prêt à donner ta vie pour la France ??
A MOURIIIR POUR TA PATRIE ??
<<SpawnCoins>>
Alors ramasse les piépièces !
===

title: ntm
tags:
position: 693.5343566489377,684.1047771502635
colorID: 0
position: 693,684
---
Vous n'avez pas honte ??
===




Loading…
Cancel
Save