protected virtual bool ProcessFalling(bool isFailing) { SpriteTypeEnum cur1 = Room[X, Y]; SpriteTypeEnum cur2 = Room[X + 1, Y]; SpriteTypeEnum pos1 = Room[X, Y + 1]; SpriteTypeEnum pos2 = Room[X + 1, Y + 1]; bool result; if (isFailing) { result = HasNoStrongHold(pos1, true) && HasNoStrongHold(pos2, true) && !(Maps.IsBiomass(cur1) && Maps.IsBiomass(cur2)); } else { result = HasNoStrongHold(pos1, false) && HasNoStrongHold(pos2, false) && !(Maps.IsStairs(cur1) || Maps.IsStairs(cur2)); } if (result) { Y++; } return(result); }
protected virtual bool CanMove(DirectionEnum direction) { bool result = false; switch (direction) { case DirectionEnum.Up: { if (Y == 0) { break; } SpriteTypeEnum cur1 = Room[X, Y]; SpriteTypeEnum cur2 = Room[X + 1, Y]; SpriteTypeEnum pos1 = Room[X, Y - 1]; SpriteTypeEnum pos2 = Room[X + 1, Y - 1]; result = ((Maps.IsStairs(cur1) && Maps.IsStairs(cur2)) && !(Maps.IsWall(pos1) || Maps.IsWall(pos2))); break; } case DirectionEnum.Down: { if (Y == 16) { break; } SpriteTypeEnum pos1 = Room[X, Y + 1]; SpriteTypeEnum pos2 = Room[X + 1, Y + 1]; result = (HasNoStrongHold(pos1, false) && HasNoStrongHold(pos2, false)) || (Maps.IsStairs(pos1) && Maps.IsStairs(pos2)); break; } case DirectionEnum.Left: { if (X == 0) { break; } SpriteTypeEnum pos = Room[X - 1, Y]; result = !Maps.IsWall(pos); break; } case DirectionEnum.Right: { if (X == 49) { break; } SpriteTypeEnum pos = Room[X + 2, Y]; result = !Maps.IsWall(pos); break; } } return(result); }
protected SpriteTypeEnum GetSprite(SpriteTypeEnum oldSprite) { if (oldSprite == SpriteTypeEnum.WallLive1) return SpriteTypeEnum.WallLive2; if (oldSprite == SpriteTypeEnum.WallLive2) return SpriteTypeEnum.WallLive3; if (oldSprite == SpriteTypeEnum.WallLive3) return SpriteTypeEnum.BrickWall; return oldSprite; }
protected SpriteTypeEnum GetSprite(SpriteTypeEnum oldSprite) { if (oldSprite == SpriteTypeEnum.Biomass1) return SpriteTypeEnum.Biomass2; if (oldSprite == SpriteTypeEnum.Biomass2) return SpriteTypeEnum.Biomass3; if (oldSprite == SpriteTypeEnum.Biomass3) return SpriteTypeEnum.Biomass4; if (oldSprite == SpriteTypeEnum.Biomass4) return SpriteTypeEnum.Biomass1; return oldSprite; }
private bool HasNoStrongHold(SpriteTypeEnum sprite, bool isFalling) { bool result = Maps.IsBiomass(sprite) || Maps.IsLiveWall(sprite) || Maps.IsSpace(sprite) || Maps.IsChest(sprite); if (isFalling && !result) { result = Maps.IsFloor(sprite); } return(result); }
protected SpriteTypeEnum GetSprite(SpriteTypeEnum oldSprite) { if (oldSprite == SpriteTypeEnum.WallLive1) { return(SpriteTypeEnum.WallLive2); } if (oldSprite == SpriteTypeEnum.WallLive2) { return(SpriteTypeEnum.WallLive3); } if (oldSprite == SpriteTypeEnum.WallLive3) { return(SpriteTypeEnum.BrickWall); } return(oldSprite); }
public override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Game.BackgroundColor); Game.SpriteBatch.Begin(); DrawInfoPanel(Game.SpriteBatch); for (int x = 0; x < Maps.CapacityX; x++) { for (int y = 0; y < Maps.CapacityY; y++) { SpriteTypeEnum item = this[x, y]; Game.SpriteBatch.Draw(Game.Sprites[item, Game.BackColor].Texture, new Vector2(x * 16, (y + 2) * 32), Color.White); } } Game.SpriteBatch.End(); base.Draw(gameTime); }
protected SpriteTypeEnum GetSprite(SpriteTypeEnum oldSprite) { if (oldSprite == SpriteTypeEnum.Biomass1) { return(SpriteTypeEnum.Biomass2); } if (oldSprite == SpriteTypeEnum.Biomass2) { return(SpriteTypeEnum.Biomass3); } if (oldSprite == SpriteTypeEnum.Biomass3) { return(SpriteTypeEnum.Biomass4); } if (oldSprite == SpriteTypeEnum.Biomass4) { return(SpriteTypeEnum.Biomass1); } return(oldSprite); }
private void CorrectHeroStairsPosition(DirectionEnum direction) { if (direction == DirectionEnum.Down || direction == DirectionEnum.Up) { SpriteTypeEnum pos1 = Room[X, Y]; SpriteTypeEnum pos2 = Room[X + 1, Y]; if (direction == DirectionEnum.Down) { pos1 = Room[X, Y + 1]; pos2 = Room[X + 1, Y + 1]; } if (pos1 == SpriteTypeEnum.StairsRight) { X--; } if (pos2 == SpriteTypeEnum.StairsLeft) { X++; } } }
protected virtual void ActorUpdate(GameTime gameTime) { _isFalling = ProcessFalling(_isFalling); if (!_isFalling) { bool isMoving = Move(Direction); if (!isMoving) { Direction = DirectionEnum.None; } } else { Direction = DirectionEnum.None; } if (OnReportPostion != null) { OnReportPostion(this, new ReportPostionEventArgs(X, Y)); } _heroSprite = GetSprite(_isFalling, _heroSprite); }
public static bool IsSpace(SpriteTypeEnum source) { return(source == SpriteTypeEnum.Space || source == SpriteTypeEnum.Chest); }
public static bool IsStairs(SpriteTypeEnum source) { return(source >= SpriteTypeEnum.StairsLeft && source <= SpriteTypeEnum.StairsRight); }
private bool CanMoveBottom(SpriteTypeEnum sprite) { return(!Maps.IsStairs(sprite) && !Maps.IsWall(sprite) && !Maps.IsChest(sprite) && !Maps.IsFloor(sprite)); }
private bool CanMoveBottom(SpriteTypeEnum sprite) { return !Maps.IsStairs(sprite) && !Maps.IsWall(sprite) && !Maps.IsChest(sprite) && !Maps.IsFloor(sprite); }
public static bool IsWall(SpriteTypeEnum source) { return IsBrickWall(source) || IsStoneWall(source); }
public GameSprite(SpriteTypeEnum itemType, Texture2D texture, BackColorEnum backColor) { ItemType = itemType; Texture = texture; BackColor = backColor; }
public static bool IsLiveWall(SpriteTypeEnum source) { return (source >= SpriteTypeEnum.WallLive1 && source <= SpriteTypeEnum.WallLive3); }
protected override SpriteTypeEnum GetSprite(bool isFalling, SpriteTypeEnum oldSprite) { if (_shootStage == ShootStageEnum.Fire) { _shootStage = ShootStageEnum.None; DirectionEnum direction = _shootDirection; if (direction == DirectionEnum.Left) { return(SpriteTypeEnum.HeroShotLeft); } return(SpriteTypeEnum.HeroShotRight); } if (_shootStage == ShootStageEnum.Preparation) { _shootStage = ShootStageEnum.Fire; if (_shootDirection == DirectionEnum.Left) { return(SpriteTypeEnum.HeroPrepareShotLeft); } return(SpriteTypeEnum.HeroPrepareShotRight); } if (IsInBiomass) { _bioMassAttempts--; if (_bioMassAttempts == 0 && OnLifeFired != null) { OnLifeFired(this, new EventArgs()); } if (oldSprite == SpriteTypeEnum.HeroInBiomass1) { return(SpriteTypeEnum.HeroInBiomass2); } if (oldSprite == SpriteTypeEnum.HeroInBiomass2) { return(SpriteTypeEnum.HeroInBiomass3); } return(SpriteTypeEnum.HeroInBiomass1); } if (isFalling || (Direction == DirectionEnum.Up || Direction == DirectionEnum.Down)) // Fall and Stairs { if (oldSprite == SpriteTypeEnum.HeroStairsLeft) { return(SpriteTypeEnum.HeroStairsRight); } return(SpriteTypeEnum.HeroStairsLeft); } if (Direction == DirectionEnum.None) // Idle { if (_heroIdleDivider) { _heroIdleDivider = false; if (oldSprite == SpriteTypeEnum.HeroIdleRight) { _heroIdleHeadDirection = DirectionEnum.Left; return(SpriteTypeEnum.HeroIdle); } if (oldSprite == SpriteTypeEnum.HeroIdleLeft) { _heroIdleHeadDirection = DirectionEnum.Right; return(SpriteTypeEnum.HeroIdle); } if (oldSprite == SpriteTypeEnum.HeroIdle) { if (_heroIdleHeadDirection == DirectionEnum.Right) { return(SpriteTypeEnum.HeroIdleRight); } if (_heroIdleHeadDirection == DirectionEnum.Left) { return(SpriteTypeEnum.HeroIdleLeft); } } } else { _heroIdleDivider = true; return(oldSprite); } } if (Direction == DirectionEnum.Left) { if (oldSprite == SpriteTypeEnum.HeroMoveLeft1) { return(SpriteTypeEnum.HeroMoveLeft2); } if (oldSprite == SpriteTypeEnum.HeroMoveLeft2) { return(SpriteTypeEnum.HeroMoveLeft3); } if (oldSprite == SpriteTypeEnum.HeroMoveLeft3) { return(SpriteTypeEnum.HeroMoveLeft4); } return(SpriteTypeEnum.HeroMoveLeft1); } if (Direction == DirectionEnum.Right) { if (oldSprite == SpriteTypeEnum.HeroMoveRight1) { return(SpriteTypeEnum.HeroMoveRight2); } if (oldSprite == SpriteTypeEnum.HeroMoveRight2) { return(SpriteTypeEnum.HeroMoveRight3); } if (oldSprite == SpriteTypeEnum.HeroMoveRight3) { return(SpriteTypeEnum.HeroMoveRight4); } return(SpriteTypeEnum.HeroMoveRight1); } return(SpriteTypeEnum.HeroIdle); }
protected virtual void ActorUpdate(GameTime gameTime) { _isFalling = ProcessFalling(_isFalling); bool isMoving = false; if (!_isFalling) { isMoving = Move(Direction); if (!isMoving) Direction = DirectionEnum.None; } else Direction = DirectionEnum.None; if (OnReportPostion != null) OnReportPostion(this, new ReportPostionEventArgs(X, Y)); _heroSprite = GetSprite(_isFalling, _heroSprite); }
private bool HasNoStrongHold(SpriteTypeEnum sprite, bool isFalling) { bool result = Maps.IsBiomass(sprite) || Maps.IsLiveWall(sprite) || Maps.IsSpace(sprite) || Maps.IsChest(sprite); if (isFalling && !result) result = Maps.IsFloor(sprite); return result; }
protected abstract SpriteTypeEnum GetSprite(bool isFalling, SpriteTypeEnum oldSprite);
public static bool IsStairs(SpriteTypeEnum source) { return source >= SpriteTypeEnum.StairsLeft && source <= SpriteTypeEnum.StairsRight; }
public static bool IsFloor(SpriteTypeEnum source) { return source == SpriteTypeEnum.Floor; }
protected override SpriteTypeEnum GetSprite(bool isFalling, SpriteTypeEnum oldSprite) { if (HasCaught && !_hero.IsInBiomass) { _isHeroCaughtAnimation--; if (_isHeroCaughtAnimation == 0 && OnLifeFired != null) { OnLifeFired(this, new EventArgs()); } if (oldSprite == SpriteTypeEnum.DevilStairsLeft) { return(SpriteTypeEnum.DevilStairsRight); } return(SpriteTypeEnum.DevilStairsLeft); } if (isFalling || Direction == DirectionEnum.Up || Direction == DirectionEnum.Down) { if (oldSprite == SpriteTypeEnum.DevilStairsLeft) { return(SpriteTypeEnum.DevilStairsRight); } return(SpriteTypeEnum.DevilStairsLeft); } if (Direction == DirectionEnum.Left) { if (oldSprite == SpriteTypeEnum.DevilMoveLeft1) { return(SpriteTypeEnum.DevilMoveLeft2); } if (oldSprite == SpriteTypeEnum.DevilMoveLeft2) { return(SpriteTypeEnum.DevilMoveLeft3); } if (oldSprite == SpriteTypeEnum.DevilMoveLeft3) { return(SpriteTypeEnum.DevilMoveLeft4); } if (oldSprite == SpriteTypeEnum.DevilMoveLeft4) { return(SpriteTypeEnum.DevilMoveLeft5); } return(SpriteTypeEnum.DevilMoveLeft1); } if (Direction == DirectionEnum.Right) { if (oldSprite == SpriteTypeEnum.DevilMoveRight1) { return(SpriteTypeEnum.DevilMoveRight2); } if (oldSprite == SpriteTypeEnum.DevilMoveRight2) { return(SpriteTypeEnum.DevilMoveRight3); } if (oldSprite == SpriteTypeEnum.DevilMoveRight3) { return(SpriteTypeEnum.DevilMoveRight4); } if (oldSprite == SpriteTypeEnum.DevilMoveRight4) { return(SpriteTypeEnum.DevilMoveRight5); } return(SpriteTypeEnum.DevilMoveRight1); } if (oldSprite == SpriteTypeEnum.DevilStairsLeft || oldSprite == SpriteTypeEnum.DevilStairsRight) { return(SpriteTypeEnum.DevilMoveLeft1); } return(oldSprite); }
public static bool IsSpace(SpriteTypeEnum source) { return source == SpriteTypeEnum.Space || source == SpriteTypeEnum.Chest; }
protected override SpriteTypeEnum GetSprite(bool isFalling, SpriteTypeEnum oldSprite) { if (_shootStage == ShootStageEnum.Fire) { _shootStage = ShootStageEnum.None; DirectionEnum direction = _shootDirection; if (direction == DirectionEnum.Left) return SpriteTypeEnum.HeroShotLeft; return SpriteTypeEnum.HeroShotRight; } if (_shootStage == ShootStageEnum.Preparation) { _shootStage = ShootStageEnum.Fire; if (_shootDirection == DirectionEnum.Left) return SpriteTypeEnum.HeroPrepareShotLeft; return SpriteTypeEnum.HeroPrepareShotRight; } if (IsInBiomass) { _bioMassAttempts--; if (_bioMassAttempts == 0 && OnLifeFired != null) OnLifeFired(this, new EventArgs()); if (oldSprite == SpriteTypeEnum.HeroInBiomass1) return SpriteTypeEnum.HeroInBiomass2; if (oldSprite == SpriteTypeEnum.HeroInBiomass2) return SpriteTypeEnum.HeroInBiomass3; return SpriteTypeEnum.HeroInBiomass1; } if (isFalling || (Direction == DirectionEnum.Up || Direction == DirectionEnum.Down)) // Fall and Stairs { if (oldSprite == SpriteTypeEnum.HeroStairsLeft) return SpriteTypeEnum.HeroStairsRight; return SpriteTypeEnum.HeroStairsLeft; } if (Direction == DirectionEnum.None) // Idle { if (_heroIdleDivider) { _heroIdleDivider = false; if (oldSprite == SpriteTypeEnum.HeroIdleRight) { _heroIdleHeadDirection = DirectionEnum.Left; return SpriteTypeEnum.HeroIdle; } if (oldSprite == SpriteTypeEnum.HeroIdleLeft) { _heroIdleHeadDirection = DirectionEnum.Right; return SpriteTypeEnum.HeroIdle; } if (oldSprite == SpriteTypeEnum.HeroIdle) { if (_heroIdleHeadDirection == DirectionEnum.Right) return SpriteTypeEnum.HeroIdleRight; if (_heroIdleHeadDirection == DirectionEnum.Left) return SpriteTypeEnum.HeroIdleLeft; } } else { _heroIdleDivider = true; return oldSprite; } } if (Direction == DirectionEnum.Left) { if (oldSprite == SpriteTypeEnum.HeroMoveLeft1) return SpriteTypeEnum.HeroMoveLeft2; if (oldSprite == SpriteTypeEnum.HeroMoveLeft2) return SpriteTypeEnum.HeroMoveLeft3; if (oldSprite == SpriteTypeEnum.HeroMoveLeft3) return SpriteTypeEnum.HeroMoveLeft4; return SpriteTypeEnum.HeroMoveLeft1; } if (Direction == DirectionEnum.Right) { if (oldSprite == SpriteTypeEnum.HeroMoveRight1) return SpriteTypeEnum.HeroMoveRight2; if (oldSprite == SpriteTypeEnum.HeroMoveRight2) return SpriteTypeEnum.HeroMoveRight3; if (oldSprite == SpriteTypeEnum.HeroMoveRight3) return SpriteTypeEnum.HeroMoveRight4; return SpriteTypeEnum.HeroMoveRight1; } return SpriteTypeEnum.HeroIdle; }
public static bool IsStoneWall(SpriteTypeEnum source) { return source == SpriteTypeEnum.StoneWall; }
public GameSprite this[SpriteTypeEnum itemType, BackColorEnum backColor] { get { return(_collection.FirstOrDefault(c => c.ItemType == itemType && c.BackColor == backColor)); } }
public static bool IsBiomass(SpriteTypeEnum source) { return(source >= SpriteTypeEnum.Biomass1 && source <= SpriteTypeEnum.Biomass4); }
public static bool IsBrickWall(SpriteTypeEnum source) { return(source == SpriteTypeEnum.BrickWall); }
private bool CanMoveLeft(SpriteTypeEnum sprite) { return CanMoveBottom(sprite) && !Maps.IsBiomass(sprite); }
public static bool IsChest(SpriteTypeEnum source) { return(source == SpriteTypeEnum.Chest); }
private bool CanMoveLeft(SpriteTypeEnum sprite) { return(CanMoveBottom(sprite) && !Maps.IsBiomass(sprite)); }
public static SpriteTypeEnum[,] Get(int mapsBank, int stage) { List <string> map = LoadMap(mapsBank, stage); var result = new SpriteTypeEnum[CapacityX, CapacityY]; for (int j = 0; j < CapacityY; j++) { for (int i = 0; i < CapacityX; i++) { // render map char value = map[j][i]; if (value == '#') { result[i, j] = SpriteTypeEnum.StoneWall; } else if (value == '%') { result[i, j] = SpriteTypeEnum.BrickWall; } else if (value == '$') { result[i, j] = SpriteTypeEnum.Chest; } else if (value == '^') { result[i, j] = SpriteTypeEnum.Floor; } else if (value == '[') { result[i, j] = SpriteTypeEnum.StairsLeft; } else if (value == ']') { result[i, j] = SpriteTypeEnum.StairsRight; } else if (value == '<') { result[i, j] = SpriteTypeEnum.ExitDoorLeft; } else if (value == '>') { result[i, j] = SpriteTypeEnum.ExitDoorRight; } else if (value == '1') { result[i, j] = SpriteTypeEnum.Biomass1; } else if (value == '2') { result[i, j] = SpriteTypeEnum.Biomass2; } else if (value == '3') { result[i, j] = SpriteTypeEnum.Biomass3; } else if (value == '4') { result[i, j] = SpriteTypeEnum.Biomass4; } } } for (int i = 0; i < 2; i++) // devil entrance render { result[15 + i, 0] = SpriteTypeEnum.Space; result[30 + i, 0] = SpriteTypeEnum.Space; } return(result); }
protected override SpriteTypeEnum GetSprite(bool isFalling, SpriteTypeEnum oldSprite) { if (HasCaught && !_hero.IsInBiomass) { _isHeroCaughtAnimation--; if (_isHeroCaughtAnimation == 0 && OnLifeFired != null) OnLifeFired(this, new EventArgs()); if (oldSprite == SpriteTypeEnum.DevilStairsLeft) return SpriteTypeEnum.DevilStairsRight; return SpriteTypeEnum.DevilStairsLeft; } if (isFalling || Direction == DirectionEnum.Up || Direction == DirectionEnum.Down) { if (oldSprite == SpriteTypeEnum.DevilStairsLeft) return SpriteTypeEnum.DevilStairsRight; return SpriteTypeEnum.DevilStairsLeft; } if (Direction == DirectionEnum.Left) { if (oldSprite == SpriteTypeEnum.DevilMoveLeft1) return SpriteTypeEnum.DevilMoveLeft2; if (oldSprite == SpriteTypeEnum.DevilMoveLeft2) return SpriteTypeEnum.DevilMoveLeft3; if (oldSprite == SpriteTypeEnum.DevilMoveLeft3) return SpriteTypeEnum.DevilMoveLeft4; if (oldSprite == SpriteTypeEnum.DevilMoveLeft4) return SpriteTypeEnum.DevilMoveLeft5; return SpriteTypeEnum.DevilMoveLeft1; } if (Direction == DirectionEnum.Right) { if (oldSprite == SpriteTypeEnum.DevilMoveRight1) return SpriteTypeEnum.DevilMoveRight2; if (oldSprite == SpriteTypeEnum.DevilMoveRight2) return SpriteTypeEnum.DevilMoveRight3; if (oldSprite == SpriteTypeEnum.DevilMoveRight3) return SpriteTypeEnum.DevilMoveRight4; if (oldSprite == SpriteTypeEnum.DevilMoveRight4) return SpriteTypeEnum.DevilMoveRight5; return SpriteTypeEnum.DevilMoveRight1; } if (oldSprite == SpriteTypeEnum.DevilStairsLeft || oldSprite == SpriteTypeEnum.DevilStairsRight) return SpriteTypeEnum.DevilMoveLeft1; return oldSprite; }
public static bool IsWall(SpriteTypeEnum source) { return(IsBrickWall(source) || IsStoneWall(source)); }
public static SpriteTypeEnum[,] Get(int mapsBank, int stage) { List<string> map = LoadMap(mapsBank, stage); var result = new SpriteTypeEnum[CapacityX, CapacityY]; for (int j = 0; j < CapacityY; j++) { for (int i = 0; i < CapacityX; i++) { // render borders if ((i == 0 || (i == CapacityX - 1) || (j == 0 || (j == CapacityY - 1)))) result[i, j] = SpriteTypeEnum.StoneWall; else { // render map char value = map[j - 1][i - 1]; if (value == 'W') result[i, j] = SpriteTypeEnum.StoneWall; else if (value == 'B') result[i, j] = SpriteTypeEnum.BrickWall; else if (value == 'C') result[i, j] = SpriteTypeEnum.Chest; else if (value == '`') result[i, j] = SpriteTypeEnum.Floor; else if (value == ']') result[i, j] = SpriteTypeEnum.StairsLeft; else if (value == '[') result[i, j] = SpriteTypeEnum.StairsRight; else if (value == '1') result[i, j] = SpriteTypeEnum.Biomass1; else if (value == '2') result[i, j] = SpriteTypeEnum.Biomass2; else if (value == '3') result[i, j] = SpriteTypeEnum.Biomass3; else if (value == '4') result[i, j] = SpriteTypeEnum.Biomass4; } } } for (int i = 0; i < 2; i++) // devil entrance render { result[15 + i, 0] = SpriteTypeEnum.Space; result[30 + i, 0] = SpriteTypeEnum.Space; } //exit door render result[1, 0] = SpriteTypeEnum.ExitDoorLeft; result[2, 0] = SpriteTypeEnum.ExitDoorRight; return result; }
public static bool IsStoneWall(SpriteTypeEnum source) { return(source == SpriteTypeEnum.StoneWall); }
public static bool IsBiomass(SpriteTypeEnum source) { return source >= SpriteTypeEnum.Biomass1 && source <= SpriteTypeEnum.Biomass4; }
public static bool IsExitDoor(SpriteTypeEnum source) { return(source >= SpriteTypeEnum.ExitDoorLeft && source <= SpriteTypeEnum.ExitDoorRight); }
public static bool IsBrickWall(SpriteTypeEnum source) { return source == SpriteTypeEnum.BrickWall; }
public static bool IsFloor(SpriteTypeEnum source) { return(source == SpriteTypeEnum.Floor); }
public static bool IsChest(SpriteTypeEnum source) { return source == SpriteTypeEnum.Chest; }
public static bool IsLiveWall(SpriteTypeEnum source) { return(source >= SpriteTypeEnum.WallLive1 && source <= SpriteTypeEnum.WallLive3); }
public static bool IsExitDoor(SpriteTypeEnum source) { return source >= SpriteTypeEnum.ExitDoorLeft && source <= SpriteTypeEnum.ExitDoorRight; }