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; } }
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))); } }
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; } }
/// <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); }
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(); }
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}"); } } }
public ClientTurnBattle(BattleStartEvent ev) : base(Guid.Parse(ev.BattleID), ev.Attacker, ev.Defender) { }
/// <summary> /// 战斗开始 /// </summary> public void BattleStart() { BattleStartEvent?.Invoke(); }