void UpdatePlayer()
{
if (player.state == "waiting")
{
string dpad = "";
if (keyboard.IsKeyDown(Keys.Up) || gamepad.IsButtonDown(Buttons.DPadUp)) dpad = "u";
if (keyboard.IsKeyDown(Keys.Down) || gamepad.IsButtonDown(Buttons.DPadDown)) dpad = "d";
if (keyboard.IsKeyDown(Keys.Left) || gamepad.IsButtonDown(Buttons.DPadLeft)) dpad = "l";
if (keyboard.IsKeyDown(Keys.Right) || gamepad.IsButtonDown(Buttons.DPadRight)) dpad = "r";
if (attackQueued ||
(keyboard.IsKeyDown(Keys.X) && !lastKeyboard.IsKeyDown(Keys.X)) ||
(gamepad.IsButtonDown(Buttons.A) && !lastGamepad.IsButtonDown(Buttons.A)))
{
if (dpad == "")
{
player.state = "swinging_sword";
player.stateFrames = 0;
sword = new Sprite();
sword.state = "swinging";
sword.dir = player.dir;
sword.stateFrames = 0;
attackQueued = false;
goto PLAYER_SWINGING_SWORD;
}
else
{
player.state = "stabbing_sword";
player.stateFrames = 0;
sword = new Sprite();
sword.state = "stabbing";
sword.dir = player.dir;
sword.stateFrames = 0;
attackQueued = false;
goto PLAYER_STABBING_SWORD;
}
}
if (dpad != "")
{
player.state = "walking";
player.stateFrames = 0;
player.dir = dpad;
}
}
if (player.state == "walking")
{
if (player.dir == "u") player.y--;
if (player.dir == "d") player.y++;
if (player.dir == "l") player.x--;
if (player.dir == "r") player.x++;
if ((keyboard.IsKeyDown(Keys.X) && !lastKeyboard.IsKeyDown(Keys.X)) ||
(gamepad.IsButtonDown(Buttons.A) && !lastGamepad.IsButtonDown(Buttons.A))) attackQueued = true;
int frame = 1;
if (player.stateFrames >= 4) frame = 2;
player.srcRect = "hero_walking_" + player.dir + frame;
player.stateFrames++;
if (player.stateFrames == 8)
{
player.state = "waiting";
player.srcRect = "hero_walking_" + player.dir + "1";
}
return;
}
PLAYER_SWINGING_SWORD:
if (player.state == "swinging_sword")
{
int frame = 1;
if (player.stateFrames >= 8) frame = 2;
player.srcRect = "hero_attacking_" + player.dir + frame;
if (player.stateFrames == 16)
{
player.state = "waiting";
player.srcRect = "hero_walking_" + player.dir + "1";
}
player.stateFrames++;
return;
}
PLAYER_STABBING_SWORD:
if (player.state == "stabbing_sword")
{
player.srcRect = "hero_attacking_" + player.dir + "2";
if (player.stateFrames == 12)
{
player.state = "waiting";
player.srcRect = "hero_walking_" + player.dir + "1";
}
player.stateFrames++;
return;
}
}
void UpdateSword()
{
if (sword.state == "swinging")
{
if (sword.dir == "u")
{
if (sword.stateFrames >= 0 && sword.stateFrames < 4)
{
sword.srcRect = "sword_se";
sword.x = player.x + 16;
sword.y = player.y + 10;
}
if (sword.stateFrames >= 4 && sword.stateFrames < 8)
{
sword.srcRect = "sword_e";
sword.x = player.x + 16;
sword.y = player.y + 2;
}
if (sword.stateFrames >= 8 && sword.stateFrames < 12)
{
sword.srcRect = "sword_ne";
sword.x = player.x + 10;
sword.y = player.y - 10;
}
if (sword.stateFrames >= 12 && sword.stateFrames < 16)
{
sword.srcRect = "sword_n";
sword.x = player.x;
sword.y = player.y - 16;
}
}
if (sword.dir == "d")
{
if (sword.stateFrames >= 0 && sword.stateFrames < 4)
{
sword.srcRect = "sword_nw";
sword.x = player.x - 14;
sword.y = player.y - 9;
}
if (sword.stateFrames >= 4 && sword.stateFrames < 8)
{
sword.srcRect = "sword_w";
sword.x = player.x - 16;
sword.y = player.y;
}
if (sword.stateFrames >= 8 && sword.stateFrames < 12)
{
sword.srcRect = "sword_sw";
sword.x = player.x - 11;
sword.y = player.y + 12;
}
if (sword.stateFrames >= 12 && sword.stateFrames < 16)
{
sword.srcRect = "sword_s";
sword.x = player.x;
sword.y = player.y + 16;
}
}
if (sword.dir == "l")
{
if (sword.stateFrames >= 0 && sword.stateFrames < 4)
{
sword.srcRect = "sword_ne";
sword.x = player.x + 10;
sword.y = player.y - 8;
}
if (sword.stateFrames >= 4 && sword.stateFrames < 8)
{
sword.srcRect = "sword_n";
sword.x = player.x;
sword.y = player.y - 11;
}
if (sword.stateFrames >= 8 && sword.stateFrames < 12)
{
sword.srcRect = "sword_nw";
sword.x = player.x - 14;
sword.y = player.y - 5;
}
if (sword.stateFrames >= 12 && sword.stateFrames < 16)
{
sword.srcRect = "sword_w";
sword.x = player.x - 16;
sword.y = player.y + 3;
}
}
if (sword.dir == "r")
{
if (sword.stateFrames >= 0 && sword.stateFrames < 4)
{
sword.srcRect = "sword_nw";
sword.x = player.x - 10;
sword.y = player.y - 8;
}
if (sword.stateFrames >= 4 && sword.stateFrames < 8)
{
sword.srcRect = "sword_n";
sword.x = player.x;
sword.y = player.y - 11;
}
if (sword.stateFrames >= 8 && sword.stateFrames < 12)
{
sword.srcRect = "sword_ne";
sword.x = player.x + 14;
sword.y = player.y - 5;
}
if (sword.stateFrames >= 12 && sword.stateFrames < 16)
{
sword.srcRect = "sword_e";
sword.x = player.x + 16;
sword.y = player.y + 3;
}
}
if (sword.stateFrames == 16)
{
sword = null;
return;
}
sword.stateFrames++;
}
if (sword.state == "stabbing")
{
if (sword.dir == "u")
{
sword.srcRect = "sword_n";
if (sword.stateFrames >= 0 && sword.stateFrames < 4)
{
sword.x = player.x + 2;
sword.y = player.y - 8;
}
if (sword.stateFrames >= 6 && sword.stateFrames < 9)
{
sword.x = player.x + 2;
sword.y = player.y - 16;
}
if (sword.stateFrames >= 10 && sword.stateFrames < 13)
{
sword.x = player.x + 2;
sword.y = player.y - 8;
}
}
if (sword.dir == "d")
{
sword.srcRect = "sword_s";
if (sword.stateFrames >= 0 && sword.stateFrames < 4)
{
sword.x = player.x - 2;
sword.y = player.y + 8;
}
if (sword.stateFrames >= 6 && sword.stateFrames < 9)
{
sword.x = player.x - 2;
sword.y = player.y + 16;
}
if (sword.stateFrames >= 10 && sword.stateFrames < 13)
{
sword.x = player.x - 2;
sword.y = player.y + 8;
}
}
if (sword.dir == "l")
{
sword.srcRect = "sword_w";
if (sword.stateFrames >= 0 && sword.stateFrames < 4)
{
sword.x = player.x - 8;
sword.y = player.y + 3;
}
if (sword.stateFrames >= 6 && sword.stateFrames < 9)
{
sword.x = player.x - 16;
sword.y = player.y + 3;
}
if (sword.stateFrames >= 10 && sword.stateFrames < 13)
{
sword.x = player.x - 8;
sword.y = player.y + 3;
}
}
if (sword.dir == "r")
{
sword.srcRect = "sword_e";
if (sword.stateFrames >= 0 && sword.stateFrames < 4)
{
sword.x = player.x + 8;
sword.y = player.y + 3;
}
if (sword.stateFrames >= 6 && sword.stateFrames < 9)
{
sword.x = player.x + 16;
sword.y = player.y + 3;
}
if (sword.stateFrames >= 10 && sword.stateFrames < 13)
{
sword.x = player.x + 8;
sword.y = player.y + 3;
}
}
if (sword.stateFrames == 12)
{
sword = null;
return;
}
sword.stateFrames++;
}
}
Comments