I want to make a separate file for my map, like i have a separate file for my player. It works well for my player but when i do it with my map, for some reason i don’t know, my player can’t move when it starts. Here’s what i have in my map.cs file:
namespace towerDef
{
class Mapa
{
private int tileX;
private int tileY;
private int x;
private int y;
public Mapa(int pTileX, int pTileY, int pX, int pY)
{
tileX = pTileX;
tileY = pTileY;
x = pX;
y = pY;
}
public void draw(SpriteBatch spriteBatch, Texture2D backGroundFloor)
{
spriteBatch.Begin();
for (int position = 0; position <= 2560; position += 32)
{
for (int positionY = 0; positionY <= 1440; positionY += 32)
{
spriteBatch.Draw(backGroundFloor, new Rectangle(position, positionY, 32, 32), Color.White);
}
}
spriteBatch.End();
}
}
}
And in my Game1.cs here’s my draw:
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
mapa.draw(_spriteBatch, backGroundFloor); //map draw
_spriteBatch.Begin(this.camera);
player.anim.Draw(_spriteBatch); //player draw
_spriteBatch.End();
base.Draw(gameTime);
}
My player file:
public void Update(GameTime gameTime)
{
float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;
KeyboardState kState = Keyboard.GetState();
isMoving = false;
if (kState.IsKeyDown(Keys.Right))
{
direction = Dir.Right;
position.X += speed * dt;
isMoving = true;
}
if (kState.IsKeyDown(Keys.Left))
{
direction = Dir.Left;
position.X -= speed * dt;
isMoving = true;
}
if (kState.IsKeyDown(Keys.Up))
{
direction = Dir.Up;
position.Y -= speed * dt;
isMoving = true;
}
if (kState.IsKeyDown(Keys.Down))
{
direction = Dir.Down;
position.Y += speed * dt;
isMoving = true;
}
if (kState.IsKeyDown(Keys.Right) && kState.IsKeyDown(Keys.LeftShift))
{
direction = Dir.RightRun;
position.X += speedRun * dt;
isMoving = true;
}
if (kState.IsKeyDown(Keys.Left) && kState.IsKeyDown(Keys.LeftShift))
{
direction = Dir.LeftRun;
position.X -= speedRun * dt;
isMoving = true;
}
if (kState.IsKeyDown(Keys.Up) && kState.IsKeyDown(Keys.LeftShift))
{
direction = Dir.UpRun;
position.Y -= speedRun * dt;
isMoving = true;
}
if (kState.IsKeyDown(Keys.Down) && kState.IsKeyDown(Keys.LeftShift))
{
direction = Dir.DownRun;
position.Y += speedRun * dt;
isMoving = true;
}
anim = animationsPlayer[(int)direction];
anim.Position = new Vector2(position.X - 16, position.Y -16);
kStateOld = kState;
if (isMoving)
{
anim.Update(gameTime);
}
else
{
anim.setFrame(2);
}
}