Implement scene transition

This commit is contained in:
henriquenakashima 2020-09-28 23:07:12 -04:00
parent edc3abff84
commit 0b295af56b
6 changed files with 30 additions and 16 deletions

View file

@ -4,6 +4,8 @@ using UnityEngine;
public enum SceneId public enum SceneId
{ {
None,
Prologue_First, Prologue_First,
Chapter1_Cave, Chapter1_Cave,
} }

View file

@ -27,6 +27,6 @@ public class Scene_Prologue_First: StoryScene {
DialogPosition.Right); DialogPosition.Right);
yield return new WaitForSeconds(2f); yield return new WaitForSeconds(2f);
// TODO: Transition to Chapter 1. this.SetNextSceneId(SceneId.Chapter1_Cave);
} }
} }

View file

@ -12,12 +12,10 @@ public class StoryBox : MonoBehaviour {
private bool clicked; private bool clicked;
void Start() { void Start() {
Debug.Log("StoryBox Start");
this.button.onClick.AddListener(NotifyOnClick); this.button.onClick.AddListener(NotifyOnClick);
} }
public IEnumerator Display(string message) { public IEnumerator Display(string message) {
Debug.Log("StoryBox Display");
this.gameObject.SetActive(true); this.gameObject.SetActive(true);
this.clicked = false; this.clicked = false;
this.text.text = message; this.text.text = message;

View file

@ -6,19 +6,22 @@ public class StoryController : MonoBehaviour
{ {
public StoryDisplay storyDisplay; public StoryDisplay storyDisplay;
// Start is called before the first frame update private SceneId nextSceneId;
void Start()
{
// TODO: Read which scene should be loaded.
//StoryScene scene = StorySceneDatabase.Load(SceneId.Chapter1_Cave);
StoryScene scene = StorySceneDatabase.Load(SceneId.Prologue_First);
StartCoroutine(scene.Play(this.storyDisplay)); void Start() {
// TODO: Read which scene should be loaded.
this.nextSceneId = SceneId.Prologue_First;
StartCoroutine(this.PlayScenes());
} }
// Update is called once per frame private IEnumerator PlayScenes() {
void Update() while (true) {
{ SceneId id = this.nextSceneId;
this.nextSceneId = SceneId.None;
StoryScene scene = StorySceneDatabase.Load(id);
yield return scene.Play(this.storyDisplay);
this.nextSceneId = scene.GetNextSceneId();
}
} }
} }

View file

@ -16,7 +16,6 @@ public class StoryDisplay : MonoBehaviour
private StoryBox storyBoxLeft; private StoryBox storyBoxLeft;
void Awake() { void Awake() {
Debug.Log("StoryDisplay Awake");
this.storyBoxLeft = GameObject.Instantiate(this.storyBox, this.uiCanvas.transform); this.storyBoxLeft = GameObject.Instantiate(this.storyBox, this.uiCanvas.transform);
RectTransform rt = this.storyBoxLeft.GetComponent<RectTransform>(); RectTransform rt = this.storyBoxLeft.GetComponent<RectTransform>();
rt.anchorMin = new Vector2(0, 0.5f); rt.anchorMin = new Vector2(0, 0.5f);
@ -28,7 +27,6 @@ public class StoryDisplay : MonoBehaviour
} }
public IEnumerator DisplayText(string message, DialogPosition position) { public IEnumerator DisplayText(string message, DialogPosition position) {
Debug.Log("DisplayText " + message);
if (position == DialogPosition.Left) { if (position == DialogPosition.Left) {
yield return this.storyBoxLeft.Display(message); yield return this.storyBoxLeft.Display(message);
} else { } else {

View file

@ -4,5 +4,18 @@ using UnityEngine;
public abstract class StoryScene public abstract class StoryScene
{ {
private SceneId nextSceneId = SceneId.None;
public abstract IEnumerator Play(StoryDisplay storyDisplay); public abstract IEnumerator Play(StoryDisplay storyDisplay);
protected void SetNextSceneId(SceneId id) {
this.nextSceneId = id;
}
public SceneId GetNextSceneId() {
if (nextSceneId == SceneId.None) {
throw new System.InvalidOperationException("nextSceneId is None");
}
return this.nextSceneId;
}
} }