/// <summary> /// loads a game data from file. /// </summary> /// <param name="fileName">file name</param> /// <param name="type">object type</param> /// <returns></returns> public static GameDataSpec Load(string fileName, Type type) { GameDataSpec spec = FindSpec(fileName); if (spec == null) { spec = (GameDataSpec)HelperFile.LoadData(fileName, type); spec.sourceFilePath = fileName; specList.Add(fileName, spec); } return(spec); }
/// <summary> /// load all of the data for stage level, player, enemies, items, weapons, etc. /// </summary> /// <returns></returns> public void LoadLevel(string levelFile) { this.levelInfo = (GameLevelInfo)HelperFile.LoadData(levelFile, levelInfo.GetType()); RobotGameGame.CurrentGameLevel = this; // Initialize level Initialize(); // Global fog if (levelInfo.FogEnable) { FrameworkCore.Viewer.BasicFog = new RenderFog(); FrameworkCore.Viewer.BasicFog.enabled = true; FrameworkCore.Viewer.BasicFog.start = levelInfo.FogStart; FrameworkCore.Viewer.BasicFog.end = levelInfo.FogEnd; FrameworkCore.Viewer.BasicFog.color = new Color( (byte)levelInfo.FogColor.X, (byte)levelInfo.FogColor.Y, (byte)levelInfo.FogColor.Z); } else { FrameworkCore.Viewer.BasicFog = new RenderFog(); FrameworkCore.Viewer.BasicFog.enabled = false; } // Global lighting if (levelInfo.LightingEnable) { FrameworkCore.Viewer.BasicLighting = new RenderLighting(); FrameworkCore.Viewer.BasicLighting.enabled = true; FrameworkCore.Viewer.BasicLighting.ambientColor = new Color( (byte)levelInfo.LightingAmbientColor.X, (byte)levelInfo.LightingAmbientColor.Y, (byte)levelInfo.LightingAmbientColor.Z); FrameworkCore.Viewer.BasicLighting.diffuseColor = new Color( (byte)levelInfo.LightingDiffuseColor.X, (byte)levelInfo.LightingDiffuseColor.Y, (byte)levelInfo.LightingDiffuseColor.Z); FrameworkCore.Viewer.BasicLighting.specularColor = new Color( (byte)levelInfo.LightingSpecularColor.X, (byte)levelInfo.LightingSpecularColor.Y, (byte)levelInfo.LightingSpecularColor.Z); FrameworkCore.Viewer.BasicLighting.direction = levelInfo.LightingDirection; } else { FrameworkCore.Viewer.BasicLighting = new RenderLighting(); FrameworkCore.Viewer.BasicLighting.enabled = false; } // Create world if (this.levelInfo.WorldInLevel != null) { CreateWorld(ref this.levelInfo.WorldInLevel); } // Create particles CreateParticle(this.levelInfo.ParticleListFile); // Create player if (this.levelInfo.PlayerInLevel != null) { GamePlayer player = CreatePlayer(ref this.levelInfo.PlayerInLevel, this.SceneMechRoot); RobotGameGame.SinglePlayer = player; FrameworkCore.GameEventManager.TargetScene = player; } // Create all enemies in the level if (levelInfo.EnemyInLevelList != null) { for (int i = 0; i < levelInfo.EnemyInLevelList.Count; i++) { EnemyInLevel enemy = levelInfo.EnemyInLevelList[i]; CreateSpawnEnemy(ref enemy, this.SceneMechRoot); } } // Create all items in the level if (levelInfo.ItemInLevelList != null) { for (int i = 0; i < levelInfo.ItemInLevelList.Count; i++) { ItemInLevel item = levelInfo.ItemInLevelList[i]; CreateItemBox(ref item, this.SceneWorldRoot); } } // Create all weapons in the level if (levelInfo.WeaponInLevelList != null) { for (int i = 0; i < levelInfo.WeaponInLevelList.Count; i++) { CreateWeapon(levelInfo.WeaponInLevelList[i], SceneWorldRoot); } } // Entry collision of the units to layer in the level switch (Info.GamePlayType) { case GamePlayTypeId.StageClear: { GamePlayer player = SinglePlayer; // Entry collision of the player to layer in the level CollisionLayerFriendlyMech.AddCollide(player.Collide); CollisionLayerAllMech.AddCollide(player.Collide); // Entry collsion of each enemy to layer in the level for (int i = 0; i < EnemyCountInLevel; i++) { GameEnemy enemy = GetEnemyInLevel(i); CollisionLayerEnemyMech.AddCollide(enemy.Collide); CollisionLayerAllMech.AddCollide(enemy.Collide); } } break; case GamePlayTypeId.Versus: { } break; } // Entry collsion of items to layer in the level for (int i = 0; i < ItemCountInLevel; i++) { GameItemBox item = GetItemInLevel(i); CollisionLayerItems.AddCollide(item.Collide); } // Entry collsion of weapons to layer in the level for (int i = 0; i < WeaponCountInLevel; i++) { GameWeapon weapon = GetWeaponInLevel(i); CollisionLayerItems.AddCollide(weapon.Collide); } }