public XmlEditorPanel(CityEventXmlContainer xmlEvent, string workingDirectory, TabItem parentTab = null) { InitializeComponent(); _container = xmlEvent; _workingDirectory = workingDirectory; _parentTab = parentTab; LoadXmlEvent(); }
private List <CityEventXmlContainer> GetAllXmlContainers() { List <CityEventXmlContainer> returnList = new List <CityEventXmlContainer>(); List <XmlEditorPanel> xmlEditors = GetAllXmlEditors(); foreach (XmlEditorPanel xmlEditor in xmlEditors) { CityEventXmlContainer foundXmlContainer = xmlEditor._container; if (foundXmlContainer != null) { returnList.Add(foundXmlContainer); } } return(returnList); }
public XmlEvent(CityEventXmlContainer xmlContainer) { m_eventInitialisedMessages = xmlContainer._initialisedMessages.ToList(); m_eventStartedMessages = xmlContainer._beginMessages.ToList(); m_eventEndedMessages = xmlContainer._endedMessages.ToList(); m_eventData.m_eventName = "XMLEvent-" + xmlContainer._name; m_eventData.m_canBeWatchedOnTV = xmlContainer._canBeWatchedOnTV; m_eventData.m_entryCost = xmlContainer._costs._entry; m_capacity = xmlContainer._eventCapacity; m_eventLength = xmlContainer._eventLength; m_eventChances = xmlContainer._chances; m_eventCosts = xmlContainer._costs; m_eventIncentives = xmlContainer._incentives; m_userEventName = xmlContainer._userEventName; SetUpIncentives(m_eventIncentives); }
private void Window_Loaded(object sender, RoutedEventArgs e) { _xmlContainerList.Items.Clear(); ApplyAllXmlPanels(); if (_editors != null) { foreach (XmlEditorPanel editor in _editors) { if (editor._container != null) { CityEventXmlContainer _container = editor._container; CheckBox _checkBox = new CheckBox(); _checkBox.Content = _container._userEventName == "" ? _container._name : _container._userEventName; _checkBox.Checked += (object sender2, RoutedEventArgs e2) => { if (!_editorsToSave.Contains(editor)) { _editorsToSave.Add(editor); CheckToEnableSave(); } }; _checkBox.Unchecked += (object sender2, RoutedEventArgs e2) => { if (_editorsToSave.Contains(editor)) { _editorsToSave.Remove(editor); CheckToEnableSave(); } }; _xmlContainerList.Items.Add(_checkBox); } } } }
public bool ApplyXmlEvent() { bool success = true; _container = new CityEventXmlContainer() { _name = _eventName.Text, _userEventName = _readableName.Text, _eventBuildingClassName = _buildingName.Text, _supportsRandomEvents = _randomEvents.IsChecked.HasValue ? _randomEvents.IsChecked.Value : false, _supportUserEvents = _playerEvents.IsChecked.HasValue ? _playerEvents.IsChecked.Value : false, _canBeWatchedOnTV = _watchedOnTv.IsChecked.HasValue ? _watchedOnTv.IsChecked.Value : false, _initialisedMessages = TearDownText(_initialisedMessages), _beginMessages = TearDownText(_startedMessages), _endedMessages = TearDownText(_endedMessages), _chances = new CityEventXmlChances() { _children = (int)(Math.Round(_children.Value)), _teens = (int)(Math.Round(_teens.Value)), _adults = (int)(Math.Round(_adults.Value)), _seniors = (int)(Math.Round(_seniors.Value)), _lowWealth = (int)(Math.Round(_lowWealth.Value)), _mediumWealth = (int)(Math.Round(_mediumWealth.Value)), _highWealth = (int)(Math.Round(_highWealth.Value)), _uneducated = (int)(Math.Round(_uneducated.Value)), _oneSchool = (int)(Math.Round(_oneSchool.Value)), _twoSchools = (int)(Math.Round(_twoSchools.Value)), _threeSchools = (int)(Math.Round(_threeSchools.Value)), _badHappiness = (int)(Math.Round(_badHappiness.Value)), _poorHappiness = (int)(Math.Round(_poorHappiness.Value)), _goodHappiness = (int)(Math.Round(_goodHappiness.Value)), _excellentHappiness = (int)(Math.Round(_excellentHappiness.Value)), _superbHappiness = (int)(Math.Round(_superbHappiness.Value)), _veryUnhappyWellbeing = (int)(Math.Round(_veryUnhappy.Value)), _unhappyWellbeing = (int)(Math.Round(_unhappy.Value)), _satisfiedWellbeing = (int)(Math.Round(_satisfied.Value)), _happyWellbeing = (int)(Math.Round(_happy.Value)), _veryHappyWellbeing = (int)(Math.Round(_veryHappy.Value)), }, _costs = new CityEventXmlCosts() { }, _incentives = new CityEventXmlIncentive[] { } }; success = success && SafelyConvert.SafelyParseWithError(_capacity.Text, ref _container._eventCapacity, "capacity"); success = success && SafelyConvert.SafelyParseWithError(_length.Text, ref _container._eventLength, "event length"); success = success && SafelyConvert.SafelyParseWithError(_creationCost.Text, ref _container._costs._creation, "creation cost"); success = success && SafelyConvert.SafelyParseWithError(_perHeadCost.Text, ref _container._costs._perHead, "cost per citizen"); success = success && SafelyConvert.SafelyParseWithError(_advertSignCost.Text, ref _container._costs._advertisingSigns, "advertising sign cost"); success = success && SafelyConvert.SafelyParseWithError(_advertTVCost.Text, ref _container._costs._advertisingTV, "advertising TV cost"); success = success && SafelyConvert.SafelyParseWithError(_entryCost.Text, ref _container._costs._entry, "ticket cost"); List <CityEventXmlIncentive> incentiveList = new List <CityEventXmlIncentive>(); foreach (TabItem tab in _incentiveTabs.Items) { IncentiveEditorPanel editor = tab.Content as IncentiveEditorPanel; if (editor != null) { success = success && editor.ApplyUserEvent(); if (success) { incentiveList.Add(editor._incentive); } } } _container._incentives = incentiveList.ToArray(); return(success); }
public void ParseXMLEvent() { XmlSerializer _serialiser = new XmlSerializer(typeof(CityEventXml)); string toParse = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<EventContainer xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" + " <Events>\n" + " <Event EventName=\"testEvent\" BuildingName=\"testBuilding\" UserEventName=\"Test event name\" Capacity=\"4321\" LengthInHours=\"12.3\" Force=\"true\" SupportsUserEvents=\"true\" CanBeWatchedOnTV=\"true\">\n" + " <InitialisedMessages>\n" + " <Message>Variable {0} displays the number of days until the event, eg \"An event in {0}!\" would display as \"An event in 1 day!\", or \"An event in less than a day!\" ingame. Place this where you need it.</Message>\n" + " <Message>Add messages here!</Message>\n" + " <Message>Add messages here!</Message>\n" + " <Message>Add messages here!</Message>\n" + " </InitialisedMessages>\n" + " <BeginMessages>\n" + " <Message>Add messages here!</Message>\n" + " <Message>Add messages here!</Message>\n" + " </BeginMessages>\n" + " <EndMessages>\n" + " <Message>Add messages here!</Message>\n" + " <Message>Add messages here!</Message>\n" + " <Message>Add messages here!</Message>\n" + " </EndMessages>\n" + " <ChanceOfAttendingPercentage>\n" + " <Males>1</Males>\n" + " <Females>2</Females>\n" + " <Children>3</Children>\n" + " <Teens>4</Teens>\n" + " <YoungAdults>5</YoungAdults>\n" + " <Adults>6</Adults>\n" + " <Seniors>7</Seniors>\n" + " <LowWealth>8</LowWealth>\n" + " <MediumWealth>9</MediumWealth>\n" + " <HighWealth>10</HighWealth>\n" + " <Uneducated>11</Uneducated>\n" + " <OneSchool>12</OneSchool>\n" + " <TwoSchools>13</TwoSchools>\n" + " <ThreeSchools>14</ThreeSchools>\n" + " <BadHappiness>15</BadHappiness>\n" + " <PoorHappiness>16</PoorHappiness>\n" + " <GoodHappiness>17</GoodHappiness>\n" + " <ExcellentHappiness>18</ExcellentHappiness>\n" + " <SuperbHappiness>19</SuperbHappiness>\n" + " <VeryUnhappyWellbeing>20</VeryUnhappyWellbeing>\n" + " <UnhappyWellbeing>21</UnhappyWellbeing>\n" + " <SatisfiedWellbeing>22</SatisfiedWellbeing>\n" + " <HappyWellbeing>23</HappyWellbeing>\n" + " <VeryHappyWellbeing>24</VeryHappyWellbeing>\n" + " </ChanceOfAttendingPercentage>\n" + " <Costs>\n" + " <Creation>1</Creation>\n" + " <PerHead>2</PerHead>\n" + " <AdvertisingSigns>3</AdvertisingSigns>\n" + " <AdvertisingTV>4</AdvertisingTV>\n" + " <EntryCost>5</EntryCost>\n" + " </Costs>\n" + " <Incentives>\n" + " <Incentive Name=\"testIncentive\" Cost=\"123\" ReturnCost=\"456\" ActiveWhenRandomEvent=\"true\">\n" + " <Description>Test description.</Description>\n" + " <PositiveEffect>3</PositiveEffect>\n" + " <NegativeEffect>5</NegativeEffect>\n" + " </Incentive>\n" + " </Incentives>\n" + " </Event>\n" + " </Events>\n" + "</EventContainer>\n"; StringReader _xmlReader = new StringReader(toParse); CityEventXml xmlEvent = _serialiser.Deserialize(_xmlReader) as CityEventXml; Assert.IsNotNull(xmlEvent); CityEventXmlContainer currentContainer = xmlEvent._containedEvents[0]; Assert.IsNotNull(currentContainer); Assert.AreEqual("testEvent", currentContainer._name); Assert.AreEqual("testBuilding", currentContainer._eventBuildingClassName); Assert.AreEqual("Test event name", currentContainer._userEventName); Assert.AreEqual(4321, currentContainer._eventCapacity); Assert.AreEqual(12.3, currentContainer._eventLength); Assert.IsTrue(currentContainer._force); Assert.IsTrue(currentContainer._canBeWatchedOnTV); Assert.IsTrue(currentContainer._supportUserEvents); Assert.AreEqual(4, currentContainer._initialisedMessages.Length); Assert.AreEqual(2, currentContainer._beginMessages.Length); Assert.AreEqual(3, currentContainer._endedMessages.Length); Assert.AreEqual(1, currentContainer._chances._males); Assert.AreEqual(2, currentContainer._chances._females); Assert.AreEqual(3, currentContainer._chances._children); Assert.AreEqual(4, currentContainer._chances._teens); Assert.AreEqual(5, currentContainer._chances._youngAdults); Assert.AreEqual(6, currentContainer._chances._adults); Assert.AreEqual(7, currentContainer._chances._seniors); Assert.AreEqual(8, currentContainer._chances._lowWealth); Assert.AreEqual(9, currentContainer._chances._mediumWealth); Assert.AreEqual(10, currentContainer._chances._highWealth); Assert.AreEqual(11, currentContainer._chances._uneducated); Assert.AreEqual(12, currentContainer._chances._oneSchool); Assert.AreEqual(13, currentContainer._chances._twoSchools); Assert.AreEqual(14, currentContainer._chances._threeSchools); Assert.AreEqual(15, currentContainer._chances._badHappiness); Assert.AreEqual(16, currentContainer._chances._poorHappiness); Assert.AreEqual(17, currentContainer._chances._goodHappiness); Assert.AreEqual(18, currentContainer._chances._excellentHappiness); Assert.AreEqual(19, currentContainer._chances._superbHappiness); Assert.AreEqual(20, currentContainer._chances._veryUnhappyWellbeing); Assert.AreEqual(21, currentContainer._chances._unhappyWellbeing); Assert.AreEqual(22, currentContainer._chances._satisfiedWellbeing); Assert.AreEqual(23, currentContainer._chances._happyWellbeing); Assert.AreEqual(24, currentContainer._chances._veryHappyWellbeing); Assert.AreEqual(1, currentContainer._costs._creation); Assert.AreEqual(2, currentContainer._costs._perHead); Assert.AreEqual(3, currentContainer._costs._advertisingSigns); Assert.AreEqual(4, currentContainer._costs._advertisingTV); Assert.AreEqual(5, currentContainer._costs._entry); Assert.IsNotNull(currentContainer._incentives); Assert.IsNotNull(currentContainer._incentives[0]); CityEventXmlIncentive currentIncentive = currentContainer._incentives[0]; Assert.AreEqual("testIncentive", currentIncentive._name); Assert.AreEqual(123, currentIncentive._cost); Assert.AreEqual(456, currentIncentive._returnCost); Assert.IsTrue(currentIncentive._activeWhenRandomEvent); Assert.AreEqual("Test description.", currentIncentive._description); Assert.AreEqual(3, currentIncentive._positiveEffect); Assert.AreEqual(5, currentIncentive._negativeEffect); }