Scriptum/Assets/Scripts/REFACTORING/Application/Dialogue/Panel/Panel.cs
2022-12-04 20:48:40 +01:00

67 lines
2.1 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Panel : AbstractPanel
{
public string Header { get; set; }
public string Content { get; set; }
public GameObject PanelInstance { get; set; }
public Panel() { }
public Panel(Vector3 _position, Vector2 _size, Vector3 _scale) : base (_position, _size, _scale){ }
public override GameObject BuildPanel()
{
GameObject panelPrefab = PanelComponentFactory.BuildCustomPanelWithContinue(Position, Size, Scale);
panelPrefab.transform.Find("Header").gameObject.GetComponent<UnityEngine.UI.Text>().text = Header;
panelPrefab.transform.Find("Content").gameObject.GetComponent<UnityEngine.UI.Text>().text = Content;
return panelPrefab;
}
public GameObject BuildPanelWithoutContinue()
{
GameObject panelPrefab = PanelComponentFactory.BuildCustomPanel(Position, Size, Scale);
panelPrefab.transform.Find("Header").gameObject.GetComponent<UnityEngine.UI.Text>().text = Header;
panelPrefab.transform.Find("Content").gameObject.GetComponent<UnityEngine.UI.Text>().text = Content;
return panelPrefab;
}
public void SetContinueButtonAction(Func<DialogueController, bool> onClickFunction, DialogueController dialogControllerModel)
{
PanelInstance.transform.Find("ContinueButton").GetComponent<Button>().onClick.AddListener(() => onClickFunction(dialogControllerModel));
}
// support method
protected Transform FindButtonByName(string _buttonName)
{
var panelButtonInstance = PanelInstance.transform.Find(_buttonName);
if (!panelButtonInstance)
throw new Exception($"Button {_buttonName} not found in composed panel");
return panelButtonInstance;
}
}
// continue button
// remove current game object instance from scene\
// do declared action
// - in dialogue - set current panel as "readed" + open next / close
// accept button
// - the same what "continue"
//
// - add task to user /