void OnDeathUnit(PlayerMainControl unit, DeathArgs args) { if (unit.Player.IsMine) { StartCoroutine(WaitRespawnPlayer(unit)); } else if (unit.Player.IsServer) { StartCoroutine(WaitRespawnUnit(unit)); } }
void OnDeathUnit(PlayerMainControl unit, DeathArgs args) { if (PlayerDeathEvent != null) { PlayerDeathEvent(unit, args); } if (PlayerKillEvent != null) { var killer = GetPlayerControl(args.Killer); PlayerKillEvent(new PlayerKillArgs(killer, unit)); } }
void ExternInit(PlayerMainControl control) { control.DeathUnit += OnDeathUnit; control.SpawnPosition += m_SpawnControl.GetRandomRespawnPoint; var unit = control.Unit; var player = control.Player; m_Mode.Add(player); //TODO: костыльки //Передаем изменение статистики по убийствам var unitControl = player.Controller as UnitNetworkController; if (unitControl != null) { if (player.IsServer) { unitControl.GetKills += (arg) => { return(m_Mode.CountKills(GetPlayer(arg))); } } ; else { unitControl.SetKills += (arg, value) => { m_Mode.SetKills(GetPlayer(arg), value); } }; } if (player.IsMine) { m_InvisibleControl.SetMainTarget(unit.GO); var playerControl = player.Controller as PlayerController; if (playerControl != null) { //Подбор цели для авто-атаки playerControl.ClosestAttackTarget += FindClosestTarget; } } else { m_InvisibleControl.AddTarget(unit.GO); } m_GrassControl.AddTarget(unit.TF, player.IsMine); } void ExternRemove(PlayerMainControl control) { var player = control.Player; m_Mode.Remove(player); }
IEnumerator WaitRespawnPlayer(PlayerMainControl control) { ActiveControlUI(false); float timer = m_TimeToRespawn - 1f; yield return(m_CacheOneSecond); m_RespawnUI.IsActive = true; while (timer > 0f) { m_RespawnUI.SetTimer(((int)timer).ToString()); yield return(m_CacheOneSecond); timer -= 1f; } m_RespawnUI.IsActive = false; RespawnAction(control); if (control.Player.IsConnected) { ActiveControlUI(true); } }
IEnumerator WaitRespawnUnit(PlayerMainControl control) { yield return(m_CacheRespawnTime); RespawnAction(control); }
void RespawnAction(PlayerMainControl control) { control.Respawn(); }
void OnDeathUnit(PlayerMainControl control, DeathArgs args) { }
public PlayerKillArgs(PlayerMainControl killer, PlayerMainControl victim) { m_Killer = killer; m_Victim = victim; }