Split yarn, handle inactive options

This commit is contained in:
3wc 2024-02-16 03:51:57 -03:00
parent 808958f7cc
commit fd6b9ee8dd
4 changed files with 45 additions and 36 deletions

View File

@ -10,35 +10,3 @@ You: What happened to the updates from mission control?
You: Let's have another look around... You: Let's have another look around...
<<room quarters>> <<room quarters>>
=== ===
title: Room:quarters
---
<<declare $roll = 0>>
// You: It's the crew quarters.
// You: Well, it will be. Set-up hasn't started yet.
// You: That was meant to be one of my first jobs after defrost...
// You: ...but it doesn't exactly seem like a priority now.
You: Maybe there's something useful here?
-> Search the lockers [perception]
<<set $roll to dice(6)>>
<<if $roll > 2>>
You: Aha! A small piece of paper with the **hangar access code**.
<<room hangar>>
<<else>>
You: Just some dust bunnies. Guess they stowed away from Earth.
<<endif>>
-> Set up a sleeping mat [ingenuity]
<<set $roll to dice(6)>>
<<if $roll > 2>>
You: Nice, at least I have somewhere to crash now.
<<else>>
You: Hmm, I was never good at this camping stuff. Maybe I can find somewhere else to rest.
<<endif>>
===
title: Room:hangar
---
You: The **hangar** seems eerily deserted
===
title: Room not open
---
You: Hmm, that part of the ship is still inaccessible. I wonder how to get in?
===

34
res/text/rooms.yarn Normal file
View File

@ -0,0 +1,34 @@
title: Room:quarters
---
<<declare $roll = 0>>
<<declare $hangarKeyFound = false>>
// You: It's the crew quarters.
// You: Well, it will be. Set-up hasn't started yet.
// You: That was meant to be one of my first jobs after defrost...
// You: ...but it doesn't exactly seem like a priority now.
You: Maybe there's something useful here?
-> Search the lockers [perception] <<if not $hangarKeyFound>>
<<set $roll to dice(6)>>
<<if $roll > 2>>
You: Aha! A small piece of paper with the **hangar access code**.
<<room hangar>>
<<set $hangarKeyFound to true>>
<<else>>
You: Just some dust bunnies. Guess they stowed away from Earth.
<<endif>>
-> Set up a sleeping mat [ingenuity]
<<set $roll to dice(6)>>
<<if $roll > 2>>
You: Nice, at least I have somewhere to crash now.
<<else>>
You: Hmm, I was never good at this camping stuff. Maybe I can find somewhere else to rest.
<<endif>>
===
title: Room:hangar
---
You: The **hangar** seems eerily deserted
===
title: Room not open
---
You: Hmm, that part of the ship is still inaccessible. I wonder how to get in?
===

View File

@ -1,5 +1,6 @@
import h2d.Layers; import h2d.Layers;
import h2d.Console; import h2d.Console;
import h3d.Vector4;
import scene.TitleScene; import scene.TitleScene;
import scene.WorldMapScene; import scene.WorldMapScene;
@ -87,9 +88,11 @@ class Game extends hxd.App {
var yarnText = [ var yarnText = [
hxd.Res.text.intro.entry.getText(), hxd.Res.text.intro.entry.getText(),
hxd.Res.text.rooms.entry.getText(),
]; ];
var yarnFileNames = [ var yarnFileNames = [
hxd.Res.text.intro.entry.name, hxd.Res.text.intro.entry.name,
hxd.Res.text.rooms.entry.name,
]; ];
dialogueManager.load(yarnText, yarnFileNames); dialogueManager.load(yarnText, yarnFileNames);
@ -135,8 +138,10 @@ class Game extends hxd.App {
function renderOptions(event:OptionsShown) { function renderOptions(event:OptionsShown) {
for (option in event.options) { for (option in event.options) {
addOption(option.text, function() { addOption(option.text, option.enabled, function() {
globalEventBus.publishEvent(new OptionSelected(option.index)); if (option.enabled) {
globalEventBus.publishEvent(new OptionSelected(option.index));
}
}); });
} }
} }
@ -150,10 +155,13 @@ class Game extends hxd.App {
return g; return g;
} }
function addOption(o: String, callback: () -> Void) { function addOption(o: String, enabled : Bool, callback: () -> Void) {
var spr = newPanel(Const.W, 60); var spr = newPanel(Const.W, 60);
curDialogue.addChild(spr); curDialogue.addChild(spr);
var tf = new h2d.Text(font, spr); var tf = new h2d.Text(font, spr);
if (!enabled) {
tf.color = new Vector4(0.5, 0.5, 0.5, 1);
}
tf.text = o; tf.text = o;
tf.x = 10; tf.x = 10;
tf.y = 10; tf.y = 10;

View File

@ -42,7 +42,6 @@ class WorldMapScene extends h2d.Flow implements GameScene implements h2d.domkit.
area.x = obj.x; area.x = obj.x;
area.y = obj.y; area.y = obj.y;
area.onClick = function(_) { area.onClick = function(_) {
trace("Room:" + obj.name);
var room = rooms.get(obj.name); var room = rooms.get(obj.name);
if (room.isOpen) { if (room.isOpen) {
Game.current.globalEventBus.publishEvent(new StartDialogueNode("Room:" + obj.name)); Game.current.globalEventBus.publishEvent(new StartDialogueNode("Room:" + obj.name));