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); }
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; }
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; }
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; } } } }
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); } }
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); }