Ejemplo n.º 1
0
        public override void OnMissionModeChange(MissionMode oldMissionMode, bool atStart)
        {
            base.OnMissionModeChange(oldMissionMode, atStart);

            if (Utils.IsStartOfBattle(oldMissionMode, Mission.Mode))
            {
                BattleStartEvent?.Invoke();
                IsActivated = true;
            }
            else if (Utils.IsStartofSiege(oldMissionMode, Mission.Mode))
            {
                PlayerAgent = Agent.Main;
                IsActivated = true;
                SiegeBattleStartEvent?.Invoke();
            }
            else if (Utils.IsStartofHideoutBattle(oldMissionMode, Mission.Mode))
            {
                PlayerAgent = Agent.Main;
                IsActivated = true;
                HideoutBattleStartEvent?.Invoke();
            }
            else if (Utils.IsEndOfHideoutConversation(oldMissionMode, Mission.Mode))
            {
                IsActivated = true;
            }
            else
            {
                IsActivated = false;
            }
        }
Ejemplo n.º 2
0
    public void StartTest()
    {
        var enemyUnit = new Unit(0);

        enemyUnit.SetSpecStats();
        var enemyTeam = new BattleTeam(enemyUnit);

        enemyTeam.Units[0].Controlled = false;

        var party        = MainBehaviour.Player.Parties.First();
        var myClientUnit = party.GetUnits().First();
        var myUnit       = new Unit(myClientUnit.SpecId);

        myUnit.SetSpecStats();
        var myTeam = new BattleTeam(myUnit);

        myTeam.Units[0].Controlled = true;

        Battle = new TurnBattle(Guid.NewGuid(), myTeam, enemyTeam);
        var ev = new BattleStartEvent()
        {
            Attacker = Battle.Attacker,
            BattleID = Battle.ID.ToString(),
            Defender = Battle.Defender
        };
        //EventEmitter.CallEventFromBytes(MainBehaviour.Player, Serialization.FromEvent(ev));

        var roundActions = Battle.AutoRun.PlayOneTurn();

        foreach (var action in roundActions)
        {
            //EventEmitter.CallEventFromBytes(MainBehaviour.Player, Serialization.FromEvent(new BattleActionEvent(Battle.ID.ToString(), action)));
        }
    }
Ejemplo n.º 3
0
        public void BattleStart(BattleStartEvent ev)
        {
            var pl   = MainBehaviour.Player;
            var w    = _game.GetWorld();
            var def  = w.GetOrCreateClientPlayer(ev.Defender.OwnerID);
            var atk  = w.GetOrCreateClientPlayer(ev.Attacker.OwnerID);
            var tile = _game.GetWorld().GetTile(ev.X, ev.Y) as ClientTile;

            if (def != null)
            {
                var partyID = ev.Defender.Units[0].UnitReference.PartyId;
                var party   = def.Parties[partyID];
                party.Tile     = tile;
                party.BattleID = ev.BattleID;
                //def.BattlesStarts[ev.BattleID] = ev;
            }

            if (atk != null)
            {
                var partyID = ev.Attacker.Units[0].UnitReference.PartyId;
                var party   = atk.Parties[partyID];
                party.Tile     = tile;
                party.BattleID = ev.BattleID;
                //atk.BattlesStarts[ev.BattleID] = ev;
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 战斗开始
        /// </summary>
        public void BattleStart()
        {
            battleFsm.SetEnable(true);

            var battleStartEvent = new BattleStartEvent();

            battleStartEvent.type = LogicConst.BattleType;

            var evData = new GameEventData(GameEventType.BattleEvent, battleStartEvent);

            Messenger.Broadcast <GameEventData>(EventNames.EvBattleStart, evData);
        }
Ejemplo n.º 5
0
    public void StartBattle(BattleStartEvent ev)
    {
        Actions.Clear();
        this.gameObject.SetActive(true);
        UIManager.PartyUI.Hide();
        StandardCamera = Camera.main;

        StandardCamera.enabled = false;

        Battle = new ClientTurnBattle(ev);
        Battle.AddToScene(Team1, Team2);
        NextAction = DateTime.MaxValue;
        Log.Debug("[Battle] Started Battle");
        WaitForAction();
    }
Ejemplo n.º 6
0
        public void OnBattleStart(BattleStartEvent ev)
        {
            Console.WriteLine($"Received {ev.Attacker} vs {ev.Defender}");

            // register battle
            var battle = new TurnBattle(Guid.Parse(ev.BattleID), ev.Attacker, ev.Defender);

            battle.StartEvent = ev;
            _battles[battle.ID.ToString()] = battle;
            foreach (var onlinePlayer in GetOnlinePlayers(battle))
            {
                onlinePlayer.Send(ev);
            }

            // run battle
            var result      = battle.AutoRun.RunAllRounds();
            var resultEvent = new BattleResultEvent(battle.ID.ToString(), result);

            // handle battle finish
            foreach (var pl in GetAllPlayers(battle))
            {
                if (pl.Online())
                {
                    pl.Send(resultEvent);
                }
                pl.Battles.Add(resultEvent);
                var battlingParty = pl.Parties.Where(p => p != null && p.BattleID == resultEvent.BattleHeader.BattleID).FirstOrDefault();
                if (battlingParty != null)
                {
                    battlingParty.BattleID = null;
                }
                else
                {
                    Log.Error($"Party {battlingParty} was not part of battle {battle}");
                }
            }
        }
Ejemplo n.º 7
0
 public ClientTurnBattle(BattleStartEvent ev) : base(Guid.Parse(ev.BattleID), ev.Attacker, ev.Defender)
 {
 }
Ejemplo n.º 8
0
 /// <summary>
 /// 战斗开始
 /// </summary>
 public void BattleStart()
 {
     BattleStartEvent?.Invoke();
 }