123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using FSEvent;
- using FSRole;
- using FSCard;
- using FSAssist;
- namespace FSBattle {
-
- public enum BattleFieldRound {
- BATTLE_FIELD_READY_GAME = 0X0010001,
- BATTLE_FIELD_DRAW_CARDS = 0X0010002,
- BATTLE_FIELD_ENEMY_DEAL = 0X0010003,
- BATTLE_FIELD_PLAYER_DEAL = 0X0010004,
- BATTLE_FIELD_COMPAIRE_CARDS = 0X0010005,
- BATTLE_FIELD_MAKE_UP_CARDS = 0X0010006,
- BATTLE_FIELD_PLAYER_PLAY_A_HAND = 0X0010007,
- BATTLE_FIELD_ENEMY_ACTION = 0X0010008,
- BATTLE_FIELD_ROUND_END = 0X0010009,
- }
-
- public class BattleField : MonoBehaviour {
-
- private BattleFieldRound round = BattleFieldRound.BATTLE_FIELD_READY_GAME;
- public Transform cachePlace;
-
-
- void Start() {
- InitEvent();
- Invoke("BattleStart", 1.0f);
- }
-
- void Update() {
-
- }
- private void OnDestroy() {
- RemoveEvent();
- }
-
- private void InitEvent() {
- EventListener.Instance.RegisterEvent(EventEnum.EVENT_ENTER_COMPAIRE_CARD_ROUND, EnterCompaireRound);
- EventListener.Instance.RegisterEvent(EventEnum.EVENT_ENTER_ENEMY_DEAL_ROUND, EnterEnemyDealRound);
- EventListener.Instance.RegisterEvent(EventEnum.EVENT_ENTER_PLAYER_DEAL_ROUND, EnterPlayerDealRound);
- EventListener.Instance.RegisterEvent(EventEnum.EVENT_ENTER_PLAY_A_HAND_ROUND, EnterPlayAHandRound);
- EventListener.Instance.RegisterEvent(EventEnum.EVENT_ERASE_CARD, EraseCard);
- }
-
- private void RemoveEvent() {
- EventListener.Instance.RemoveEvent(EventEnum.EVENT_ENTER_COMPAIRE_CARD_ROUND);
- EventListener.Instance.RemoveEvent(EventEnum.EVENT_ENEMY_DEAL_CARD);
- EventListener.Instance.RemoveEvent(EventEnum.EVENT_ENTER_PLAYER_DEAL_ROUND);
- EventListener.Instance.RemoveEvent(EventEnum.EVENT_ENTER_PLAY_A_HAND_ROUND);
- EventListener.Instance.RemoveEvent(EventEnum.EVENT_ERASE_CARD);
- }
-
- private void BattleStart() {
- ReadyHandle();
- }
-
- public void NextRound() {
-
- switch (round) {
- case BattleFieldRound.BATTLE_FIELD_READY_GAME:
- round = BattleFieldRound.BATTLE_FIELD_DRAW_CARDS;
-
- EventListener.Instance.PostEvent(EventEnum.EVENT_PLAYER_SHUFFLING_CARD);
-
- print("抽牌");
-
- foreach(Transform roleTrs in BattleFieldManager.Instance.ArmyArray) {
- Role role = roleTrs.GetComponent<Role>();
- role.CurrentAttr.Mp = role.OriginAttr.Mp;
- Dictionary<string, object> info = new Dictionary<string, object>();
- info.Add("role", role);
- EventListener.Instance.PostEvent(EventEnum.EVENT_UPDATE_PLAYER_ENGINE, info);
- }
- foreach(Transform roleTrs in BattleFieldManager.Instance.EnemyArray) {
- Role role = roleTrs.GetComponent<Role>();
- role.CurrentAttr.Mp = role.OriginAttr.Mp;
- }
- break;
- case BattleFieldRound.BATTLE_FIELD_DRAW_CARDS:
- round = BattleFieldRound.BATTLE_FIELD_ENEMY_DEAL;
-
- EventListener.Instance.PostEvent(EventEnum.EVENT_ENEMY_DEAL_CARD);
- print("敌人出牌完毕");
- break;
- case BattleFieldRound.BATTLE_FIELD_ENEMY_DEAL:
- round = BattleFieldRound.BATTLE_FIELD_PLAYER_DEAL;
-
- print("我方出牌,直到按下回合结束按钮 ... ");
- break;
- case BattleFieldRound.BATTLE_FIELD_PLAYER_DEAL:
- round = BattleFieldRound.BATTLE_FIELD_COMPAIRE_CARDS;
- print("开始比牌 ... ");
-
- CompaireCards();
-
-
-
- break;
- case BattleFieldRound.BATTLE_FIELD_COMPAIRE_CARDS:
- round = BattleFieldRound.BATTLE_FIELD_READY_GAME;
-
- EventListener.Instance.PostEvent(EventEnum.EVENT_CLEAR_COMPAIRE_CARDS);
-
- ExecuteRoleBuff();
-
- Invoke("NextRound", 2.0f);
- print("准备好了 ... ");
- break;
- case BattleFieldRound.BATTLE_FIELD_MAKE_UP_CARDS:
- break;
- }
- }
-
- private void ReadyHandle() {
-
- Dictionary<string, object> info = new Dictionary<string, object>();
- info.Add("remind", "准备中 ... ");
- EventListener.Instance.PostEvent(EventEnum.EVENT_UPDATE_ROUND_TEXT, info);
-
- Invoke("NextRound", 1.0f);
- }
-
- private void EnterEnemyDealRound() {
-
- if (round == BattleFieldRound.BATTLE_FIELD_DRAW_CARDS) {
- NextRound();
- }
- }
-
- private void EnterPlayerDealRound() {
-
- if (round == BattleFieldRound.BATTLE_FIELD_ENEMY_DEAL) {
- NextRound();
- }
- }
-
- private void EnterCompaireRound() {
-
- if (round == BattleFieldRound.BATTLE_FIELD_PLAYER_DEAL) {
-
- EventListener.Instance.PostEvent(EventEnum.EVENT_CLEAR_HAND_CARDS);
- NextRound();
- } else if (round == BattleFieldRound.BATTLE_FIELD_COMPAIRE_CARDS) {
-
- NextRound();
- }
- }
-
- private void EnterPlayAHandRound() {
-
- if (round == BattleFieldRound.BATTLE_FIELD_ROUND_END) {
- NextRound();
- }
- }
-
- private void ExecuteRoleBuff() {
-
- foreach (Transform trs in BattleFieldManager.Instance.RoleArray) {
- Role role = trs.GetComponent<Role>();
- role.BuffExecute();
- }
- }
-
- private void CompaireCards() {
-
- ArrayList executeArray = new ArrayList();
-
- int index = 0;
-
- Vector3 scaleSize = new Vector3(AssistConfig.CardScale, AssistConfig.CardScale, AssistConfig.CardScale);
- while (true) {
-
- if (index < BattleFieldManager.Instance.CpArray.Count) {
- Dictionary<string, Transform> info = (Dictionary<string, Transform>)BattleFieldManager.Instance.CpArray[index];
-
-
- if (info.ContainsKey(AssistConfig.Army) && !info.ContainsKey(AssistConfig.Enemy)) {
- Transform armyTrs = info[AssistConfig.Army];
- Card armyCard = armyTrs.GetComponent<Card>();
- armyCard.SetFront(true);
- executeArray.Add(armyTrs);
- } else if (!info.ContainsKey(AssistConfig.Army) && info.ContainsKey(AssistConfig.Enemy)) {
- Transform enemyTrs = info[AssistConfig.Enemy];
- Card enemyCard = enemyTrs.GetComponent<Card>();
- enemyCard.SetFront(true);
- executeArray.Add(enemyCard);
- } else {
- Transform armyTrs = info[AssistConfig.Army];
- Transform enemyTrs = info[AssistConfig.Enemy];
-
- Card armyCard = armyTrs.GetComponent<Card>();
- Card enemyCard = enemyTrs.GetComponent<Card>();
-
- armyCard.SetFront(true);
- enemyCard.SetFront(true);
-
- int armyTen = armyCard.Source.CompairePassBuff(armyCard.Tenacity);
- int enemyTen = enemyCard.Source.CompairePassBuff(enemyCard.Tenacity);
- print("我方韧性 : " + armyTen + ", 敌方韧性 : " + enemyTen);
-
-
- if (armyCard.Type == enemyCard.Type) {
- if (armyCard.Type == CardType.CARD_TYPE_ATTACK) {
-
-
- if (armyTen > enemyTen) {
- executeArray.Add(armyCard);
- enemyTrs.localScale = scaleSize;
- } else if (armyTen < enemyTen) {
- executeArray.Add(enemyCard);
- armyTrs.localScale = scaleSize;
- } else {
-
- armyTrs.localScale = scaleSize;
- enemyTrs.localScale = scaleSize;
- }
- } else if (armyCard.Type == CardType.CARD_TYPE_DEFANCE) {
-
- if (armyTen > enemyTen) {
- executeArray.Add(armyCard);
- enemyTrs.localScale = scaleSize;
- } else if (armyTen < enemyTen) {
- executeArray.Add(enemyCard);
- armyTrs.localScale = scaleSize;
- } else {
-
- executeArray.Add(armyCard);
- executeArray.Add(enemyCard);
- }
- } else {
-
- executeArray.Add(armyCard);
- executeArray.Add(enemyCard);
- }
- } else {
-
- if (armyTen > enemyTen) {
- executeArray.Add(armyCard);
- enemyTrs.localScale = scaleSize;
- } else {
- executeArray.Add(enemyCard);
- armyTrs.localScale = scaleSize;
- }
- }
- }
- } else {
- break;
- }
- index++;
- }
-
- print("最终执行的卡片有 .. " + executeArray.Count + " 张");
- foreach(Card card in executeArray) {
-
- card.OnExecute();
- }
- }
-
- private void EraseCard(Dictionary<string, object> info) {
- Transform cardTrs = (Transform)info["card"];
- cardTrs.SetParent(cachePlace);
- cardTrs.localScale = Vector3.zero;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
- }
|