Ejemplo n.º 1
0
        public void SetUp(LabelOptionItem selectedData, ushort buildingID)
        {
            _linkedEvent = selectedData.linkedEvent;

            if (_linkedEvent != null && buildingID != 0 && _ticketSlider != null)
            {
                List <CityEventXmlIncentive> incentives = _linkedEvent.GetIncentives();

                title = _linkedEvent.GetReadableName();

                _ticketSlider.maxValue = _linkedEvent.GetCapacity();
                _ticketSlider.minValue = Mathf.Min(_linkedEvent.GetCapacity(), 100);
                _ticketSlider.value    = _ticketSlider.minValue;

                _incentiveList.rowsData.Clear();

                foreach (CityEventXmlIncentive incentive in incentives)
                {
                    IncentiveOptionItem optionItem = new IncentiveOptionItem()
                    {
                        cost           = incentive._cost,
                        description    = incentive._description,
                        negativeEffect = incentive._negativeEffect,
                        positiveEffect = incentive._positiveEffect,
                        returnCost     = incentive._returnCost,
                        title          = incentive._name,
                        ticketCount    = _ticketSlider.value
                    };
                    optionItem.OnOptionItemChanged += OptionItem_OnOptionItemChanged;

                    _incentiveList.rowsData.Add(optionItem);
                }

                try
                {
                    _incentiveList.DisplayAt(0);
                    _incentiveList.selectedIndex = 0;
                    _incentiveList.Show();
                }
                catch
                {
                    LoggingWrapper.LogError("IncentiveList DisplayAt hit an error. Probably too few items in the list.");
                }

                _incentiveList.Refresh();

                CalculateTotal();
                TranslateInfoString();
                PerformLayout();

                LoggingWrapper.Log("Event capacity is " + _linkedEvent.GetCapacity().ToString() + ".");
                LoggingWrapper.Log("Successfully set up the UserEventCreationWindow.");
            }
            else
            {
                LoggingWrapper.LogError("Linked event was invalid, or the building was 0!");
            }

            relativePosition = Vector3.zero;
        }
        public CityEvent GetEventForBuilding(ref Building thisBuilding, List <CityEventXml> xmlEvents)
        {
            CityEvent _buildingEvent = null;
            List <CityEventXmlContainer> _validEvents       = new List <CityEventXmlContainer>();
            SimulationManager            _simulationManager = Singleton <SimulationManager> .instance;

            foreach (CityEventXml xmlEvent in xmlEvents)
            {
                foreach (CityEventXmlContainer containedEvent in xmlEvent._containedEvents)
                {
                    if (containedEvent._eventBuildingClassName == thisBuilding.Info.name && containedEvent._supportsRandomEvents)
                    {
                        _validEvents.Add(containedEvent);
                    }
                }
            }

            if (_validEvents.Count > 0)
            {
                CityEventXmlContainer pickedEvent = _validEvents[_simulationManager.m_randomizer.Int32((uint)_validEvents.Count)];

                if (pickedEvent != null)
                {
                    _buildingEvent = new XmlEvent(pickedEvent);
                }
            }
            else
            {
                CimTools.CimToolsHandler.CimToolBase.DetailedLogger.Log("Couldn't find any events for " + thisBuilding.Info.name);
            }

            return(_buildingEvent);
        }
        public CityEvent GetXmlEventFromData(CityEventData data)
        {
            CityEvent dataEvent = null;

            if (data.m_eventName != "")
            {
                foreach (CityEventXml xmlEvent in CityEventManager.instance.m_xmlEvents)
                {
                    foreach (CityEventXmlContainer containedEvent in xmlEvent._containedEvents)
                    {
                        if ("XMLEvent-" + containedEvent._name == data.m_eventName)
                        {
                            dataEvent             = new XmlEvent(containedEvent);
                            dataEvent.m_eventData = data;
                            CimTools.CimToolsHandler.CimToolBase.DetailedLogger.Log("Created an XML event: " + data.m_eventName);
                            break;
                        }
                    }

                    if (dataEvent != null)
                    {
                        break;
                    }
                }
            }

            return(dataEvent);
        }
Ejemplo n.º 4
0
    public static void startEvent(XmlEvent evt)
    {
        if (evt != null)
        {
            Event_Run event_Run = instance.gameObject.AddComponent <Event_Run>();

            event_Run.SetEvent(evt);
        }
    }
Ejemplo n.º 5
0
        /// <summary>
        /// public delegate object GetRealTimeArgsFunc(String argName);
        /// </summary>
        ///

        public void RegisterEvent(String EventName, String ActionName, params String[] args)
        {
            XmlActionList list = new XmlDesigner.XmlActionList(); //xml에서 정의될 것을 코드상에서 가져온다..

            list.Add(new XmlAction(ActionName, args));

            XmlEvent evt = new XmlEvent(EventName, new XmlActionList[] { list }.ToList());

            this.Events.Add(EventName, evt);
        }
Ejemplo n.º 6
0
        public void OnPointerUp(BaseEventData arg0)//点选目录视频,eventTrigger事件
        {
            XmlPic2D toggle = XmlStage.GetAsset2D(actButton.assetID);

            if (toggle != null)
            {
                XmlEvent @event = XmlStage.GetEvent(strEvent);
                EventMgr.startEvent(@event);

                Image img = GetComponent <Image>();
                img.sprite = toggle.PicNormal;
            }
        }
Ejemplo n.º 7
0
        public void OnButtonClick(BaseEventData arg0)
        {
            XmlPic2D toggle = XmlStage.GetAsset2D(actButton.assetID);

            if (toggle != null)
            {
                Image img = GetComponent <Image>();
                img.sprite = toggle.PicNormal;
            }

            XmlEvent @event = XmlStage.GetEvent(strEvent);

            EventMgr.startEvent(@event);
        }
Ejemplo n.º 8
0
        private static void CreateEventButton_eventClicked(UIComponent component, UIMouseEventParameter eventParam)
        {
            UIFastList eventSelection = component.parent.Find <UIFastList>("EventSelectionList");
            ushort     buildingID     = lastInstanceID.Value.Building;

            if (lastInstanceID != null && buildingID != 0)
            {
                BuildingManager _buildingManager = Singleton <BuildingManager> .instance;
                Building        _currentBuilding = _buildingManager.m_buildings.m_buffer[buildingID];

                if ((_currentBuilding.m_flags & Building.Flags.Active) != Building.Flags.None)
                {
                    List <CityEvent> userEvents = CityEventBuildings.instance.GetUserEventsForBuilding(ref _currentBuilding);

                    BuildDropdownList(component);

                    if (eventSelection.isVisible)
                    {
                        eventSelection.Hide();
                    }
                    else
                    {
                        eventSelection.selectedIndex = -1;
                        eventSelection.Show();
                        eventSelection.rowsData.Clear();

                        foreach (CityEvent userEvent in userEvents)
                        {
                            XmlEvent xmlUserEvent = userEvent as XmlEvent;

                            if (xmlUserEvent != null)
                            {
                                xmlUserEvent.SetUp(ref buildingID);
                                LabelOptionItem eventToInsert = new LabelOptionItem()
                                {
                                    linkedEvent = xmlUserEvent, readableLabel = xmlUserEvent.GetReadableName()
                                };
                                eventSelection.rowsData.Add(eventToInsert);

                                LoggingWrapper.Log(xmlUserEvent.GetReadableName());
                            }
                        }

                        eventSelection.DisplayAt(0);
                    }
                }
            }
        }
Ejemplo n.º 9
0
        public void SetEvent(_run_event act)
        {
            actRun = act;

            theEvent = XmlStage.GetEvent(actRun.eventID);


            if (theEvent != null)
            {
                theEvent.Start();
            }
            else
            {
                Debug.Log("Event NULL");
            }
        }
Ejemplo n.º 10
0
        public void SetEvent(XmlEvent evt)
        {
            actRun = null;

            theEvent = evt;// AppMgr.getEvent(actRun.eventID);


            if (theEvent != null)
            {
                theEvent.Start();
            }
            else
            {
                Debug.Log("Event NULL");
            }
        }
Ejemplo n.º 11
0
        public static void RunEvent(IXmlItem comp, String evtType)
        {
            if (comp.Interface.Events.Keys.Contains(evtType) == false)
            {
                return;
            }

            XmlEvent evt = comp.Interface.Events[evtType];


            for (int i = 0; i < evt.Actions.Count; i++)
            {
                XmlActionList actionList = evt.Actions[i];
                if (actionList.Condition.GetCondition() && (actionList.ComCondition == null || actionList.ComCondition.GetCondition())) //condition이 true일 때..
                {
                    for (int a = 0; a < actionList.Count; a++)
                    {
                        XmlAction action   = actionList[a];
                        string    funcName = action.Name;

                        if (GlobalVars.Funcs.Keys.Contains(funcName))
                        {
                            object[] args;
                            args = comp.Interface.GetRealTimeArgs(action.Args);

                            if (comp is Control)
                            {
                                Control control = comp as Control;

                                if (control.InvokeRequired)
                                {
                                    GlobalVars.Funcs[funcName](comp, args);
                                }
                                else
                                {
                                    GlobalVars.Funcs[funcName].Invoke(comp, args);
                                }
                            }
                            else
                            {
                                GlobalVars.Funcs[funcName](comp, args);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Decodes and routes an event.
        /// </summary>
        /// <param name="element">The element.</param>
        protected void DecodeAndRouteEvent(XElement element)
        {
            if (element.Name == XName.Get("json"))
            {
                try
                {
                    var eventTypeElement = element.Element("type");
                    if (eventTypeElement == null)
                    {
                        return;
                    }

                    var eventDataElement = element.Element("data");
                    if (eventDataElement == null)
                    {
                        return;
                    }

                    var eventType = eventTypeElement
                                    .Nodes()
                                    .OfType <XCData>()
                                    .FirstOrDefault()
                                    .Value;
                    var eventData = eventDataElement
                                    .Nodes()
                                    .OfType <XCData>()
                                    .FirstOrDefault()
                                    .Value;

                    var eventBytes       = System.Text.Encoding.UTF8.GetBytes(eventData);
                    var dictionaryReader = JsonReaderWriterFactory.CreateJsonReader(
                        eventBytes, 0, eventBytes.Length, new XmlDictionaryReaderQuotas());

                    var fabricator = SchemaFabricator;
                    if (fabricator != null)
                    {
                        var fabricatorType = fabricator.GetType(eventType);
                        if (fabricatorType != null)
                        {
                            if (DataEvent != null)
                            {
                                var serializer = new DataContractJsonSerializer(fabricatorType);
                                var trueEntity = serializer.ReadObject(dictionaryReader);
                                DataEvent.Invoke(trueEntity);
                            }

                            return;
                        }
                    }

                    if (XmlEvent != null)
                    {
                        var dictionaryDocument = XDocument.Load(dictionaryReader);
                        dictionaryDocument.Root.Name = eventType;
                        XmlEvent.Invoke(dictionaryDocument.Root);
                    }
                }
                catch (EPException e)
                {
                }
            }
            else if (element.Name == XName.Get("xml"))
            {
                if (XmlEvent != null)
                {
                    XmlEvent.Invoke(element.Elements().FirstOrDefault());
                }
            }
            else if (element.Name == XName.Get("map"))
            {
                DictionaryEvent(
                    element.Attribute("name").Value,
                    element.Elements().FirstOrDefault().ToDictionary());
            }
            else
            {
                throw new ArgumentException(string.Format("Content type \"{0}\" is not recognized", element.Name));
            }
        }
Ejemplo n.º 13
0
        public void CreateEvents()
        {
            SimulationManager _simulationManager = Singleton <SimulationManager> .instance;
            BuildingManager   _buildingManager   = Singleton <BuildingManager> .instance;

            PrintMonuments();

            if (m_forcedEvent != null)
            {
                m_nextEvents.Clear();
            }

            FastList <ushort> allBuildings = CityEventBuildings.instance.GetPotentialEventBuildings();

            if (allBuildings.m_size > 0)
            {
                if (m_forcedEvent != null)
                {
                    for (int index = 0; index < allBuildings.m_size; ++index)
                    {
                        ushort   buildingId = allBuildings[index];
                        Building monument   = _buildingManager.m_buildings.m_buffer[buildingId];

                        if (monument.Info.name == m_forcedEvent._eventBuildingClassName)
                        {
                            CityEvent xmlEvent = new XmlEvent(m_forcedEvent);
                            xmlEvent.SetUp(ref buildingId);
                            xmlEvent.m_eventData.m_eventStartTime  = CITY_TIME.AddHours(4d);
                            xmlEvent.m_eventData.m_eventFinishTime = xmlEvent.m_eventData.m_eventStartTime.AddHours(xmlEvent.GetEventLength());

                            AddEvent(xmlEvent);

                            LoggingWrapper.Log("Forced event created at " + monument.Info.name + " for " + xmlEvent.m_eventData.m_eventStartTime.ToShortTimeString() + ". Current date: " + CITY_TIME.ToShortTimeString());
                        }
                        else
                        {
                            LoggingWrapper.Log(monument.Info.name + " != " + m_forcedEvent._eventBuildingClassName);
                        }
                    }
                }
                else
                {
                    for (int count = 0; count < 10; ++count)
                    {
                        ushort randomMonumentId = allBuildings.m_buffer[_simulationManager.m_randomizer.UInt32((uint)allBuildings.m_size)];

                        if (randomMonumentId < _buildingManager.m_buildings.m_size)
                        {
                            Building  monument   = _buildingManager.m_buildings.m_buffer[randomMonumentId];
                            CityEvent foundEvent = CityEventBuildings.instance.GetEventForBuilding(ref monument);

                            if (foundEvent != null && (monument.m_flags & Building.Flags.Active) != Building.Flags.None)
                            {
                                foundEvent.SetUp(ref randomMonumentId);
                                AddEvent(foundEvent);
                                break;
                            }
                            else
                            {
                                Debug.Log("No event scheduled just yet. Checking again soon.");
                            }
                        }
                    }
                }
            }

            m_forcedEvent = null;

            if (!ExperimentsToggle.ForceEventToHappen)
            {
                m_nextEventCheck = CITY_TIME.AddHours(3);
            }
        }
Ejemplo n.º 14
0
    public static void startEvent(string evtName)
    {
        XmlEvent evt = XmlStage.GetEvent(evtName);

        startEvent(evt);
    }