Esempio n. 1
0
 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);
    }
Esempio n. 4
0
    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);
        }
    }
Esempio n. 5
0
    IEnumerator WaitRespawnUnit(PlayerMainControl control)
    {
        yield return(m_CacheRespawnTime);

        RespawnAction(control);
    }
Esempio n. 6
0
 void RespawnAction(PlayerMainControl control)
 {
     control.Respawn();
 }
 void OnDeathUnit(PlayerMainControl control, DeathArgs args)
 {
 }
 public PlayerKillArgs(PlayerMainControl killer, PlayerMainControl victim)
 {
     m_Killer = killer;
     m_Victim = victim;
 }