Beispiel #1
0
    private void OnNotifyArenaEnd(SocketModel model)
    {
        NotifyArenaEnd notify = SerializeUtil.Deserialize <NotifyArenaEnd>(model.message);

        UIManager.instance.Open <ArenaEndWindow>().Init(notify.datas, notify.winteam);
        TankManager.instance.ClearAll();
    }
Beispiel #2
0
    public void Update(float dt)
    {
        List <Arena> arenas = CacheManager.instance.arenas;

        for (int i = 0; i < arenas.Count; i++)
        {
            Arena a = arenas[i];
            a.Update(dt);

            if (a.elapsedTime >= Arena.battleTime)
            {
                //通知战斗结束
                NotifyArenaEnd notify = new NotifyArenaEnd();
                notify.blueKillCount = a.blueKillCount;
                notify.redKillCount  = a.redKillCount;

                if (notify.blueKillCount > notify.redKillCount)
                {
                    notify.winteam = (int)ETeam.Blue;
                }
                else if (notify.blueKillCount < notify.redKillCount)
                {
                    notify.winteam = (int)ETeam.Red;
                }
                else
                {
                    notify.winteam = (int)ETeam.None;
                }

                for (int j = 0; j < a.accounts.Count; j++)
                {
                    AccountData  acc = a.accounts[j];
                    TankKillData d   = new TankKillData();
                    d.account    = acc.account;
                    d.deathCount = acc.deathCount;
                    d.hurt       = acc.hurt;
                    d.kill       = acc.killCount;
                    d.team       = (int)acc.team;
                    notify.datas.Add(d);

                    acc.killCount  = 0;
                    acc.team       = ETeam.None;
                    acc.hurt       = 0;
                    acc.deathCount = 0;
                }
                MsgSender.SendAll <NotifyArenaEnd>(a.accounts, (int)MsgID.NotifyArenaEnd, notify);

                arenas.Remove(a);
            }
        }
    }
Beispiel #3
0
    void ArenaTankDeath(AccountData acc, AccountData enemy, Battle battle)
    {
        Arena arena = battle as Arena;

        if (acc.team == ETeam.Blue)
        {
            arena.blueKillCount++;
        }
        else
        {
            arena.redKillCount++;
        }
        if (arena.blueKillCount >= 5 || arena.redKillCount >= 5)
        {
            //通知战斗结束
            NotifyArenaEnd notify = new NotifyArenaEnd();
            notify.blueKillCount = arena.blueKillCount;
            notify.redKillCount  = arena.redKillCount;

            if (notify.blueKillCount > notify.redKillCount)
            {
                notify.winteam = (int)ETeam.Blue;
            }
            else if (notify.blueKillCount < notify.redKillCount)
            {
                notify.winteam = (int)ETeam.Red;
            }
            else
            {
                notify.winteam = (int)ETeam.None;
            }

            for (int i = 0; i < arena.accounts.Count; i++)
            {
                AccountData  accData = arena.accounts[i];
                TankKillData d       = new TankKillData();
                d.account    = accData.account;
                d.deathCount = accData.deathCount;
                d.hurt       = accData.hurt;
                d.kill       = accData.killCount;
                d.team       = (int)acc.team;

                notify.datas.Add(d);

                accData.killCount  = 0;
                accData.team       = ETeam.None;
                accData.hurt       = 0;
                accData.deathCount = 0;
            }
            MsgSender.SendAll <NotifyArenaEnd>(arena.accounts, (int)MsgID.NotifyArenaEnd, notify);

            arena.timers.Clear();

            CacheManager.instance.arenas.Remove(arena);
        }
        else
        {
            Timer timer = new Timer(3f, () =>
            {
                Tank t = arena.GetTank(enemy.account);
                if (t == null)
                {
                    return;
                }
                t.hp = 100;
                //真随机
                Random r = new Random(System.Guid.NewGuid().GetHashCode());
                t.pos    = SpawnPoint.point[r.Next(0, 5)];

                NotifyReborn notify  = new NotifyReborn();
                notify.tank          = new TankDTO();
                notify.tank.id       = t.uid;
                notify.tank.hp       = t.hp;
                notify.tank.pos      = Tools.ToVec_3(t.pos);
                notify.tank.color    = Tools.UC2TC(t.color);
                notify.tank.team     = (int)t.team;
                notify.tank.nickName = t.nickName;

                MsgSender.SendAll <NotifyReborn>(arena.accounts, (int)MsgID.NotifyReborn, notify);
            });

            arena.timers.Add(timer);
        }
    }