예제 #1
0
 public void DuelRequestAccepted(Agent requesterAgent, Agent requesteeAgent)
 {
     MissionMultiplayerDuel.DuelInfo duel = this._duelRequests.FirstOrDefault <MissionMultiplayerDuel.DuelInfo>((Func <MissionMultiplayerDuel.DuelInfo, bool>)(dr => dr.RequesterAgent == requesterAgent && dr.RequesteeAgent == requesteeAgent));
     if (duel == null)
     {
         return;
     }
     this.PrepareDuel(duel);
 }
예제 #2
0
 private void EndDuel(MissionMultiplayerDuel.DuelInfo duel)
 {
     this._activeDuels.Remove(duel);
     if (!duel.Started)
     {
         return;
     }
     duel.OnDuelEnded();
     this.DeactivateDuelTeam(duel.DuelTeam);
 }
예제 #3
0
 private void StartDuel(MissionMultiplayerDuel.DuelInfo duel)
 {
     duel.OnDuelStarted();
     duel.RequesterAgent.Health = duel.RequesterAgent.HealthLimit;
     duel.RequesteeAgent.Health = duel.RequesteeAgent.HealthLimit;
     duel.RequesterAgent.RestoreShieldHitPoints();
     duel.RequesteeAgent.RestoreShieldHitPoints();
     (duel.RequesterAgent.MissionRepresentative as DuelMissionRepresentative).OnDuelStarted(duel.RequesterAgent, duel.RequesteeAgent);
     (duel.RequesteeAgent.MissionRepresentative as DuelMissionRepresentative).OnDuelStarted(duel.RequesterAgent, duel.RequesteeAgent);
 }
예제 #4
0
 private void CheckDuelRequestTimeouts()
 {
     for (int index = this._duelRequests.Count - 1; index >= 0; --index)
     {
         MissionMultiplayerDuel.DuelInfo duelRequest = this._duelRequests[index];
         if (duelRequest.Timer.IsPast)
         {
             this._duelRequests.Remove(duelRequest);
         }
     }
 }
예제 #5
0
 private void CheckDuelPreparations()
 {
     for (int index = this._activeDuels.Count - 1; index >= 0; --index)
     {
         MissionMultiplayerDuel.DuelInfo activeDuel = this._activeDuels[index];
         if (!activeDuel.Started && activeDuel.Timer.IsPast)
         {
             this.StartDuel(activeDuel);
         }
     }
 }
예제 #6
0
        private void PrepareDuel(MissionMultiplayerDuel.DuelInfo duel)
        {
            this._duelRequests.Remove(duel);
            if (this.IsHavingDuel(duel.RequesteeAgent) || this.IsHavingDuel(duel.RequesterAgent))
            {
                return;
            }
            this._activeDuels.Add(duel);
            Team duelTeam = this.ActivateAndGetDuelTeam();

            duel.OnDuelPreparation(duelTeam);
            (duel.RequesterAgent.MissionRepresentative as DuelMissionRepresentative).OnDuelPreparation(duel.RequesterAgent, duel.RequesteeAgent);
            (duel.RequesteeAgent.MissionRepresentative as DuelMissionRepresentative).OnDuelPreparation(duel.RequesterAgent, duel.RequesteeAgent);
        }
예제 #7
0
 public override void OnAgentRemoved(
     Agent affectedAgent,
     Agent affectorAgent,
     AgentState agentState,
     KillingBlow blow)
 {
     if (!affectedAgent.IsHuman)
     {
         return;
     }
     MissionMultiplayerDuel.DuelInfo duel = this._activeDuels.Where <MissionMultiplayerDuel.DuelInfo>((Func <MissionMultiplayerDuel.DuelInfo, bool>)(d => d.RequesteeAgent == affectedAgent || d.RequesterAgent == affectedAgent || d.RequesteeAgent == affectorAgent || d.RequesterAgent == affectorAgent)).FirstOrDefault <MissionMultiplayerDuel.DuelInfo>();
     if (duel == null)
     {
         return;
     }
     this.EndDuel(duel);
 }