Пример #1
0
 public override void Draw(MooseGame game, GameTime gameTime, SpriteBatch spriteBatch)
 {
     foreach (var spell in Spells)
     {
         spell.Draw(game, gameTime, spriteBatch);
     }
 }
Пример #2
0
    public override void Update(MooseGame game, GameTime gameTime)
    {
        base.Update(game, gameTime);

        if (!DungeonPlayer.Instance.HasInputThisFrame)
        {
            return;
        }

        if (FrozenTurnCount != 0 && SeenCount > 0)
        {
            NextMove = MonsterUpdate(gameTime);
        }

        if (SeenCount > 0 && !SeenYet)
        {
            SeenYet = true;
            CurrentlyBlockingInput = true;
            this.TweenToScale(new(3, 3), .5f,
                              onEnd: _ => this.TweenToScale(Vector2.One, .7f, .1f,
                                                            onEnd: _ => CurrentlyBlockingInput = false));
        }

        if (State == Dead)
        {
            player.NumKills++;
        }
    }
Пример #3
0
 public override void Update(MooseGame _game, GameTime gameTime)
 {
     base.Update(_game, gameTime);
     if ((gameTime.TotalGameTime - LastUpdate).TotalSeconds > .05)
     {
         NextGeneration();
         LastUpdate = gameTime.TotalGameTime;
     }
 }
Пример #4
0
 public override void Draw(MooseGame mooseGame, GameTime gameTime, SpriteBatch spriteBatch)
 {
     base.Draw(mooseGame, gameTime, spriteBatch);
     if (NextMove != "" && !CurrentlyBlockingInput)
     {
         spriteBatch.Draw(game.ArrowTexture, WorldRectangle.Move(AnimationPosition.X + 8, AnimationPosition.Y + 8).ToRectangle(), null, Color.White,
                          CalculateRotation(NextMove), new(8, 8), SpriteEffects.None, 1f);
     }
 }
Пример #5
0
    public override void Update(MooseGame _, GameTime gameTime)
    {
        if (State == Dead)
        {
            Remove = true;
        }

        base.Update(game, gameTime);
    }
Пример #6
0
    public override void Update(MooseGame game, GameTime gameTime)
    {
        var mageGame = (game as MageGame) !;

        base.Update(game, gameTime);
        string direction = null;
        var    moveDelta = Vector2.Zero;

        if (game.IsKeyDown(Keys.Left))
        {
            direction  = Directions.West;
            moveDelta += Directions.WestVector;
        }
        else if (game.IsKeyDown(Keys.Right))
        {
            direction  = Directions.East;
            moveDelta += Directions.EastVector;
        }

        if (game.IsKeyDown(Keys.Down))
        {
            direction ??= Directions.South;
            moveDelta += Directions.SouthVector;
        }
        else if (game.IsKeyDown(Keys.Up))
        {
            direction ??= Directions.North;
            moveDelta += Directions.NorthVector;
        }
        else if (game.WasKeyJustPressed(Keys.Space))
        {
            var shotDelta = Directions.GetVector(Direction);
            mageGame.Cast(MageGame.GetDef <Spells.FireballDef>() !, Position, Position + 120 * shotDelta);
            return;
        }

        if (direction != null)
        {
            Direction = direction;

            var deltaX = new Vector2(moveDelta.X, 0);
            var deltaY = new Vector2(0, moveDelta.Y);

            if (!mageGame.BlocksPlayer(Position + 8 * deltaX))
            {
                Position += 2 * deltaX;
            }

            if (!mageGame.BlocksPlayer(Position + 8 * deltaY))
            {
                Position += 2 * deltaY;
            }
        }
    }
Пример #7
0
    public override void Draw(MooseGame game, GameTime gameTime, ILayer layer, Vector2 drawOffset)
    {
        if (layer is not IObjectLayer objectLayer)
        {
            throw new Exception("Object layer expected");
        }

        foreach (var obj in objectLayer)
        {
            obj.Draw(game, gameTime, SpriteBatch); // TODO: Draw offset
        }
    }
Пример #8
0
    public override void Update(MooseGame game, GameTime gameTime)
    {
        foreach (var spell in Spells)
        {
            spell.Update(game, gameTime);
        }

        if (Spells.All(s => s.State == Dead))
        {
            Remove = true;
            State  = Dead;
        }
    }
Пример #9
0
    public override void Update(MooseGame game, GameTime gameTime)
    {
        base.Update(game, gameTime);

        if (State == Hit && !hasHit)
        {
            hasHit = true;
            StateCompleteAction = () => State = Dead;
            Effect();
        }
        else if (State == Dead)
        {
            Remove = true;
        }
    }
Пример #10
0
    public override void Draw(MooseGame game, GameTime gameTime, ILayer layer, Vector2 drawOffset)
    {
        var dungeonGame = (game as DungeonGame) !;

        if (layer is not IObjectLayer objectLayer)
        {
            throw new Exception("Object layer expected");
        }

        foreach (var obj in objectLayer)
        {
            if (dungeonGame.Player.CanSee(obj.Position) == FogOfWar.None)
            {
                obj.Draw(game, gameTime, SpriteBatch);
            }
        }
    }
    public override void Draw(MooseGame game, GameTime _gameTime, ILayer layer, Vector2 drawOffset)
    {
        if (layer is not ITileLayer <TTile> tileLayer)
        {
            throw new Exception("TileLayer<TTile> layer expected");
        }

        for (int i = 0; i < tileLayer.Width; i++)
        {
            for (int j = 0; j < tileLayer.Height; j++)
            {
                var tile      = tileLayer.GetTileValue(i, j);
                int tileValue = (int)Enum.ToObject(typeof(TTile), tile);
                if (tileValue >= 0)
                {
                    DrawSprite(tileValue, tile, i, j, tileLayer, drawOffset);
                }
            }
        }
    }
Пример #12
0
    public override void Update(MooseGame game, GameTime gameTime)
    {
        base.Update(game, gameTime);

        if (SpellDef.TurnBased && !player.HasInputThisFrame)
        {
            return;
        }

        if (State == Hit && !hasHit)
        {
            hasHit = true;
            StateCompleteAction = () => State = Dead;
            Effect();
        }
        else if (State == Dead)
        {
            Owner.RemoveSpell(this);
            Remove = true;
        }
    }
Пример #13
0
    public override void Update(MooseGame _game, GameTime gameTime)
    {
        if (State == States.Fly)
        {
            Position = FlightPath.Current;
            FlightPath.MoveNext();
            FlightPath.MoveNext();
            FlightPath.MoveNext();
            if (IsBlocked())
            {
                State = States.Hit;
                StateCompleteAction = () => State = States.Dead;
            }
        }

        if (State == States.Dead)
        {
            Remove = true;
        }

        base.Update(_game, gameTime);
    }
Пример #14
0
    public override void Update(MooseGame game, GameTime gameTime)
    {
        if (State == Active)
        {
            StateCompleteAction = null;
            for (var i = 0; i < 5; i++)
            {
                FlightPath.MoveNext();

                Position = FlightPath.Current;
                if (MageGame.Instance.BlocksPlayer(Position))
                {
                    State = Hit;
                    StateCompleteAction = () => State = Dead;
                    ActiveTweens.ForEach(t => t.Cancel());
                    break;
                }
            }
        }

        base.Update(game, gameTime);
    }
Пример #15
0
    public override void Update(MooseGame mooseGame, GameTime gameTime)
    {
        if (TurnsAlive < 0)
        {
            State = Dead;
        }
        else if (!hasHit)
        {
            var(x, y) = GetCell();
            var monster = game.GetMonster(x, y);
            if (monster != null)
            {
                State = Hit;
            }
        }
        base.Update(mooseGame, gameTime);

        if (game.Player.HasInputThisFrame)
        {
            TurnsAlive--;
            hasHit = false;
        }
    }
Пример #16
0
    public override void Update(MooseGame _, GameTime gameTime)
    {
        if (State == Active)
        {
            StateCompleteAction = null;
            FlightPath.MoveNext();
            FlightPath.MoveNext();
            FlightPath.MoveNext();
            FlightPath.MoveNext();
            FlightPath.MoveNext();

            Position  = FlightPath.Current;
            var(x, y) = GetCell();
            if (game.GetDungeonTile(x, y).IsBlocking() ||
                game.GetMonsterTile(x, y) != MonsterTile.None)
            {
                State = Hit;
                StateCompleteAction = () => State = Dead;
                ActiveTweens.ForEach(t => t.Cancel());
            }
        }

        base.Update(game, gameTime);
    }
Пример #17
0
 public virtual void Update(MooseGame game, GameTime gameTime)
 {
 }
Пример #18
0
 public abstract void Draw(MooseGame game, GameTime gameTime, ILayer layer, Vector2 drawOffset);
Пример #19
0
 public override void Draw(MooseGame game, GameTime gameTime, SpriteBatch spriteBatch)
 => spriteBatch.Draw(TextureGameObjectDef.Texture,
                     WorldRectangle.Move(Origin).ToRectangle(),
                     TextureGameObjectDef.SourceRectangle,
                     Color, Rotation, Origin, SpriteEffects, LayerDepth);
Пример #20
0
 public override void Update(MooseGame game, GameTime gameTime)
 {
 }