public UIButton(Scene scene, double x, double y, SpriteBase.SpriteFrame free, SpriteBase.SpriteFrame selected, UIElementGroup grp) : base(scene.HUD, x, y, free.Texture) { _Group = grp; _Group.Add(this); _ToFree = new SpriteAnimation(false, false, free); _ToSelected = new SpriteAnimation(false, false, selected); Refresh += (sender, e) => { var animation = this == _Group.ElementFocused ? _ToSelected : _ToFree; _AnimationFrameIndex = _AnimationCurrent == animation ? _AnimationFrameIndex : animation.FrameCount - _AnimationFrameIndex - 1; _AnimationCurrent = animation; }; OnRefresh(this, new EventArgs()); }
public UIButton(Scene scene, double x, double y, SpriteBase.SpriteFrame free) : this(scene, x, y, free, free) { }
public UIButton(Scene scene, double x, double y, SpriteBase.SpriteFrame free, SpriteBase.SpriteFrame selected) : this(scene, x, y, free, selected, new UIElementGroup()) { }
protected override void InitializeScene() { // Basic perimeter: double x0 = PerimeterOffsetX * TileSize; double y0 = PerimeterOffsetY * TileSize; double recess_switch = -4.0; int chute_right = 3; Gateway gw_chute = null, gw_lower1 = null; PressureSwitch fs_chute, bs_lower1 = null, bs_lower2 = null; for (int i = 0; i < PerimeterX; i++) { if (i == PerimeterX - chute_right) { double x = x0 + TileSize * i; fs_chute = new PressureSwitch (Front, x - 2.0 * TileSize, y0 + TileSize + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw_chute.OnAction (e.Self, new ActionEventArgs (bstate, gw_chute)); }, 2.0); gw_chute = new SmallGateway (Front, x, y0 + TileSize, false); gw_chute.CenterShift (); gw_chute.PositionX += 0.5 * TileSize; gw_chute.PositionY -= 0.5 * (TileSize - 0.5 * gw_chute.SizeY); gw_chute.Theta = -0.5 * Math.PI; continue; } BunkerFloor block = new BunkerFloor2 (this, x0 + TileSize * i, y0); block.PositionY -= block.SizeY; block = new BunkerFloor (this, x0 + TileSize * i, y0); } for (int i = 0; i <= PerimeterY; i++) { var block = new BunkerWall (this, x0 + TileSize * PerimeterX, y0 + TileSize * i); block.TileX = -1.0; block = new BunkerWall (this, x0 - 0.5 * TileSize, y0 + TileSize * (PerimeterY - i)); } for (int i = 0; i < PerimeterX; i++) { var block = new FloorTile (Stage, x0 + TileSize * (PerimeterX - i - 1), y0 + TileSize * PerimeterY); } // Setup background tiles var BackgroundTiles = new TileMap (Background, Perimeter2X, 6, Texture.Get ("sprite_dark_rubble_atlas")); BackgroundTiles.CornerX = x0 - 2 * TileSize; BackgroundTiles.CornerY = y0; BackgroundTiles.PositionZ = 1.0; BackgroundTiles.RandomMap (); BackgroundTiles.Build (); // Store width and height in local variables for easy access int w_i = (int)ViewWidth; int h_i = (int)ViewHeight; // X and Y positioner variables double xp = TileSize * PerimeterOffsetX; double yp = TileSize * PerimeterOffsetY; yp += TileSize; xp += (PerimeterX / 2) * TileSize; // Set up doors: Scene prev_scene = (Scene)Program.MainGame.Scenes ["SceneTwo"]; _DoorToPreviousScene.Destination = prev_scene.DoorToNextScene; // Scene next_scene = (Scene)Scene.Scenes["SceneThree"]; // _DoorToNextScene.Destination = next_scene.DoorToPreviousScene; // _DoorToNextScene.Destination.Position = _DoorToNextScene.Position; var pipe_texture = Texture.Get ("sprite_bg_pipes"); for (int i = 0; i < 5; i++) { var bg_pipes = new SpriteBase (Background, x0 + pipe_texture.Width * i - TileSize, y0 - pipe_texture.Height + TileSize - 6, pipe_texture); bg_pipes.PositionZ = 0.5; } double y1 = y0 - (Perimeter2Y + 1) * TileSize; for (int i = 0; i < Perimeter2X; i++) { BunkerFloor block = new BunkerFloor2 (this, x0 + TileSize * i, y1); block.PositionY -= block.SizeY; if (i > PerimeterX) { var roof = new BunkerWall (this, x0 + TileSize * i, y1 + TileSize * (Perimeter2Y + 1)); roof.Theta = -MathHelper.PiOver2; } if (i > 53 && i < 60) continue; block = new BunkerFloor (this, x0 + TileSize * i, y1); } for (int i = 0; i <= Perimeter2Y; i++) { var block = new BunkerWall (this, x0 + TileSize * Perimeter2X, y1 + TileSize * i); block.TileX = -1.0; block = new BunkerWall (this, x0 - 0.5 * TileSize, y1 + TileSize * (Perimeter2Y - i)); } // Lower area stuff for (int i = 0; i < 8; i++) { new BunkerFloor (this, x0 + TileSize * i, y1 + TileSize); } for (int i = 2; i < 6; i++) { new BunkerFloor (this, x0 + TileSize * i, y1 + 2 * TileSize); } for (int i = 20; i < 38; i++) { new BunkerFloor (this, x0 + TileSize * i, y1 + TileSize); } for (int i = 22; i < 34; i++) { new BunkerFloor (this, x0 + TileSize * i, y1 + 2 * TileSize); } new BunkerFloor (this, x0 + TileSize * 31, y1 + 3.5 * TileSize); for (int i = 28; i < 32; i++) { new BunkerFloor (this, x0 + TileSize * i, y1 + 3 * TileSize); } for (int i = 42; i < 50; i++) { int j; for (j = Perimeter2Y; j > 4; j--) new BunkerFloor (this, x0 + TileSize * i, y1 + (j + 0.5) * TileSize); var block = new BunkerFloor2 (this, x0 + TileSize * i, y1 + (j + 1.5) * TileSize); block.PositionY -= block.SizeY; } { int j; for (j = Perimeter2Y; j > 3; j--) new BunkerFloor (this, x0 + TileSize * 55, y1 + (j + 0.5) * TileSize); var block = new BunkerFloor2 (this, x0 + TileSize * 55, y1 + (j + 1.5) * TileSize); block.PositionY -= block.SizeY; gw_lower1 = new SmallGateway (Front, x0 + TileSize * 55.5, y1, false); bs_lower1 = new ProjectileSwitch (Front, x0 + TileSize * 55, y1 + (j + 0.5) * TileSize, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; bool bstate_bs_lower_2 = bs_lower2.State != SwitchState.Open; gw_lower1.OnAction (e.Self, new ActionEventArgs (bstate || bstate_bs_lower_2, gw_lower1)); }, 5.0); var ep1 = new ExtenderPlatform (Rear, x0 + TileSize * 57, y1 + 0.5 * TileSize, false); new ExtenderPlatform (Rear, x0 + TileSize * 58, y1 + 2.0 * TileSize, ep1); new ExtenderPlatform (Rear, x0 + TileSize * 60, y1 + 3.5 * TileSize, ep1); new ExtenderPlatform (Rear, x0 + TileSize * 62, y1 + 2.5 * TileSize, ep1); new ExtenderPlatform (Rear, x0 + TileSize * 63, y1 + 1.5 * TileSize, ep1); new ExtenderPlatform (Rear, x0 + TileSize * 65, y1 + 1.5 * TileSize, ep1); bs_lower2 = new ProjectileSwitch (Front, x0 + TileSize * 56, y1 + (j - 0.5) * TileSize, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; ep1.OnAction (e.Self, new ActionEventArgs (bstate, ep1)); bool bstate_bs_lower_1 = bs_lower1.State != SwitchState.Open; gw_lower1.OnAction (e.Self, new ActionEventArgs (bstate || bstate_bs_lower_1, gw_lower1)); }, 5.0); bs_lower1.CenterShift (); bs_lower2.CenterShift (); bs_lower2.Theta = MathHelper.Pi; } for (int j = 1; j < 5; j++) { if(j == 2) continue; new BunkerFloor (this, x0 + TileSize * 61, y1 + j * TileSize); } new BunkerFloor (this, x0 + TileSize * 62, y1 + 1 * TileSize); yp = y1 + 2.5 * TileSize; //new BunkerFloor (this, x0 + TileSize * 65, y1 + 1 * TileSize); //new BunkerFloor (this, x0 + TileSize * 66, y1 + 1 * TileSize); new BunkerFloor (this, x0 + TileSize * 66, yp); //new BunkerFloor (this, x0 + TileSize * 67, y1 + 1 * TileSize); new BunkerFloor (this, x0 + TileSize * 67, yp); new BunkerFloor (this, x0 + TileSize * 67, yp + TileSize); yp += 0.5 * TileSize; ExtenderPlatform ep_walkway1_first = new ExtenderPlatform (Rear, x0 + TileSize * 67, yp, false); ExtenderPlatform ep_walkway1_last = null; for(int i = 1; i < 6; i++) ep_walkway1_last = new ExtenderPlatform (Rear, ep_walkway1_first.CornerX + TileSize * i, ep_walkway1_first.CornerY, ep_walkway1_first); new BunkerFloor (this, ep_walkway1_last.CornerX + TileSize, y1 + 1 * TileSize); new BunkerFloor (this, ep_walkway1_last.CornerX + TileSize, y1 + 2 * TileSize); new BunkerFloor (this, ep_walkway1_last.CornerX + TileSize, y1 + 3 * TileSize); new BunkerFloor (this, ep_walkway1_last.CornerX + 2 * TileSize, y1 + 1 * TileSize); new BunkerFloor (this, ep_walkway1_last.CornerX + 2 * TileSize, y1 + 2 * TileSize); new BunkerFloor (this, ep_walkway1_last.CornerX + 3 * TileSize, y1 + 1 * TileSize); var bs_lower3 = new ProjectileSwitch (Front, ep_walkway1_last.CornerX, y1 + 1.0 * TileSize, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; ep_walkway1_first.OnAction (e.Self, new ActionEventArgs (bstate, ep_walkway1_first)); }, 2.0); bs_lower3.CenterShift (); bs_lower3.Theta = -MathHelper.PiOver2; Scene next_scene = (Scene)Program.MainGame.Scenes["SceneFour"]; _DoorToNextScene = new Door(Rear, x0 + TileSize * 76, y1 + TileSize, next_scene.DoorToPreviousScene); _DoorToNextScene.Destination.Corner += _DoorToNextScene.Corner; // Call the base class initializer base.InitializeScene(); }
protected override void InitializeScene() { // Assign base class variables here, before calling the base class initializer PerimeterOffsetX = 87; PerimeterOffsetY = -12; PerimeterX = 32; PerimeterY = 12; double x0 = PerimeterOffsetX * TileSize; double y0 = PerimeterOffsetY * TileSize; // Store width and height in local variables for easy access int w_i = (int)ViewWidth; int h_i = (int)ViewHeight; // X and Y positioner variables double xp = TileSize * PerimeterOffsetX; double yp = TileSize * PerimeterOffsetY; xp += TileSize * PerimeterX * 0.5 - (TileSize * 1); yp -= TileSize *2; // Set up previous door: Scene prev_scene = (Scene)Program.MainGame.Scenes["SceneThree"]; _DoorToPreviousScene.Destination = prev_scene.DoorToNextScene; // Setup background tiles var BackgroundTiles = new TileMap (Background, 48, 24, Texture.Get ("sprite_tile_bg4_atlas")); BackgroundTiles.PositionX = (PerimeterOffsetX - 18) * TileSize; BackgroundTiles.PositionY = (PerimeterOffsetY ) * TileSize; BackgroundTiles.PositionZ = 1.0; BackgroundTiles.RandomMap (); BackgroundTiles.Build (); // Control key indicators (info graphics) var f_infogfx = new SpriteBase(Rear, xp - 2 * TileSize, yp, Texture.Get("sprite_infogfx_key_f")); // First Set of platforms double ep2x = xp - TileSize * 20; double ep2y = yp + TileSize; // Top platform set ExtenderPlatform last_platform_2 = new ExtenderPlatform (Stage, ep2x + TileSize * (5), ep2y + TileSize * 9, true); for (int i = 1; i < 12; i++) { new ExtenderPlatform (Stage, ep2x + TileSize * (5 + i), ep2y + TileSize * 9, last_platform_2); } var bs_lower0 = new ProjectileSwitch (Front, ep2x + TileSize * (16.5), ep2y + TileSize * (11 + 0.5) , (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_2.OnAction (e.Self, new ActionEventArgs (bstate, last_platform_2)); //bool bstate_bs_lower_0 = last_platform_2.State != SwitchState.Open; //gw_lower1.OnAction (e.Self, new ActionEventArgs (bstate || bstate_bs_lower_0, gw_lower1)); }, 0.1); // Platform set below top ExtenderPlatform last_platform_3 = new ExtenderPlatform (Stage, ep2x + TileSize * (5), ep2y + TileSize * 5, true); for (int i = 1; i < 12; i++) { new ExtenderPlatform (Stage, ep2x + TileSize * (5 + i), ep2y + TileSize * 5, last_platform_3); } var bs_lower1 = new ProjectileSwitch (Front, ep2x + TileSize * (22.5), ep2y + TileSize * (7 + 0.5) , (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_3.OnAction (e.Self, new ActionEventArgs (bstate, last_platform_3)); //bool bstate_bs_lower_0 = last_platform_2.State != SwitchState.Open; //gw_lower1.OnAction (e.Self, new ActionEventArgs (bstate || bstate_bs_lower_0, gw_lower1)); }, 0.1); double recess_switch = -4.0; double recess_gw = -2.0; for (int i = 0; i < 12; i++) { var spidey = new Spidey (Stage, ep2x + (5 + i) * TileSize, ep2y + TileSize * 6); spidey.Body.BodyType = BodyType.Dynamic; } // Gateways var gw1 = new Gateway (Front, xp - TileSize * 3, yp + 3 * TileSize, false); var gw2 = new Gateway (Front, xp + TileSize * 3, yp + 3 * TileSize, false); // Walls above gateways for (int i = 2; i < 5; i++) { new FloorTile (Rear, gw1.CornerX, gw1.CornerY + (i) * TileSize + 8); } for (int i = 6; i < PerimeterY - 1; i++) { new FloorTile (Rear, gw1.CornerX, gw1.CornerY + (i) * TileSize + 8); } for (int i = 2; i < PerimeterY - 5; i++) { new FloorTile (Rear, gw2.CornerX, gw2.CornerY + (i) * TileSize + 8); } new FloorTile (Rear, gw2.CornerX - TileSize * 5, gw2.CornerY + 2 * TileSize + 8); new FloorTile (Rear, gw2.CornerX - TileSize * 4, gw2.CornerY + 2 * TileSize + 8); var ft_door = new FloorTile (Rear, gw2.CornerX - TileSize * 3, gw2.CornerY + 2 * TileSize + 8); new FloorTile (Rear, gw2.CornerX - TileSize * 2, gw2.CornerY + 2 * TileSize + 8); new FloorTile (Rear, gw2.CornerX - TileSize, gw2.CornerY + 2 * TileSize + 8); var fs10 = new PressureSwitch (Front, gw1.CornerX + TileSize, gw1.CornerY + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw1.OnAction (e.Self, new ActionEventArgs (bstate, gw1)); }); var fs11 = new PressureSwitch (Front, gw1.CornerX - TileSize, gw1.CornerY + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw1.OnAction (e.Self, new ActionEventArgs (bstate, gw1)); }, fs10); var fs20 = new PressureSwitch (Front, gw2.CornerX - TileSize, gw2.CornerY + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction (e.Self, new ActionEventArgs (bstate, gw2)); }); var fs21 = new PressureSwitch (Front, gw2.CornerX + TileSize, gw2.CornerY + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction (e.Self, new ActionEventArgs (bstate, gw2)); }, fs20); xp = fs21.CornerX + 2 * TileSize; yp += TileSize; xp += TileSize; var ft_room_r = new FloorTile (Stage, xp, yp + TileSize * 2); for (int i = 1; i < 8; i++) new FloorTile (Stage, xp + i * TileSize, yp + TileSize * 2); for (int i = 0; i < 4; i++) new FloorTile (Stage, xp + (i + 1) * TileSize, yp + TileSize * 3); //yp += 2 * TileSize; //xp += 4 * TileSize; for (int i = 0; i < 6; i++) { var spidey = new Spidey (Stage, xp + (5 + i) * TileSize, yp + TileSize * (3)); spidey.Body.BodyType = BodyType.Dynamic; } ExtenderPlatform last_platform_0 = null; ExtenderPlatform last_platform_1 = null; for (int i = 0; i < 3; i++) { last_platform_0 = new ExtenderPlatform (Stage, xp + TileSize * (5 + i), yp + TileSize * (4.5 + i), last_platform_0); } xp -= 2 * TileSize; yp += TileSize; for (int i = 0; i < 9; i++) { last_platform_1 = new ExtenderPlatform (Stage, xp + TileSize * (-1 + i), yp + TileSize * (7), last_platform_1); } var fs30 = new PressureSwitch (Front, ft_room_r.CornerX, ft_room_r.CornerY + TileSize + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_1.OnAction (e.Self, new ActionEventArgs (bstate, last_platform_1)); }, 6.0); var bs_lower2 = new ProjectileSwitch (Front, ep2x + TileSize * (23.55), ep2y + TileSize * (7 + 0.5) , (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_0.OnAction (e.Self, new ActionEventArgs (bstate, last_platform_0)); }, 3.0); //bs_lower2.CenterShift(); bs_lower2.Theta += MathHelper.Pi; // Set up next door: /*( Scene next_scene = (Scene)Program.MainGame.Scenes["SceneThree"]; _DoorToNextScene.Destination = next_scene.DoorToPreviousScene; _DoorToNextScene.PositionX = last_platform_1.PositionX; _DoorToNextScene.CornerY = yp += last_platform_1.SizeY; // Update next scene's door position _DoorToNextScene.Destination.Position = _DoorToNextScene.Position; */ Scene next_scene = (Scene)Program.MainGame.Scenes["SceneFive"]; //Scene next_scene = (Scene)Program.MainGame.Scenes["SceneSix"]; //_DoorToNextScene = new Door(Rear, x0 + TileSize * 76, y1 + TileSize, next_scene.DoorToPreviousScene); _DoorToNextScene = new Door(Rear, ft_door.CornerX, ft_door.CornerY + TileSize, next_scene.DoorToPreviousScene); _DoorToNextScene.Destination.Position += _DoorToNextScene.Position; // Call the base class initializer base.InitializeScene (); }
public override void InitializeScene() { WinThing = new SpriteBase(HUD, ViewWidth / 2.0, ViewHeight / 2.0, Texture.Get ("sprite_win")).CenterShift(); //WinThing.AnimationDefault.Sound = Sound.Get("win"); base.InitializeScene(); }
public override void InitializeScene() { // Assign base class variables here, before calling the base class initializer PerimeterOffsetX = -2; PerimeterOffsetY = 0; PerimeterX = 32; PerimeterY = 12; // Store width and height in local variables for easy access int w_i = (int)ViewWidth; int h_i = (int)ViewHeight; // X and Y positioner variables double xp = TileSize * PerimeterOffsetX; double yp = TileSize * PerimeterOffsetY; xp += TileSize * PerimeterX * 0.5; yp += TileSize; // Set up previous door: Scene prev_scene = (Scene)_Game.Scenes["SceneOne"]; _DoorToPreviousScene.Destination = prev_scene.DoorToNextScene; // Setup background tiles var BackgroundTiles = new TileMap(Background, 48, 24, Texture.Get("sprite_tile_bg2_atlas")); BackgroundTiles.PositionX = (PerimeterOffsetX - 9) * TileSize; BackgroundTiles.PositionY = (PerimeterOffsetY - 4) * TileSize; BackgroundTiles.Parallax = 1.0; BackgroundTiles.RandomMap(); BackgroundTiles.Build(); // Control key indicators (info graphics) var infogfx_texture = Texture.Get("sprite_infogfx_cabinet_buttons"); var f_infogfx = new SpriteBase(Rear, xp - 2 * TileSize, yp, infogfx_texture).SetRegion("use_equipped_item"); // Get cross-scene variables Scene previous_scene = (Scene)_Game.Scenes["SceneOne"]; double recess_switch = -4.0; double recess_gw = -2.0; for (int i = 0; i < 5; i++) { var spidey = new Spidey(Stage, xp - (5 + 0.25 * i) * TileSize, yp); } // Gateways var gw1 = new Gateway(Front, xp - TileSize * 3, yp + recess_gw, false); var gw2 = new Gateway(Front, xp + TileSize * 3, yp + recess_gw, false); // Walls above gateways for (int i = 2; i < PerimeterY - 1; i++) { new FloorTile(Rear, gw1.CornerX, gw1.CornerY + (i) * TileSize + 8); new FloorTile(Rear, gw2.CornerX, gw2.CornerY + (i) * TileSize + 8); } var fs10 = new PressureSwitch(Front, gw1.CornerX + TileSize, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw1.OnAction(e.Self, new ActionEventArgs(bstate, gw1)); }); var fs11 = new PressureSwitch(Front, gw1.CornerX - TileSize, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw1.OnAction(e.Self, new ActionEventArgs(bstate, gw1)); }, fs10); var fs20 = new PressureSwitch(Front, gw2.CornerX - TileSize, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction(e.Self, new ActionEventArgs(bstate, gw2)); }); var fs21 = new PressureSwitch(Front, gw2.CornerX + TileSize, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction(e.Self, new ActionEventArgs(bstate, gw2)); }, fs20); xp = fs21.CornerX + 2 * TileSize; var ft_room_r = new FloorTile(Stage, xp, yp); for (int i = 1; i < 8; i++) { new FloorTile(Stage, xp + i * TileSize, yp); } yp += TileSize; xp += TileSize; for (int i = 0; i < 4; i++) { new FloorTile(Stage, xp + (i + 1) * TileSize, yp); } //yp += 2 * TileSize; xp += 4 * TileSize; ExtenderPlatform last_platform_0 = null; ExtenderPlatform last_platform_1 = null; for (int i = 0; i < 3; i++) { last_platform_0 = new ExtenderPlatform(Stage, xp += TileSize, yp += TileSize, last_platform_0); } xp -= 2 * TileSize; yp += TileSize; for (int i = 0; i < 6; i++) { last_platform_1 = new ExtenderPlatform(Stage, xp -= TileSize, yp, true); } // Set up next door: Scene next_scene = (Scene)_Game.Scenes["SceneThree"]; _DoorToNextScene.Destination = next_scene.DoorToPreviousScene; _DoorToNextScene.PositionX = last_platform_1.PositionX; _DoorToNextScene.CornerY = yp += last_platform_1.SizeY; // Update next scene's door position relative to its -initial- position (set with constructor/instantiation) _DoorToNextScene.Destination.Corner += _DoorToNextScene.Corner; var fs30 = new PressureSwitch(Front, ft_room_r.CornerX + TileSize, ft_room_r.CornerY + TileSize + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_0.OnAction(e.Self, new ActionEventArgs(bstate, last_platform_0)); }, 5.0); // Call the base class initializer base.InitializeScene(); }
protected override void InitializeScene() { // Assign base class variables here, before calling the base class initializer PerimeterOffsetX = -2; PerimeterOffsetY = 0; PerimeterX = 32; PerimeterY = 12; // Store width and height in local variables for easy access int w_i = (int)ViewWidth; int h_i = (int)ViewHeight; // X and Y positioner variables double xp = TileSize * PerimeterOffsetX; double yp = TileSize * PerimeterOffsetY; xp += TileSize * PerimeterX * 0.5; yp += TileSize; // Set up previous door: Scene prev_scene = (Scene)Program.MainGame.Scenes["SceneOne"]; _DoorToPreviousScene.Destination = prev_scene.DoorToNextScene; // Setup background tiles var BackgroundTiles = new TileMap (Background, 48, 24, Texture.Get ("sprite_tile_bg2_atlas")); BackgroundTiles.PositionX = (PerimeterOffsetX - 9) * TileSize; BackgroundTiles.PositionY = (PerimeterOffsetY - 4) * TileSize; BackgroundTiles.PositionZ = 1.0; BackgroundTiles.RandomMap (); BackgroundTiles.Build (); // Control key indicators (info graphics) var infogfx_texture = Texture.Get("sprite_infogfx_cabinet_buttons"); var f_infogfx = new SpriteBase(Rear, xp - 2 * TileSize, yp, infogfx_texture).SetRegion("use_equipped_item"); // Get cross-scene variables Scene previous_scene = (Scene)Program.MainGame.Scenes["SceneOne"]; double recess_switch = -4.0; double recess_gw = -2.0; for (int i = 0; i < 5; i++) { var spidey = new Spidey (Stage, xp - (5 + 0.25 * i) * TileSize, yp); spidey.Body.BodyType = BodyType.Dynamic; } // Gateways var gw1 = new Gateway (Front, xp - TileSize * 3, yp + recess_gw, false); var gw2 = new Gateway (Front, xp + TileSize * 3, yp + recess_gw, false); // Walls above gateways for (int i = 2; i < PerimeterY - 1; i++) { new FloorTile (Rear, gw1.CornerX, gw1.CornerY + (i) * TileSize + 8); new FloorTile (Rear, gw2.CornerX, gw2.CornerY + (i) * TileSize + 8); } var fs10 = new PressureSwitch (Front, gw1.CornerX + TileSize, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw1.OnAction (e.Self, new ActionEventArgs (bstate, gw1)); }); var fs11 = new PressureSwitch (Front, gw1.CornerX - TileSize, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw1.OnAction (e.Self, new ActionEventArgs (bstate, gw1)); }, fs10); var fs20 = new PressureSwitch (Front, gw2.CornerX - TileSize, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction (e.Self, new ActionEventArgs (bstate, gw2)); }); var fs21 = new PressureSwitch (Front, gw2.CornerX + TileSize, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction (e.Self, new ActionEventArgs (bstate, gw2)); }, fs20); xp = fs21.CornerX + 2 * TileSize; var ft_room_r = new FloorTile (Stage, xp, yp); for (int i = 1; i < 8; i++) new FloorTile (Stage, xp + i * TileSize, yp); yp += TileSize; xp += TileSize; for (int i = 0; i < 4; i++) new FloorTile (Stage, xp + (i + 1) * TileSize, yp); //yp += 2 * TileSize; xp += 4 * TileSize; ExtenderPlatform last_platform_0 = null; ExtenderPlatform last_platform_1 = null; for (int i = 0; i < 3; i++) { last_platform_0 = new ExtenderPlatform (Stage, xp += TileSize, yp += TileSize, last_platform_0); } xp -= 2 * TileSize; yp += TileSize; for (int i = 0; i < 6; i++) { last_platform_1 = new ExtenderPlatform (Stage, xp -= TileSize, yp, true); } // Set up next door: Scene next_scene = (Scene)Program.MainGame.Scenes["SceneThree"]; _DoorToNextScene.Destination = next_scene.DoorToPreviousScene; _DoorToNextScene.PositionX = last_platform_1.PositionX; _DoorToNextScene.CornerY = yp += last_platform_1.SizeY; // Update next scene's door position relative to its -initial- position (set with constructor/instantiation) _DoorToNextScene.Destination.Corner += _DoorToNextScene.Corner; var fs30 = new PressureSwitch (Front, ft_room_r.CornerX + TileSize, ft_room_r.CornerY + TileSize + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_0.OnAction (e.Self, new ActionEventArgs (bstate, last_platform_0)); }, 5.0); // Call the base class initializer base.InitializeScene (); }
public override void InitializeScene() { // Basic perimeter: double x0 = PerimeterOffsetX * TileSize; double y0 = PerimeterOffsetY * TileSize; double recess_switch = -4.0; int chute_right = 3; Gateway gw_chute = null, gw_lower1 = null; PressureSwitch fs_chute, bs_lower1 = null, bs_lower2 = null; for (int i = 0; i < PerimeterX; i++) { if (i == PerimeterX - chute_right) { double x = x0 + TileSize * i; fs_chute = new PressureSwitch(Front, x - 2.0 * TileSize, y0 + TileSize + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw_chute.OnAction(e.Self, new ActionEventArgs(bstate, gw_chute)); }, 2.0); gw_chute = new SmallGateway(Front, x, y0 + TileSize, false); gw_chute.CenterShift(); gw_chute.PositionX += 0.5 * TileSize; gw_chute.PositionY -= 0.5 * (TileSize - 0.5 * gw_chute.SizeY); gw_chute.Theta = -0.5 * Math.PI; continue; } BunkerFloor block = new BunkerFloor2(this, x0 + TileSize * i, y0); block.PositionY -= block.SizeY; block = new BunkerFloor(this, x0 + TileSize * i, y0); } for (int i = 0; i <= PerimeterY; i++) { var block = new BunkerWall(this, x0 + TileSize * PerimeterX, y0 + TileSize * i); block.TileX = -1.0; block = new BunkerWall(this, x0 - 0.5 * TileSize, y0 + TileSize * (PerimeterY - i)); } for (int i = 0; i < PerimeterX; i++) { var block = new FloorTile(Stage, x0 + TileSize * (PerimeterX - i - 1), y0 + TileSize * PerimeterY); } // Setup background tiles var BackgroundTiles = new TileMap(Background, Perimeter2X, 6, Texture.Get("sprite_dark_rubble_atlas")); BackgroundTiles.CornerX = x0 - 2 * TileSize; BackgroundTiles.CornerY = y0; BackgroundTiles.Parallax = 1.0; BackgroundTiles.RandomMap(); BackgroundTiles.Build(); // Store width and height in local variables for easy access int w_i = (int)ViewWidth; int h_i = (int)ViewHeight; // X and Y positioner variables double xp = TileSize * PerimeterOffsetX; double yp = TileSize * PerimeterOffsetY; yp += TileSize; xp += (PerimeterX / 2) * TileSize; // Set up doors: Scene prev_scene = (Scene)_Game.Scenes ["SceneTwo"]; _DoorToPreviousScene.Destination = prev_scene.DoorToNextScene; // Scene next_scene = (Scene)Scene.Scenes["SceneThree"]; // _DoorToNextScene.Destination = next_scene.DoorToPreviousScene; // _DoorToNextScene.Destination.Position = _DoorToNextScene.Position; var pipe_texture = Texture.Get("sprite_bg_pipes"); for (int i = 0; i < 5; i++) { var bg_pipes = new SpriteBase(Background, x0 + pipe_texture.Width * i - TileSize, y0 - pipe_texture.Height + TileSize - 6, pipe_texture); bg_pipes.Parallax = 0.5; } double y1 = y0 - (Perimeter2Y + 1) * TileSize; for (int i = 0; i < Perimeter2X; i++) { BunkerFloor block = new BunkerFloor2(this, x0 + TileSize * i, y1); block.PositionY -= block.SizeY; if (i > PerimeterX) { var roof = new BunkerWall(this, x0 + TileSize * i, y1 + TileSize * (Perimeter2Y + 1)); roof.Theta = -MathHelper.PiOver2; } if (i > 53 && i < 60) { continue; } block = new BunkerFloor(this, x0 + TileSize * i, y1); } for (int i = 0; i <= Perimeter2Y; i++) { var block = new BunkerWall(this, x0 + TileSize * Perimeter2X, y1 + TileSize * i); block.TileX = -1.0; block = new BunkerWall(this, x0 - 0.5 * TileSize, y1 + TileSize * (Perimeter2Y - i)); } // Lower area stuff for (int i = 0; i < 8; i++) { new BunkerFloor(this, x0 + TileSize * i, y1 + TileSize); } for (int i = 2; i < 6; i++) { new BunkerFloor(this, x0 + TileSize * i, y1 + 2 * TileSize); } for (int i = 20; i < 38; i++) { new BunkerFloor(this, x0 + TileSize * i, y1 + TileSize); } for (int i = 22; i < 34; i++) { new BunkerFloor(this, x0 + TileSize * i, y1 + 2 * TileSize); } new BunkerFloor(this, x0 + TileSize * 31, y1 + 3.5 * TileSize); for (int i = 28; i < 32; i++) { new BunkerFloor(this, x0 + TileSize * i, y1 + 3 * TileSize); } for (int i = 42; i < 50; i++) { int j; for (j = Perimeter2Y; j > 4; j--) { new BunkerFloor(this, x0 + TileSize * i, y1 + (j + 0.5) * TileSize); } var block = new BunkerFloor2(this, x0 + TileSize * i, y1 + (j + 1.5) * TileSize); block.PositionY -= block.SizeY; } { int j; for (j = Perimeter2Y; j > 3; j--) { new BunkerFloor(this, x0 + TileSize * 55, y1 + (j + 0.5) * TileSize); } var block = new BunkerFloor2(this, x0 + TileSize * 55, y1 + (j + 1.5) * TileSize); block.PositionY -= block.SizeY; gw_lower1 = new SmallGateway(Front, x0 + TileSize * 55.5, y1, false); bs_lower1 = new ProjectileSwitch(Front, x0 + TileSize * 55, y1 + (j + 0.5) * TileSize, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; bool bstate_bs_lower_2 = bs_lower2.State != SwitchState.Open; gw_lower1.OnAction(e.Self, new ActionEventArgs(bstate || bstate_bs_lower_2, gw_lower1)); }, 5.0); var ep1 = new ExtenderPlatform(Rear, x0 + TileSize * 57, y1 + 0.5 * TileSize, false); new ExtenderPlatform(Rear, x0 + TileSize * 58, y1 + 2.0 * TileSize, ep1); new ExtenderPlatform(Rear, x0 + TileSize * 60, y1 + 3.5 * TileSize, ep1); new ExtenderPlatform(Rear, x0 + TileSize * 62, y1 + 2.5 * TileSize, ep1); new ExtenderPlatform(Rear, x0 + TileSize * 63, y1 + 1.5 * TileSize, ep1); new ExtenderPlatform(Rear, x0 + TileSize * 65, y1 + 1.5 * TileSize, ep1); bs_lower2 = new ProjectileSwitch(Front, x0 + TileSize * 56, y1 + (j - 0.5) * TileSize, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; ep1.OnAction(e.Self, new ActionEventArgs(bstate, ep1)); bool bstate_bs_lower_1 = bs_lower1.State != SwitchState.Open; gw_lower1.OnAction(e.Self, new ActionEventArgs(bstate || bstate_bs_lower_1, gw_lower1)); }, 5.0); bs_lower1.CenterShift(); bs_lower2.CenterShift(); bs_lower2.Theta = MathHelper.Pi; } for (int j = 1; j < 5; j++) { if (j == 2) { continue; } new BunkerFloor(this, x0 + TileSize * 61, y1 + j * TileSize); } new BunkerFloor(this, x0 + TileSize * 62, y1 + 1 * TileSize); yp = y1 + 2.5 * TileSize; //new BunkerFloor (this, x0 + TileSize * 65, y1 + 1 * TileSize); //new BunkerFloor (this, x0 + TileSize * 66, y1 + 1 * TileSize); new BunkerFloor(this, x0 + TileSize * 66, yp); //new BunkerFloor (this, x0 + TileSize * 67, y1 + 1 * TileSize); new BunkerFloor(this, x0 + TileSize * 67, yp); new BunkerFloor(this, x0 + TileSize * 67, yp + TileSize); yp += 0.5 * TileSize; ExtenderPlatform ep_walkway1_first = new ExtenderPlatform(Rear, x0 + TileSize * 67, yp, false); ExtenderPlatform ep_walkway1_last = null; for (int i = 1; i < 6; i++) { ep_walkway1_last = new ExtenderPlatform(Rear, ep_walkway1_first.CornerX + TileSize * i, ep_walkway1_first.CornerY, ep_walkway1_first); } new BunkerFloor(this, ep_walkway1_last.CornerX + TileSize, y1 + 1 * TileSize); new BunkerFloor(this, ep_walkway1_last.CornerX + TileSize, y1 + 2 * TileSize); new BunkerFloor(this, ep_walkway1_last.CornerX + TileSize, y1 + 3 * TileSize); new BunkerFloor(this, ep_walkway1_last.CornerX + 2 * TileSize, y1 + 1 * TileSize); new BunkerFloor(this, ep_walkway1_last.CornerX + 2 * TileSize, y1 + 2 * TileSize); new BunkerFloor(this, ep_walkway1_last.CornerX + 3 * TileSize, y1 + 1 * TileSize); var bs_lower3 = new ProjectileSwitch(Front, ep_walkway1_last.CornerX, y1 + 1.0 * TileSize, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; ep_walkway1_first.OnAction(e.Self, new ActionEventArgs(bstate, ep_walkway1_first)); }, 2.0); bs_lower3.CenterShift(); bs_lower3.Theta = -MathHelper.PiOver2; Scene next_scene = (Scene)_Game.Scenes["SceneFour"]; _DoorToNextScene = new Door(Rear, x0 + TileSize * 76, y1 + TileSize, next_scene.DoorToPreviousScene); _DoorToNextScene.Destination.Corner += _DoorToNextScene.Corner; // Call the base class initializer base.InitializeScene(); }
public override void InitializeScene() { // Assign base class variables here, before calling the base class initializer PerimeterOffsetX = 0; PerimeterOffsetY = 0; // Store width and height in local variables for easy access int w_i = (int)ViewWidth; int h_i = (int)ViewHeight; // X and Y positioner variables double xp = TileSize * PerimeterOffsetX; double yp = TileSize * PerimeterOffsetY; // Set up doors: //Scene prev_scene = (Scene)Scene.Scenes["SceneOne"]; //_DoorToPreviousScene.Destination = prev_scene.DoorToNextScene; Scene next_scene = (Scene)_Game.Scenes["SceneTwo"]; _DoorToNextScene.Destination = next_scene.DoorToPreviousScene; _DoorToNextScene.Destination.Position = _DoorToNextScene.Position; yp += TileSize; // Setup background tiles var BackgroundTiles = new TileMap (Background, 36, 16, Texture.Get ("sprite_tile_bg_atlas")); BackgroundTiles.PositionX = (PerimeterOffsetX - 9) * TileSize; BackgroundTiles.PositionY = (PerimeterOffsetY - 4) * TileSize; BackgroundTiles.Parallax = 1.0; BackgroundTiles.RandomMap (); BackgroundTiles.Build (); double recess_switch = -4.0; double recess_gw = -2.0; // Stage elements var ft0 = new FloorTile (Rear, xp, yp); FirstTile = ft0; new RadioProp(Rear, xp, yp + TileSize); var ft1 = new FloorTile (Rear, xp + TileSize, yp); var ft2 = new FloorTile (Rear, xp + 2 * TileSize, yp - TileSize * 0.5); // Control key indicators (info graphics) var infogfx_texture = Texture.Get("sprite_infogfx_cabinet_buttons"); var a_infogfx = new SpriteBase(Rear, ft1.CornerX + TileSize, ft1.CornerY + TileSize, infogfx_texture).SetRegion("left"); var d_infogfx = new SpriteBase(Rear, a_infogfx.CornerX + TileSize, a_infogfx.CornerY, infogfx_texture).SetRegion ("right"); var w_infogfx = new SpriteBase(Rear, _DoorToNextScene.PositionX, _DoorToNextScene.CornerY + _DoorToNextScene.SizeY + 4, infogfx_texture).SetRegion ("do_action"); // Gateways var gw1 = new Gateway (Front, xp + TileSize * 4, yp + recess_gw, false); var gw2 = new Gateway (Front, xp + TileSize * 10, yp + recess_gw, false); var fs00 = new PressureSwitch (Front, xp + TileSize * 3, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw1.OnAction (e.Self, new ActionEventArgs (bstate, gw1)); //Console.WriteLine("{0} acted on {1}: {2}", sender, e.Self, e.Info); }); var fs01 = new PressureSwitch (Front, xp + TileSize * 5, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw1.OnAction (e.Self, new ActionEventArgs (bstate, gw1)); //Console.WriteLine("{0} acted on {1}: {2}", sender, e.Self, e.Info); }, fs00); var fs10 = new PressureSwitch (Front, xp + TileSize * 7, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction (e.Self, new ActionEventArgs (bstate, gw2)); //Console.WriteLine("{0} acted on {1}: {2}", sender, e.Self, e.Info); }, 0.2); var fs11 = new PressureSwitch (Front, xp + TileSize * 9 + 14, yp + recess_switch + TileSize * 3, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction (e.Self, new ActionEventArgs (bstate, gw2)); //Console.WriteLine("{0} acted on {1}: {2}", sender, e.Self, e.Info); }, fs10, 3.0); var space_infogfx = new SpriteBase (Rear, xp + fs11.PositionX - 128, yp + fs10.PositionY, infogfx_texture).SetRegion("jump"); fs11.Theta = Math.PI * 0.5; var fs12 = new PressureSwitch (Front, xp + TileSize * 12, yp + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction (e.Self, new ActionEventArgs (bstate, gw2)); //Console.WriteLine("{0} acted on {1}: {2}", sender, e.Self, e.Info); }, fs11); // Walls above gateways for (int i = 0; i < 5; i++) { new FloorTile (Rear, gw1.CornerX, gw1.CornerY + (2 + i) * TileSize + 8); new FloorTile (Rear, gw2.CornerX, gw2.CornerY + (2 + i) * TileSize + 8); } //var TestDialog = new Dialog(HUD, "Test", null); //TestDialog.RenderSet = HUD; //TestDialog.PauseTime = 1.0f; // Call the base class initializer base.InitializeScene (); }
protected override void InitializeScene() { // Assign base class variables here, before calling the base class initializer double x0 = PerimeterOffsetX * TileSize; double y0 = PerimeterOffsetY * TileSize; PerimeterOffsetX = 100; PerimeterOffsetY = -8; PerimeterX = 8; PerimeterY = 40; // Store width and height in local variables for easy access int w_i = (int)ViewWidth; int h_i = (int)ViewHeight; // X and Y positioner variables double xp = TileSize * PerimeterOffsetX; double yp = TileSize * PerimeterOffsetY; xp += TileSize * PerimeterX - (TileSize * 1); yp -= TileSize * 3; // Set up previous door: Scene prev_scene = (Scene)Program.MainGame.Scenes["SceneFive"]; _DoorToPreviousScene.Destination = prev_scene.DoorToNextScene; // Setup background tiles var BackgroundTiles = new TileMap (Background, 48, 24, Texture.Get ("sprite_tile_bg2_atlas")); BackgroundTiles.PositionX = (PerimeterOffsetX - 24) * TileSize; BackgroundTiles.PositionY = (PerimeterOffsetY - 4) * TileSize; BackgroundTiles.PositionZ = 1.0; BackgroundTiles.RandomMap (); BackgroundTiles.Build (); // Control key indicators (info graphics) var f_infogfx = new SpriteBase(Rear, xp - 2 * TileSize, yp, Texture.Get("sprite_infogfx_key_f")); // Top platform set ExtenderPlatform last_platform_0 = new ExtenderPlatform (Stage, xp + TileSize * (-3), yp + TileSize * 6, true); new ExtenderPlatform (Stage, xp + TileSize * (6), yp + TileSize * -2, last_platform_0); var bs_lower0 = new ProjectileSwitch (Front, xp + TileSize * (16.5), yp + TileSize * (11 + 0.5) , (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_0.OnAction (e.Self, new ActionEventArgs (bstate, last_platform_0)); //bool bstate_bs_lower_0 = last_platform_2.State != SwitchState.Open; //gw_lower1.OnAction (e.Self, new ActionEventArgs (bstate || bstate_bs_lower_0, gw_lower1)); }, 0.1); // Platform set below top ExtenderPlatform last_platform_1 = new ExtenderPlatform (Stage, xp + TileSize * (0), yp + TileSize * 8, true); new ExtenderPlatform (Stage, xp + TileSize * (1), yp + TileSize * 8, last_platform_1); var bs_lower1 = new ProjectileSwitch (Front, xp + TileSize * (22.5), yp + TileSize * (7 + 0.5) , (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_1.OnAction (e.Self, new ActionEventArgs (bstate, last_platform_1)); //bool bstate_bs_lower_0 = last_platform_2.State != SwitchState.Open; //gw_lower1.OnAction (e.Self, new ActionEventArgs (bstate || bstate_bs_lower_0, gw_lower1)); }, 0.1); double recess_switch = -4.0; double recess_gw = -2.0; var i = 8; new FloorTile (Rear, xp - TileSize * 1, yp + 2 * TileSize + 8 + i); new FloorTile (Rear, xp - TileSize * 0, yp + 2 * TileSize + 8 + i); var ft_door = new FloorTile (Rear, xp + TileSize * 1, yp + 2 * TileSize + 8 + i); new FloorTile (Rear, xp + TileSize * 2, yp + 2 * TileSize + 8 + i); //new FloorTile (Rear, xp + TileSize, yp + 2 * TileSize + 8); //Scene next_scene = (Scene)Program.MainGame.Scenes["SceneSeven"]; //_DoorToNextScene = new Door(Rear, x0 + TileSize * 76, y1 + TileSize, next_scene.DoorToPreviousScene); //_DoorToNextScene = new Door(Rear, ft_door.CornerX, ft_door.CornerY + TileSize, next_scene.DoorToPreviousScene); //_DoorToNextScene.Destination.Position += _DoorToNextScene.Position; // Call the base class initializer base.InitializeScene (); }
public override void InitializeScene() { WinThing = new SpriteBase(HUD, ViewWidth / 2.0, ViewHeight / 2.0, Texture.Get("sprite_win")).CenterShift(); //WinThing.AnimationDefault.Sound = Sound.Get("win"); base.InitializeScene(); }
public override void InitializeScene() { // Set up doors: //Scene prev_scene = (Scene)Scene.Scenes["SceneOne"]; //_DoorToPreviousScene.Destination = prev_scene.DoorToNextScene; Scene next_scene = (Scene)_Game.Scenes["SceneTwo"]; //_DoorToNextScene.Destination = next_scene.DoorToPreviousScene; //_DoorToNextScene.Destination.Position = _DoorToNextScene.Position; var headquarters = new HeadquartersBuilding(Rear, 0.0, 0.0); // Setup background // Setup background tiles var BackgroundTiles = new TileMap(Background, 24, 1, Texture.Get("sprite_blue_sky")); BackgroundTiles.PositionX = -9 * TileSize; BackgroundTiles.PositionY = 0.0; BackgroundTiles.Parallax = 100; BackgroundTiles.RandomMap(); BackgroundTiles.Build(); double far_x = 0.0; var BackgroundBuildings = new List <BoringBuilding>(); { double x_o = headquarters.CornerX + headquarters.SizeX; for (int i = 0; i < 20; i++) { var b = new BoringBuilding(this, x_o, 0.0); BackgroundBuildings.Add(b); x_o += b.SizeX; } far_x = x_o; } { double x_o = -128; while (x_o < far_x) { var b = new SideWalkTile(Stage, x_o, -TileSize); x_o += b.SizeX; if (FirstTile == null) { FirstTile = b; } } } // Control key indicators (info graphics) var infogfx_texture = Texture.Get("sprite_infogfx_cabinet_buttons"); var a_infogfx = new SpriteBase(Rear, 4 * TileSize, 2 * TileSize, infogfx_texture).SetRegion("left"); var d_infogfx = new SpriteBase(Rear, a_infogfx.CornerX + TileSize, a_infogfx.CornerY, infogfx_texture).SetRegion("right"); //var w_infogfx = new SpriteBase(Rear, _DoorToNextScene.PositionX, _DoorToNextScene.CornerY + _DoorToNextScene.SizeY + 4, infogfx_texture).SetRegion("do_action"); int[,] map = new int[, ] { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; // Tiles int width = map.GetLength(1); int height = map.Length / width; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { switch (map [y, x]) { case 1: new FloorTile(Stage, x * TileSize, -1 * y * TileSize + height * TileSize - 16); break; case 2: new PolarBear(Stage, x * TileSize, -1 * y * TileSize + height * TileSize); break; case 3: new Hydrant(Stage, x * TileSize, -1 * y * TileSize + height * TileSize); break; case 4: new FoodItem(Stage, x * TileSize, -1 * y * TileSize + height * TileSize, x + y); break; } } } // Call the base class initializer base.InitializeScene(); }
public override void InitializeScene() { // Assign base class variables here, before calling the base class initializer PerimeterOffsetX = 87; PerimeterOffsetY = -12; PerimeterX = 32; PerimeterY = 12; double x0 = PerimeterOffsetX * TileSize; double y0 = PerimeterOffsetY * TileSize; // Store width and height in local variables for easy access int w_i = (int)ViewWidth; int h_i = (int)ViewHeight; // X and Y positioner variables double xp = TileSize * PerimeterOffsetX; double yp = TileSize * PerimeterOffsetY; xp += TileSize * PerimeterX * 0.5 - (TileSize * 1); yp -= TileSize * 2; // Set up previous door: Scene prev_scene = (Scene)_Game.Scenes["SceneThree"]; _DoorToPreviousScene.Destination = prev_scene.DoorToNextScene; // Setup background tiles var BackgroundTiles = new TileMap(Background, 48, 24, Texture.Get("sprite_tile_bg4_atlas")); BackgroundTiles.PositionX = (PerimeterOffsetX - 18) * TileSize; BackgroundTiles.PositionY = (PerimeterOffsetY) * TileSize; BackgroundTiles.Parallax = 1.0; BackgroundTiles.RandomMap(); BackgroundTiles.Build(); // Control key indicators (info graphics) var f_infogfx = new SpriteBase(Rear, xp - 2 * TileSize, yp, Texture.Get("sprite_infogfx_key_f")); // First Set of platforms double ep2x = xp - TileSize * 20; double ep2y = yp + TileSize; // Top platform set ExtenderPlatform last_platform_2 = new ExtenderPlatform(Stage, ep2x + TileSize * (5), ep2y + TileSize * 9, true); for (int i = 1; i < 12; i++) { new ExtenderPlatform(Stage, ep2x + TileSize * (5 + i), ep2y + TileSize * 9, last_platform_2); } var bs_lower0 = new ProjectileSwitch(Front, ep2x + TileSize * (16.5), ep2y + TileSize * (11 + 0.5), (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_2.OnAction(e.Self, new ActionEventArgs(bstate, last_platform_2)); //bool bstate_bs_lower_0 = last_platform_2.State != SwitchState.Open; //gw_lower1.OnAction (e.Self, new ActionEventArgs (bstate || bstate_bs_lower_0, gw_lower1)); }, 0.1); // Platform set below top ExtenderPlatform last_platform_3 = new ExtenderPlatform(Stage, ep2x + TileSize * (5), ep2y + TileSize * 5, true); for (int i = 1; i < 12; i++) { new ExtenderPlatform(Stage, ep2x + TileSize * (5 + i), ep2y + TileSize * 5, last_platform_3); } var bs_lower1 = new ProjectileSwitch(Front, ep2x + TileSize * (22.5), ep2y + TileSize * (7 + 0.5), (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_3.OnAction(e.Self, new ActionEventArgs(bstate, last_platform_3)); //bool bstate_bs_lower_0 = last_platform_2.State != SwitchState.Open; //gw_lower1.OnAction (e.Self, new ActionEventArgs (bstate || bstate_bs_lower_0, gw_lower1)); }, 0.1); double recess_switch = -4.0; double recess_gw = -2.0; for (int i = 0; i < 12; i++) { new Spidey(Stage, ep2x + (5 + i) * TileSize, ep2y + TileSize * 6); } // Gateways var gw1 = new Gateway(Front, xp - TileSize * 3, yp + 3 * TileSize, false); var gw2 = new Gateway(Front, xp + TileSize * 3, yp + 3 * TileSize, false); // Walls above gateways for (int i = 2; i < 5; i++) { new FloorTile(Rear, gw1.CornerX, gw1.CornerY + (i) * TileSize + 8); } for (int i = 6; i < PerimeterY - 1; i++) { new FloorTile(Rear, gw1.CornerX, gw1.CornerY + (i) * TileSize + 8); } for (int i = 2; i < PerimeterY - 5; i++) { new FloorTile(Rear, gw2.CornerX, gw2.CornerY + (i) * TileSize + 8); } new FloorTile(Rear, gw2.CornerX - TileSize * 5, gw2.CornerY + 2 * TileSize + 8); new FloorTile(Rear, gw2.CornerX - TileSize * 4, gw2.CornerY + 2 * TileSize + 8); var ft_door = new FloorTile(Rear, gw2.CornerX - TileSize * 3, gw2.CornerY + 2 * TileSize + 8); new FloorTile(Rear, gw2.CornerX - TileSize * 2, gw2.CornerY + 2 * TileSize + 8); new FloorTile(Rear, gw2.CornerX - TileSize, gw2.CornerY + 2 * TileSize + 8); var fs10 = new PressureSwitch(Front, gw1.CornerX + TileSize, gw1.CornerY + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw1.OnAction(e.Self, new ActionEventArgs(bstate, gw1)); }); var fs11 = new PressureSwitch(Front, gw1.CornerX - TileSize, gw1.CornerY + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw1.OnAction(e.Self, new ActionEventArgs(bstate, gw1)); }, fs10); var fs20 = new PressureSwitch(Front, gw2.CornerX - TileSize, gw2.CornerY + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction(e.Self, new ActionEventArgs(bstate, gw2)); }); var fs21 = new PressureSwitch(Front, gw2.CornerX + TileSize, gw2.CornerY + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; gw2.OnAction(e.Self, new ActionEventArgs(bstate, gw2)); }, fs20); xp = fs21.CornerX + 2 * TileSize; yp += TileSize; xp += TileSize; var ft_room_r = new FloorTile(Stage, xp, yp + TileSize * 2); for (int i = 1; i < 8; i++) { new FloorTile(Stage, xp + i * TileSize, yp + TileSize * 2); } for (int i = 0; i < 4; i++) { new FloorTile(Stage, xp + (i + 1) * TileSize, yp + TileSize * 3); } //yp += 2 * TileSize; //xp += 4 * TileSize; for (int i = 0; i < 6; i++) { new Spidey(Stage, xp + (5 + i) * TileSize, yp + TileSize * (3)); } ExtenderPlatform last_platform_0 = null; ExtenderPlatform last_platform_1 = null; for (int i = 0; i < 3; i++) { last_platform_0 = new ExtenderPlatform(Stage, xp + TileSize * (5 + i), yp + TileSize * (4.5 + i), last_platform_0); } xp -= 2 * TileSize; yp += TileSize; for (int i = 0; i < 9; i++) { last_platform_1 = new ExtenderPlatform(Stage, xp + TileSize * (-1 + i), yp + TileSize * (7), last_platform_1); } var fs30 = new PressureSwitch(Front, ft_room_r.CornerX, ft_room_r.CornerY + TileSize + recess_switch, (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_1.OnAction(e.Self, new ActionEventArgs(bstate, last_platform_1)); }, 6.0); var bs_lower2 = new ProjectileSwitch(Front, ep2x + TileSize * (23.55), ep2y + TileSize * (7 + 0.5), (sender, e) => { bool bstate = (SwitchState)e.Info != SwitchState.Open; last_platform_0.OnAction(e.Self, new ActionEventArgs(bstate, last_platform_0)); }, 3.0); //bs_lower2.CenterShift(); bs_lower2.Theta += MathHelper.Pi; // Set up next door: /*( * Scene next_scene = (Scene)Program.MainGame.Scenes["SceneThree"]; * _DoorToNextScene.Destination = next_scene.DoorToPreviousScene; * _DoorToNextScene.PositionX = last_platform_1.PositionX; * _DoorToNextScene.CornerY = yp += last_platform_1.SizeY; * * // Update next scene's door position * _DoorToNextScene.Destination.Position = _DoorToNextScene.Position; */ Scene next_scene = (Scene)_Game.Scenes["SceneFive"]; //Scene next_scene = (Scene)Program.MainGame.Scenes["SceneSix"]; //_DoorToNextScene = new Door(Rear, x0 + TileSize * 76, y1 + TileSize, next_scene.DoorToPreviousScene); _DoorToNextScene = new Door(Rear, ft_door.CornerX, ft_door.CornerY + TileSize, next_scene.DoorToPreviousScene); _DoorToNextScene.CornerX = ft_door.CornerX; _DoorToNextScene.CornerY = ft_door.CornerY + TileSize; _DoorToNextScene.Destination.Position += _DoorToNextScene.Position; // Call the base class initializer base.InitializeScene(); }