Esempio n. 1
0
        /// <summary>
        ///     Initializes a new Player class.
        /// </summary>
        /// <param name="texture">The Texture.</param>
        /// <param name="texture2">The ErasedTexture.</param>
        public Player(Texture2D texture, Texture2D texture2)
        {
            _erased = texture2;
            Bounds  = new Polygon(new Vector2(1, 6), new Vector2(5, 4), new Vector2(11, 0), new Vector2(22, 0), new Vector2(28, 6),
                                  new Vector2(28, 11), new Vector2(31, 15), new Vector2(28, 21), new Vector2(19, 21), new Vector2(18, 23),
                                  new Vector2(9, 23), new Vector2(0, 13), new Vector2(1, 7));
            _pen         = new Pen(Color.White, 1);
            _spriteSheet = new AnimatedSpriteSheet(texture)
            {
                AutoUpdate = true
            };
            _spriteSheet.Add(new Keyframe(new Rectangle(0, 0, 32, 24), 100));
            _spriteSheet.Add(new Keyframe(new Rectangle(32, 0, 32, 24), 100));
            _spriteSheet.Add(new Keyframe(new Rectangle(64, 0, 32, 24), 100));
            _spriteSheet.Add(new Keyframe(new Rectangle(96, 0, 32, 24), 100));
            _spriteSheet.Add(new Keyframe(new Rectangle(128, 0, 32, 24), 100));
            _spriteSheet.Add(new Keyframe(new Rectangle(160, 0, 32, 24), 100));
            _spriteSheet.Add(new Keyframe(new Rectangle(192, 0, 32, 24), 100));

            _spriteSheet.Add(new Keyframe(new Rectangle(224, 0, 32, 24), 100));
            _spriteSheet.Add(new Keyframe(new Rectangle(256, 0, 32, 24), 100));
            _spriteSheet.Add(new Keyframe(new Rectangle(288, 0, 32, 24), 100));
            _spriteSheet.Add(new Keyframe(new Rectangle(320, 0, 32, 24), 100));
            _spriteSheet.Add(new Keyframe(new Rectangle(352, 0, 32, 24), 100));

            Position = new Vector2(300, 230);
            Velocity = new Vector2(0, 0);
        }
Esempio n. 2
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            var anim  = _walkingAnimation.GetAnimationForOrientation(Orientation);
            var sheet = anim.AnimatedSpriteSheets.FirstOrDefault();

            if (!IsMoving)
            {
                sheet.Reset();
            }
            else
            {
                sheet.Update(gameTime);
            }

            if (ActiveActions.Any())
            {
                foreach (var act in ActiveActions)
                {
                    act.Action(gameTime, act);
                }

                return;
            }

            _currentAnimationSheet = anim.AnimatedSpriteSheets.FirstOrDefault();
        }
Esempio n. 3
0
        public static CollisionSolver CheckCollision(Vector2 pos1, Vector2 pos2, AnimatedSpriteSheet collider1, AnimationTexture collider2, TimeSpan now, bool perPixel)
        {
            CollisionSolver solver = new CollisionSolver();

            collisionType = "Bounding-Box";

            Texture2D ss             = collider1.getSpriteSheet();
            Rectangle collider1Range = collider1.getCurrentFrame(now);

            Texture2D texture        = collider2.getCurrentFrame(now);
            Rectangle collider2Range = new Rectangle(0, 0, texture.Width, texture.Height);



            collider1Range.X = (int)pos1.X;
            collider1Range.Y = (int)pos1.Y;
            collider2Range.X = (int)pos2.X;
            collider2Range.Y = (int)pos2.Y;

            //Simple Bounding Box Collisions
            if ((collider1Range.Left > collider2Range.Right && collider1Range.Right > collider2Range.Left) ||
                (collider2Range.Left > collider1Range.Right && collider2Range.Right > collider1Range.Left) ||
                (collider1Range.Top < collider2Range.Bottom && collider1Range.Bottom < collider2Range.Top) ||
                (collider2Range.Top < collider1Range.Bottom && collider2Range.Bottom < collider1Range.Top))
            {
                solver.collided = false;
                return(solver);
            }
            else
            {
                solver.collided = true;

                if (collider1Range.Right > collider2Range.Left && collider1Range.Left < collider2Range.Right)
                {
                    if (collider1Range.Center.X < collider2Range.Center.X)
                    {
                        solver.correctionVector.X = (collider1Range.Right - collider2Range.Left) * -1.0f;
                    }
                    else
                    {
                        solver.correctionVector.X = (collider2Range.Right - collider1Range.Left);
                    }
                }

                if (collider1Range.Bottom > collider2Range.Top && collider1Range.Top < collider2Range.Bottom)
                {
                    if (collider1Range.Center.Y > collider2Range.Center.Y)
                    {
                        solver.correctionVector.Y = (collider2Range.Top - collider1Range.Bottom) * -1.0f;
                    }
                    else
                    {
                        solver.correctionVector.Y = (collider2Range.Top - collider1Range.Bottom);
                    }
                }

                return(solver);
            }
        }
Esempio n. 4
0
    // Update is called once per frame
    void Update()
    {
        ASS = GetComponent<AnimatedSpriteSheet> ();
        if (Input.GetAxisRaw("Horizontal") == 0) {
            ASS.rowNumber = 0;

        }else{
            ASS.rowNumber = 1;
        }
    }
Esempio n. 5
0
        private AnimatedSpriteSheet GenerateAnimatedSpriteSheet(IEnumerable <Sprite> sprites)
        {
            var sheet = new AnimatedSpriteSheet();

            sheet.TimeBetweenSprites = 83;
            foreach (var sprite in sprites)
            {
                sheet.Sprites[sprite.Name] = sprite;
            }

            return(sheet);
        }
Esempio n. 6
0
        public AnimationSet Build()
        {
            var ls = new AnimationSet()
            {
                Name = _name
            };

            ls.Animations.Add(new Animation()
            {
                Orientation = Orientation.Left
            });
            ls.Animations.Add(new Animation()
            {
                Orientation = Orientation.Top
            });
            ls.Animations.Add(new Animation()
            {
                Orientation = Orientation.Bottom
            });
            ls.Animations.Add(new Animation()
            {
                Orientation = Orientation.Right
            });


            foreach (var assetName in _assetNames)
            {
                var asset = _contentManager.Load <SpriteSheet>(assetName);


                foreach (var orientationEntry in _indexes)
                {
                    var sprites = asset.GetSprites(orientationEntry.Value, _frames);
                    var anim    = new AnimatedSpriteSheet(asset.Texture, asset.Width, asset.Height);

                    foreach (var sp in sprites)
                    {
                        anim.Sprites[sp.Name] = sp;
                    }

                    _optionsAction?.Invoke(anim);

                    ls.Animations.FirstOrDefault(x => x.Orientation == orientationEntry.Key).AnimatedSpriteSheets.Add(anim);
                }
            }

            return(ls);
        }
Esempio n. 7
0
        public override void LoadContent(ContentManager contentManager)
        {
            _sheet = contentManager.Load <AnimatedSpriteSheet>("Environment/CampFire");

            _light = new PointLight()
            {
                CastsShadows = true,
                Scale        = new Vector2(800f),
                ShadowType   = ShadowType.Illuminated
            };

            _penumbra.Lights.Add(_light);

            Height = _sheet.Sprites.FirstOrDefault().Value.Height;
            Width  = _sheet.Sprites.FirstOrDefault().Value.Width;

            _rectangle = new PrimitiveRectangle(Services.GetService <GraphicsDevice>(), Color.Red, false);
        }
Esempio n. 8
0
        /// <summary>
        /// Initializes a new Player class.
        /// </summary>
        /// <param name="playerTexture">The PlayerTexture.</param>
        public Player(Texture2D playerTexture)
        {
            Sprite = new AnimatedSpriteSheet(playerTexture)
            {
                AutoUpdate = true
            };

            Sprite.Add(new Keyframe(new Rectangle(0, 0, 115, 69), 50));
            Sprite.Add(new Keyframe(new Rectangle(115, 0, 115, 69), 50));
            Sprite.Add(new Keyframe(new Rectangle(230, 0, 115, 69), 50));
            Sprite.Add(new Keyframe(new Rectangle(345, 0, 115, 69), 50));
            Sprite.Add(new Keyframe(new Rectangle(460, 0, 115, 69), 50));
            Sprite.Add(new Keyframe(new Rectangle(575, 0, 115, 69), 50));
            Sprite.Add(new Keyframe(new Rectangle(690, 0, 115, 69), 50));
            Sprite.Add(new Keyframe(new Rectangle(805, 0, 115, 69), 50));

            Position = new Vector2(0, 190);
            Health   = 100;
        }
Esempio n. 9
0
        private void Eat(GameTime gameTime, LivingAction action)
        {
            var anim  = _eatingAnimation.GetAnimationForOrientation(Orientation);
            var sheet = anim.AnimatedSpriteSheets.FirstOrDefault();

            sheet.Update(gameTime);

            if (sheet.HasEnded)
            {
                action.IsRunning = false;
                sheet.Reset();

                _currentAnimationSheet = anim.AnimatedSpriteSheets.FirstOrDefault();
                _currentAnimationSheet.Reset();
                return;
            }

            _currentAnimationSheet = sheet;
        }
Esempio n. 10
0
        private Explosion(Texture2D tex, Rectangle position, Rectangle cut)
        {
            if (tex == null)
            {
                Position = position;
                return;
            }
            Sheet = new AnimatedSpriteSheet(tex)
            {
                Rectangle  = new Rectangle(0, 0, 32, 32),
                AutoUpdate = true
            };
            Position = position;

            for (var i = 0; i < 12; i++)
            {
                cut.X = 134 * i;
                var kf = new Keyframe(cut, 60f);
                Sheet.Add(kf);
            }
        }
Esempio n. 11
0
        private Explosion(Texture2D tex, Rectangle position, Rectangle cut)
        {
            if (tex == null)
            {
                Position = position;
                return;
            }
            Sheet = new AnimatedSpriteSheet(tex)
            {
                Rectangle = new Rectangle(0, 0, 32, 32),
                AutoUpdate = true
            };
            Position = position;

            for (var i = 0; i < 12; i++)
            {
                cut.X = 134 * i;
                var kf = new Keyframe(cut, 60f);
                Sheet.Add(kf);
            }
        }
Esempio n. 12
0
        /// <summary>
        /// Initializes a new Enemy class.
        /// </summary>
        /// <param name="enemyTexture">The EnemyTexture.</param>
        public Enemy(Texture2D enemyTexture)
        {
            Sprite = new AnimatedSpriteSheet(enemyTexture)
            {
                AutoUpdate = true
            };

            Sprite.Add(new Keyframe(new Rectangle(0, 0, 47, 61), 30));
            Sprite.Add(new Keyframe(new Rectangle(47, 0, 47, 61), 30));
            Sprite.Add(new Keyframe(new Rectangle(94, 0, 47, 61), 30));
            Sprite.Add(new Keyframe(new Rectangle(141, 0, 47, 61), 30));
            Sprite.Add(new Keyframe(new Rectangle(188, 0, 47, 61), 30));
            Sprite.Add(new Keyframe(new Rectangle(235, 0, 47, 61), 30));
            Sprite.Add(new Keyframe(new Rectangle(282, 0, 47, 61), 30));
            Sprite.Add(new Keyframe(new Rectangle(329, 0, 47, 61), 30));

            Position      = new Vector2(0, 0);
            Health        = 100;
            MaximumHealth = Health;
            Velocity      = 0.1f;
            _isVisible    = true;
            EnableHPBar   = true;
        }
Esempio n. 13
0
        /// <summary>
        /// Initializes a new Explosion class.
        /// </summary>
        /// <param name="explosionTexture">The ExplosionTexture.</param>
        public Explosion(Texture2D explosionTexture)
        {
            Sprite = new AnimatedSpriteSheet(explosionTexture)
            {
                AutoUpdate = true
            };

            Sprite.Add(new Keyframe(new Rectangle(0, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(133.5f, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(267, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(400.5f, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(534, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(667.5f, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(801, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(934.5f, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(1068, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(1201.5f, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(1335, 0, 133.5f, 134), 20));
            Sprite.Add(new Keyframe(new Rectangle(1468.5f, 0, 133.5f, 134), 20));

            Position          = new Vector2(0, 0);
            _isVisible        = true;
            RemainingLifeTime = 300;
        }
Esempio n. 14
0
    void CreateMesh()
    {
        mesh = new Mesh();

        //Determine the vertices
        vertices = new Vector3 [(xPositions.Length - 1) * 4];
        Vector2[] uv = new Vector2 [(xPositions.Length - 1) * 4];

        for (int i = 0, x = 0; x < xPositions.Length - 1; x++)
        {
            for (int c = 0; c < 4; c++, i++)
            {
                vertices [i] = new Vector3(
                    xPositions [x + (c % 2)],
                    (c < 2) ? yPositions [x + (c % 2)]: bottom,
                    z);

                int quadsPerBlock = (quality * blockSize);

                uv [i] = new Vector2(
                    ((float)((x + (c % 2)) % quadsPerBlock) / quadsPerBlock),
                    1 - (c / 2));

                if (uv [i].x == 0)
                {
                    uv [i].x = (c % 2 == 1) ? 1 : 0;
                }


                //01 01 01 | 01 01 01

                if (textureSizeX > 1)
                {
                    uv [i].x /= 3;

                    float xTile = 0f;

                    if (x >= quality * blockSize)
                    {
                        xTile = (x >= xPositions.Length - 1 - quality * blockSize) ? 2f : 1f;
                    }


                    uv [i].x += (1f / 3f * xTile);
                }
            }
        }

        int[] triangles = new int [(xPositions.Length - 1) * 6];

        for (int ti = 0, vi = 0, x = 0; x < xPositions.Length - 1; x++, ti += 6, vi += 4)
        {
            triangles [ti]     = triangles [ti + 3] = vi;
            triangles [ti + 1] = vi + 1;
            triangles [ti + 2] = triangles [ti + 4] = vi + 3;
            triangles [ti + 5] = vi + 2;
        }

        //Determine the UV
        mesh.vertices  = vertices;
        mesh.uv        = uv;
        mesh.triangles = triangles;
        mesh.RecalculateNormals();

        meshObject      = new GameObject();
        meshObject.name = "mesh";
        meshObject.AddComponent <MeshFilter> ();
        meshObject.AddComponent <MeshRenderer> ();
        meshObject.transform.parent = transform;

        meshObject.GetComponent <MeshFilter> ().mesh                   = mesh;
        meshObject.GetComponent <MeshRenderer> ().material             = bodyMat;
        meshObject.GetComponent <MeshRenderer> ().material.mainTexture = tileMap;

        if (numberOfFrames.x > 1 || numberOfFrames.y > 1)
        {
            AnimatedSpriteSheet sheet = meshObject.AddComponent <AnimatedSpriteSheet> ();
            sheet.numberOfFrames = this.numberOfFrames;
            sheet.frameLength    = this.frameLength;
            sheet.StartAnimating();
        }

        //CreateTexture ();
    }
        /// <summary>
        /// Load graphics content for the game.
        /// </summary>
        public override void LoadContent()
        {
            baseRes = new Vector2(1280 * 1.2f, 720 * 1.2f);

            resolution = new Vector2(ScreenManager.GraphicsDevice.PresentationParameters.BackBufferWidth,
                                     ScreenManager.GraphicsDevice.PresentationParameters.BackBufferHeight);

            curCameraOffset = Vector2.Zero;

            if (content == null)
            {
                content = new ContentManager(ScreenManager.Game.Services, "Content");
                util    = new Utility(content);
            }



            bgImage = content.Load <Texture2D>("backgroundTest");

            backgroundTiles = new Texture2D[70, 5];
            for (int i = 1; i < 71; i++)
            {
                backgroundTiles[i - 1, 0] = content.Load <Texture2D>(@"Background/BG/background_" + (i).ToString("00"));
                backgroundTiles[i - 1, 1] = content.Load <Texture2D>(@"Background/BG/background_" + (i + 70).ToString("00"));
                backgroundTiles[i - 1, 2] = content.Load <Texture2D>(@"Background/BG/background_" + (i + 140).ToString("00"));
                backgroundTiles[i - 1, 3] = content.Load <Texture2D>(@"Background/BG/background_" + (i + 210).ToString("00"));
                backgroundTiles[i - 1, 4] = content.Load <Texture2D>(@"Background/BG/background_" + (i + 280).ToString("00"));
            }
            levelSolidBBs = new System.Collections.Generic.List <Rectangle>(40);
            levelSolidBBs.Add(new Rectangle(0, 660, 5600, 10));
            levelSolidBBs.Add(new Rectangle(0, -34, 122, 754));
            levelSolidBBs.Add(new Rectangle(4230, 445, 230, 50));
            levelSolidBBs.Add(new Rectangle(4520, 440, 500, 400));
            //levelSolidBBs.Add(new Rectangle(5230, -110, 256, 830));
            levelSolidBBs.Add(new Rectangle(5070, 282, 126, 438));
            //levelSolidBBs.Add(new Rectangle(5620, -88, 774, 808));
            //levelSolidBBs.Add(new Rectangle( 6550, -276, 358, 996 ));
            //levelSolidBBs.Add(new Rectangle(7355, -460, 484, 1182));
            //levelSolidBBs.Add(new Rectangle(7980 ,-542, 245, 1260));
            //levelSolidBBs.Add(new Rectangle(8660, 138, 1474, 582));
            //levelSolidBBs.Add(new Rectangle(10538, 88, 600, 632));
            levelSolidBBs.Add(new Rectangle(11076, 626, 7494, 220));
            levelSolidBBs.Add(new Rectangle(12240, 426, 356, 294));
            //levelSolidBBs.Add(new Rectangle(12620,258,682,462));
            levelSolidBBs.Add(new Rectangle(13300, 564, 5260, 156));
            levelSolidBBs.Add(new Rectangle(19222, 552, 4932, 20));
            levelSolidBBs.Add(new Rectangle(22265, 398, 76, 322));
            //levelSolidBBs.Add(new Rectangle(22404, 320, 21, 400));
            levelSolidBBs.Add(new Rectangle(22692, 208, 84, 542));
            levelSolidBBs.Add(new Rectangle(24166, -326, 792, 1046));

            levelTopBBs = new System.Collections.Generic.List <Rectangle>(40);
            levelTopBBs.Add(new Rectangle(1620, 542, 140, 180));
            levelTopBBs.Add(new Rectangle(1880, -22, 660, 50));
            levelTopBBs.Add(new Rectangle(3964, 480, 192, 50));
            levelTopBBs.Add(new Rectangle(4320, 360, 130, 50));
            levelTopBBs.Add(new Rectangle(4500, 286, 500, 200));
            levelTopBBs.Add(new Rectangle(5070, 64, 120, 20));
            levelTopBBs.Add(new Rectangle(8395, -560, 20, 154));
            levelTopBBs.Add(new Rectangle(8520, -330, 20, 154));
            levelTopBBs.Add(new Rectangle(18552, 368, 224, 352));
            levelTopBBs.Add(new Rectangle(233701, 406, 164, 314));
            levelTopBBs.Add(new Rectangle(5620, -88, 774, 808));
            levelTopBBs.Add(new Rectangle(6550, -276, 358, 996));
            levelTopBBs.Add(new Rectangle(7355, -460, 484, 1182));
            levelTopBBs.Add(new Rectangle(7980, -542, 245, 1260));
            levelTopBBs.Add(new Rectangle(8660, 138, 1474, 582));
            levelTopBBs.Add(new Rectangle(10360, 88, 600, 632));
            levelTopBBs.Add(new Rectangle(12620, 258, 682, 462));
            levelTopBBs.Add(new Rectangle(22404, 320, 201, 400));
            levelTopBBs.Add(new Rectangle(5230, -110, 256, 830));
            levelTopBBs.Add(new Rectangle(22692, 178, 84, 542));
            levelTopBBs.Add(new Rectangle(18802, 434, 286, 428));



            projectileTex = content.Load <Texture2D>("testProj");

            briefCaseSS = new AnimatedSpriteSheet(TimeSpan.Zero, true, content.Load <Texture2D>("briefcase"), new Vector2(48f, 48f), 1);


            healthTex = content.Load <Texture2D>("hat");
            hatSS     = new AnimatedSpriteSheet(TimeSpan.Zero, true, healthTex, new Vector2(48f, 48f), 1);

            gameFont = content.Load <SpriteFont>("gamefont");
            diagFont = content.Load <SpriteFont>("diagFont");

            border = content.Load <Texture2D>(@"Background/border");

            testAnimTex = new AnimationTexture(TimeSpan.Zero, true);

            testProjectile = new AnimatedSpriteSheet(TimeSpan.Zero, true, projectileTex, new Vector2(projectileTex.Width, projectileTex.Height), 1);

            projectileSS = new AnimatedSpriteSheet[8];

            for (int i = 1; i < 9; i++)
            {
                projectileSS[i - 1] = new AnimatedSpriteSheet(TimeSpan.Zero, true, content.Load <Texture2D>(@"Projectiles/item" + i), new Vector2(64f, 64f), 1);
            }


            for (int i = 1; i < 10; i++)
            {
                testAnimTex.AddFrame(content.Load <Texture2D>(@"testAnim1\tempAnim000" + i));
            }
            for (int i = 10; i < 28; i++)
            {
                testAnimTex.AddFrame(content.Load <Texture2D>(@"testAnim1\tempAnim00" + i));
            }


            for (int i = 0; i < projectiles.Length; i++)
            {
                projectiles[i] = new Projectile();
            }

            /*xml parsing test
             * String xmlfile;
             * firstXmlContent = Content.Load<string>(@"xmlfile");
             * int[] enemy = new int[3];
             * int[] Object = new int[4];
             */


            testAnimTex.ResetTimer(TimeSpan.Zero);
            testAnimTex.ReStartAnimation(TimeSpan.Zero);
            testAnimTex.SetFrameRate(30.0);

            testSS = new AnimatedSpriteSheet(TimeSpan.Zero, true, content.Load <Texture2D>(@"testAnim1\tempAnimSS"), new Vector2(256.0f, 192.0f), 27);
            testSS.ResetTimer(TimeSpan.Zero);
            testSS.ReStartAnimation(TimeSpan.Zero);
            testSS.SetFrameRate(45.0);
            this.ScreenManager.Game.ResetElapsedTime();

            charControllers.Add(new PlayerController(new Character(new Vector2(100F, 200F), 10F, 10, 10, content, 1.0f, "Player\\player", 100), PlayerInput.get(0)));
            charControllers.Add(new AIController(new Character(new Vector2(600F, 200F), 10F, 10, 10, content, 1.0f, "Enemy\\ninja", 100), this));

            /*
             * testHUD = new HUD(this.ScreenManager);
             * testHUD.AddHudItem(healthTex, HudItemPos.topLeft, Vector2.Zero, 0.10f, "life", 3);
             * testHUD.AddHudItem(healthTex, HudItemPos.topRight, Vector2.Zero, 0.10f, "lives", 4, diagFont);
             * testHUD.AddHudItem(healthTex, HudItemPos.bottomLeft, Vector2.Zero, 0.10f, "cases", 2, diagFont);
             * testHUD.AddHudItem(healthTex, HudItemPos.bottomRight, Vector2.Zero, 0.10f, "ammo", 80, diagFont);
             */



            resolutionScaler = Matrix.CreateScale(resolution.X / baseRes.X, resolution.Y / baseRes.Y, 1f);
        }