コード例 #1
0
ファイル: SceneFirstMenu.cs プロジェクト: peges/hungry
        public override void InitializeScene()
        {
            base.InitializeScene();
            var    texture  = Texture.Get("sprite_main_menu_buttons");
            double x_center = (ViewWidth) * 0.5;
            double y_center = (ViewHeight) * 0.5;

            new SpriteBase(HUD, x_center, y_center + 128, Texture.Get("sprite_android_now")).CenterShift();
            ((UIButton) new UIButton(this, x_center, y_center,
                                     new SpriteBase.SpriteFrame(texture, 4),
                                     new SpriteBase.SpriteFrame(texture, 2), UIGroup).CenterShift()).Action += (sender, e) =>
            {
                _Game.CurrentScene = (Scene)_Game.Scenes[(string)Configuration.Get("SceneBeginning")];
            };
            ((UIButton) new UIButton(this, x_center, y_center - 48,
                                     new SpriteBase.SpriteFrame(texture, 5),
                                     new SpriteBase.SpriteFrame(texture, 3), UIGroup).CenterShift()).Action += (sender, e) =>
            {
                _Game.CurrentScene = (Scene)_Game.Scenes["SceneCredits"];
            };
            new SpriteBase(HUD, x_center, y_center - 128, Texture.Get("sprite_infogfx_start")).CenterShift();

            var looper = new MusicLooper_LessHackish(this);

            stuff_one = new StuffOne(Background, 0.5 * ViewWidth, 0, -100, (int)ViewWidth / 20 + 1, (int)ViewHeight / 30 + 1);
            stuff_two = new StuffTwo(Background, 0.5 * ViewWidth, 0, -200, (int)ViewWidth / 20 + 1, (int)ViewHeight / 30 + 1);

            SceneEntry += (sender, e) => {
                _ViewPosition = Vector3d.Zero;
                //stuff_one.StuffTimer.Restart();
                //stuff_two.StuffTimer.Restart();
            };
        }
コード例 #2
0
ファイル: BasicBullet.cs プロジェクト: peges/hungry
 public BasicBullet(Scene scene, double x, double y, double vx, double vy) :
     base(scene.Stage, x, y, Texture.Get("sprite_first_bullet"))
 {
     _Velocity.X = vx;
     _Velocity.Y = vy;
     InitPhysicsLate();
 }
コード例 #3
0
 // Main constructor:
 public BooleanIndicator(RenderSet render_set, double x, double y) :
     base(render_set, x, y, 1.0, 1.0, null, Texture.Get("sprite_indicator"))
 {
     State      = false;
     _Color     = new Color4(Color.SkyBlue);
     _NextLayer = new LayeredSprite(render_set, x, y, 1.0, 1.0, null, Texture.Get("sprite_indicator_gloss"));
 }
コード例 #4
0
 public RaindropRippleEffect(RenderSet render_set, double x, double y) :
     base(render_set, x, y, Texture.Get("sprite_ripples"))
 {
     //PlayAnimation(_AnimationDefault = new SpriteAnimation(Texture, 100, true, false, "f0", "f1"));
     Lifespan = 2.0;
     _Color   = new Color4(255, 24, 127, 255);
     _Color2  = new Color4(0.0f, (float)ColorRandy.NextDouble() * 0.5f + 0.5f, (float)ColorRandy.NextDouble() * 0.5f + 0.5f, 0.0f);
     Timer.Restart();
 }
コード例 #5
0
ファイル: Spidey.cs プロジェクト: peges/hungry
 public Spidey(RenderSet render_set, double x, double y) :
     base(render_set, x, y, Texture.Get("sprite_spidey_0"))
 {
     if (Body != null)
     {
         Body.OnCollision += HandleOnCollision;
         Body.BodyType     = BodyType.Dynamic;
     }
     JumpTimer.Start();
 }
コード例 #6
0
 public BaddieRobotCrawlerShooter(Scene scene, double x, double y)
     : base(scene.Stage, x, y, Texture.Get("sprite_robot_1"))
 {
     AnimationIdle   = new SpriteAnimation(Texture, 200, true, false, new string[] { "stationary" });
     AnimationCrawl  = new SpriteAnimation(Texture, 200, true, false, new string[] { "crawl_0", "crawl_1", "crawl_2", "crawl_3" });
     AnimationArm    = new SpriteAnimation(Texture, 200, false, false, new string[] { "arm_0", "arm_1", "arm_2" });
     AnimationArmed  = new SpriteAnimation(Texture, 200, true, false, new string[] { "armed" });
     AnimationDisarm = new SpriteAnimation(Texture, 200, false, false, new string[] { "disarm_0", "disarm_1", "disarm_2" });
     AnimationFiring = new SpriteAnimation(Texture, 75, true, false, new string[] { "firing_0", "firing_1", "firing_2", "firing_3", "firing_4" });
     StartAnimation(AnimationFiring);
 }
コード例 #7
0
        public FoodItem(RenderSet render_set, double x, double y, int variant = 0) :
            base(render_set, x, y, Texture.Get("sprite_food_single"))
        {
            Variant = variant % Texture.Regions.Length;
            PlayAnimation(_AnimationDefault = new SpriteAnimation(Texture, true, false, Variant));

            if (Body != null)
            {
                Body.OnCollision += HandleOnCollision;
                Body.BodyType     = BodyType.Static;
            }
        }
コード例 #8
0
        public Dialog(RenderSet render_set, string title, List <DialogStanza> stanzas) :
            base(null)
        {
            _Title     = title;
            Stanzas    = stanzas;
            _RenderSet = render_set;
            _Shown     = false;
            ScaleX     = _RenderSet.Scene.ViewSize.X;
            ScaleY     = (int)(_RenderSet.Scene.ViewSize.Y * 0.25);
            FadeUp     = Texture.Get("sprite_dialog_fade_up");

            SpeakerWriter = new PTextWriter(_RenderSet.Scene.Game, new Size((int)ScaleX, 24));
            SpeechWriter  = new PTextWriter(_RenderSet.Scene.Game, new Size((int)ScaleX, (int)ScaleY));
        }
コード例 #9
0
ファイル: PolarBear.cs プロジェクト: peges/hungry
        public PolarBear(RenderSet render_set, double x, double y) :
            base(render_set, x, y, Texture.Get("sprite_polarbear"))
        {
            Texture texture = Texture.Get("sprite_polarbear");

            AnimationWalk  = new SpriteAnimation(texture, 100, true, false, "stand", "walk1", "walk2", "walk3", "walk4", "walk5", "walk6", "walk7");
            AnimationSwipe = new SpriteAnimation(texture, 100, true, false, "swipe1", "swipe2", "swipe3", "swipe4");
            PlayAnimation(AnimationWalk);

            if (Body != null)
            {
                Body.OnCollision += HandleOnCollision;
                Body.BodyType     = BodyType.Dynamic;
            }
            JumpTimer.Start();
            AttackTimer.Start();
        }
コード例 #10
0
ファイル: ExtenderPlatform.cs プロジェクト: peges/hungry
 protected ExtenderPlatform(RenderSet render_set, double x, double y, SharedState <bool> sync_state) :
     base(render_set, x, y, Texture.Get("sprite_extender_platform"))
 {
     Extend          = new SpriteAnimation(Texture, 50, false, false, new[] { "collapsed", "t1", "t2", "extended" });
     Collapse        = new SpriteAnimation(Texture, 50, false, false, new[] { "extended", "t2", "t1", "collapsed" });
     _State          = sync_state;
     RenderSetEntry += (sender, e) => {
         PlayAnimation(_AnimationDefault = new SpriteAnimation(false, false, _State ? Collapse.Frames[0] : Extend.Frames[0]));
     };
     _State.SharedStateChanged += (sender, e) =>
     {
         PlayAnimation(e.CurrentState ? Extend : Collapse);
         Body.Enabled = (Set.Scene == Set.Scene.Game.CurrentScene) && e.CurrentState;
     };
     if (Body != null)
     {
         Body.OnCollision += HandleOnCollision;
     }
 }
コード例 #11
0
ファイル: BasicBullet.cs プロジェクト: peges/hungry
        public BulletCollisionParticle(Scene scene, double x, double y) :
            base(scene.Stage, x, y, Texture.Get("sprite_bullet_collision_particle"))
        {
            Hit       = new SpriteAnimation(Texture, 10, false, "f1", "f2", "f3", "f4");
            Hit.Sound = Sound.Get("sfx_bullet_impact");
            WeakReference game_wr       = new WeakReference(Set.Scene.Game);
            WeakReference render_set_wr = new WeakReference(Set);

            _AnimationNext = new Lazy <SpriteAnimation>(() => {
                ((PositronGame)game_wr.Target).AddUpdateEventHandler(this, (sender, e) =>
                {
                    ((RenderSet)render_set_wr.Target).Remove(this);
                    this.Dispose();
                    return(true);
                });
                return(null);
            });
            PlayAnimation(Hit);
        }
コード例 #12
0
ファイル: SceneryCar.cs プロジェクト: peges/hungry
 public SceneryCar(Scene scene, double x, double y) :
     this(scene, x, y, Texture.Get("sprite_car_side"))
 {
 }
コード例 #13
0
ファイル: BunkerFloor.cs プロジェクト: peges/hungry
 public BunkerFloor2(Scene scene, double x, double y) :
     base(scene, x, y, Texture.Get("sprite_bunker_floor_2"))
 {
 }
コード例 #14
0
ファイル: BunkerWall.cs プロジェクト: peges/hungry
 public BunkerWall(Scene scene, double x, double y) :
     base(scene.Stage, x, y, Texture.Get("sprite_bunker_wall"))
 {
     _Variant = Variance.Next(Texture.Regions.Length);
     PlayAnimation(new SpriteAnimation(Texture, _Variant));
 }
コード例 #15
0
 public HeadquartersBuilding(RenderSet render_set, double x, double y) :
     base(render_set, x, y, Texture.Get("sprite_headquarters_building"))
 {
     _AnimationDefault = new SpriteAnimation(this.Texture, true, "f1", "f2", "f3");
     PlayAnimation(_AnimationDefault);
 }
コード例 #16
0
ファイル: SceneEight.cs プロジェクト: peges/hungry
        public override void InitializeScene()
        {
            // Assign base class variables here, before calling the base class initializer
            PerimeterOffsetX = 126;
            PerimeterOffsetY = -92;
            PerimeterX       = 30;
            PerimeterY       = 20;
            double x0 = PerimeterOffsetX * TileSize;
            double y0 = PerimeterOffsetY * TileSize;

            // 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.Parallax  = 1.0;
            BackgroundTiles.RandomMap();
            BackgroundTiles.Build();

            // Set up previous door:
            Scene prev_scene = (Scene)_Game.Scenes ["SceneSeven"];

            _DoorToPreviousScene.Destination = prev_scene.DoorToNextScene;

            // 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 = x0 + TileSize * 0;
            yp = y0 + TileSize * 0;

            var i = 0;

            for (i = 1; i < PerimeterY - 4; i++)
            {
                new ExtenderPlatform(Stage, xp + TileSize * (0), yp + TileSize * i, true);
            }

            for (i = 2; i < 17; i++)
            {
                new FloorTile(Rear, xp + TileSize * (i), yp + TileSize * (3.5));
            }

            new FloorTile(Rear, xp + TileSize * (18), yp + TileSize * (3.5));
            ExtenderPlatform ep_save = new ExtenderPlatform(Stage, xp + TileSize * (17), yp + TileSize * 1, false);

            new ExtenderPlatform(Stage, xp + TileSize * (17), yp + TileSize * 2, ep_save);
            new ExtenderPlatform(Stage, xp + TileSize * (17), yp + TileSize * 3, ep_save);

            for (i = 21; i < 24; i++)
            {
                new FloorTile(Rear, xp + TileSize * (i), yp + TileSize * (3.5));
            }

            for (i = 26; i < PerimeterX; i++)
            {
                new FloorTile(Rear, xp + TileSize * (i), yp + TileSize * (3.5));
            }

            for (i = 4; i < 15; i++)
            {
                new FloorTile(Rear, xp + TileSize * (1), yp + TileSize * (i));
            }

            new FloorTile(Rear, xp + TileSize * (1), yp + TileSize * (16));
            new FloorTile(Rear, xp + TileSize * (2), yp + TileSize * (16));
            new FloorTile(Rear, xp + TileSize * (3), yp + TileSize * (16));
            new FloorTile(Rear, xp + TileSize * (5), yp + TileSize * (16));
            new FloorTile(Rear, xp + TileSize * (6), yp + TileSize * (16));
            new FloorTile(Rear, xp + TileSize * (6), yp + TileSize * (17));
            new FloorTile(Rear, xp + TileSize * (6), yp + TileSize * (18));
            new FloorTile(Rear, xp + TileSize * (5), yp + TileSize * (15));
            new FloorTile(Rear, xp + TileSize * (5), yp + TileSize * (14));
            new FloorTile(Rear, xp + TileSize * (4), yp + TileSize * (13.5));
            new FloorTile(Rear, xp + TileSize * (3), yp + TileSize * (13.5));


            for (i = 2; i < 15; i++)
            {
                new FloorTile(Rear, xp + TileSize * (i), yp + TileSize * (11));
            }

            ExtenderPlatform ep0 = new ExtenderPlatform(Stage, xp + TileSize * (7), yp + TileSize * 12, false);

            new ExtenderPlatform(Stage, xp + TileSize * (9), yp + TileSize * 13, ep0);
            new ExtenderPlatform(Stage, xp + TileSize * (11), yp + TileSize * 14, ep0);
            new ExtenderPlatform(Stage, xp + TileSize * (13), yp + TileSize * 15, ep0);

            var fs0 = new PressureSwitch(Front, xp + TileSize * (2), yp + TileSize * (12), (sender, e) => {
                bool bstate = (SwitchState)e.Info != SwitchState.Open;
                ep0.OnAction(e.Self, new ActionEventArgs(bstate, ep0));
            }, 5.0);

            for (i = 11; i < 16; i++)
            {
                new FloorTile(Rear, xp + TileSize * (15), yp + TileSize * (i));
            }

            new FloorTile(Rear, xp + TileSize * (16), yp + TileSize * (15));
            new FloorTile(Rear, xp + TileSize * (17), yp + TileSize * (15));
            new FloorTile(Rear, xp + TileSize * (18), yp + TileSize * (15));

            new FloorTile(Rear, xp + TileSize * (21), yp + TileSize * (15));
            new FloorTile(Rear, xp + TileSize * (22), yp + TileSize * (15));
            new FloorTile(Rear, xp + TileSize * (23), yp + TileSize * (15));

            new FloorTile(Rear, xp + TileSize * (26), yp + TileSize * (12.5));
            new FloorTile(Rear, xp + TileSize * (27), yp + TileSize * (12.5));
            new FloorTile(Rear, xp + TileSize * (28), yp + TileSize * (12.5));
            new FloorTile(Rear, xp + TileSize * (29), yp + TileSize * (12.5));

            ExtenderPlatform ep1 = new ExtenderPlatform(Stage, xp + TileSize * (24), yp + TileSize * 14, false);

            new ExtenderPlatform(Stage, xp + TileSize * (25), yp + TileSize * 13, ep1);

            new ExtenderPlatform(Stage, xp + TileSize * (18), yp + TileSize * 8.5, ep1);
            new ExtenderPlatform(Stage, xp + TileSize * (19), yp + TileSize * 8.5, ep1);
            new ExtenderPlatform(Stage, xp + TileSize * (20), yp + TileSize * 8.5, ep1);

            var gw1 = new Gateway(Front, xp + TileSize * 16, yp + TileSize * (9.75), true);

            ProjectileSwitch ps0 = new ProjectileSwitch(Front, x0 + TileSize * 15.6, yp + TileSize * 14, (sender, e) =>
            {
                bool bstate = (SwitchState)e.Info != SwitchState.Open;
                ep1.OnAction(e.Self, new ActionEventArgs(bstate, ep1));
                gw1.OnAction(e.Self, new ActionEventArgs(bstate, gw1));
            }, 8.0);

            ps0.Theta += MathHelper.Pi;

            for (i = 9; i < 18; i++)
            {
                new ExtenderPlatform(Rear, xp + TileSize * (i), yp + TileSize * (8.5), true);
            }

            var gw2 = new Gateway(Front, xp + TileSize * 18, yp + TileSize * (4.5), true);

            new FloorTile(Rear, xp + TileSize * (18), yp + TileSize * (7.5));

            for (i = 7; i < 14; i++)
            {
                for (var j = 21; j <= 23; j++)
                {
                    new FloorTile(Rear, xp + TileSize * (j), yp + TileSize * (i + 0.25));
                }
            }

            i = 5;
            ExtenderPlatform ep2 = new ExtenderPlatform(Stage, xp + TileSize * (i), yp + TileSize * 5.0, false);

            new ExtenderPlatform(Stage, xp + TileSize * (i + 3), yp + TileSize * 5.5, ep2);
            new ExtenderPlatform(Stage, xp + TileSize * (i + 6), yp + TileSize * 5.5, ep2);
            new ExtenderPlatform(Stage, xp + TileSize * (i + 9), yp + TileSize * 5.5, ep2);

            var fs1 = new PressureSwitch(Front, xp + TileSize * (3), yp + TileSize * (4.5), (sender, e) => {
                bool bstate = (SwitchState)e.Info != SwitchState.Open;
                ep2.OnAction(e.Self, new ActionEventArgs(bstate, ep2));
            }, 4.0);

            new FloorTile(Rear, xp + TileSize * (15), yp + TileSize * (4.5));
            new FloorTile(Rear, xp + TileSize * (15), yp + TileSize * (5.5));

            var gw3 = new Gateway(Front, xp + TileSize * 21, yp + TileSize * (4.5), true);
            var gw4 = new Gateway(Front, xp + TileSize * 23, yp + TileSize * (4.5), true);

            for (i = 7; i < 12; i++)
            {
                new FloorTile(Rear, xp + TileSize * (26), yp + TileSize * (i + 0.5));
            }

            var gw5 = new Gateway(Front, xp + TileSize * 26, yp + TileSize * (4.5), true);

            var fs2 = new PressureSwitch(Front, xp + TileSize * (16), yp + TileSize * (4.5), (sender, e) => {
                bool bstate = (SwitchState)e.Info != SwitchState.Open;
                ep_save.OnAction(e.Self, new ActionEventArgs(bstate, ep_save));
                gw2.OnAction(e.Self, new ActionEventArgs(bstate, gw2));
                gw3.OnAction(e.Self, new ActionEventArgs(bstate, gw3));
                gw4.OnAction(e.Self, new ActionEventArgs(bstate, gw4));
                gw5.OnAction(e.Self, new ActionEventArgs(bstate, gw5));
            }, 15.0);

            var ft_door = new FloorTile(Rear, xp + TileSize * 28, yp + 4 * TileSize);

            _DoorToNextScene.PositionX = ft_door.PositionX;
            _DoorToNextScene.CornerY   = ft_door.CornerY + ft_door.SizeY;
            _DoorToNextScene.NextScene = (Scene)_Game.Scenes["SceneWin"];

            // DEBUGGING:
            //_DoorToPreviousScene.Corner = _DoorToNextScene.Corner;
            //_DoorToPreviousScene.CornerX -= _DoorToPreviousScene.SizeX;

//            _DoorToNextScene.Action += (sender, e) => {
//                Program.MainGame.AddUpdateEventHandler(this, (sender1, e1) =>
//                {
//                    lock(Program.MainUpdateLock)
//                    {
//                        Scene.InstantiateScenes(ref Program.MainGame, typeof(ISceneGameplay), typeof(SceneFirstMenu));
//                    }
//                    return true;
//                });
//            };

            // Call the base class initializer
            base.InitializeScene();
        }
コード例 #17
0
ファイル: Door.cs プロジェクト: peges/hungry
 public Door(RenderSet render_set, double x, double y) :
     base(render_set, x, y, Texture.Get("sprite_doorway"))
 {
 }
コード例 #18
0
ファイル: RadioProp.cs プロジェクト: peges/hungry
 public RadioProp(RenderSet render_set, double x, double y) :
     base(render_set, x, y, Texture.Get("sprite_radio"))
 {
     PlayAnimation(new SpriteAnimation(Texture, 250, true, "f1", "f2"));
 }
コード例 #19
0
ファイル: SceneFirstMenu.cs プロジェクト: peges/hungry
 public StuffOne(RenderSet render_set, double x, double y, double z, int wide, int high) :
     this(render_set, x, y, z, wide, high, Texture.Get("sprite_small_disc"))
 {
 }
コード例 #20
0
        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();
        }
コード例 #21
0
ファイル: HealthMeter.cs プロジェクト: peges/hungry
 public HealthMeter(RenderSet render_set, double x, double y, Player player) :
     base(render_set, x, y, Texture.Get("sprite_health_meter_atlas"))
 {
     _Player = player;
     player.HealthChanged += OnHealthChanged;
 }
コード例 #22
0
        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();
        }
コード例 #23
0
 public SideWalkTile(RenderSet render_set, double x, double y) :
     base(render_set, x, y, Texture.Get("sprite_sidewalk"))
 {
     _Variant = Variance.Next(Texture.Regions.Length);
     PlayAnimation(new SpriteAnimation(Texture, _Variant));
 }
コード例 #24
0
 protected PressureSwitch(RenderSet render_set, double x, double y,
                          ActionEventHandler state_changed,
                          SharedState <SwitchState> state,
                          SharedState <double> latch_expiration,
                          Stopwatch latch_timer, double latch_time) :
     this(render_set, x, y, state_changed, state, latch_expiration, latch_timer, latch_time, Texture.Get("sprite_floor_switch"))
 {
 }
コード例 #25
0
ファイル: BunkerFloor.cs プロジェクト: peges/hungry
 public BunkerFloor(Scene scene, double x, double y) :
     this(scene, x, y, Texture.Get("sprite_bunker_floor"))
 {
 }
コード例 #26
0
        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();
        }
コード例 #27
0
ファイル: BoringBuilding.cs プロジェクト: peges/hungry
 public BoringBuilding(Scene scene, double x, double y) :
     this(scene, x, y, Texture.Get("sprite_buildings"))
 {
     //_AnimationDefault = new SpriteAnimation(this.Texture, true, "f1", "f2");
 }
コード例 #28
0
 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();
 }
コード例 #29
0
ファイル: Gateway.cs プロジェクト: peges/hungry
 protected Gateway(RenderSet render_set, double x, double y, SharedState <bool> sync_state) :
     this(render_set, x, y, sync_state, Texture.Get("sprite_gateway"))
 {
     Open  = new SpriteAnimation(Texture, 50, new int [] { 0, 1, 2, 3 });
     Close = new SpriteAnimation(Texture, 50, new int [] { 3, 2, 1, 0 });
 }
コード例 #30
0
 public FloorTile(RenderSet render_set, double x, double y) :
     base(render_set, x, y, Texture.Get("sprite_tile_floor_atlas"))
 {
     _Variant = Variance.Next(Texture.Regions.Length);
     PlayAnimation(new SpriteAnimation(Texture, _Variant));
 }