架构:Many Manager的方式,管理器全局唯一单例。EventCenter中心事件机制(中介者),负责NetMsgHandler、State、Controller、View(UI,Model)之间的解耦。
首先是ResourceUpdateManager进行资源的更新,随后GameStateManager(事先new了所有的状态)进入默认的LoginState(监听状态改变的事件,调用WindowManager的转换State方法(事先准备Windows和Windows的注册监听事件),调用LoginCtrl的进入方法),LoginCtrl注册监听事件后广播显示UI的消息,Window接受到后显示出来,然后UI交互,接受输入事件后广播传递给LoginCtrl,处理调用NetWorkManager发送消息,NetWorkManager收到回复后交给具体的NetMsgHandler处理,广播具体事件(LoginState或LoginCtrl处理),LoginCtrl处理就是进入循环了,如果是LoginState处理说明要转换状态了,设置GameStateManager要进入的状态,然后就回到开头了,只是状态不同了,控制器不同了,监听也不同了,Window不同了等。
主要的状态有:LoginState、UserState、LobbyState、RoomState、HeroState、LodingState、PlayState、OverState。除了PlayState状态,其实其他的都是UI和网络的事件、资源加载的处理。核心部分都在PlayState,而PlayState最重要的应该就是状态机。
LoginState为登陆状态,UserState为获取玩家信息状态,LobbyState为大厅状态,RoomState为房间状态,HeroState为选英雄状态,LodingState为加载状态,PlayState为游戏中状态,OverState为清算状态。归结为就是:打开游戏,登陆游戏,得到你的信息,进入大厅,匹配或自己开房间进入房间,开始后选英雄,选完英雄加载游戏场景,加载完了就可以玩了,玩完了就清算显示你的战绩,然后回到房间或大厅。