示例#1
0
 //gets all events of a given type
 public static List<RandomEvent> GetEvents(RandomEvent.EventType type)
 {
     return GetEvents().FindAll((delegate(RandomEvent rEvent) {return rEvent.Type ==type; }));
 }
示例#2
0
        //gets x number of random events of a given type
        public static List<RandomEvent> GetEvents(RandomEvent.EventType type, int number, Airline airline)
        {
            Random rnd = new Random();
            Dictionary<int,RandomEvent> rEvents = new Dictionary<int,RandomEvent>();
            List<RandomEvent> tEvents = GetEvents(type);
            int i = 1;
            int j = 0;
            foreach (RandomEvent r in tEvents)
                if (r.Start <= GameObject.GetInstance().GameTime && r.End >= GameObject.GetInstance().GameTime)
                {
                    {
                        r.DateOccurred = MathHelpers.GetRandomDate(GameObject.GetInstance().GameTime, GameObject.GetInstance().GameTime.AddMonths(12));
                        r.Airline = airline;
                        r.Airliner = Helpers.AirlinerHelpers.GetRandomAirliner(airline);
                        r.Route = r.Airliner.Routes[rnd.Next(r.Airliner.Routes.Count())];
                        r.Country = r.Route.Destination1.Profile.Country;
                        r.Airport = r.Route.Destination1;

                        if (r.focus == RandomEvent.Focus.Airline)
                        {
                            r.Airliner = null;
                            r.Airport = null;
                            r.Country = null;
                            r.Route = null;
                        }

                        rEvents.Add(i, r);
                        i++;
                    }
                }

            tEvents.Clear();

            while (j < number)
            {
                int item = rnd.Next(rEvents.Count());
                tEvents.Add(rEvents[item]);
                j++;
            }

            return tEvents;
        }
示例#3
0
        /*public RandomEvent GenerateRandomEvent()
        {
            //code needed

        }*/
        //adds an event to an airline's event log
        public void AddEvent(Airline airline, RandomEvent rEvent)
        {
            airline.EventLog.Add(rEvent);
        }
示例#4
0
 public static void AddEvent(RandomEvent rEvent)
 {
     events.Add(rEvent.EventName, rEvent);
 }
示例#5
0
 //removes an event from the airlines event log
 public static void RemoveEvent(Airline airline, RandomEvent rEvent)
 {
     airline.EventLog.Remove(rEvent);
 }
示例#6
0
        //loads the random events
        private static void LoadRandomEvents()
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(AppSettings.getDataPath() + "\\addons\\events\\RandomEvents.xml");
            XmlElement root = doc.DocumentElement;
            XmlNodeList eventsList = root.SelectNodes("//event");

            foreach (XmlElement element in eventsList)
            {
                string section = root.Name;
                XmlElement effects = (XmlElement)element.SelectSingleNode("effects");
                XmlElement demand = (XmlElement)element.SelectSingleNode("demand");
                XmlElement valid = (XmlElement)element.SelectSingleNode("valid");
                string uid = element.Attributes["uid"].Value;
                RandomEvent.EventType eventType = new RandomEvent.EventType();
                string type = element.Attributes["type"].Value;
                string focus = element.Attributes["type"].Value;
                RandomEvent.Focus eventFocus = new RandomEvent.Focus();
                switch (type)
                {
                    case "Safety":
                        eventType = RandomEvent.EventType.Safety;
                        break;
                    case "Security":
                        eventType = RandomEvent.EventType.Security;
                        break;
                    case "Customer":
                        eventType = RandomEvent.EventType.Customer;
                        break;
                    case "Employee":
                        eventType = RandomEvent.EventType.Employee;
                        break;
                    case "Maintenance":
                        eventType = RandomEvent.EventType.Maintenance;
                        break;
                    case "Political":
                        eventType = RandomEvent.EventType.Political;
                        break;
                }

                switch (focus)
                {
                    case "Airline":
                        eventFocus = RandomEvent.Focus.Airline;
                        break;

                    case "Aircraft":
                        eventFocus = RandomEvent.Focus.Aircraft;
                        break;

                    case "Airport":
                        eventFocus = RandomEvent.Focus.Airport;
                        break;
                }

                string name = element.Attributes["name"].Value;
                string message = element.Attributes["text"].Value;
                int frequency = int.Parse(element.Attributes["frequency"].Value) / 3;
                DateTime start = valid.HasAttribute("from") ? DateTime.Parse(valid.Attributes["from"].Value) : DateTime.Now.AddYears(100);
                DateTime end = valid.HasAttribute("to") ? DateTime.Parse(valid.Attributes["to"].Value) : DateTime.Now.AddYears(100);

                Boolean critical = Convert.ToBoolean(element.Attributes["important"].Value);
                // if (int.Parse(effects.Attributes["important"].Value) == 1) critical = true; else critical = false;<

                int effectLength = int.Parse(effects.Attributes["duration"].Value);

                int chEffect = effects.HasAttribute("customerHappiness") ? int.Parse(effects.Attributes["customerHappiness"].Value) : 0;
                int ehEffect = effects.HasAttribute("employeeHappiness") ? int.Parse(effects.Attributes["employeeHappiness"].Value) : 0;
                int aSecurityEffect = effects.HasAttribute("airlineSecurity") ? int.Parse(effects.Attributes["airlineSecurity"].Value) : 0;
                int aSafetyEffect = effects.HasAttribute("airlineSafety") ? int.Parse(effects.Attributes["airlineSafety"].Value) : 0;
                int damageEffect = effects.HasAttribute("aircraftDamage") ? int.Parse(effects.Attributes["aircraftDamage"].Value) : 0;
                int financial = effects.HasAttribute("financial") ? int.Parse(effects.Attributes["financial"].Value) : 0;
                double paxDemand = demand.HasAttribute("passenger") ? double.Parse(demand.Attributes["passenger"].Value) : 0;
                double cargoDemand = demand.HasAttribute("cargo") ? double.Parse(demand.Attributes["cargo"].Value) : 0;

                RandomEvent rEvent = new RandomEvent(eventType, eventFocus, name, message, critical, chEffect, damageEffect, aSecurityEffect, aSafetyEffect, ehEffect, financial, paxDemand, cargoDemand, effectLength, uid, frequency, start, end);

                RandomEvents.AddEvent(rEvent);

            }
        }
示例#7
0
 public static void AddEvent(RandomEvent rEvent)
 {
     events.Add(rEvent.EventName, rEvent);
 }
示例#8
0
 //removes an event from the airlines event log
 public static void RemoveEvent(Airline airline, RandomEvent rEvent)
 {
     airline.EventLog.Remove(rEvent);
 }
示例#9
0
        /*public RandomEvent GenerateRandomEvent()
         * {
         *  //code needed
         *
         * }*/

        //adds an event to an airline's event log
        public void AddEvent(Airline airline, RandomEvent rEvent)
        {
            airline.EventLog.Add(rEvent);
        }