コード例 #1
0
ファイル: State.cs プロジェクト: andy-uq/Echo
        public void SavePlayerState()
        {
            var universe = new Universe();
            PlayerCorporation corporation = universe.RegisterPlayerCorporation("andy", "AAAA", "*****@*****.**");

            var state = universe.SaveState();

            var reloaded = new Universe();
            reloaded.LoadState(state);

            Assert.AreEqual(universe.Players.Count, reloaded.Players.Count);
            Assert.AreEqual(corporation.ID, reloaded.Players[0].ID);
        }
コード例 #2
0
ファイル: State.cs プロジェクト: andy-uq/Echo
        public void SaveAgent()
        {
            const string stateXml = @"<universe objectID=""0"" nextObjectID=""2"" currentTick=""0"">
              <corporations>
            <corporation objectID=""1"">
            <agents />
            </corporation>
              </corporations>
            </universe>";

            var xdoc = new XmlDocument();
            xdoc.LoadXml(stateXml);

            var universe = new Universe();
            universe.LoadState(xdoc.Select("universe"));

            Assert.AreEqual(1, universe.Corporations.Count);

            var corporation = universe.Corporations[0];
            var agent = corporation.Recruit();
            agent.Stats[AgentStatistic.Memory].SetValue(100);

            var state = universe.SaveState();

            var reloaded = new Universe();
            reloaded.LoadState(state);
            Assert.AreEqual(1, reloaded.Corporations.Count);

            var reloadedCorporation = reloaded.Corporations[0];
            Assert.AreEqual(corporation.Employees.Count, reloadedCorporation.Employees.Count);

            var reloadedAgent = reloadedCorporation.Employees[0];
            Assert.AreEqual(agent.ObjectID, reloadedAgent.ObjectID);

            Assert.AreEqual(agent.Stats[AgentStatistic.Memory].Value, reloadedAgent.Stats[AgentStatistic.Memory].Value);
        }
コード例 #3
0
ファイル: Global.asax.cs プロジェクト: andy-uq/Echo
        private void Initialise()
        {
            isShutdown = false;

            Rand.Initialise(0);
            universe = new Universe();

            dataPath = Server.MapPath("~/app_data");

            var templateFilename = Path.Combine(dataPath, "templates.xml");
            var stateFilename = Path.Combine(dataPath, "universe.xml");
            var date = DateTime.Now;

            if ( File.Exists(templateFilename) )
            {
                var templates = new XmlDocument();
                templates.Load(templateFilename);

                universe.ObjectFactory.Load(templates.SelectRootElement());
            }

            if ( File.Exists(stateFilename) )
            {
                string backupName = string.Format("{0:yyyyMd_HHmmss}_universe.xml", date);
                File.Copy(stateFilename, Path.Combine(dataPath, backupName));

                var state = new XmlDocument();
                state.Load(stateFilename);

                universe.LoadState(state.SelectRootElement());
            }

            dataWatcher = new FileSystemWatcher(dataPath, "*.xml");
            dataWatcher.Changed += UniverseChanged;
            dataWatcher.EnableRaisingEvents = true;

            isInitialised = true;
        }