private MapEventModel getRandomEvent(int x, int y)
        {
            var           rewardType = getRewardType();
            MapEventModel mem        = new MapEventModel()
            {
                eventData   = getRandomEventData(),
                rewardType  = rewardType,
                rewardValue = getRewardValue(rewardType),
                x           = x,
                y           = y
            };

            return(mem);
        }
        public void removeEvent(MapEventModel e)
        {
            List <MapEventModel> toRemove = new List <MapEventModel>();
            List <Coordinate>    toCheck  = new List <Coordinate>();

            foreach (MapEventModel mem in events)
            {
                if (mem.uniq == e.uniq)
                {
                    toRemove.Add(mem);
                    toCheck.Add(new Coordinate()
                    {
                        x = mem.x, y = mem.y
                    });
                }
            }

            while (toCheck.Count != 0)
            {
                Coordinate current = toCheck[0];
                toCheck.RemoveAt(0);

                foreach (MapEventModel mem in events)
                {
                    if (toRemove.Contains(mem))
                    {
                        continue;
                    }
                    var xDiff = Math.Abs(mem.x - current.x);
                    var yDiff = Math.Abs(mem.y - current.y);
                    if (xDiff + yDiff == 1) //If it is exactly one space away
                    {
                        toRemove.Add(mem);
                        toCheck.Add(new Coordinate()
                        {
                            x = mem.x, y = mem.y
                        });
                    }
                }
            }

            foreach (MapEventModel mem in toRemove)
            {
                events.Remove(mem);
            }
        }
        public void removeEvent(MapEventModel e)
        {
            List<MapEventModel> toRemove = new List<MapEventModel>();
            List<Coordinate> toCheck = new List<Coordinate>();
            foreach (MapEventModel mem in events)
            {
                if (mem.uniq == e.uniq)
                {
                    toRemove.Add(mem);
                    toCheck.Add(new Coordinate() { x = mem.x, y = mem.y });
                }
            }

            while (toCheck.Count != 0)
            {
                Coordinate current = toCheck[0];
                toCheck.RemoveAt(0);

                foreach (MapEventModel mem in events)
                {
                    if (toRemove.Contains(mem))
                    {
                        continue;
                    }
                    var xDiff = Math.Abs(mem.x - current.x);
                    var yDiff = Math.Abs(mem.y - current.y);
                    if (xDiff + yDiff == 1) //If it is exactly one space away
                    {
                        toRemove.Add(mem);
                        toCheck.Add(new Coordinate() { x = mem.x, y = mem.y });
                    }
                }
            }

            foreach(MapEventModel mem in toRemove)
            {
                events.Remove(mem);
            }
        }
 public void addEvent(MapEventModel e)
 {
     e.eventId = events.Count;
     events.Add(e);
 }
        public static void processEvent(MapEventModel currentEvent, PlayerModel player, ref List <ClientMessage> messageQueue)
        {
            switch (currentEvent.rewardType)
            {
            case MapDataClasses.ClientEvent.RewardType.Objective:
                string returnValue = ObjectiveDirector.completeObjective(player, currentEvent.eventData.objective);
                if (returnValue != string.Empty)
                {
                    messageQueue.Add(new ClientMessage()
                    {
                        message = returnValue,
                        type    = ClientMessage.ClientMessageType.Message
                    });
                    messageQueue.Add(new ClientMessage()
                    {
                        type = ClientMessage.ClientMessageType.RefreshMap
                    });
                }
                break;

            case MapDataClasses.ClientEvent.RewardType.XP:
                messageQueue.Add(new ClientMessage()
                {
                    message = "All characters have gained " + currentEvent.rewardValue.ToString() + " XP!",
                    type    = ClientMessage.ClientMessageType.Message
                });
                messageQueue.Add(new ClientMessage()
                {
                    type = ClientMessage.ClientMessageType.RefreshMap
                });
                List <string> results = PlayerDataManager.givePartyXP(player, currentEvent.rewardValue);
                foreach (string s in results)
                {
                    messageQueue.Add(new ClientMessage()
                    {
                        message = s
                    });
                }
                break;

            case MapDataClasses.ClientEvent.RewardType.CP:
                messageQueue.Add(new ClientMessage()
                {
                    message = "All characters have gained " + currentEvent.rewardValue.ToString() + " CP!",
                    type    = ClientMessage.ClientMessageType.Message
                });
                messageQueue.Add(new ClientMessage()
                {
                    type = ClientMessage.ClientMessageType.RefreshMap
                });
                List <string> cpResults = PlayerDataManager.givePartyCP(player, currentEvent.rewardValue);
                foreach (string s in cpResults)
                {
                    messageQueue.Add(new ClientMessage()
                    {
                        message = s
                    });
                }
                break;

            case MapDataClasses.ClientEvent.RewardType.Gold:
                messageQueue.Add(new ClientMessage()
                {
                    message = "You have found " + currentEvent.rewardValue.ToString() + " GP!",
                    type    = ClientMessage.ClientMessageType.Message
                });
                messageQueue.Add(new ClientMessage()
                {
                    type = ClientMessage.ClientMessageType.RefreshMap
                });
                PlayerDataManager.givePartyGP(player, currentEvent.rewardValue);
                break;
            }
            player.getActiveParty().location.eventCollection.removeEvent(currentEvent);
            player.getActiveParty().location.activeEvent = null;
        }
        private MapEventModel getRandomEvent(int x, int y)
        {
            var rewardType = getRewardType();
            MapEventModel mem = new MapEventModel()
            {
                eventData = getRandomEventData(),
                rewardType = rewardType,
                rewardValue = getRewardValue(rewardType),
                x = x,
                y = y
            };

            return mem;
        }
 public void addEvent(MapEventModel e)
 {
     e.eventId = events.Count;
     events.Add(e);
 }