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); } } }
/// <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(); }