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(); }
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); } } }
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); }
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); }
public override void HandleDeath() { if (IsDead) { MovementState = CharacterMovementStates.Idle; SpriteState = CharacterSpriteStates.Dead; character.SetSprite(SpriteFactory.GetCharacterDeadSprite(Constants.CHARACTER_TYPE_1)); LevelManager.SendEvent(EventFactory.GetDefaultDeathEvent()); } }
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)); } }
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; }
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); }
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)); } } }
//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); }
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; }
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)); } } }
//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); }
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; }
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); }
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); } } }
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; }
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); }
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(); } } }
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(); } } }
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); } } }
public static void Setup() { score = 0; spriteFont = SpriteFactory.GetScoreSpriteFont(); }