Пример #1
0
        public void StartGame()         //основа
        {
            if (!model.workingGame && model.workingServer)
            {
                model.workingGame = true;

                ControllersS.cMap.createdZone();

                for (int i = 0; i < model.ListUsers.Count; i++)
                {
                    if (model.ListUsers[i] != null)
                    {
                        GetZoneStartInfo nextZoneInfo = new GetZoneStartInfo();
                        nextZoneInfo.nextZone = model.Map.NextZone;
                        GetPrevZoneInfo prevZoneInfo = new GetPrevZoneInfo();
                        prevZoneInfo.prevZone = model.Map.PrevZone;

                        CTransfers.Writing(nextZoneInfo, model.ListNs[i]);                         // Инфа  о стартовой зоне
                        CTransfers.Writing(prevZoneInfo, model.ListNs[i]);
                    }
                }

                ControllersS.cPlay.timerZone          = new System.Timers.Timer();
                ControllersS.cPlay.timerZone.Interval = 1000;
                ControllersS.cPlay.timerZone.Elapsed += (x, y) => { ControllersS.cPlay.timerZone_Tick(); };
                ControllersS.cPlay.timerZone.Start();

                ControllersS.cPlay.timerUsersInZone          = new System.Timers.Timer();
                ControllersS.cPlay.timerUsersInZone.Interval = 1000;
                ControllersS.cPlay.timerUsersInZone.Elapsed += (x, y) => { ControllersS.cPlay.timerUsersInZone_Tick(); };
                ControllersS.cPlay.timerUsersInZone.Start();
                StartGameEvent("Игра идёт");
            }
        }
Пример #2
0
        public void Producer()
        {
            while (model.serverStart)
            {
                try
                {
                    string tmpString = CTransfers.Reading(model.NStream);

                    SecureQueue.Enqueue(JsonConvert.DeserializeObject <ProcessingClient>(tmpString, CTransfers.jss));

                    manualResetEvent.Set();
                }
                catch { Disconnect(); }
            }
        }
Пример #3
0
        public void ItemDroping()
        {
            Point mousLoc = new Point(model.MouseCoord.X - 300 + model.ThisUser.userLocation.X, model.MouseCoord.Y - 300 + model.ThisUser.userLocation.Y);

            for (int i = 1; i < model.ThisUser.Items.Length; i++)
            {
                if (i == model.ThisUser.thisItem && model.ThisUser.Items[model.ThisUser.thisItem].Name != null)
                {
                    ItemDroping itemDrop  = new ItemDroping();
                    List <Item> listItems = new List <Item>();
                    listItems.Add(model.ThisUser.Items[i]);
                    itemDrop.items        = listItems;
                    itemDrop.num          = model.number;
                    itemDrop.itemLocation = model.ThisUser.userLocation;

                    CTransfers.Writing(itemDrop, model.NStream);
                }
            }
        }
Пример #4
0
        public void StopServer()        //основа
        {
            if (model.workingServer)
            {
                ControllersS.cInfoUsers.PlayerSave(model.ListGInfo);
                model.number = -1;
                PublicHost.Stop();
                PublicHost2.Stop();
                PublicHost3.Stop();
                if (model.workingGame)
                {
                    ControllersS.cPlay.timerZone.Stop();
                    ControllersS.cPlay.timerUsersInZone.Stop();
                }
                foreach (NetworkStream ns in model.ListNs)
                {
                    if (ns != null)
                    {
                        Disconnect d = new Disconnect();
                        try
                        {
                            CTransfers.Writing(d, ns);
                        }
                        catch (Exception err) { ErrorEvent(err.Message + " |Ошибка в ControllerServer, методе StopServer"); }
                    }
                }
                foreach (System.Timers.Timer t in model.ListTimers)
                {
                    t.Stop();
                }

                model.workingServer = false;
                model.workingThread = false;
                model.Remove();
                model.workingGame = false;
                ControllersS.cPlay.manualResetEvent.Set();
                Thread.Sleep(100);
                StopServerEvent("Сервер отключен");
            }
        }
Пример #5
0
        public void Mouse_Click()
        {
            Point mousLoc = new Point(model.MouseCoord.X - 300 + model.ThisUser.userLocation.X, model.MouseCoord.Y - 300 + model.ThisUser.userLocation.Y);

            foreach (Item item in model.Map.ListItems)
            {
                if ((mousLoc.X >= item.Location.X - 15 && mousLoc.X <= item.Location.X + 15) && (mousLoc.Y >= item.Location.Y - 15 && mousLoc.Y <= item.Location.Y + 15))
                {
                    if (Math.Abs(model.ThisUser.userLocation.X - item.Location.X) < 50 && Math.Abs(model.ThisUser.userLocation.Y - item.Location.Y) < 50)
                    {
                        ItemTaken itemTaken = new ItemTaken();
                        itemTaken.item = item;
                        itemTaken.num  = model.number;

                        CTransfers.Writing(itemTaken, model.NStream);
                        break;
                    }
                    else
                    {
                        // Сообщение о том, что игрок слишком далеко от желаемого предмета
                    }
                }
            }
        }