123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using FSEvent;
- // 战场相关
- namespace FSBattle {
- // 战场回合状态
- public enum BattleFieldRound {
- BATTLE_FIELD_READY_GAME = 0X0010001, // 游戏准备
- BATTLE_FIELD_PLAYER_PLAY_A_HAND = 0X0010002, // 玩家出牌
- BATTLE_FIELD_ENEMY_ACTION = 0X0010003, // 敌人行动
- BATTLE_FIELD_ROUND_END = 0X0010004, // 回合结束
- }
- // 战场组件
- public class BattleField : MonoBehaviour {
- // 记录战场状态
- private BattleFieldRound round = BattleFieldRound.BATTLE_FIELD_READY_GAME;
- // Use this for initialization
- void Start() {
- InitEvent();
- Invoke("ReadyHandle", 1.0f);
- }
- // Update is called once per frame
- void Update() {
- }
- private void OnDestroy() {
- RemoveEvent();
- }
- /*
- * 注册事件
- */
- private void InitEvent() {
- EventListener.Instance.RegisterEvent(EventEnum.EVENT_ENTER_ENEMY_ACTION_ROUND, EnterEnemyRound);
- EventListener.Instance.RegisterEvent(EventEnum.EVENT_ENTER_PLAY_A_HAND_ROUND, EnterPlayAHandRound);
- }
- /*
- * 移除事件
- */
- private void RemoveEvent() {
- EventListener.Instance.RemoveEvent(EventEnum.EVENT_ENTER_ENEMY_ACTION_ROUND);
- EventListener.Instance.RemoveEvent(EventEnum.EVENT_ENTER_PLAY_A_HAND_ROUND);
- }
- /*
- * 进入下一个回合
- */
- public void NextRound() {
- // 回合循环转化
- switch (round) {
- case BattleFieldRound.BATTLE_FIELD_READY_GAME:
- print("出牌 ... ");
- round = BattleFieldRound.BATTLE_FIELD_PLAYER_PLAY_A_HAND;
- EventListener.Instance.PostEvent(EventEnum.EVENT_SHOW_CARD_PANEL);
- break;
- case BattleFieldRound.BATTLE_FIELD_PLAYER_PLAY_A_HAND:
- print("敌人行动 ... ");
- round = BattleFieldRound.BATTLE_FIELD_ENEMY_ACTION;
- EnemyRoundHandle();
- break;
- case BattleFieldRound.BATTLE_FIELD_ENEMY_ACTION:
- print("回合结束 ... ");
- round = BattleFieldRound.BATTLE_FIELD_ROUND_END;
- EventListener.Instance.PostEvent(EventEnum.EVENT_CLEAR_CARDS);
- break;
- case BattleFieldRound.BATTLE_FIELD_ROUND_END:
- print("出牌 ... ");
- round = BattleFieldRound.BATTLE_FIELD_PLAYER_PLAY_A_HAND;
- EventListener.Instance.PostEvent(EventEnum.EVENT_SHOW_CARD_PANEL);
- break;
- }
- }
- /*
- * 准备游戏回合的事件处理
- */
- private void ReadyHandle() {
- // 通过消息中心,发布带参数的消息
- Dictionary<string, object> info = new Dictionary<string, object>();
- info.Add("remind", "准备中 ... ");
- EventListener.Instance.PostEvent(EventEnum.EVENT_UPDATE_ROUND_TEXT, info);
- // 过1秒后进入下一回合
- Invoke("NextRound", 1.0f);
- }
- /*
- * 进入敌人行动的回合
- */
- private void EnterEnemyRound() {
- // 首先得保证上一个回合是出牌回合
- if (round == BattleFieldRound.BATTLE_FIELD_PLAYER_PLAY_A_HAND) {
- NextRound();
- }
- }
- /*
- * 处理敌人行动的回合
- */
- private void EnemyRoundHandle() {
- // 暂时不处理,过5秒后切换下一回合
- Invoke("NextRound", 2.0f);
- }
- /*
- * 回合轮回,重新开始
- */
- private void EnterPlayAHandRound() {
- // 首先需要保证上一个回合是结束回合
- if (round == BattleFieldRound.BATTLE_FIELD_ROUND_END) {
- NextRound();
- }
- }
- }
- }
|