public void writingCountGames() //игра { for (int i = 0; i < model.ListUsers.Count; i++) { if (model.ListUsers[i] != null) { GetCountGamesInfo gamesInfo = new GetCountGamesInfo(); gamesInfo.count = model.CountGamers; CTransfers.Writing(gamesInfo, model.ListNs[i]); } } if (model.CountGamers == 1 && model.workingGame) { for (int i = 0; i < model.ListUsers.Count; i++) { if (model.ListUsers[i] != null) { foreach (GeneralInfo g in model.ListGInfo) { if (g.Name == model.ListUsers[i].Name) { g.Wins += 1; } } CTransfers.Writing(new GetCountWinsInfo(), model.ListNs[i]); break; } } ControllersS.cServer.StopServer(); } }
public override void Process(ModelServer Model) { foreach (Item item in items) { for (int i = 1; i <= Model.ListUsers[num].Items.Length; i++) { if (Model.ListUsers[num].Items[i].IdItem == item.IdItem) { Item voidItem = new Item(); Model.ListUsers[num].Items[i] = voidItem; //Удаляем вещь из инвентаря игрока voidItem.IdItem = -1; item.Location = itemLocation; lock (Model.Map.ListItems) { Model.Map.ListItems.Add(item); //Добавляем вещь на карту } break; } } itemLocation.X += 25; } foreach (NetworkStream nStream in Model.ListNs) //Даём актуальную инфу всем игрокам об удалённом с карты предмете { GetInfoItems items = new GetInfoItems(); items.listItems = Model.Map.ListItems; CTransfers.Writing(items, nStream); } }
public override void Process(ModelServer Model) { for (int i = 1; i < Model.ListUsers[num].Items.Length; i++) { if (Model.ListUsers[num].Items[i].Name == null) { Model.ListUsers[num].Items[i] = item; //Кладём вещь игроку lock (Model.Map.ListItems) { for (int j = 0; j < Model.Map.ListItems.Count; j++) { if (Model.Map.ListItems[j].IdItem == item.IdItem) { Model.Map.ListItems.RemoveAt(j); //Удаляем вещь с карты } } } foreach (NetworkStream nStream in Model.ListNs) //Даём актуальную инфу всем игрокам об удалённом с карты предмете { GetInfoItems items = new GetInfoItems(); items.listItems = Model.Map.ListItems; CTransfers.Writing(items, nStream); } break; } } }
public void InfoUsers(object tc) //игра { TcpClient tcp = (TcpClient)tc; Thread.Sleep(200); NetworkStream nStream = tcp.GetStream(); bool PrivateWorkingThread = true; while (model.workingThread && PrivateWorkingThread) { try { AngelToZone angel = new AngelToZone(); angel.listUserInfo = model.ListUsers; GetBulletsInfo buletsInfo = new GetBulletsInfo(); lock (model.ListBullet) buletsInfo.listBulets = model.ListBullet.ToList <BulletInfo>(); GetGrenadesInfo grenadesInfo = new GetGrenadesInfo(); lock (model.ListGrenade) grenadesInfo.grenadesInfo = model.ListGrenade.ToList <GrenadeInfo>(); CTransfers.Writing(angel, nStream); CTransfers.Writing(buletsInfo, nStream); CTransfers.Writing(grenadesInfo, nStream); Thread.Sleep(10); } catch (System.IO.IOException err) { //ErrorEvent(err.Message + " |Ошибка в ControllerServer, методе InfoUsers"); PrivateWorkingThread = false; } } }
public bool SendingInformationAboutObjects(int num) //игра { try { GetNumber gNumber = new GetNumber(); gNumber.num = model.number; GetBushesInfo bushesInfo = new GetBushesInfo(); bushesInfo.listBush = model.Map.ListBush; GetMapBordersInfo bordersInfo = new GetMapBordersInfo(); bordersInfo.rectangle = model.Map.MapBorders; GetBoxesInfo boxesInfo = new GetBoxesInfo(); boxesInfo.listBox = model.Map.ListBox; GetInfoItems itemsInfo = new GetInfoItems(); itemsInfo.listItems = model.Map.ListItems; GetTreesInfo treesInfo = new GetTreesInfo(); treesInfo.listTree = model.Map.ListTrees; CTransfers.Writing(gNumber, model.ListNs[num]); Thread.Sleep(100); CTransfers.Writing(bushesInfo, model.ListNs[num]); // Отправка инфы о кустах Thread.Sleep(100); CTransfers.Writing(bordersInfo, model.ListNs[num]); //Инфа о границах карты Thread.Sleep(100); CTransfers.Writing(boxesInfo, model.ListNs[num]); // Отправка инфы о коробках Thread.Sleep(100); CTransfers.Writing(treesInfo, model.ListNs[num]); // Отправка инфы о деревьях Thread.Sleep(100); CTransfers.Writing(itemsInfo, model.ListNs[num]); // Отправка инфы о вещах return(true); } catch (Exception) { return(false); } }
public void clientStart_Test1() { TcpClient client = new TcpClient(); client.Connect("127.0.0.1", 1337); NetworkStream streamClient = client.GetStream(); CTransfers.Writing("Test_1_2_3", streamClient); }
public override void Process(ModelServer Model) { this.Model = Model; byte[] ping = new byte[1]; ping[0] = 2; PingInfoClient pic = new PingInfoClient(); CTransfers.Writing(pic, Model.ListNs[this.num]); }
public void Producer(object obj) //игра { int num = (int)obj; System.Timers.Timer timerMove = new System.Timers.Timer(); model.ListTimers.Add(timerMove); try { timerMove.Interval = 15; timerMove.Elapsed += (x, y) => { timerMove_Tick(model.ListMove[num].moveUp, model.ListMove[num].moveDown, model.ListMove[num].moveLeft, model.ListMove[num].moveRight, model.ListMove[num].shift, num); }; timerMove.Start(); try { while (model.workingServer && model.workingThread) { string tmpString = CTransfers.Reading(model.ListNs[num]); try { SecureQueue.Enqueue(JsonConvert.DeserializeObject <ProcessingServer>(tmpString, CTransfers.jss)); } catch { model.ListNs[num].Read(new Byte[2], 0, 2); } manualResetEvent.Set(); } timerMove.Stop(); } catch (System.IO.IOException) { //ErrorEvent("Отключение игрока в Producer"); if (model.ListUsers.Count != 0 && model.ListUsers[num] != null) { model.ListUsers[num].flagShoting = false; lock (model.ListUsers) { model.ListUsers.RemoveAt(num); model.ListUsers.Insert(num, null); } } model.CountGamers -= 1; writingCountGames(); } } catch { //ErrorEvent("Ложный вызов продюсера"); timerMove.Stop(); } }
public void timerUsersInZone_Tick() //игра { for (int i = 0; i < model.ListUsers.Count; i++) { if (model.ListUsers[i] != null) { if (Math.Sqrt(Math.Pow(model.ListUsers[i].userLocation.X - model.Map.NextZone.ZoneCenterCoordinates.X, 2) + Math.Pow(model.ListUsers[i].userLocation.Y - model.Map.NextZone.ZoneCenterCoordinates.Y, 2)) > model.Map.NextZone.ZoneRadius) { model.ListUsers[i].flagZone = true; } else { model.ListUsers[i].flagZone = false; } if (model.Map.PrevZone != null && Math.Sqrt(Math.Pow(model.ListUsers[i].userLocation.X - model.Map.PrevZone.ZoneCenterCoordinates.X, 2) + Math.Pow(model.ListUsers[i].userLocation.Y - model.Map.PrevZone.ZoneCenterCoordinates.Y, 2)) > model.Map.PrevZone.ZoneRadius) { model.ListUsers[i].hp -= model.DamageZone; if (model.ListUsers[i].hp <= 0) { SingalForDroping Signal = new SingalForDroping(); CTransfers.Writing(Signal, model.ListNs[i]); Thread.Sleep(500); //Чтобы вещи успевали дропнуться до удаления игрока PlayerDeath death = new PlayerDeath(); death.Killer = "ZONA"; CTransfers.Writing(death, model.ListNs[i]); foreach (GeneralInfo g in model.ListGInfo) { if (g.Name == model.ListUsers[i].Name) { g.Dies += 1; } } GetKillsInfo kill = new GetKillsInfo(); kill.kill.killer = "ZONA"; kill.kill.dead = model.ListUsers[i].Name; for (int k = 0; k < model.ListUsers.Count; k++) { if (model.ListUsers[k] != null) { CTransfers.Writing(kill, model.ListNs[k]); } } } } } } }
public void serverStart() { TcpListener server = new TcpListener(IPAddress.Any, 1337); server.Start(); TcpClient client = server.AcceptTcpClient(); NetworkStream NS = client.GetStream(); string TmpText = CTransfers.Reading(NS); actual = JsonConvert.DeserializeObject <string>(TmpText); }
public override void Process(ModelClient model) { ItemDroping itemDrop = new ItemDroping(); List <Item> listItems = new List <Item>(); foreach (Item item in model.ListUsers[model.ThisUser.userNumber].Items) { if (item != null) { if (item.Name != null) { listItems.Add(item); } } } itemDrop.items = listItems; itemDrop.itemLocation = model.ListUsers[model.ThisUser.userNumber].userLocation; itemDrop.num = model.ThisUser.userNumber; CTransfers.Writing(itemDrop, model.NStream); }
async public void Bullet(object tmpObject) { bool flagBreak = false; BulletInfo bulletInfo = (BulletInfo)tmpObject; double X = bulletInfo.location.X, Y = bulletInfo.location.Y; X += (15.0 / bulletInfo.speed) * bulletInfo.speedX; bulletInfo.location.X = (int)X; Y += (15.0 / bulletInfo.speed) * bulletInfo.speedY; bulletInfo.location.Y = (int)Y; for (int i = 0; i < bulletInfo.timeLife; i++) { X += bulletInfo.speedX; bulletInfo.location.X = (int)X; Y += bulletInfo.speedY; bulletInfo.location.Y = (int)Y; for (int j = 0; j < model.ListUsers.Count; j++) { if (model.ListUsers[j] != null && Math.Abs(model.ListUsers[j].userLocation.X - X) <= 9 && Math.Abs(model.ListUsers[j].userLocation.Y - Y) <= 9 && model.ListUsers[j].hp > 0) { byte[] popad = new byte[1]; popad[0] = 6; model.ListUsers[j].hp -= bulletInfo.damage; flagBreak = true; if (model.ListUsers[j].hp <= 0) { SingalForDroping Signal = new SingalForDroping(); CTransfers.Writing(Signal, model.ListNs[j]); await Task.Delay(600); foreach (GeneralInfo g in model.ListGInfo) { if (g.Name == model.ListUsers[j].Name) { g.Dies += 1; } if (g.Name == bulletInfo.owner) { g.Kills += 1; } } GetKillsInfo kill = new GetKillsInfo(); kill.kill.killer = bulletInfo.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 == bulletInfo.owner) { model.ListUsers[k].kills += 1; } CTransfers.Writing(kill, model.ListNs[k]); } } PlayerDeath pd = new PlayerDeath(); pd.Killer = bulletInfo.owner; CTransfers.Writing(pd, model.ListNs[j]); } break; } } try { if (model.Map.bordersForBullets[bulletInfo.location.X, bulletInfo.location.Y]) { flagBreak = true; } } catch { break; } if (flagBreak) { break; } Thread.Sleep(20); } lock (model.ListBullet) { model.ListBullet.TryTake(out bulletInfo); } }
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); }
public void MenuStarting(object tl) //старт { TcpClient tc = null; NetworkStream nStream = null; while (model.workingServer) { try { tc = (tl as TcpListener).AcceptTcpClient(); } catch { break; } nStream = tc.GetStream(); byte[] typeCommand = new byte[1]; nStream.Read(typeCommand, 0, 1); switch (typeCommand[0]) { case 10: { string tmpString = CTransfers.Reading(nStream); GeneralInfo newUser = JsonConvert.DeserializeObject <GeneralInfo>(tmpString); GeneralInfo tmpUser = ControllersS.cInfoUsers.PlayerCheck(ControllersS.cInfoUsers.PlayerRead(newUser), newUser); if (!model.workingGame) { if (tmpUser == null) { model.ListGInfo.Add(new GeneralInfo()); model.ListGInfo[model.ListGInfo.Count - 1].Name = newUser.Name; model.ListGInfo[model.ListGInfo.Count - 1].Password = newUser.Password; ControllersS.cInfoUsers.PlayerSave(model.ListGInfo); CTransfers.WritingInMenu(model.ListGInfo[model.ListGInfo.Count - 1], 10, nStream); } else { if (ControllersS.cInfoUsers.CheckData(model.ListGInfo, newUser)) { model.ListGInfo = ControllersS.cInfoUsers.PlayerRead(newUser); CTransfers.WritingInMenu(tmpUser, 10, nStream); } else { CTransfers.WritingInMenu("1", 11, nStream); } //Если такой игрок уже есть , то при правильном пароле выдать всю инфу об игроке } } else { if (tmpUser == null && model.ListGInfo.Count > 0) { model.ListGInfo.Add(new GeneralInfo()); model.ListGInfo[model.ListGInfo.Count - 1].Name = newUser.Name; model.ListGInfo[model.ListGInfo.Count - 1].Password = newUser.Password; ControllersS.cInfoUsers.PlayerSave(model.ListGInfo); CTransfers.WritingInMenu(model.ListGInfo[model.ListGInfo.Count - 1], 12, nStream); } else { if (ControllersS.cInfoUsers.CheckData(model.ListGInfo, newUser)) { model.ListGInfo = ControllersS.cInfoUsers.PlayerRead(newUser); CTransfers.WritingInMenu(tmpUser, 12, nStream); } else { CTransfers.WritingInMenu("1", 12, nStream); } } } break; } } tc.Close(); } }
public void timerZone_Tick() //игра { if (model.Map.NextZone.TimeTocompression > 0) { GetZoneCompression Compress = new GetZoneCompression(); Compress.Count = model.Map.NextZone.TimeTocompression; foreach (NetworkStream n in model.ListNs) { CTransfers.Writing(Compress, n); } model.Map.NextZone.TimeTocompression -= 1; } else { GetZoneCompression Compress = new GetZoneCompression(); Compress.Count = model.Map.NextZone.TimeTocompression; foreach (NetworkStream n in model.ListNs) { CTransfers.Writing(Compress, n); } timerZone.Stop(); double x = model.Map.PrevZone.ZoneCenterCoordinates.X, y = model.Map.PrevZone.ZoneCenterCoordinates.Y, radius = model.Map.PrevZone.ZoneRadius;; double koef = Math.Sqrt(Math.Pow(model.Map.PrevZone.ZoneCenterCoordinates.X - model.Map.NextZone.ZoneCenterCoordinates.X, 2) + Math.Pow(model.Map.PrevZone.ZoneCenterCoordinates.Y - model.Map.NextZone.ZoneCenterCoordinates.Y, 2)) / 750; double k = Math.Sqrt(Math.Pow(model.Map.PrevZone.ZoneCenterCoordinates.X - model.Map.NextZone.ZoneCenterCoordinates.X, 2) + Math.Pow(model.Map.PrevZone.ZoneCenterCoordinates.Y - model.Map.NextZone.ZoneCenterCoordinates.Y, 2)) / koef; double speedX = (model.Map.PrevZone.ZoneCenterCoordinates.X - model.Map.NextZone.ZoneCenterCoordinates.X) / k; double speedY = (model.Map.PrevZone.ZoneCenterCoordinates.Y - model.Map.NextZone.ZoneCenterCoordinates.Y) / k; double speedRadius = (double)(model.Map.PrevZone.ZoneRadius - model.Map.NextZone.ZoneRadius) / 750; while (model.Map.PrevZone.ZoneRadius > model.Map.NextZone.ZoneRadius && model.workingGame) { x -= speedX; model.Map.PrevZone.ZoneCenterCoordinateX = (int)x; y -= speedY; model.Map.PrevZone.ZoneCenterCoordinateY = (int)y; radius -= speedRadius; model.Map.PrevZone.ZoneRadius = (int)radius; for (int i = 0; i < model.ListUsers.Count; i++) { if (model.ListUsers[i] != null && model.ListNs[i].CanWrite) { GetPrevZoneInfo prevZoneInfo = new GetPrevZoneInfo(); prevZoneInfo.prevZone = model.Map.PrevZone; CTransfers.Writing(prevZoneInfo, model.ListNs[i]); } } Thread.Sleep(40); } if (model.workingGame) { model.Map.PrevZone = model.Map.NextZone; model.Map.NextZone = new Zone(); model.Map.NextZone.ZoneRadius = (int)model.Map.PrevZone.ZoneRadius / 2; model.Map.NextZone.NewCenterZone(model.Map.MapBorders, model.Map.PrevZone.ZoneCenterCoordinates, model.Map.PrevZone.ZoneRadius); //не страдает ли тут MVC? for (int i = 0; i < model.ListUsers.Count; i++) { if (model.ListUsers[i] != null) { GetZoneStartInfo nextZoneInfo = new GetZoneStartInfo(); nextZoneInfo.nextZone = model.Map.NextZone; CTransfers.Writing(nextZoneInfo, model.ListNs[i]); } } model.Map.NextZone.TimeTocompression = 60; model.DamageZone += 2; timerZone.Start(); } } }