private TidesFlatlandPresenter(Flatland.Canvas canvas) { orbMoon = new DrawOrb(canvas, colorMoon); orbSun = new DrawOrb(canvas, colorSun); segment = new DrawSegment(canvas); earth = new DrawEarth(canvas); }
public override void LoadContent() { mScene = new Scene(); mActorMan = new ActorManager(mViews); GameResources.ActorManager = mActorMan; LevelManifest manifest; using (ContentManager manifestLoader = new ContentManager(SharedResources.Game.Services, "Content")) { manifest = manifestLoader.Load<LevelManifest>(mRequest.LevelName); manifestLoader.Unload(); // a LevelManifest does not use any Disposable resources, so this is ok. } // The IScreenHoncho tells this gameplay screen how to set up the PlayerViews and DrawSegments required to play this level IScreenHoncho screenHoncho = Activator.CreateInstance(Type.GetType(manifest.ScreenHonchoTypeName)) as IScreenHoncho; mViewContentLoader = new ContentManager(SharedResources.Game.Services, "Content"); foreach (PlayerInfo player in GameResources.PlaySession.Players) { mViews.Add(PlayerViewFactory.Create(player, mRequest.CharacterSelections[player.PlayerId], screenHoncho, mViewContentLoader)); } // Determine screen layout and create DrawSegments if (screenHoncho.PlayersUseSeparateViewports) { switch (GameResources.PlaySession.LocalPlayers.Count) { case 1: mScreenLayout = ViewportLayout.FullScreen; break; case 2: mScreenLayout = GameOptions.PreferHorizontalSplit ? ViewportLayout.HorizontalSplit : ViewportLayout.VerticalSplit; break; case 3: case 4: mScreenLayout = ViewportLayout.FourWaySplit; break; default: throw new InvalidOperationException("Unsupported number of local players."); } foreach (int playerId in GameResources.PlaySession.LocalPlayers.Keys) { HumanView playerView = mViews.Single(v => v.PlayerId == playerId) as HumanView; ICameraProvider cameraPlayerView = playerView as ICameraProvider; if (cameraPlayerView == null) throw new LevelManifestException("When IScreenHoncho.PlayersUseSeparateViewports is true, HumanViews must implement the ICameraProvider interface."); DrawSegment ds = new DrawSegment(mScene, cameraPlayerView.Camera); mDrawSegments.Add(ds); playerView.DrawSegment = ds; } } else { mScreenLayout = ViewportLayout.FullScreen; DrawSegment ds = new DrawSegment(mScene); mDrawSegments.Add(ds); foreach (int playerId in GameResources.PlaySession.LocalPlayers.Keys) { HumanView playerView = mViews.Single(v => v.PlayerId == playerId) as HumanView; playerView.DrawSegment = ds; } } // TODO: P3: Make sure all non-local players are connected mScene.Load(); mActorMan.LoadContent(manifest); // TODO: P3: Make sure all remote clients have loaded their game. foreach (PlayerView view in mViews) { view.Load(); } GameResources.LoadNewLevelDelegate = LoadNewLevel; SharedResources.Game.GraphicsDevice.DeviceLost += DeviceLostHandler; SharedResources.Game.GraphicsDevice.DeviceResetting += DeviceResettingHandler; SharedResources.Game.GraphicsDevice.DeviceReset += DeviceResetHandler; }
public override void LoadContent() { mScene = new Scene(); mActorMan = new ActorManager(mViews); GameResources.ActorManager = mActorMan; LevelManifest manifest; using (ContentManager manifestLoader = new ContentManager(SharedResources.Game.Services, "Content")) { manifest = manifestLoader.Load <LevelManifest>(mRequest.LevelName); manifestLoader.Unload(); // a LevelManifest does not use any Disposable resources, so this is ok. } // The IScreenHoncho tells this gameplay screen how to set up the PlayerViews and DrawSegments required to play this level IScreenHoncho screenHoncho = Activator.CreateInstance(Type.GetType(manifest.ScreenHonchoTypeName)) as IScreenHoncho; mViewContentLoader = new ContentManager(SharedResources.Game.Services, "Content"); foreach (PlayerInfo player in GameResources.PlaySession.Players) { mViews.Add(PlayerViewFactory.Create(player, mRequest.CharacterSelections[player.PlayerId], screenHoncho, mViewContentLoader)); } // Determine screen layout and create DrawSegments if (screenHoncho.PlayersUseSeparateViewports) { switch (GameResources.PlaySession.LocalPlayers.Count) { case 1: mScreenLayout = ViewportLayout.FullScreen; break; case 2: mScreenLayout = GameOptions.PreferHorizontalSplit ? ViewportLayout.HorizontalSplit : ViewportLayout.VerticalSplit; break; case 3: case 4: mScreenLayout = ViewportLayout.FourWaySplit; break; default: throw new InvalidOperationException("Unsupported number of local players."); } foreach (int playerId in GameResources.PlaySession.LocalPlayers.Keys) { HumanView playerView = mViews.Single(v => v.PlayerId == playerId) as HumanView; ICameraProvider cameraPlayerView = playerView as ICameraProvider; if (cameraPlayerView == null) { throw new LevelManifestException("When IScreenHoncho.PlayersUseSeparateViewports is true, HumanViews must implement the ICameraProvider interface."); } DrawSegment ds = new DrawSegment(mScene, cameraPlayerView.Camera); mDrawSegments.Add(ds); playerView.DrawSegment = ds; } } else { mScreenLayout = ViewportLayout.FullScreen; DrawSegment ds = new DrawSegment(mScene); mDrawSegments.Add(ds); foreach (int playerId in GameResources.PlaySession.LocalPlayers.Keys) { HumanView playerView = mViews.Single(v => v.PlayerId == playerId) as HumanView; playerView.DrawSegment = ds; } } // TODO: P3: Make sure all non-local players are connected mScene.Load(); mActorMan.LoadContent(manifest); // TODO: P3: Make sure all remote clients have loaded their game. foreach (PlayerView view in mViews) { view.Load(); } GameResources.LoadNewLevelDelegate = LoadNewLevel; SharedResources.Game.GraphicsDevice.DeviceLost += DeviceLostHandler; SharedResources.Game.GraphicsDevice.DeviceResetting += DeviceResettingHandler; SharedResources.Game.GraphicsDevice.DeviceReset += DeviceResetHandler; }