¡¡¥¹¥Æ¡¼¥¸¥·¡¼¥ó¤ØÁ«°Ü¤·¤¿ºÝ¡¢SceneStateManager ¤ËÁªÂò¤·¤¿¥¹¥Æ¡¼¥¸¤Î¾ðÊó¤ò´ÉÍý¤µ¤»¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
°ÊÁ°¤Ï SceneStateManager ¤Î stage ÊÑ¿ô¤Ë¤Ï¡¢¥Ò¥¨¥é¥ë¥¡¼¤è¤ê Stage ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈÅÐÏ¿¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢
¤½¤ì¤ÏƱ¤¸¥·¡¼¥óÆâ¤Ë¤ª¸ß¤¤¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬Â¸ºß¤·¤Æ¤¤¤¿¤Î¤Ç²Äǽ¤Ç¤·¤¿¡£
¡¡º£²ó¤«¤é¤Ï¥¹¥Æ¡¼¥¸ÁªÂò¥·¡¼¥ó¤Î¤¢¤È¤Ë¥¹¥Æ¡¼¥¸¥·¡¼¥ó¤ØÁ«°Ü¤¹¤ë¤¿¤á¡¢
SceneStateManager ¤ÏÁ°¤Î¥·¡¼¥ó¤«¤é·Ñ³¤·¤ÆÍøÍѤ¹¤ë¾õÂ֤ˤʤ뤿¤á¡¢¥·¡¼¥ó´Ö¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¤Ä¤Ê¤¬¤ê¤¬¤¢¤ê¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢¥·¡¼¥óÁ«°Ü¤¬´°Î»¤·¤¿¤é¡¢ Stage ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î Stage¡¡¥¹¥¯¥ê¥×¥È¤Î¾ðÊó¤ò¼èÆÀ¤¹¤ëÉôʬ¤¬É¬Íפˤʤê¤Þ¤¹¡£
¤³¤Î½èÍý¤ò Stage ¥¹¥¯¥ê¥×¥È¦¤ËÍÑ°Õ¤·¤Æ¡¢SceneStateManager ¤Î stage ÊÑ¿ô¤ËÂåÆþ¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
Stage.cs

<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Stage : MonoBehaviour
{
[SerializeField]
private UIManager uiManager;
[SerializeField]
private StageGenerator stageGenerator;
[SerializeField]
private SymbolManager symbolManager;
[SerializeField]
private MapMoveController mapMoveController;
public enum TurnState
{
None,
Player,
Enemy,
Boss
}
private TurnState currentTurnState = TurnState.None;
public TurnState CurrentTurnState
{
set => currentTurnState = value;
get => currentTurnState;
}
//Stage¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬Active¾õÂ֤ˤʤ뤿¤Ó¤Ë¼Â¹Ô¤µ¤ì¤ë¥á¥½¥Ã¥É
//¥²¡¼¥à³«»Ï»þ¤Ë¤âStart¥á¥½¥Ã¥É¤è¤ê¤âÁ°¤Ë¼Â¹Ô¤µ¤ì¤ë¡ÊAwake¥á¥½¥Ã¥É¤Î¸å¡Ë
private void OnEnable()
{
//HP¤Î¹¹¿·
uiManager.DisplayHpGauge();
// TODO ¥Ð¥È¥ë¸å¤Ë¥ì¥Ù¥ë¥¢¥Ã¥×¤·¤¿»þ¤Î¥«¥¦¥ó¥È¤Î½é´ü²½
// TODO ¥ì¥Ù¥ë¥¢¥Ã¥×¤¹¤ë¤«³Îǧ
// TODO ¥ì¥Ù¥ë¥¢¥Ã¥×¤·¤Æ¤¤¤¿¤é¥ì¥Ù¥ë¥¢¥Ã¥×¤Î¥Ü¡¼¥Ê¥¹
// TODO¡¡¥Ð¥È¥ë¤ÇÉÕÍ¿¤µ¤ì¤¿¥Ç¥Ð¥Õ¤Î³Îǧ¤ÈÉÕÍ¿
CheckDebuffConditions();
//¥¿¡¼¥ó¤Î³Îǧ¤È¥×¥ì¥¤¥ä¡¼¤Î¥¿¡¼¥ó¤ËÀÚ¤êÂؤ¨¡£¥³¥ó¥Ç¥£¥·¥ç¥ó¤Î¹¹¿·
CheckTurn();
// TODO Æü쥷¥ó¥Ü¥ë¤ò³ÍÆÀ¤·¤Æ¤¤¤ë¾ì¹ç¤Ï°ÆÁ½èÍý¤ò¼Â¹Ô
// ¥Ü¥¹¤Î½Ð¸½³Îǧ
if (CurrentTurnState == TurnState.Boss)
{
//¥Ü¥¹¤Î½Ð¸½
Debug.Log("Boss ½Ð¸½");
// TODO¡¡±é½Ð
// TODO¡¡¥·¡¼¥óÁ«°Ü
}
}
private void Start()
{
////*¡¡¤³¤³¤«¤é TODO ¤ò¼ÂÁõ¡¡*////
// ¥¹¥Æ¡¼¥¸ÁªÂòµ¡Ç½¤ò¼ÂÁõ¤·¤¿»þ¤Î½èÍý¡£¤³¤³¤Ç¡¢SceneStateManager ¤Î stage ÊÑ¿ô¤Ë¡¢Stage ¥¯¥é¥¹¤Î¾ðÊó¤òÂåÆþ¤¹¤ë
SceneStateManager.instance.stage = this;
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
//¥¹¥Æ¡¼¥¸¤Î¥é¥ó¥À¥àÀ¸À®
stageGenerator.GenerateStageFromRandomTiles();
symbolManager.AllClearSymbolsList();
//Ä̾ï¤Î¥·¥ó¥Ü¥ë¤Î¥é¥ó¥À¥àºîÀ®¤·¤ÆList¤ËÄɲÃ
symbolManager.SymbolsList = stageGenerator.GenerateSymbols(-1);
// TODO Æü쥷¥ó¥Ü¥ë¤Î¥é¥ó¥À¥àºîÀ®¤·¤ÆList¤ËÄɲÃ
//Á´¥·¥ó¥Ü¥ë¤ÎÀßÄê
symbolManager.SetUpAllAymbols();
//¥×¥ì¥¤¥ä¡¼¤ÎÀßÄê
mapMoveController.SetUpMapMoveController(this);
//¸½ºß¤Î¥¿¡¼¥ó¤ò¥×¥ì¥¤¥ä¡¼¤Î¥¿¡¼¥óÀßÄê
CurrentTurnState = TurnState.Player;
// TODO ¥¨¥Í¥ß¡¼¤Î¥·¥ó¥Ü¥ë¤Ë¿¯Æþ¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë(Æü쥷¥ó¥Ü¥ë¤ò»È¤¦¾ì¹ç)
}
/// <summary>
/// ¥¨¥Í¥ß¡¼¤Î¥¿¡¼¥ó·Ð²á´Æ»ë½èÍý
/// </summary>
/// <returns></returns>
public IEnumerator ObserveEnemyTurnState()
{
Debug.Log("Ũ¤Î°ÜÆ°³«»Ï");
//¥¨¥Í¥ß¡¼¤Î°ÜÆ°¤ò°ìÂΤº¤Ä¹Ô¤¦¡£Á´¤Æ°ÜÆ°¤¬½ª¤ï¤ë¤Þ¤Ç¡¢²¼¤Î½èÍý¤Ë¤Ï¤¤¤«¤Ê¤¤
yield return StartCoroutine(symbolManager.EnemisMove());
Debug.Log("Á´¤Æ¤ÎŨ¤Î°ÜÆ°¡¡´°Î»");
//¥·¥ó¥Ü¥ë¤Î¥¤¥Ù¥ó¥È¤òȯÀ¸¤µ¤»¤ë
bool isEnemyTriggerEvent = mapMoveController.CallBackEnemySymbolTriggerEvent();
Debug.Log(isEnemyTriggerEvent);
//¥¿¡¼¥ó¤Î¾õÂÖ¤ò³Îǧ
if (!isEnemyTriggerEvent) CheckTurn();
if (CurrentTurnState == TurnState.Boss)
{
//¥Ü¥¹¤Î½Ð¸½
Debug.Log("Boss ½Ð¸½");
// TODO ±é½Ð
// TODO ¥·¡¼¥óÁ«°Ü
}
}
/// <summary>
/// ¥¿¡¼¥ó¤Î³Îǧ¡£¥×¥ì¥¤¥ä¡¼¤Î¥¿¡¼¥ó¤ËÀÚ¤êÂؤ¨¡£¥³¥ó¥Ç¥£¥·¥ç¥ó¤Î¹¹¿·
/// </summary>
private void CheckTurn()
{
//°ÜÆ°¤Ç¤¤ë¤«³Îǧ
if (GameData.instance.staminaPoint <= 0)
{
//°ÜÆ°¤Ç¤¤Ê¤¤¤Ê¤é¥Ü¥¹¤Î¥¿¡¼¥ó¤Ë¤¹¤ë
CurrentTurnState = TurnState.Boss;
}
else
{
//¤Þ¤À°ÜÆ°¤Ç¤¤ë¤Ê¤é¡¢¥×¥ì¥¤¥ä¡¼¤Î¥¿¡¼¥ó¤Ë¤¹¤ë
CurrentTurnState = TurnState.Player;
// TODO ¥³¥ó¥Ç¥£¥·¥ç¥ó¤Î»Ä¤ê»þ´Ö¤Î¹¹¿·
mapMoveController.UpdateConditionsDuration();
// TODO °ÜÆ°¥Ü¥¿¥ó¤ÈÂƧ¤ß¥Ü¥¿¥ó¤ò²¡¤»¤ë¾õÂ֤ˤ¹¤ë
// TODO ¥³¥ó¥Ç¥£¥·¥ç¥ó¤Î¸ú²Ì¤òŬÍÑ
ApplyEffectConditions();
//°ÜÆ°¤ÎÆþÎϤò¼õ¤±ÉÕ¤±¤ë¤è¤¦¤Ë¤¹¤ë
mapMoveController.IsMoving = false;
}
Debug.Log(CurrentTurnState);
}
/// <summary>
/// SymbolManager¤Î¾ðÊó¤ò¼èÆÀ
/// </summary>
/// <returns></returns>
public SymbolManager GetSymbolManager()
{
return symbolManager;
}
/// <summary>
/// ¥Ð¥È¥ë¤ÇÉÕÍ¿¤µ¤ì¤¿¥Ç¥Ð¥Õ¤Î³Îǧ
/// </summary>
private void CheckDebuffConditions()
{
//¥Ð¥È¥ëÆâ¤ÇÉÕÍ¿¤µ¤ì¤Æ¤¤¤ë¥Ç¥Ð¥Õ¤¬¤Ê¤¤¤«È½Äê
if (GameData.instance.debuffConditionList.Count == 0)
{
//¥Ç¥Ð¥Õ¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢½èÍý¤ò½ªÎ»¤¹¤ë
return;
}
//ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥Ç¥Ð¥Õ¤ò½çÈÖ¤Ë
for(int i = 0; i < GameData.instance.debuffConditionList.Count; i++)
{
//¥Ç¥Ð¥Õ¤ÎÉÕÍ¿
AddDebuff(GameData.instance.debuffConditionList[i]);
}
//¥Ç¥Ð¥Õ¤Î¥ê¥¹¥È¤ò¥¯¥ê¥¢¡£¼¡¤Î¥Ð¥È¥ë¤ËÈ÷¤¨¤ë
GameData.instance.debuffConditionList.Clear();
}
/// <summary>
/// ¥Ç¥Ð¥Õ¤ÎÉÕÍ¿
/// </summary>
/// <param name="conditionType"></param>
private void AddDebuff(ConditionType conditionType)
{
// TODO¡¡ConditionDataSO¥¹¥¯¥ê¥×¥¿¤Ö¤ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Æ¤«¤éŬÍÑ
//ConditionData conditionData = DataBaseManager.instance.conditionDataSO.conditionDatasList.Find(x => x.conditionType == conditionType);
//¤¹¤Ç¤ËƱ¤¸¥³¥ó¥Ç¥£¥·¥ç¥ó¤¬ÉÕÍ¿¤µ¤ì¤Æ¤¤¤ë¤«³Îǧ
if (mapMoveController.GetConditionsList().Exists(x => x.GetConditionType() == conditionType))
{
// ¤¹¤Ç¤ËÉÕÍ¿¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢»ý³»þ´Ö¤ò¹¹¿·¤·¡¢¸ú²Ì¤Ï¾å½ñ¤¤·¤Æ½èÍý¤ò½ªÎ»¤¹¤ë
//mapMoveController.GetConditionsList().Find(x => x.GetConditionType() == conditionType).ExtentionCondition(conditionData.duration, conditionData.conditionValue);
return;
}
// ÉÕÍ¿¤¹¤ë¥³¥ó¥Ç¥£¥·¥ç¥ó¤¬¿ç̲¤«¤Ä¡¢¤¹¤Ç¤Ëº®Íð¤Î¥³¥ó¥Ç¥£¥·¥ç¥ó¤¬ÉÕÍ¿¤µ¤ì¤Æ¤¤¤ë¤È¤¤Ë¤Ï¡¢¿ç̲¤Î¥³¥ó¥Ç¥£¥·¥ç¥ó¤Ï̵»ë¤¹¤ë(ÁàºîÉÔǽ¤Ë¤Ê¤ë¤¿¤á)
if (conditionType == ConditionType.Sleep && mapMoveController.GetConditionsList().Exists(x => x.GetConditionType() == ConditionType.Confusion))
{
return;
}
// ÉÕÍ¿¤µ¤ì¤Æ¤¤¤Ê¤¤¥³¥ó¥Ç¥£¥·¥ç¥ó¤Î¾ì¹ç¤Ï¡¢ÉÕÍ¿¤¹¤ë½àÈ÷¤¹¤ë
PlayerConditionBase playerCondition;
// Player ¤Ë¥³¥ó¥Ç¥£¥·¥ç¥ó¤òÉÕÍ¿
playerCondition = conditionType switch
{
// TODO ¥³¥ó¥Ç¥£¥·¥ç¥ó¤Î¼ïÎबÁý¤¨¤¿¤é¡¢¤³¤³¤ËÄɲ乤ë
ConditionType.Fatigue => mapMoveController.gameObject.AddComponent<PlayerCondition_Fatigue>(),
_ => null
};
// ½é´üÀßÄê¤ò¼Â¹Ô
//playerCondition.AddCondition(conditionType, conditionData.duration, conditionData.conditionValue, mapMoveController, symbolManager);
// ¥³¥ó¥Ç¥£¥·¥ç¥óÍѤΠList ¤ËÄɲÃ
mapMoveController.AddConditionsList(playerCondition);
}
/// <summary>
/// ÉÕÍ¿¤µ¤ì¤Æ¤¤¤ë¥³¥ó¥Ç¥£¥·¥ç¥ó¤Î¸ú²Ì¤ò¤¹¤Ù¤ÆŬÍÑ
/// </summary>
private void ApplyEffectConditions()
{
// ÉÕÍ¿¤µ¤ì¤Æ¤¤¤ë¥³¥ó¥Ç¥£¥·¥ç¥ó¤Î¸ú²Ì¤ò½çÈ֤ˤ¹¤Ù¤ÆŬÍÑ
foreach (PlayerConditionBase condition in mapMoveController.GetConditionsList())
{
// ¥³¥ó¥Ç¥£¥·¥ç¥ó¤Î¸ú²Ì¤òŬÍÑ
condition.ApplyEffect();
}
}
}
¥³¥á¥ó¥È¤ò¤«¤¯