Ejemplo n.º 1
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);
            }
        }
    }
Ejemplo n.º 2
0
    public void Init(List <TankKillData> datas, int winteam)
    {
        grid   = _transform.Find("Gird");
        record = _transform.Find("Record");

        textRed  = _transform.Find("Red");
        textBlue = _transform.Find("Blue");
        textNone = _transform.Find("None");

        if (winteam == (int)ETeam.Red)
        {
            textRed.gameObject.SetActive(true);
        }
        else if (winteam == (int)ETeam.Blue)
        {
            textBlue.gameObject.SetActive(true);
        }
        else
        {
            textNone.gameObject.SetActive(true);
        }

        for (int i = 0; i < datas.Count; i++)
        {
            TankKillData data = datas[i];

            Transform child = (GameObject.Instantiate(record.gameObject) as GameObject).transform;
            child.SetParent(grid);
            child.localScale    = Vector3.one;
            child.localPosition = Vector3.zero;
            child.gameObject.SetActive(true);

            //真随机
            System.Random r = new System.Random(System.Guid.NewGuid().GetHashCode());

            Image img = child.GetComponent <Image>();
            img.color = new UnityEngine.Color((float)r.NextDouble(), (float)r.NextDouble(), (float)r.NextDouble());

            child.Find("Acc").GetComponent <Text>().text   = data.account.ToString();
            child.Find("Kill").GetComponent <Text>().text  = data.kill.ToString();
            child.Find("Death").GetComponent <Text>().text = data.deathCount.ToString();
            child.Find("Hurt").GetComponent <Text>().text  = data.hurt
                                                             .ToString();
            ETeam team = (ETeam)data.team;
            child.Find("Team").GetComponent <Text>().text = team.ToString();
        }

        btnReturn = _transform.Find("BtnReturn").GetComponent <Button>();
        btnReturn.onClick.AddListener(OnReturn);
    }
Ejemplo n.º 3
0
    void SurvivalTankDeath(AccountData acc, AccountData enemy, Battle battle)
    {
        enemy.order = battle.GetALLTanks().Count;

        battle.RemoveTank(enemy.account);
        //发给单个人的战斗数据
        NotifyBattleEnd notifyEnd = new NotifyBattleEnd();

        TankKillData kill = new TankKillData();

        kill.account    = enemy.account;
        kill.kill       = enemy.killCount;
        kill.deathCount = enemy.deathCount;
        kill.hurt       = enemy.hurt;
        kill.order      = enemy.order;
        notifyEnd.data  = kill;

        NetworkManager.Send <NotifyBattleEnd>(enemy.token, (int)MsgID.NotifyBattleEnd, notifyEnd);

        enemy.killCount  = 0;
        enemy.deathCount = 0;
        enemy.hurt       = 0;
        enemy.order      = -1;

        //游戏结束
        if (battle.GetALLTanks().Count == 1)
        {
            NotifyBattleEnd notifyEnd2 = new NotifyBattleEnd();


            TankKillData kill2 = new TankKillData();
            kill2.account    = acc.account;
            kill2.kill       = acc.killCount;
            kill2.deathCount = acc.deathCount;
            kill2.hurt       = acc.hurt;
            kill2.order      = 1;
            notifyEnd2.data  = kill2;

            NetworkManager.Send <NotifyBattleEnd>(acc.token, (int)MsgID.NotifyBattleEnd, notifyEnd2);

            enemy.killCount  = 0;
            enemy.deathCount = 0;
            enemy.hurt       = 0;
            enemy.order      = -1;
        }
    }
Ejemplo n.º 4
0
    public void Init(TankKillData data)
    {
        textOne = _transform.Find("One");
        textTwo = _transform.Find("Two");
        if (data.order == 1)
        {
            textOne.gameObject.SetActive(true);
            textTwo.gameObject.SetActive(false);
        }
        btnExit = _transform.Find("BtnExit").GetComponent <Button>();
        btnExit.onClick.AddListener(OnBtnExit);

        textKill      = _transform.Find("TextKill").GetComponent <Text>();
        textKill.text = data.kill.ToString();

        textDeath      = _transform.Find("TextDeath").GetComponent <Text>();
        textDeath.text = data.deathCount.ToString();

        textHurt      = _transform.Find("TextHurt").GetComponent <Text>();
        textHurt.text = data.hurt.ToString();

        textOrder      = _transform.Find("TextOrder").GetComponent <Text>();
        textOrder.text = data.order.ToString();
    }
Ejemplo n.º 5
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);
        }
    }