예제 #1
0
        public GameObject(Vector2 spritePosition, string textureName, DrawManager.Layer drawLayer = DrawManager.Layer.Playground, int spriteWidth = 0, int spriteHeight = 0)
        {
            Tuple <Texture, List <Animation> > ss = GfxManager.GetSpritesheet(textureName);

            texture    = ss.Item1;
            animations = ss.Item2;
            Animation  = animations[0];

            //texture = GfxManager.GetTexture(textureName);
            if (texture == null)
            {
                texture = GfxManager.GetSpritesheet(textureName).Item1;
            }

            sprite = new Sprite(Animation.FrameWidth > 0 ? Animation.FrameWidth : texture.Width, Animation.FrameHeight > 0 ? Animation.FrameHeight : texture.Height);


            //texture = GfxManager.GetTexture(textureName);
            sprite          = new Sprite(spriteWidth > 0 ? spriteWidth : texture.Width, spriteHeight > 0 ? spriteHeight : texture.Height);
            sprite.pivot    = new Vector2(sprite.Width / 2, sprite.Height / 2);
            sprite.position = spritePosition;
            layer           = drawLayer;
            IsActive        = true;
            UpdateManager.AddItem(this);
            DrawManager.AddItem(this);
        }
예제 #2
0
        public GameObject(Vector2 spritePosition, string spritesheetName, DrawManager.Layer drawLayer = DrawManager.Layer.Playground)
        {
            Tuple <Texture, List <Animation> > spritesheet = GfxManager.GetSpritesheet(spritesheetName);

            texture    = spritesheet.Item1;
            Animations = spritesheet.Item2;
            Animation  = Animations[0];
            sprite     = new Sprite(Animation.FrameWidth, Animation.FrameHeight)
            {
                position = spritePosition
            };

            /*texture = GfxManager.GetTexture(textureName);
             * sprite = new Sprite(spriteWidth > 0 ? spriteWidth : texture.Width, spriteHeight > 0 ? spriteHeight : texture.Height)
             * {
             *  position = spritePosition
             * };*/
            layer = drawLayer;

            IsActive = true;

            UpdateManager.AddItem(this);
            DrawManager.AddItem(this);

            //Animation = new Animation((int)sprite.Width, (int)sprite.Height, cols, rows, fps, loop);
        }
예제 #3
0
        public Enemy(Vector2 spritePosition, string textureName, DrawManager.Layer drawLayer = DrawManager.Layer.Playground, int spriteWidth = 0, int spriteHeight = 0) : base(spritePosition, textureName, drawLayer, spriteWidth, spriteHeight)
        {
            RigidBody.Type = (uint)PhysicsManager.ColliderType.Enemy;

            fsm = new StateMachine(this);
            PatrolingState ps = new PatrolingState();

            ps.PatrolY = Position.Y;
            ps.MaxX    = Game.PixelToUnit(Game.window.Width - 120);
            ps.MinX    = Game.PixelToUnit(120);

            fsm.RegisterState((int)States.Patroling, ps);
            fsm.RegisterState((int)States.Chase, new ChaseState());
            fsm.RegisterState((int)States.Attack, new AttackState());
            fsm.RegisterState((int)States.Recharge, new RechargeState());

            Agent = new Agent(this);

            fsm.Switch((int)States.Patroling);
            SightRadius    = Game.PixelToUnit(300);
            AttackRadius   = Game.PixelToUnit(150);
            HalfConeAngle  = MathHelper.DegreesToRadians(30);//60 degrees cone
            VisiblePlayers = new List <Player>();
            Nrg            = 100;
        }
예제 #4
0
        public Trap(Vector2 spritePosition, string spriteSheetName = "trapThorns", DrawManager.Layer layer = DrawManager.Layer.Middleground) : base(spritePosition, spriteSheetName, layer)
        {
            playerAnimDie = Player.State.DeathAngel;

            RigidBody = new RigidBody(spritePosition, this);
            RigidBody.SetCollisionMask((uint)PhysicsManager.ColliderType.Player);
            RigidBody.Type = (uint)PhysicsManager.ColliderType.Trap;   //togliere se ci sono problemi con le spine
        }
예제 #5
0
        public Ico(Vector2 spritePosition, string textureName, DrawManager.Layer drawLayer = DrawManager.Layer.Playground, int spriteWidth = 0, int spriteHeight = 0) : base(spritePosition, textureName, drawLayer, spriteWidth, spriteHeight)
        {
            RigidBody      = new RigidBody(sprite.position, this);
            RigidBody.Type = (uint)PhysicsManager.ColliderType.PowerUp;
            RigidBody.SetCollisionMask((uint)PhysicsManager.ColliderType.Actor);

            //Weapons = new WeaponsGUI();
        }
예제 #6
0
        public TntCrate(Vector2 spritePosition, string spriteSheetName = "tntCrate", DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(spritePosition, spriteSheetName, drawLayer)
        {
            Animation.IsActive = false;
            brokenCrate        = new ExplosionCrate(spritePosition - new Vector2(0, 12), "tntExplosion", "tntExplosion");
            countdownStarted   = false;
            clipCountdown      = AudioManager.GetAudioClip("tntCountdown");

            // minVelocityHitY = 35f;
        }
예제 #7
0
        public UkaUka(Vector2 spritePosition, string spriteSheetName = "ukaUka", DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(spritePosition, spriteSheetName, drawLayer)
        {
            sprite.scale = new Vector2(2.5f);
            audioSource  = new AudioSource();
            clipGameOver = new AudioClip("Assets/Audio/gameOver.wav");
            clipShow     = new AudioClip("Assets/Audio/ukaUkaShowed.wav");

            Show();
        }
예제 #8
0
        public Water(Vector2 spritePosition, string spriteSheetName = "underWater", DrawManager.Layer drawLayer = DrawManager.Layer.Foreground) : base(spritePosition, spriteSheetName, drawLayer)
        {
            sprite.SetMultiplyTint(ALPHA, ALPHA, ALPHA, ALPHA);

            RigidBody      = new RigidBody(spritePosition, this);
            RigidBody.Type = (uint)PhysicsManager.ColliderType.Water;
            RigidBody.SetCollisionMask((uint)PhysicsManager.ColliderType.Player);

            splash = new WaterSplash(Vector2.Zero);
        }
예제 #9
0
        public RedEnemyShip(EnemyType t, string spritesheetName = "redEnemy", DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(t, spritesheetName, drawLayer)
        {
            this.Type = t;

            float horizontalSpeed = -RandomGenerator.GetRandom(250, 500);

            RigidBody.Velocity = new Vector2(horizontalSpeed, 0);

            sprite.scale = new Vector2(0.5f, 0.5f);
        }
예제 #10
0
 public GameObject(Vector2 spritePosition, string textureName, DrawManager.Layer drawLayer = DrawManager.Layer.Playground, int spriteWidth = 0, int spriteHeight = 0)
 {
     texture         = GfxManager.GetTexture(textureName);
     sprite          = new Sprite(spriteWidth > 0 ? spriteWidth : texture.Width, spriteHeight > 0 ? spriteHeight : texture.Height);
     sprite.position = spritePosition;
     layer           = drawLayer;
     IsActive        = true;
     UpdateManager.AddItem(this);
     DrawManager.AddItem(this);
 }
예제 #11
0
        public Pickable(Vector2 spritePosition, string spriteSheetName, DrawManager.Layer drawLayer = DrawManager.Layer.Foreground) : base(spritePosition, spriteSheetName, drawLayer)
        {
            RigidBody      = new RigidBody(spritePosition, this);
            RigidBody.Type = (uint)PhysicsManager.ColliderType.Pickable;
            RigidBody.SetCollisionMask((uint)PhysicsManager.ColliderType.Player);
            player = PlayScene.Player;

            clipOnHitted = AudioManager.GetAudioClip("wumpaHit");
            initialPos   = Position;
        }
예제 #12
0
        public PowerUp(EnemyType t, string spritesheetName = "bonus", DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(t, spritesheetName, drawLayer)
        {
            sprite.scale = new Vector2(0.15f, 0.15f);

            float horizontalSpeed = -RandomGenerator.GetRandom(400, 700);

            RigidBody.Velocity = new Vector2(horizontalSpeed, 0);

            RigidBody.Type = (uint)PhysicsManager.ColliderType.PowerUp;
            RigidBody.SetCollisionMask((uint)PhysicsManager.ColliderType.Player);
        }
예제 #13
0
        public PlantEnemy(Vector2 spritePosition, string spriteSheetName = "plant", DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(spritePosition, spriteSheetName, drawLayer)
        {
            sprite.scale = new Vector2(1.2f, 1.5f);
            Rect collider       = new Rect(new Vector2(-4, -15), RigidBody, Width / 2 + 4, Height - 20);
            Rect colliderAttack = new Rect(new Vector2(20, 0), RigidBody, Width / 2, Height / 3);

            RigidBody.SetBoundingBox(collider);

            Animation = animations[(int)AnimationType.Idle];
            animations[(int)AnimationType.Alert].LoopAtFrame(2);
        }
예제 #14
0
        public Apple(Vector2 spritePosition, string spriteSheetName = "apple", DrawManager.Layer drawLayer = DrawManager.Layer.Foreground) : base(spritePosition, spriteSheetName, drawLayer)
        {
            sprite.scale = new Vector2(1.3f, 1.3f);
            speed        = new Vector2(650f);
            Type         = PickableType.Apple;

            clipOnTarget = AudioManager.GetAudioClip("bleep");
            ClipOnPicked = AudioManager.GetAudioClip("applePicked");

            initialPos = spritePosition;
        }
예제 #15
0
 public EnemyShip(string textureName = "enemy", DrawManager.Layer drawLayer = DrawManager.Layer.Playground, int spriteWidth = 0, int spriteHeight = 0) : base(Vector2.Zero, textureName, drawLayer, spriteWidth, spriteHeight)
 {
     sprite.FlipX      = true;
     RigidBody         = new RigidBody(sprite.position, this);
     RigidBody.Type    = (uint)PhysicsManager.ColliderType.Enemy;
     Velocity          = new Vector2(-260, 0);
     IsActive          = false;
     cannonOffset      = new Vector2(-Width / 2, 14);
     Nrg               = 10;
     currentBulletType = BulletManager.BulletType.BigBlueLaser;
 }
예제 #16
0
        public BottomEnemy(EnemyType t, string spritesheetName = "botEnemy", DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(t, spritesheetName, drawLayer)
        {
            sprite.FlipX      = true;
            this.Type         = t;
            this.cannonOffset = new Vector2(0, Height / 3);

            float horizontalSpeed = -RandomGenerator.GetRandom(80, 220);

            RigidBody.Velocity = new Vector2(horizontalSpeed, 0);

            this.bullet = ShootType.DIAGONAL;
        }
예제 #17
0
        public Crate(Vector2 spritePosition, string spriteSheetName, DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(spritePosition, spriteSheetName, drawLayer)
        {
            RigidBody      = new RigidBody(spritePosition, this);
            RigidBody.Type = (uint)PhysicsManager.ColliderType.Crate;
            RigidBody.SetCollisionMask((uint)PhysicsManager.ColliderType.Player | (uint)PhysicsManager.ColliderType.Ground | (uint)PhysicsManager.ColliderType.Crate);
            sprite.scale = new Vector2(1.35f, 1.35f);
            isHitted     = false;

            bounceMultiplierY           = 1.2f;
            minInpactToDetectYCollision = 0.1f;
            UseGroundableGravity        = false;
            CanWalkable = true;

            initialPos = Position;
        }
예제 #18
0
        public Actor(Vector2 spritePosition, string textureName, DrawManager.Layer drawLayer = DrawManager.Layer.Playground, int spriteWidth = 0, int spriteHeight = 0) : base(spritePosition, textureName, drawLayer, spriteWidth, spriteHeight)
        {
            sprite.pivot = new Vector2(((float)Width) / 2, ((float)Height) / 2);
            MaxNrg       = 100;
            shootSpeed   = 100;
            Rotation     = 1.57f;

            RigidBody = new RigidBody(sprite.position, this);
            RigidBody.SetCollisionMask((uint)PhysicsManager.ColliderType.Bullet);
            RigidBody.AddCollision((uint)PhysicsManager.ColliderType.PowerUp);

            bar           = new Bar(new Vector2(Position.X - RigidBody.BoundingCircle.Ray, Position.Y - RigidBody.BoundingCircle.Ray), "loadingBar_bar", MaxNrg);
            bar.BarOffset = new Vector2(4, 4);
            bar.SetValue(Nrg);
            bar.IsActive = true;
        }
예제 #19
0
        public GameObject(
            Vector2 spritePosition, string spritesheetName,
            DrawManager.Layer drawLayer = DrawManager.Layer.Playground)
        {
            Tuple <Texture, Animation> ss = GfxManager.GetSpritesheet(spritesheetName);

            texture   = ss.Item1;
            Animation = ss.Item2;

            sprite          = new Sprite(Animation.FrameWidth, Animation.FrameHeight);
            sprite.position = spritePosition;
            layer           = drawLayer;
            IsActive        = true;
            UpdateManager.AddItem(this);
            DrawManager.AddItem(this);
        }
예제 #20
0
파일: Rect.cs 프로젝트: ngaeta/Bomberman
        public Rect(Vector2 offset, RigidBody owner, float width, float height)
        {
            relativePosition = offset;
            RigidBody        = owner;
            HalfWidth        = width / 2;
            HalfHeight       = height / 2;

            if (Debug)
            {
                IsActive     = true;
                rectCollider = new Sprite(width, height);
                texture      = GfxManager.GetSpritesheet("rectangle").Item1;
                Layer        = DrawManager.Layer.Foreground;
                DrawManager.AddItem(this);
                UpdateManager.AddItem(this);
            }
        }
예제 #21
0
        public GameObject(
            Vector2 spritePosition, string spriteSheetName,
            DrawManager.Layer drawLayer = DrawManager.Layer.Playground)
        {
            Tuple <Texture, List <Animation> > ss = GfxManager.GetSpritesheet(spriteSheetName);

            texture         = ss.Item1;
            animations      = ss.Item2;
            Animation       = animations[0];
            sprite          = new Sprite(Game.PixelsToUnit(Animation.FrameWidth), Game.PixelsToUnit(Animation.FrameHeight));
            sprite.position = spritePosition;
            sprite.pivot    = new Vector2(Width / 2, Height / 2);
            layer           = drawLayer;
            IsActive        = true;

            UpdateManager.AddItem(this);
            DrawManager.AddItem(this);
        }
예제 #22
0
        public EnemyShip(EnemyType t, string spritesheetName = "enemy", DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(Vector2.Zero, spritesheetName, drawLayer)
        {
            this.Type = t;

            sprite.FlipX = true;
            sprite.scale = new Vector2(0.3f, 0.3f);
            Velocity     = new Vector2(-200, 0);
            IsActive     = false;
            cannonOffset = new Vector2(-Width / 2, 0);
            RigidBody    = new RigidBody(sprite.position, this);

            float horizontalSpeed = -RandomGenerator.GetRandom(200, 350);

            RigidBody.Velocity = new Vector2(horizontalSpeed, 0);
            RigidBody.Type     = (uint)PhysicsManager.ColliderType.Enemy;
            RigidBody.AddCollisionMask((uint)PhysicsManager.ColliderType.Player);

            MaxNrg = 1;
            Nrg    = MaxNrg;
        }
예제 #23
0
        public AkuAku(Vector2 spritePosition, Player owner, DrawManager.Layer drawLayer = DrawManager.Layer.Foreground) : base(spritePosition, "akuFirstLevel", drawLayer)
        {
            sprite.scale = new Vector2(0.9f, 0.9f);
            IsActive     = false;
            CreateTextures();
            currLevel = Level.FIRST;

            this.owner    = owner;
            clipOnPicked  = AudioManager.GetAudioClip("akuAkuPicked");
            clipLevelDown = AudioManager.GetAudioClip("akuLevelDown");

            AkuAkuState.Player = owner;
            AkuAkuState.Offset = new Vector2(-30f, -20f);

            machine = new StateMachine(this);
            machine.RegisterState((int)AkuState.Idle, new IdleAkuAkuState());
            machine.RegisterState((int)AkuState.Follow, new FollowAkuAkuState());
            machine.RegisterState((int)AkuState.Attack, new AttackAkuAkuState());

            machine.Switch((int)AkuState.Idle);
        }
예제 #24
0
        public GameObject(
            Vector2 spritePosition, string spriteSheetName,
            DrawManager.Layer drawLayer = DrawManager.Layer.Playground)
        {
            Tuple <Texture, List <Animation> > ss = GfxManager.GetSpritesheet(spriteSheetName);

            texture    = ss.Item1;
            animations = ss.Item2;
            Animation  = animations[0];
            sprite     = new Sprite(Animation.FrameWidth, Animation.FrameHeight);
            //texture = GfxManager.GetTexture(textureName);
            //sprite = new Sprite(spriteWidth>0 ? spriteWidth : texture.Width, spriteHeight>0 ? spriteHeight : texture.Height);
            sprite.position = spritePosition;
            sprite.pivot    = new Vector2(Width / 2, Height / 2);
            //Animation = new Animation((int)sprite.Width, (int)sprite.Height, cols, rows, fps, loop);
            layer    = drawLayer;
            IsActive = true;
            UpdateManager.AddItem(this);
            DrawManager.AddItem(this);
            GameManager.Destoyables.Add(this);
        }
예제 #25
0
        private static void CreateTileLayer(XmlNode nodeData, ref List <string> tileNames, int tileWidth,
                                            int tileHeight, int cols, int typeCreation = 0, DrawManager.Layer layer = DrawManager.Layer.Playground)
        {
            string mapData = nodeData.InnerText;

            string[] mapIndexes = mapData.Split(',');

            for (int i = 0; i <= mapIndexes.Length - 1; i++)
            {
                int index = int.Parse(mapIndexes[i]);
                if (index > 0)
                {
                    string  tileName = tileNames[--index];
                    Vector2 pos      = new Vector2(
                        tileWidth * (i % cols) + tileWidth / 2,
                        tileHeight * (i / cols) + tileHeight / 2);

                    if (typeCreation == 0)
                    {
                        new Ground(pos, tileName, (index == 4 || index == 50) ? false : true);
                    }
                    else
                    {
                        new Ground(pos, tileName, false);
                    }
                }
            }
        }
예제 #26
0
        private static void CreateObjectsLayers(XmlNodeList objectNodes, ref List <string> tileNames, DrawManager.Layer layer)
        {
            for (int i = 0; i < objectNodes.Count; i++)
            {
                XmlNode objectNode = objectNodes[i];
                string  xString    = objectNode.Attributes["x"].Value;
                float   xPos       = float.Parse(xString, System.Globalization.CultureInfo.InvariantCulture);

                string yString = objectNode.Attributes["y"].Value;
                float  yPos    = float.Parse(yString, System.Globalization.CultureInfo.InvariantCulture);

                Vector2 pos           = new Vector2(xPos + (int.Parse(objectNode.Attributes["width"].Value) / 2), yPos - (int.Parse(objectNode.Attributes["height"].Value) / 2));
                int     globalIdCrate = int.Parse(objectNode.Attributes["gid"].Value) - 1;

                GameObject g = new GameObject(pos, tileNames[globalIdCrate]);

                if (objectNode.HasChildNodes)
                {
                    g.GetSprite().FlipX = bool.Parse(objectNode.FirstChild.FirstChild.Attributes["value"].Value);
                }
            }
        }
예제 #27
0
 public AppleCrate(Vector2 spritePosition, string spriteSheetName = "appleCrate", DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(spritePosition, spriteSheetName, drawLayer)
 {
 }
예제 #28
0
        public BlowGunManEnemy(Vector2 spritePosition, string spriteSheetName = "blowGunMan", DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(spritePosition, spriteSheetName, drawLayer)
        {
            sprite.scale = new Vector2(1.3f, 1.1f);

            Machine = new StateMachine(this);
            Machine.RegisterState((int)State.Patrol, new BlowGunManPatrolState());
            Machine.RegisterState((int)State.Alert, new BlowGunManAlertState());
            Machine.RegisterState((int)State.Attack, new BlowGunManAttackState());

            Machine.Switch((int)State.Patrol);

            standUpShootOffset = new Vector2(Width / 2, -Height / 5);
            crouchShootOffset  = new Vector2(Width / 2, 6f); //o 5 al posto di 6
            SightRadius        = 450f;
            halfConeAngle      = MathHelper.DegreesToRadians(15);

            colliderStandUp = new Rect(new Vector2(0, 0), RigidBody, Width / 2, Height - 5);
            colliderCrouch  = new Rect(new Vector2(0, 10), RigidBody, Width / 2, Height - 25);
            RigidBody.SetBoundingBox(colliderStandUp);

            colliderCrouch.IsActive = false;

            IsCrouched     = false;
            useMultiplyRay = true;
            rayOffset      = new Vector2(0, -Height / 2.5f);
            ignoreMaskRaySight.Add(PhysicsManager.ColliderType.Trap);

            clipShoot = AudioManager.GetAudioClip("blowGun");
        }
예제 #29
0
 public WaterSplash(Vector2 spritePosition, string spriteSheetName = "waterSplash", DrawManager.Layer drawLayer = DrawManager.Layer.Foreground) : base(spritePosition, spriteSheetName, drawLayer)
 {
     clipSplash = AudioManager.GetAudioClip("waterSplash");
     IsActive   = false;
 }
예제 #30
0
        public TriggerNitroCrate(Vector2 spritePosition, string spriteSheetName = "triggerNitro", DrawManager.Layer drawLayer = DrawManager.Layer.Playground) : base(spritePosition, spriteSheetName, drawLayer)
        {
            Animation.LoopAtFrame(9);
            Animation.IsActive = false;
            nitroToExplode     = new List <NitroCrate>();

            Rect rect = new Rect(new Vector2(-2, 22), RigidBody, Width - 16, Height / 2 - 5);

            RigidBody.SetBoundingBox(rect);
            clipOnHit = AudioManager.GetAudioClip("crateTriggerHit");

            UseGroundableGravity = false;
        }