primitive working dialog bubble
This commit is contained in:
@@ -6,10 +6,12 @@ public partial class dialog_trigger_area : Area2D
|
||||
{
|
||||
[Export(PropertyHint.File, "*json")]
|
||||
string dialogFile;
|
||||
|
||||
public string currentKey = "randomWelcomeText";
|
||||
public void OnInteraction()
|
||||
[Export]
|
||||
string dialogTitle;
|
||||
public string printedDialog;
|
||||
public void OnInteraction(string playerName)
|
||||
{
|
||||
string currentKey = "randomWelcomeText";
|
||||
using var file = FileAccess.Open(dialogFile, FileAccess.ModeFlags.Read);
|
||||
string text = file.GetAsText();
|
||||
|
||||
@@ -17,7 +19,10 @@ public partial class dialog_trigger_area : Area2D
|
||||
Dictionary allDialog = (Dictionary)jsonFile;
|
||||
if (currentKey.BeginsWith("random")) {
|
||||
string[] dialogPart = allDialog[currentKey].AsStringArray();
|
||||
GD.Print(dialogPart[GD.Randi() % dialogPart.Length]);
|
||||
} else GD.Print(allDialog[currentKey]);
|
||||
printedDialog = dialogPart[GD.Randi() % dialogPart.Length];
|
||||
} else printedDialog = allDialog[currentKey].AsString();
|
||||
printedDialog = String.Format(printedDialog, playerName);
|
||||
|
||||
GetNode("/root/main/dialog_bubble").Call("ImportString",dialogTitle, printedDialog);
|
||||
}
|
||||
}
|
||||
|
@@ -3,13 +3,10 @@ using System;
|
||||
|
||||
public partial class dialog_bubble : CanvasLayer
|
||||
{
|
||||
public override void _Ready()
|
||||
public void ImportString(string dialogTitle, string printedDialog)
|
||||
{
|
||||
Show();
|
||||
ImportString();
|
||||
}
|
||||
public void ImportString()
|
||||
{
|
||||
|
||||
Visible = !Visible;
|
||||
GetNode<Label>("TextLabel").Text = printedDialog;
|
||||
GetNode<Label>("NameLabel").Text = dialogTitle;
|
||||
}
|
||||
}
|
||||
|
@@ -4,6 +4,8 @@ public partial class player : CharacterBody2D
|
||||
{
|
||||
[Export]
|
||||
public int speed = 400;
|
||||
[Export]
|
||||
public string playerName;
|
||||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
@@ -28,7 +30,7 @@ public partial class player : CharacterBody2D
|
||||
//call event in raycasted object
|
||||
if (Input.IsActionJustPressed("ui_accept") && GetNode<RayCast2D>("ray_cast_2d").IsColliding()) {
|
||||
var raycastedObject = GetNode<RayCast2D>("ray_cast_2d").GetCollider();
|
||||
raycastedObject.Call("OnInteraction");
|
||||
raycastedObject.Call("OnInteraction", playerName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user