经过前面两篇文章的分析,我们对炉石的代码已经不陌生了,接下来我初步尝试分析其游戏逻辑代码。
欢迎转载,请注明作者【燕良@游戏开发】及原文地址:http://blog.csdn.net/neil3d/article/details/39453291
经过前面的分析,我们已经找到了两个关键的类Gameplay和GameState(当然还有我最感兴趣的Spell和SpellController,这两个还要在后面分析)。
首先我们看一下Gameplay这个类的Awake方法,它完成的主要工作是:
- 调用“ GameState.Initialize()”创建一个新的GameState实例;
- 注册CreateGame事件:在Gameplay.OnCreateGame()中响应,主要是
- 初始化卡背;(本地玩家和远程玩家的卡背ID都通过Player类来读取);
- 启动一个Coroutine:NotifyPlayersOfBoardLoad,它做的主要工作是
- 等待BoardStandardGame对象加载完成;
- 然后调用所有Player的OnBoardLoaded(),它的主要工作是初始化法力水晶相关的管理逻辑;
- 使用AssetLoader加载AttackSpellController、SecretSpellController、TurnStartManager等;
这些类看上去都很重要,我们后续分析游戏逻辑时肯定用得到。