strange IOC框架 塔防游戏实例应用 (二)
2017-03-23 09:51
459 查看
源码在最后一章放上
应用场景:点击地图弹出相应炮塔弹窗
分层逻辑: 地图View点击 —> 发出地图事件 —> 地图根据参数做出反应 —>与Model层交互数据并把数据传输到相应View层做出反应
1.地图View点击发出事件
2.事件Command做出相应反应并通知View
3.View层的Mediator监听并处理相应事件
应用场景:点击地图弹出相应炮塔弹窗
分层逻辑: 地图View点击 —> 发出地图事件 —> 地图根据参数做出反应 —>与Model层交互数据并把数据传输到相应View层做出反应
1.地图View点击发出事件
void OnMapTileClick(int mouseButton, Data_Tile tile) { dispatcher.Dispatch(EventType.GameMapClick, new Args_GameMapClick() { Map = View_Spawner.m_Map,Tile = tile }); }
2.事件Command做出相应反应并通知View
public class Command_GameMapClick : EventCommand { [Inject] public Model_Game Model_Game { get; set; } public override void Execute() { Args_GameMapClick e = evt.data as Args_GameMapClick; //与Model交互并解析数据 if(Model_Game.IsPlaying && e.Tile.CanHold) { if(e.Tile.Data == null) { //通知对应View dispatcher.Dispatch(ViewEventType.ShowSpawnPanel, new Args_ShowSpawnPanel() { Model_Game = Model_Game, Pos = e.Map.GetPosition(e.Tile), UpSide = e.Tile.Y < Object_Map.RowCount / 2 }); } else { //通知对应View dispatcher.Dispatch(ViewEventType.ShowUpgradePanel, new Args_ShowUpgradePanel() { Model_Game = Model_Game, Tower = e.Tile.Data as Object_Tower }); } } } }
3.View层的Mediator监听并处理相应事件
public class Mediator_TowerPopup : EventMediator { [Inject] public View_TowerPopup View_TowerPopup { get; set; } //监听事件 public override void OnRegister() { View_TowerPopup.Init(); dispatcher.AddListener(ViewEventType.ShowSpawnPanel, OnShowSpawnPanel); dispatcher.AddListener(ViewEventType.ShowUpgradePanel, OnShowUpgradePanel); } void OnDestroy() { dispatcher.RemoveListener(ViewEventType.ShowSpawnPanel, OnShowSpawnPanel); dispatcher.RemoveListener(ViewEventType.ShowUpgradePanel, OnShowUpgradePanel); } //对事件做出反应 void OnShowSpawnPanel(IEvent e) { Args_ShowSpawnPanel ee = e.data as Args_ShowSpawnPanel; View_TowerPopup.ShowSpawnPanel(ee.Model_Game, ee.Pos, ee.UpSide); } void OnShowUpgradePanel(IEvent e) { Args_ShowUpgradePanel ee = e.data as Args_ShowUpgradePanel; View_TowerPopup.ShowUpgradePanel(ee.Model_Game, ee.Tower); } }
相关文章推荐
- strange IOC框架 塔防游戏实例应用 (一)
- strange IOC框架 塔防游戏实例应用 (三)
- strange IOC框架 塔防游戏实例应用 (四)
- strange IOC框架 塔防游戏实例应用 (五)
- StrangeIoc MVCS游戏框架
- 【StrangeIOC框架】 通过一个实例来理解MVCS结构
- Asp.net MVC 2.0 + Unity 2.0(IoC) + EF4.0 实例:RoRoWoBlog 开源项目框架代码
- quartz调度框架在web中应用实例
- ACE框架在网络游戏服务器中的设计与应用
- 技术沙龙.:主题为《代码解析Castle(IOC)应用实例 -开源CMS 系统Cuyahoga》
- Android OpenGL ES(六):创建实例应用OpenGLDemos程序框架
- ACE框架在网络游戏服务器中的设计与应用
- jQuery验证框架(八)应用实例 (jQuery validation)
- j2ee 设计框架 ibatis+spring+struts整合应用实例
- Linux下Gtest测试框架应用实例
- 采用CakePHP框架为Android应用快速搭建Web Service服务器及API接口的PHP代码实例
- iPhone企业应用实例分析之三:程序框架分析
- 以模态的形式显示应用到文档/视图框架结构实例
- ACE框架在网络游戏服务器中的设计与应用
- Java内部类应用实例:控制框架