示例#1
0
        public void RegisterJson(string json)
        {
            var obj = JObject.Parse(json);

            foreach (var root in obj.Root)
            {
                var propertyList = root.Children().First();
                foreach (var tileListing in propertyList.Children())
                {
                    var name = tileListing["Type"].Value <string>();
                    var tile = (Tile)Activator.CreateInstance(TileTypeCache.GetTileType(name));
                    var data = tileListing["Data"].Value <JToken>();
                    foreach (JProperty val in data.Children())
                    {
                        var property = tile.GetType().GetProperty(val.Name);
                        property.SetValue(tile,
                                          val.Value.ChangeType(property.PropertyType, CultureInfo.CurrentCulture));
                    }

                    tiles.Add(GetFreeId(tile), tile);
                    if (tile.Name == "")
                    {
                        tile.Name = tile.Id.ToString();
                    }
                    tilesByName.Add(tile.Name, tile);
                }
            }
        }
示例#2
0
        /// <summary>
        ///     LoadContent will be called once per game and is the place to load
        ///     all of your content.
        /// </summary>
        protected sealed override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            if (!Directory.Exists("cfg"))
            {
                Directory.CreateDirectory("cfg");
            }
            if (!Directory.Exists("addons"))
            {
                Directory.CreateDirectory("addons");
            }


            ComponentCache.RegisterComponents();
            HeaderCache.RegisterHeaders();
            NetworkMethodCache.RegisterSendables();
            TileTypeCache.RegisterTileTypes();

            ServiceLocator.RegisterService(Content);
            ServiceLocator.RegisterService(spriteBatch);
            ServiceLocator.RegisterService(graphics);

            ServiceLocator.RegisterImplementations();
            DefineImplementations();
            ServiceLocator.RegisterServices();

            GameState.RegisterStates();
            ServiceLocator.Get <IPerformanceProfiler>().StartSession(false);
            for (var i = 0; i < 1000; i++)
            {
                //var world = new ObjectFactory<ThreeTierWorld>().Make(1, 1);
            }

            var time = ServiceLocator.Get <IPerformanceProfiler>().StopSession();

            Debug.WriteLine(time.TotalTime.Milliseconds);

            ServiceLocator.Get <IPropertyService>().Load("app");
            SteamCallback.Create();
            LuaContext.LoadAddons();

            Window.TextInput += ServiceLocator.Get <ITextInputService>().Execute;

            camera          = ServiceLocator.Get <ICamera>();
            input           = ServiceLocator.Get <IInput>();
            gameTimeService = ServiceLocator.Get <IGameTimeService>();
            stateService    = ServiceLocator.Get <IStateService>();
            client          = ServiceLocator.Get <IClient>();


            LoadGameContent();
        }