Esempio n. 1
0
        protected override void Initialize()
        {
            SpriteFactory.SetContentManager(Content);
            SoundFactory.SetContentManager(Content);
            LevelFactory.Setup();
            ClockFactory.Setup();
            EventFactory.Setup();
            ScoreManager.Setup();
            keyboard          = new KeyboardController();
            gamepadcontroller = new GamePadController();
            controllers       = new List <IController>();

            if (gamepadcontroller.IsConnected())
            {
                controllers = new List <IController>()
                {
                    gamepadcontroller
                };
            }
            else
            {
                controllers = new List <IController>()
                {
                    keyboard
                };
            }


            IsMouseVisible = true;
            base.Initialize();
        }
Esempio n. 2
0
        public HUD(AbstractCharacter character)
        {
            this.character       = character;
            this.maxHealth       = character.HealthLevel;
            this.vertOffset      = 2;
            this.vertOffsetScore = 8;
            this.horizOffset     = new int[maxHealth + 3];
            this.heartEmpty      = new AbstractAnimatedSprite[maxHealth];
            this.heartFull       = new AbstractAnimatedSprite[maxHealth];

            for (int i = 0; i < maxHealth; i++)
            {
                this.horizOffset[i] = 2 + 18 * i;
                this.heartEmpty[i]  = SpriteFactory.GetHeartEmptySprite();
                this.heartFull[i]   = SpriteFactory.GetHeartFullSprite();
            }

            this.horizOffset[maxHealth]     = this.horizOffset[maxHealth - 1] + 34;
            this.horizOffset[maxHealth + 1] = this.horizOffset[maxHealth] + 34;
            this.horizOffset[maxHealth + 2] = this.horizOffset[maxHealth + 1] + 200;

            this.powerUpViewer = SpriteFactory.GetPowerUpViewerSprite();

            this.waterMeter0p   = SpriteFactory.GetWaterMeter0pSprite();
            this.waterMeter25p  = SpriteFactory.GetWaterMeter25pSprite();
            this.waterMeter50p  = SpriteFactory.GetWaterMeter50pSprite();
            this.waterMeter75p  = SpriteFactory.GetWaterMeter75pSprite();
            this.waterMeter100p = SpriteFactory.GetWaterMeter100pSprite();

            this.sunscreen         = SpriteFactory.GetSunscreenSprite();
            this.invincibilityStar = SpriteFactory.GetInvincibilityStarSprite();
            this.bubbleShield      = SpriteFactory.GetBubbleShieldSprite();
        }
        public void Parse(IEnumerable <XElement> collectables)
        {
            foreach (XElement element in collectables)
            {
                int           dur           = ParseDuration(element);
                Rectangle     position      = ParsePosition(element);
                CollisionType collisionType = ParseCollisionType(element);
                string        message       = ParseMessage(element);

                if (element.Name.ToString().Equals(GenericParser.star))
                {
                    InvincibilityStar s = new InvincibilityStar(SpriteFactory.GetInvincibilityStarSprite(), dur, position, collisionType, message);
                    CollectablesList.Add(s);
                }

                else if (element.Name.ToString().Equals(GenericParser.bottle))
                {
                    WaterBottle b = new WaterBottle(SpriteFactory.GetWaterBottleSprite(), dur, position, collisionType, message);
                    CollectablesList.Add(b);
                }

                else if (element.Name.ToString().Equals(GenericParser.healthAttr))
                {
                    HealthBottle health = new HealthBottle(position, SpriteFactory.GetHealthBottleSprite(), collisionType, dur, message);
                    CollectablesList.Add(health);
                }

                else if (element.Name.ToString().Equals(GenericParser.coin))
                {
                    Coin coin = new Coin(position, SpriteFactory.GetCoinSprite(), collisionType, dur, message);
                    CollectablesList.Add(coin);
                }
            }
        }
Esempio n. 4
0
        public static AbstractEvent GetDefaultDeathEvent()
        {
            SpriteFontContainer spriteFontContainer = new SpriteFontContainer(SpriteFactory.GetLightSpriteFont(), Color.Red);
            String        deathMessage  = "You are Dead";
            AbstractEvent abstractEvent = new DefaultDeathEvent(new TimeSpan(0, 0, 0, 3), new TimeSpan(0, 0, 0, 5), deathMessage, spriteFontContainer);

            return(abstractEvent);
        }
Esempio n. 5
0
        public static AbstractEvent GetDefaultSubLevelTransitionEvent()
        {
            SpriteFontContainer completeFontContainer = new SpriteFontContainer(SpriteFactory.GetLightSpriteFont(), Color.Orange);
            String        completeMessage             = "Onward!";
            AbstractEvent abstractEvent = new DefaultSubLevelTransitionEvent(new TimeSpan(0, 0, 0, 0), new TimeSpan(0, 0, 0, 3),
                                                                             completeMessage, completeFontContainer);

            return(abstractEvent);
        }
Esempio n. 6
0
 public override void HandleDeath()
 {
     if (IsDead)
     {
         MovementState = CharacterMovementStates.Idle;
         SpriteState   = CharacterSpriteStates.Dead;
         character.SetSprite(SpriteFactory.GetCharacterDeadSprite(Constants.CHARACTER_TYPE_1));
         LevelManager.SendEvent(EventFactory.GetDefaultDeathEvent());
     }
 }
Esempio n. 7
0
        public override void HandleLanding()
        {
            IsInAir = false;

            if (MovementState == CharacterMovementStates.Jumping)
            {
                MovementState = CharacterMovementStates.Idle;
                SpriteState   = IsFacingRight ? CharacterSpriteStates.IdleRight : CharacterSpriteStates.IdleLeft;
                character.SetSprite(SpriteFactory.GetCharacterIdleSprite(Constants.CHARACTER_TYPE_1, IsFacingRight ? SpriteOrientation.Right : SpriteOrientation.Left, IsCarryingObject));
            }
        }
Esempio n. 8
0
 public UIStartMenu()
 {
     this.startGameButton    = new UIButton(new Rectangle(61, 105, 362, 32), null);
     this.levelSelectButton  = new UIButton(new Rectangle(151, 203, 184, 32), null);
     this.selectLevel0Button = new UIButton(new Rectangle(138, 114, 212, 40), null);
     this.selectLevel1Button = new UIButton(new Rectangle(138, 183, 212, 40), null);
     this.startMenuSprite    = SpriteFactory.GetStartMenuSprite();
     this.levelMenuSprite    = SpriteFactory.GetLevelMenuSprite();
     this.isInLevelsMenu     = false;
     this.isFinished         = false;
 }
Esempio n. 9
0
        public static AbstractEvent GetDefaultLevelCompleteEvent()
        {
            SpriteFontContainer completeFontContainer = new SpriteFontContainer(SpriteFactory.GetLightSpriteFont(), Color.Azure);
            String completeMessage = "Level Complete!";
            SpriteFontContainer scoreFontContainer = new SpriteFontContainer(SpriteFactory.GetSoulsSpriteFont(), Color.Azure);
            String        scoreMessage             = "Your score is " + ScoreManager.GetScore();
            AbstractEvent abstractEvent            = new DefaultLevelCompleteEvent(new TimeSpan(0, 0, 0, 0), new TimeSpan(0, 0, 0, 3), new TimeSpan(0, 0, 0, 5),
                                                                                   completeMessage, scoreMessage, completeFontContainer, scoreFontContainer);

            return(abstractEvent);
        }
Esempio n. 10
0
        private void ProcessActions(List <Actions> actionList)
        {
            foreach (Actions action in actionList)
            {
                if (action == Actions.MoveRight)
                {
                    StateManager.HandleMoveRightInput();

                    if (StateManager.IsFacingRight)
                    {
                        MoveRight();
                    }
                }

                else if (action == Actions.MoveLeft)
                {
                    StateManager.HandleMoveLeftInput();

                    if (!StateManager.IsFacingRight)
                    {
                        MoveLeft();
                    }
                }

                else if (action == Actions.Jump)
                {
                    StateManager.HandleJumpInput();
                }

                else if (action == Actions.PickUp)
                {
                    StateManager.HandlePickupInput();
                }

                else if (action == Actions.Drink)
                {
                    StateManager.HandleDrinkInput();
                }
            }

            if (actionList.Count == 0 && !StateManager.IsInAir && !StateManager.IsDead)
            {
                if (Velocity.X == 0 && Velocity.Y == 0 && StateManager.IsFacingRight)
                {
                    StateManager.MovementState = CharacterMovementStates.Idle;
                    SetSprite(SpriteFactory.GetCharacterIdleSprite(Constants.CHARACTER_TYPE_1, SpriteOrientation.Right, StateManager.IsCarryingObject));
                }
                else if (Velocity.X == 0 && Velocity.Y == 0 && !StateManager.IsFacingRight)
                {
                    StateManager.MovementState = CharacterMovementStates.Idle;
                    SetSprite(SpriteFactory.GetCharacterIdleSprite(Constants.CHARACTER_TYPE_1, SpriteOrientation.Left, StateManager.IsCarryingObject));
                }
            }
        }
Esempio n. 11
0
 //Response Methods
 public void ChangeDirection()
 {
     if (spriteOrientation == SpriteOrientation.Right)
     {
         spriteOrientation = SpriteOrientation.Left;
     }
     else if (spriteOrientation == SpriteOrientation.Left)
     {
         spriteOrientation = SpriteOrientation.Right;
     }
     sprite   = SpriteFactory.GetHortoiseSprite(this.spriteOrientation);
     Velocity = new Vector2(-Velocity.X, Velocity.Y);
 }
Esempio n. 12
0
 public HortoiseEnemy(Rectangle position, int power, int velocity, SpriteOrientation spriteOrientation, CollisionType collisionType, string message)
 {
     this.Position              = new Vector2(position.X, position.Y);
     this.Size                  = new Vector2(position.Width, position.Height);
     this.Power                 = power;
     this.Velocity              = new Vector2(velocity, 0);
     this.CollisionType         = CollisionType.Liquid;
     this.IsAlive               = true;
     this.spriteOrientation     = spriteOrientation;
     this.sprite                = SpriteFactory.GetHortoiseSprite(this.spriteOrientation);
     this.ShouldNotifyReceivers = false;
     this.CollisionType         = collisionType;
     this.MessageToReceivers    = message;
 }
Esempio n. 13
0
        public void Parse(IEnumerable <XElement> terrainList)
        {
            foreach (XElement element in terrainList)
            {
                Rectangle     position      = ParsePosition(element);
                CollisionType collisionType = ParseCollisionType(element);
                XAttribute    attribute     = element.Attribute(GenericParser.typeAttr);
                string        message       = ParseMessage(element);

                if (attribute != null && (typeMap[((string)attribute)] is Sandstone))
                {
                    TerrainList.Add(new Sandstone(position, SpriteFactory.GetSandstoneSprite(), collisionType, message));
                }
            }
        }
Esempio n. 14
0
        //Response Methods
        public void ChangeDirection()
        {
            if (spriteOrientation == SpriteOrientation.Up)
            {
                spriteOrientation = SpriteOrientation.Down;
            }
            else if (spriteOrientation == SpriteOrientation.Down)
            {
                spriteOrientation = SpriteOrientation.Up;
            }
            Velocity = new Vector2(0, -Velocity.Y);

            isJumping = false;
            sprite    = SpriteFactory.GetSpiderSprite(this.spriteOrientation);
        }
Esempio n. 15
0
 public SpiderEnemy(Rectangle position, int power, int speed, int jumpFrequency, SpriteOrientation spriteOrientation, CollisionType collisionType, string message)
 {
     this.Position              = new Vector2(position.X, position.Y);
     this.Size                  = new Vector2(position.Width, position.Height);
     this.Power                 = power;
     this.Velocity              = new Vector2(0, (spriteOrientation == SpriteOrientation.Up ? -1 : 1) * speed);
     this.isJumping             = false;
     this.jumpFrequency         = jumpFrequency;
     this.jumpCurrent           = 0;
     this.IsAlive               = true;
     this.ShouldNotifyReceivers = false;
     this.spriteOrientation     = spriteOrientation;
     this.sprite                = SpriteFactory.GetSpiderSprite(this.spriteOrientation);
     this.CollisionType         = collisionType;
     this.MessageToReceivers    = message;
 }
Esempio n. 16
0
 public void SetOrientation(SpriteOrientation spriteOrientation)
 {
     this.spriteOrientation = spriteOrientation;
     if (this.spriteOrientation == SpriteOrientation.Left)
     {
         this.Velocity = new Vector2(-speed, 0);
     }
     else if (this.spriteOrientation == SpriteOrientation.Right)
     {
         this.Velocity = new Vector2(speed, 0);
     }
     else if (this.spriteOrientation == SpriteOrientation.Up)
     {
         this.Velocity = new Vector2(0, -speed);
     }
     this.sprite = SpriteFactory.GetNeedleSprite(this.spriteOrientation);
 }
Esempio n. 17
0
        public void Parse(IEnumerable <XElement> enemies)
        {
            foreach (XElement element in enemies)
            {
                int power, speed, freq;
                SpriteOrientation orient;

                Rectangle position = ParsePosition(element);
                string    message  = ParseMessage(element);
                power  = ParseInt(element, GenericParser.powerAttr);
                speed  = ParseInt(element, GenericParser.speedAttr);
                freq   = ParseInt(element, GenericParser.freqAttr);
                orient = ParseSpriteOrientation(element, GenericParser.orientionAttr);
                CollisionType collisionType = ParseCollisionType(element);

                if (element.Name.ToString().Equals(GenericParser.hortoise))
                {
                    HortoiseEnemy h = new HortoiseEnemy(position, power, speed, orient, collisionType, message);
                    EnemiesList.Add(h);
                }

                else if (element.Name.ToString().Equals(GenericParser.spider))
                {
                    SpiderEnemy s = new SpiderEnemy(position, power, speed, freq, orient, collisionType, message);
                    EnemiesList.Add(s);
                }

                else if (element.Name.ToString().Equals(GenericParser.cactus))
                {
                    CactusEnemy c = new CactusEnemy(position, power, speed, freq, collisionType, message);
                    EnemiesList.Add(c);
                }

                else if (element.Name.ToString().Equals(GenericParser.golem))
                {
                    GolemEnemy g = new GolemEnemy(position, new Vector2(0, 0), SpriteFactory.GetGolemEnemySprite(), power, collisionType, message);
                    EnemiesList.Add(g);
                }
            }
        }
Esempio n. 18
0
        public override void HandleMoveRightInput()
        {
            if (MovementState == CharacterMovementStates.Idle && IsFacingRight)
            {
                MovementState = CharacterMovementStates.Walking;
                character.SetSprite(SpriteFactory.GetCharacterWalkingSprite(Constants.CHARACTER_TYPE_1, SpriteOrientation.Right, IsCarryingObject));
            }
            else if (MovementState == CharacterMovementStates.Walking && IsCollidingWithPushableObject)
            {
                MovementState = CharacterMovementStates.Pushing;
                character.SetSprite(SpriteFactory.GetCharacterPushingSprite(Constants.CHARACTER_TYPE_1, SpriteOrientation.Right));
            }
            else if (MovementState == CharacterMovementStates.Idle && !IsFacingRight)
            {
                MovementState = CharacterMovementStates.Idle;
                character.SetSprite(SpriteFactory.GetCharacterIdleSprite(Constants.CHARACTER_TYPE_1, SpriteOrientation.Right, IsCarryingObject));
            }
            else if (MovementState == CharacterMovementStates.Walking && !IsFacingRight)
            {
                MovementState = CharacterMovementStates.Idle;
                character.SetSprite(SpriteFactory.GetCharacterIdleSprite(Constants.CHARACTER_TYPE_1, SpriteOrientation.Right, IsCarryingObject));
            }
            else if (MovementState == CharacterMovementStates.Pushing && IsFacingRight)
            {
                MovementState = CharacterMovementStates.Pushing;
            }
            else if (MovementState == CharacterMovementStates.Pushing && !IsFacingRight)
            {
                MovementState = CharacterMovementStates.Idle;
                character.SetSprite(SpriteFactory.GetCharacterIdleSprite(Constants.CHARACTER_TYPE_1, SpriteOrientation.Right, IsCarryingObject));
            }
            else if (MovementState == CharacterMovementStates.Jumping)
            {
                MovementState = CharacterMovementStates.Jumping;
                character.SetSprite(SpriteFactory.GetCharacterJumpingSprite(Constants.CHARACTER_TYPE_1, SpriteOrientation.Right, IsCarryingObject));
                IsInAir = true;
            }

            IsFacingRight = true;
        }
Esempio n. 19
0
        public CactusEnemy(Rectangle position, int power, int velocity, int frequency, CollisionType collisionType, string message)
        {
            this.Position = new Vector2(position.X, position.Y);
            this.Size     = new Vector2(position.Width, position.Height);
            this.Power    = power;
            this.IsAlive  = true;
            this.sprite   = SpriteFactory.GetCactusSprite();
            this.ShouldNotifyReceivers = false;
            this.CollisionType         = collisionType;
            this.Velocity           = new Vector2(0, 0);
            this.needleSpeed        = velocity;
            this.needleFrequency    = frequency;
            this.timer              = frequency - 15;
            this.MessageToReceivers = message;

            needleRect = new Rectangle(
                position.X + position.Width / 2 - needleWidth / 2,
                position.Y + position.Height / 2 - needleHeight / 2,
                needleWidth,
                needleHeight);
            needles = new List <NeedleEnemy>(6);
        }
Esempio n. 20
0
        public static void ParseProperties(IEnumerable <XElement> elements)
        {
            foreach (XElement element in elements)
            {
                String b, m;
                b = (string)element.Attribute(backgroundAttr);
                m = (string)element.Attribute(musicAttr);

                if (b.Equals(desert))
                {
                    background = SpriteFactory.GetDesertBackgroundSprite();
                }

                else if (b.Equals(hospital))
                {
                    background = SpriteFactory.GetDesertBackgroundSprite();
                }

                else
                {
                    //background = SpriteFactory.GetDesertBackgroundSprite();
                }

                if (m.Equals(desert))
                {
                    music = SoundFactory.GetDesertSong();
                }

                else if (m.Equals(hospital))
                {
                    music = SoundFactory.GetHospitalSong();
                }

                else
                {
                    //music = SoundFactory.GetDesertSongSound();
                }
            }
        }
Esempio n. 21
0
        public override bool GoToAir()
        {
            //return true if we had to switch stuff to be in air
            if ((MovementState == CharacterMovementStates.Idle ||
                 MovementState == CharacterMovementStates.Pushing ||
                 MovementState == CharacterMovementStates.Walking) && !IsInAir)
            {
                MovementState = CharacterMovementStates.Jumping;
                IsInAir       = true;

                if (IsFacingRight)
                {
                    character.SetSprite(SpriteFactory.GetCharacterJumpingSprite(Constants.CHARACTER_TYPE_1, SpriteOrientation.Right, IsCarryingObject));
                }
                else
                {
                    character.SetSprite(SpriteFactory.GetCharacterJumpingSprite(Constants.CHARACTER_TYPE_1, SpriteOrientation.Left, IsCarryingObject));
                }
                return(true);
            }
            return(false);
        }
        public void Parse(IEnumerable <XElement> elements)
        {
            foreach (XElement element in elements)
            {
                String b, m;
                b = (string)element.Attribute(GenericParser.backgroundAttr);
                m = (string)element.Attribute(GenericParser.musicAttr);

                if (b.Equals(GenericParser.desert))
                {
                    Background = SpriteFactory.GetDesertBackgroundSprite();
                }

                else if (b.Equals(GenericParser.hospital))
                {
                    Background = SpriteFactory.GetHospitalBackgroundSprite();
                }

                else
                {
                    Background = SpriteFactory.GetDSBackgroundSprite();
                }

                if (m.Equals(GenericParser.desert))
                {
                    Music = SoundFactory.GetDesertSong();
                }

                else if (m.Equals(GenericParser.hospital))
                {
                    Music = SoundFactory.GetHospitalSong();
                }

                else
                {
                    Music = SoundFactory.GetInvincibleSong();
                }
            }
        }
Esempio n. 23
0
        public void Parse(IEnumerable <XElement> items)
        {
            foreach (XElement element in items)
            {
                Rectangle     position      = ParsePosition(element);
                CollisionType collisionType = ParseCollisionType(element);
                string        message       = ParseMessage(element);

                if (element.Name.ToString().Equals(GenericParser.crate))
                {
                    CrateItem c = new CrateItem(position, SpriteFactory.GetCrateSprite(), collisionType, message);
                    ItemList.Add(c);
                }

                else if (element.Name.ToString().Equals(GenericParser.boulder))
                {
                    BoulderItem b = new BoulderItem(position, SpriteFactory.GetBoulderSprite(), collisionType, message);
                    ItemList.Add(b);
                }

                else if (element.Name.ToString().Equals(GenericParser.falsebrick))
                {
                    FalseBrick f = new FalseBrick(SpriteFactory.GetBrickSprite(), ParsePosition(element), ParseCollisionType(element), ParseBool(element, GenericParser.isWaitingForActivationAttr), message);
                    ItemList.Add(f);
                }

                else if (element.Name.ToString().Equals(GenericParser.button))
                {
                    ButtonItem b = new ButtonItem(position, SpriteFactory.GetButtonSprite(), collisionType, message);
                    ItemList.Add(b);
                }

                else if (element.Name.ToString().Equals(GenericParser.fishbowl))
                {
                    PickupItem f = new PickupItem(position, SpriteFactory.GetFishbowlSprite(), collisionType, message);
                    ItemList.Add(f);
                }

                else if (element.Name.ToString().Equals(GenericParser.joebota))
                {
                    PickupItem jb = new PickupItem(position, SpriteFactory.GetJoeBotaSprite(), collisionType, message);
                    ItemList.Add(jb);
                }

                else if (element.Name.ToString().Equals(GenericParser.door))
                {
                    Door d = new Door(ParseInt(element, GenericParser.nextLevelAttr), ParseBool(element, GenericParser.isWaitingForActivationAttr), SpriteFactory.GetDoorSprite(), position, collisionType, message);
                    ItemList.Add(d);
                }

                else if (element.Name.ToString().Equals(GenericParser.continuousbutton))
                {
                    ContinuousButton b = new ContinuousButton(position, SpriteFactory.GetButtonSprite(), collisionType, message);
                    ItemList.Add(b);
                }

                else if (element.Name.ToString().Equals(GenericParser.conveyor))
                {
                    int blockWidth = ParseInt(element, GenericParser.blockWidthAttr);
                    SpriteOrientation orientation = ParseSpriteOrientation(element, GenericParser.orientionAttr);
                    float             speed       = ParseFloat(element, GenericParser.speedAttr);
                    Conveyor          c           = new Conveyor(
                        new Vector2(position.X, position.Y),
                        blockWidth,
                        speed,
                        orientation,
                        ParseFloat(element, GenericParser.activatedSpeedAttr),
                        ParseSpriteOrientation(element, GenericParser.activatedOrientationAttr),
                        SpriteFactory.GetConveyorSprite(blockWidth, orientation, speed));
                    ItemList.Add(c);
                }

                else if (element.Name.ToString().Equals(GenericParser.teleporter))
                {
                    Teleporter teleporter = new Teleporter(SpriteFactory.GetTeleporterSprite(), ParsePosition(element), ParseCollisionType(element), new Vector2(ParseInt(element, GenericParser.newXAttr), ParseInt(element, GenericParser.newYAttr)), ParseBool(element, GenericParser.isWaitingForActivationAttr), message);
                    ItemList.Add(teleporter);
                }
            }
        }
Esempio n. 24
0
 public static void Setup()
 {
     score      = 0;
     spriteFont = SpriteFactory.GetScoreSpriteFont();
 }