internal World(Manifest manifest, Map map, OrderManager orderManager, bool isShellmap) { IsShellmap = isShellmap; this.orderManager = orderManager; orderGenerator_ = new UnitOrderGenerator(); Map = map; TileSet = Rules.TileSets[Map.Tileset]; SharedRandom = new XRandom(orderManager.LobbyInfo.GlobalSettings.RandomSeed); WorldActor = CreateActor("World", new TypeDictionary()); ActorMap = WorldActor.Trait <ActorMap>(); ScreenMap = WorldActor.Trait <ScreenMap>(); // Add players foreach (var cmp in WorldActor.TraitsImplementing <ICreatePlayers>()) { cmp.CreatePlayers(this); } // Set defaults for any unset stances foreach (var p in Players) { foreach (var q in Players) { if (!p.Stances.ContainsKey(q)) { p.Stances[q] = Stance.Neutral; } } } Sound.SoundVolumeModifier = 1.0f; }
internal World(Map map, OrderManager orderManager, WorldType type) { Type = type; OrderManager = orderManager; orderGenerator = new UnitOrderGenerator(); Map = map; Timestep = orderManager.LobbyInfo.GlobalSettings.Timestep; TileSet = map.Rules.TileSets[Map.Tileset]; SharedRandom = new MersenneTwister(orderManager.LobbyInfo.GlobalSettings.RandomSeed); var worldActorType = type == WorldType.Editor ? "EditorWorld" : "World"; WorldActor = CreateActor(worldActorType, new TypeDictionary()); ActorMap = WorldActor.Trait <ActorMap>(); ScreenMap = WorldActor.Trait <ScreenMap>(); // Add players foreach (var cmp in WorldActor.TraitsImplementing <ICreatePlayers>()) { cmp.CreatePlayers(this); } // Set defaults for any unset stances foreach (var p in Players) { foreach (var q in Players) { if (!p.Stances.ContainsKey(q)) { p.Stances[q] = Stance.Neutral; } } } Game.Sound.SoundVolumeModifier = 1.0f; gameInfo = new GameInformation { Mod = Game.ModData.Manifest.Mod.Id, Version = Game.ModData.Manifest.Mod.Version, MapUid = Map.Uid, MapTitle = Map.Title }; if (!LobbyInfo.GlobalSettings.Shroud) { foreach (var player in Players) { player.Shroud.ExploreAll(this); } } }