strange IOC框架 塔防游戏实例应用 (一)


源码在最后一章放上  主要理解分层



应用场景:进入对应的场景触发相应的逻辑  


1.加载场景时发出事件

    void OnLevelWasLoaded(int level)
    {
        Args_Scene e = new Args_Scene() { level = level };  //把场景Index传过去
        dispatcher.Dispatch(EventType.EnterScene, e);
    }


2.对应的Command接收事件进行相应反应处理,并通过Command与游戏信息Model进行交互数据

public class Command_EnterScene : EventCommand {


    //游戏信息内容
    [Inject]
    public Model_Game Model_Game { get; set; }


    
    //相应处理
    public override void Execute()
    {
        Args_Scene e = evt.data as Args_Scene;
        Debug.Log("Enter Scene : " + e.level);


        switch(e.level)    //根据相应的场景Index来做出相应的反应
        {
            case 1:
                UIManager.Instance.CreateUI(UIPanelType.StartPanel);
                break;
            case 2:
                UIManager.Instance.CreateUI(UIPanelType.SelectPanel);
                Game.Instance.StartCoroutine(InitLevelCard());
                break;
            case 3:
                UIManager.Instance.CreateUI(UIPanelType.BoardPanel);
                UIManager.Instance.CreateUI(UIPanelType.CountDownPanel);
                Game.Instance.StartCoroutine(StartCount());
                break;
            case 4:
                UIManager.Instance.CreateUI(UIPanelType.CompletePanel);
                break;
        }
    }


    IEnumerator InitLevelCard()
    {
        yield return new WaitForSeconds(0f);
        Args_InitLevelCard e = new Args_InitLevelCard()
        {
            levels = Model_Game.AllLevels,
            GameProgress = Model_Game.GameProgress
        };
        dispatcher.Dispatch(ViewEventType.InitLevelCard, e);
    }


    IEnumerator StartCount()
    {
        yield return new WaitForSeconds(0f);
        dispatcher.Dispatch(ViewEventType.StartCount);
        dispatcher.Dispatch(ViewEventType.InitMap, Model_Game.PlayLevel);
    }


}


你可能感兴趣的:(strange IOC框架 塔防游戏实例应用 (一))