Model ¤È View ¤ÎÃç²ðÌò¤È¤Ê¤ë Presenter ¤ò½¤Àµ¤·¤Þ¤¹¡£
ÁÐÊý¤Î¾ðÊó¤ò´ÉÍý¤·¤Æ¤¤¤ë¤Î¤Ï¤³¤Î Presenter ¤Î¤ß¤È¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢
Model ¦¤Ï View ¤òÃΤê¤Þ¤»¤ó¤·¡¢View ¦¤â Model ¤òÃΤê¤Þ¤»¤ó¡£
¡¡¤³¤Î¤è¤¦¤ËÀ߷פ¹¤ë¤³¤È¤Ç¡¢¥¯¥é¥¹´Ö¤Î¾õÂÖ¤òÁ·ë¹ç¤ËÊݤĤ³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡Á°²ó¤ÈƱ¤¸¤è¤¦¤Ë View ¥¯¥é¥¹¤È Model ¥¯¥é¥¹ÍѤÎÊÑ¿ô¤ÎÀë¸À¤òÄɲä·¡¢
Model ¥¯¥é¥¹¤Ë¤¢¤ë ReactiveProperty ¤Î¹ØÆÉÌ¿Îá¤òµ½Ò¤·¤Þ¤¹¡£
¤½¤ÎÌ¿ÎáÆâ¤Ç¡¢View ¥¯¥é¥¹¤Ë¤¢¤ë²èÌÌɽ¼¨¹¹¿·ÍѤΥ᥽¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤è¤¦¤Ë¥»¥Ã¥È¤·¤Æ¤ª¤¤Þ¤¹¡£
Presenter.cs
<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹¡£
using UnityEngine;
using UnityEngine.UI;
using UniRx;
using System;
public class Presenter : MonoBehaviour
{
[SerializeField]
private MainGame mainGame;
[SerializeField]
private Result_View[] resultViews;
[SerializeField]
private Result_Model[] resultModels;
////*¡¡¿·¤·¤¤ÊÑ¿ô¤ÎÀë¸À¤ò£²¤ÄÄɲá¡*////
[SerializeField]
private Info_View infoView;
[SerializeField]
private Info_Model infoMode;
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
void Start()
{
// TODO ¥²¡¼¥à¤Î½é´üÀßÄê¤ò¹Ô¤¦¡£¸åÄø½¤Àµ¤·¡¢Grid_View ¤Î¾ðÊó¤òÇÛÎó¤Ç¼õ¤±¼è¤ë
¡¡¡¡¡¡¡¡mainGame.InitialSettings();
// TODO ¥ê¥¹¥¿¡¼¥È¥Ü¥¿¥ó¤ÎÀßÄê
////*¡¡TODO ¤Î¼ÂÁõ¡¡*////
// InfoView ¤ÎÀßÄê¡¡Info_Model Æâ¤Î ReactiveProperty ¤Ç¤¢¤ë InfoMessage ¤Î¹ØÆɤò¹Ô¤¤¡¢Ãͤ¬¹¹¿·¤µ¤ì¤¿ºÝ¤Î½èÍý¤ÎÀßÄê¤ò¹Ô¤¦
infoMode.InfoMessage.Subscribe(x => infoView.UpdateDispayInfo(x)).AddTo(gameObject);
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
// ¥²¡¼¥à½ªÎ»¾õÂ֤δƻë
mainGame.IsGameUp.Subscribe(x => {
// TODO ¥ê¥¹¥¿¡¼¥ÈÍѤΥܥ¿¥ó¤ò²¡¤»¤ë¾õÂ֤ˤ¹¤ë
PrepareResult(mainGame.winner);
}).AddTo(gameObject);
// ResultView ¤È ResultModel ¤ÎÀßÄê
SetUpResult();
/// <summary>
/// ResultView ¤È ResultModel ¤ÎÀßÄꤹ¤ë¥í¡¼¥«¥ë´Ø¿ô
/// </summary>
void SetUpResult() {
// Model => View
// Result_Model ¤Î RectiveDictionary ¤ò¹ØÆɤ·¤Æ¡¢Result_View ¤ò¹¹¿·
for (int i = 0; i < resultViews.Length; i++) {
// Subscribe ¤ÎÃͤ¬ Length ¤Ë¸ÇÄꤵ¤ì¤Æ¤·¤Þ¤¤¡¢ÅÐÏ¿¤ÏÀ®¸ù¤¹¤ë¤¬¡¢¹¹¿·»þ¤Ë¼ºÇÔ¤¹¤ë¤Î¤Ç¡¢1²óÃͤò¼õ¤±¤ë
int a = i;
// Result_Model ¤Î RectiveProperty ¤ò¹ØÆɤ·¡¢²Ã»»·ë²Ì¤Ë¹ç¤ï¤»¤Æ²èÌ̤ò¹¹¿·
resultModels[a].WinCount.Subscribe(x => resultViews[a].UpdateDisplayWincount(x)).AddTo(gameObject);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// GridOwnerType ¤ÎÀßÄê¤È¾¡Íø¿ô¤Î½é´ü²½
resultModels[a].SetUpResultModel((GridOwnerType)a + 1);
Debug.Log("¾¡Íø¿ô ¹ØÆɳ«»Ï : " + resultModels[a].CurrentGridOwnerType.ToString());
// Result_Model ¤Î RectiveProperty ¤ò¹ØÆɤ·¡¢¾¡ÇÔ·ë²Ì¤Ë¹ç¤ï¤»¤Æ²èÌ̤ò¹¹¿·
resultModels[a].ResultMessage.Subscribe(x => resultViews[a].UpdateDisplayResultGame(x)).AddTo(gameObject);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¾¡ÇÔɽ¼¨¤Î½é´ü²½
resultModels[a].InitResultMessage();
Debug.Log("¾¡ÇÔ·ë²Ì ¹ØÆɳ«»Ï : " + resultModels[a].CurrentGridOwnerType.ToString());
}
}
// ¾¡Íø¿ô¤Î½é´ü²½¡¢¥²¡¼¥à¾ðÊó¤Î½é´ü²½
mainGame.ResetGameParameters();
¡¡¡¡¡¡¡¡// TODO Grid ¤Î¹ØÆɤò¹Ô¤¦
}
/// <summary>
/// ¥ê¥¶¥ë¥È¤Î½àÈ÷
/// </summary>
/// <param name="winner"></param>
public void PrepareResult(GridOwnerType winner) {
// ·ë²Ìɽ¼¨
for (int i = 0; i < resultModels.Length; i++) {
resultModels[i].ShowResult(winner);
}
}
}