コード例 #1
0
    private static bool _LoadDataBase(string tablePath, ref Dictionary <int, GrenadeInfo> Info)
    {
        Info.Clear();
        TextAsset datas = Resources.Load <TextAsset>(tablePath);

        if (datas != null)
        {
            string[] lines = datas.text.Split('\n');
            for (int i = 1; i < lines.Length - 1; i++)
            {
                string[]    grenadeInfo = lines[i].Split(',');
                GrenadeInfo data        = new GrenadeInfo();
                data.SetID(int.Parse(grenadeInfo[0]));
                data.SetType(int.Parse(grenadeInfo[1]));
                data.SetTitle(grenadeInfo[2]);
                data.SetDamage(float.Parse(grenadeInfo[3]));
                data.SetTimer(float.Parse(grenadeInfo[4]));
                data.SetRange(float.Parse(grenadeInfo[5]));
                data.SetMaxCount(int.Parse(grenadeInfo[6]));
                Info.Add(data.ID, data);
            }
            return(true);
        }
        return(false);
    }
コード例 #2
0
ファイル: Grenades.cs プロジェクト: woody8876/HELLDIVERS_Like
 public void SetInfo(GrenadeInfo info, Player player)
 {
     grenadeInfo = info;
     m_bGround   = false;
     this.transform.SetParent(GameObject.Find("Grenades").transform);
     m_vForward = transform.forward;
     m_player   = player;
 }
コード例 #3
0
 public void CopyTo(GrenadeInfo other)
 {
     other.SetID(this.ID);
     other.SetType(this.Type);
     other.SetTitle(this.Title);
     other.SetDamage(this.Damage);
     other.SetTimer(this.Timer);
     other.SetRange(this.Range);
     other.SetMaxCount(this.MaxCount);
     other.Force = this.Force;
 }
コード例 #4
0
        public void ShotUser(object ui)
        {
            userInfo = (UserInfo)ui;
            Object obj = null;

            while (userInfo.flagShoting)
            {
                obj = (userInfo.Items[userInfo.thisItem] as Item).Use(userInfo);
                if (obj != null)
                {
                    if (obj is BulletInfo)
                    {
                        BulletInfo bi     = (BulletInfo)obj;
                        Thread     thread = new Thread(new ParameterizedThreadStart(Bullet));
                        thread.Start(bi);
                        lock (model.ListBullet)
                        {
                            model.ListBullet.Add(bi);
                        }
                        Thread.Sleep(userInfo.Items[userInfo.thisItem].Time);
                    }
                    else if (obj is List <BulletInfo> )
                    {
                        List <BulletInfo> bis = (List <BulletInfo>)obj;
                        foreach (BulletInfo bi in bis)
                        {
                            Thread thread = new Thread(new ParameterizedThreadStart(Bullet));
                            thread.Start(bi);
                            lock (model.ListBullet)
                            {
                                model.ListBullet.Add(bi);
                            }
                        }
                        Thread.Sleep(userInfo.Items[userInfo.thisItem].Time);
                    }
                    else if (obj is GrenadeInfo)
                    {
                        GrenadeInfo gi     = (GrenadeInfo)obj;
                        Thread      thread = new Thread(new ParameterizedThreadStart(Grenade));
                        thread.Start(gi);
                        lock (model.ListGrenade)
                        {
                            model.ListGrenade.Add(gi);
                        }
                        break;
                    }
                }
            }
        }
コード例 #5
0
    public virtual void Init(int grenadeID)
    {
        _grenadeInfo = new GrenadeInfo();
        GameData.Instance.GrenadeInfoTable[grenadeID].CopyTo(_grenadeInfo);
        string m_sGrenade         = "Grenade_" + _grenadeInfo.Title;
        string m_sEffect          = "Effect_" + _grenadeInfo.Title;
        string m_sSound           = "Sound_" + _grenadeInfo.Title;
        string m_sSound_Explosion = "Sound_" + _grenadeInfo.Title + "_Explosion";
        Object grenade;
        Object effect;
        Object sound;
        Object soundExplosion = null;

        if (ResourceManager.m_Instance != null)
        {
            grenade = ResourceManager.m_Instance.LoadData(typeof(GameObject), "GrenadesStorage/Grenades", m_sGrenade, false);
            effect  = ResourceManager.m_Instance.LoadData(typeof(GameObject), "GrenadesStorage/Effects", m_sEffect, false);
            sound   = ResourceManager.m_Instance.LoadData(typeof(GameObject), "GrenadesStorage/Sounds", m_sSound, false);
            if (grenadeID == 4003 || grenadeID == 4004)
            {
                soundExplosion = ResourceManager.m_Instance.LoadData(typeof(GameObject), "GrenadesStorage/Sounds", m_sSound_Explosion, false);
            }
        }
        else
        {
            grenade = Resources.Load("GrenadesStorage/Grenades/" + m_sGrenade);
            effect  = Resources.Load("GrenadesStorage/Effects/" + m_sEffect);
            sound   = Resources.Load("GrenadesStorage/Sounds/" + m_sSound);
            if (grenadeID == 4004 || grenadeID == 4005)
            {
                soundExplosion = Resources.Load("GrenadesStorage/Sounds/" + m_sSound_Explosion);
            }
        }
        if (ObjectPool.m_Instance == null)
        {
            ObjectPool.m_Instance.Init();
        }
        ObjectPool.m_Instance.InitGameObjects(grenade, _grenadeInfo.MaxCount, grenadeID);
        ObjectPool.m_Instance.InitGameObjects(effect, _grenadeInfo.MaxCount, grenadeID * 10 + 1);
        ObjectPool.m_Instance.InitGameObjects(sound, _grenadeInfo.MaxCount, grenadeID * 10 + 2);
        if (soundExplosion != null)
        {
            ObjectPool.m_Instance.InitGameObjects(soundExplosion, _grenadeInfo.MaxCount, grenadeID * 10 + 3);
        }
    }
コード例 #6
0
        public void Grenade(object tmpObject)
        {
            bool        flagfly = false, stop = false;
            GrenadeInfo grena = (GrenadeInfo)tmpObject;
            double      X = grena.location.X, Y = grena.location.Y;

            for (int i = 0; i < 250; i++)
            {
                grena.timeBoo--;
                if (grena.flagFly && !flagfly && !stop)
                {
                    grena.flagFly  = false;
                    grena.location = new Point(userInfo.userLocation.X, userInfo.userLocation.Y);
                    double interval = Math.Sqrt(Math.Pow(userInfo.mouseLocation.X - userInfo.userLocation.X, 2)
                                                + Math.Pow(userInfo.mouseLocation.Y - userInfo.userLocation.Y, 2));
                    double k = interval / 3;
                    grena.speedX = (userInfo.mouseLocation.X - userInfo.userLocation.X) / k;
                    grena.speedY = (userInfo.mouseLocation.Y - userInfo.userLocation.Y) / k;
                    X            = grena.location.X;
                    Y            = grena.location.Y;
                    flagfly      = true;
                }
                if (flagfly)
                {
                    X += grena.speedX;
                    grena.location.X = (int)X;
                    Y += grena.speedY;
                    grena.location.Y = (int)Y;
                    if (grena.timeLife > 0)
                    {
                        grena.timeLife--;
                    }
                    else
                    {
                        flagfly = false;
                        stop    = true;
                    }
                }
                else if (!stop)
                {
                    grena.location = userInfo.userLocation;
                }
                Thread.Sleep(20);
            }
            for (int j = 0; j < model.ListUsers.Count; j++)
            {
                if (model.ListUsers[j] != null && Math.Abs(model.ListUsers[j].userLocation.X - X) <= 59 && Math.Abs(model.ListUsers[j].userLocation.Y - Y) <= 59 && model.ListUsers[j].hp > 0)
                {
                    byte[] popad = new byte[1];
                    popad[0] = 6;
                    model.ListUsers[j].hp -= grena.damage;
                    if (model.ListUsers[j].hp <= 0)
                    {
                        SingalForDroping Signal = new SingalForDroping();
                        CTransfers.Writing(Signal, model.ListNs[j]);
                        Thread.Sleep(500);                        //Чтобы вещи успевали дропнуться до удаления игрока

                        foreach (GeneralInfo g in model.ListGInfo)
                        {
                            if (g.Name == model.ListUsers[j].Name)
                            {
                                g.Dies += 1;
                            }
                            if (g.Name == grena.owner)
                            {
                                g.Kills += 1;
                            }
                        }

                        GetKillsInfo kill = new GetKillsInfo();
                        kill.kill.killer = grena.owner;
                        kill.kill.dead   = model.ListUsers[j].Name;

                        for (int k = 0; k < model.ListUsers.Count; k++)
                        {
                            if (model.ListUsers[k] != null)
                            {
                                if (model.ListUsers[k].Name == grena.owner)
                                {
                                    model.ListUsers[k].kills += 1;
                                }
                                CTransfers.Writing(kill, model.ListNs[k]);
                            }
                        }

                        PlayerDeath pd = new PlayerDeath();
                        pd.Killer = grena.owner;
                        CTransfers.Writing(pd, model.ListNs[j]);
                    }
                }
            }
            Thread.Sleep(700);
            model.ListGrenade.TryTake(out grena);
        }