Added in game modes for Revitalize. Also fixed bug where players wouldn't update when moving left.
This commit is contained in:
parent
bda8c38c7d
commit
d0b9b1f1cd
|
@ -37,6 +37,7 @@ namespace Revitalize.Framework.Menus
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// //TODO: Combine two of these to make an item grab menu.
|
/// //TODO: Combine two of these to make an item grab menu.
|
||||||
|
/// TODO: Display Item information on hover.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class InventoryMenu : IClickableMenuExtended
|
public class InventoryMenu : IClickableMenuExtended
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,5 +24,13 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
Four
|
Four
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum SSCGameMode
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
ShootingGallery,
|
||||||
|
PVP,
|
||||||
|
Story
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using Microsoft.Xna.Framework.Graphics;
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using Microsoft.Xna.Framework.Input;
|
||||||
using Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCEnemies.Spawners;
|
using Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCEnemies.Spawners;
|
||||||
using StardustCore.UIUtilities;
|
using StardustCore.UIUtilities;
|
||||||
using StardustCore.UIUtilities.MenuComponents;
|
using StardustCore.UIUtilities.MenuComponents;
|
||||||
|
@ -12,8 +13,14 @@ using StardustCore.UIUtilities.MenuComponents.ComponentsV1;
|
||||||
|
|
||||||
namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCMenus
|
namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCMenus
|
||||||
{
|
{
|
||||||
public class Loby:IClickableMenuExtended
|
/// <summary>
|
||||||
|
/// A nice little loby screen so that players can select their game modes.
|
||||||
|
/// </summary>
|
||||||
|
public class Loby : IClickableMenuExtended
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The background for the menu.
|
||||||
|
/// </summary>
|
||||||
StardustCore.UIUtilities.Texture2DExtended background;
|
StardustCore.UIUtilities.Texture2DExtended background;
|
||||||
string menuText;
|
string menuText;
|
||||||
Button shootingGalleryButton;
|
Button shootingGalleryButton;
|
||||||
|
@ -27,32 +34,29 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCMenus
|
||||||
public Loby(int x, int y, int width, int height) : base(x, y, width, height, false)
|
public Loby(int x, int y, int width, int height) : base(x, y, width, height, false)
|
||||||
{
|
{
|
||||||
this.background = SeasideScramble.self.textureUtils.getExtendedTexture("SSCMaps", "TitleScreenBackground");
|
this.background = SeasideScramble.self.textureUtils.getExtendedTexture("SSCMaps", "TitleScreenBackground");
|
||||||
this.menuText = "The Loby"+System.Environment.NewLine+System.Environment.NewLine+"Choose a game mode";
|
this.menuText = "The Loby" + System.Environment.NewLine + System.Environment.NewLine + "Choose a game mode";
|
||||||
this.shootingGalleryButton = new Button(new Rectangle(100, 300, 64*4, 32*4), SeasideScramble.self.textureUtils.getExtendedTexture("SSCUI", "ShootingGalleryButton"), new Rectangle(0, 0, 64, 32), 4f);
|
this.shootingGalleryButton = new Button(new Rectangle(100, 300, 64 * 4, 32 * 4), SeasideScramble.self.textureUtils.getExtendedTexture("SSCUI", "ShootingGalleryButton"), new Rectangle(0, 0, 64, 32), 4f);
|
||||||
this.backButton = new Button(new Rectangle(100, 100, 64, 64), SeasideScramble.self.textureUtils.getExtendedTexture("SSCUI", "BackButton"),new Rectangle(0, 0, 16, 16), 4f);
|
this.backButton = new Button(new Rectangle(100, 100, 64, 64), SeasideScramble.self.textureUtils.getExtendedTexture("SSCUI", "BackButton"), new Rectangle(0, 0, 16, 16), 4f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What happens when the menu is clicked with the left mouse button.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="x"></param>
|
||||||
|
/// <param name="y"></param>
|
||||||
|
/// <param name="playSound"></param>
|
||||||
public override void receiveLeftClick(int x, int y, bool playSound = true)
|
public override void receiveLeftClick(int x, int y, bool playSound = true)
|
||||||
{
|
{
|
||||||
if (this.shootingGalleryButton.containsPoint(x, y))
|
if (this.shootingGalleryButton.containsPoint(x, y))
|
||||||
{
|
{
|
||||||
foreach (SSCPlayer p in SeasideScramble.self.players.Values)
|
this.setUpForGameplay();
|
||||||
{
|
|
||||||
p.HUD.displayHUD();
|
|
||||||
//p.statusEffects.addStatusEffect(SE_Burn.SpawnBurnEffect(new Vector2(p.HUD.xPositionOnScreen,p.HUD.yPositionOnScreen),10*1000,1000,1.00d,1));
|
|
||||||
}
|
|
||||||
|
|
||||||
SeasideScramble.self.entities.addSpawner(new Target_Spawner(new Vector2(SeasideScrambleMap.TileSize * -1, SeasideScrambleMap.TileSize * 4), new Vector2(1, 0), Color.White, true, 1000, 5000, true, 0.25f, 3f, true));
|
|
||||||
SeasideScramble.self.entities.addSpawner(new Target_Spawner(new Vector2(SeasideScrambleMap.TileSize * 17, SeasideScrambleMap.TileSize * 5), new Vector2(-1, 0), Color.White, true, 1000, 5000, true, 0.25f, 3f, true));
|
|
||||||
|
|
||||||
SeasideScramble.self.currentMap.spawnPlayersAtPositions();
|
|
||||||
//SSCEnemies.SSCE_Target.Spawn_SSCE_Target(new Vector2(100, 100), Color.Blue);
|
|
||||||
//SSCEnemies.SSCE_Target.Spawn_SSCE_Target(new Vector2(200, 100), Color.Red);
|
|
||||||
//SSCEnemies.SSCE_Target.Spawn_SSCE_Target(new Vector2(300, 100), Color.Green);
|
|
||||||
SeasideScramble.self.menuManager.closeAllMenus();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks if the menu is ready to close.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
public override bool readyToClose()
|
public override bool readyToClose()
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -60,12 +64,55 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCMenus
|
||||||
|
|
||||||
public override void update(GameTime time)
|
public override void update(GameTime time)
|
||||||
{
|
{
|
||||||
|
GamePadState p1 = SeasideScramble.self.getGamepadState(PlayerIndex.One);
|
||||||
|
GamePadState p2 = SeasideScramble.self.getGamepadState(PlayerIndex.Two);
|
||||||
|
GamePadState p3 = SeasideScramble.self.getGamepadState(PlayerIndex.Three);
|
||||||
|
GamePadState p4 = SeasideScramble.self.getGamepadState(PlayerIndex.Four);
|
||||||
|
if (p1.IsButtonDown(Buttons.A))
|
||||||
|
{
|
||||||
|
|
||||||
|
this.receiveGamepadLeftClick(SSCEnums.PlayerID.One, SeasideScramble.self.getPlayer(SSCEnums.PlayerID.One).mouseCursor.position);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (p2.IsButtonDown(Buttons.A))
|
||||||
|
{
|
||||||
|
this.receiveGamepadLeftClick(SSCEnums.PlayerID.Two, SeasideScramble.self.getPlayer(SSCEnums.PlayerID.Two).mouseCursor.position);
|
||||||
|
}
|
||||||
|
if (p3.IsButtonDown(Buttons.A))
|
||||||
|
{
|
||||||
|
this.receiveGamepadLeftClick(SSCEnums.PlayerID.Three, SeasideScramble.self.getPlayer(SSCEnums.PlayerID.Three).mouseCursor.position);
|
||||||
|
}
|
||||||
|
if (p4.IsButtonDown(Buttons.A))
|
||||||
|
{
|
||||||
|
this.receiveGamepadLeftClick(SSCEnums.PlayerID.Four, SeasideScramble.self.getPlayer(SSCEnums.PlayerID.Four).mouseCursor.position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void receiveGamepadLeftClick(SSCEnums.PlayerID Player,Vector2 position)
|
||||||
|
{
|
||||||
|
this.receiveLeftClick((int)position.X, (int)position.Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void setUpForGameplay()
|
private void setUpForGameplay()
|
||||||
{
|
{
|
||||||
|
SeasideScramble.self.setMode(SSCEnums.SSCGameMode.ShootingGallery);
|
||||||
|
|
||||||
|
foreach (SSCPlayer p in SeasideScramble.self.players.Values)
|
||||||
|
{
|
||||||
|
p.HUD.displayHUD();
|
||||||
|
//p.statusEffects.addStatusEffect(SE_Burn.SpawnBurnEffect(new Vector2(p.HUD.xPositionOnScreen,p.HUD.yPositionOnScreen),10*1000,1000,1.00d,1));
|
||||||
|
}
|
||||||
|
|
||||||
|
SeasideScramble.self.entities.addSpawner(new Target_Spawner(new Vector2(SeasideScrambleMap.TileSize * -1, SeasideScrambleMap.TileSize * 4), new Vector2(1, 0), Color.White, true, 1000, 5000, true, 0.25f, 3f, true));
|
||||||
|
SeasideScramble.self.entities.addSpawner(new Target_Spawner(new Vector2(SeasideScrambleMap.TileSize * 17, SeasideScrambleMap.TileSize * 5), new Vector2(-1, 0), Color.White, true, 1000, 5000, true, 0.25f, 3f, true));
|
||||||
|
|
||||||
|
SeasideScramble.self.currentMap.spawnPlayersAtPositions();
|
||||||
|
//SSCEnemies.SSCE_Target.Spawn_SSCE_Target(new Vector2(100, 100), Color.Blue);
|
||||||
|
//SSCEnemies.SSCE_Target.Spawn_SSCE_Target(new Vector2(200, 100), Color.Red);
|
||||||
|
//SSCEnemies.SSCE_Target.Spawn_SSCE_Target(new Vector2(300, 100), Color.Green);
|
||||||
|
SeasideScramble.self.menuManager.closeAllMenus();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +121,7 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCMenus
|
||||||
//Draw background.
|
//Draw background.
|
||||||
b.Draw(this.background.texture, new Vector2(this.xPositionOnScreen, this.yPositionOnScreen), SeasideScramble.self.camera.getXNARect(), Color.White);
|
b.Draw(this.background.texture, new Vector2(this.xPositionOnScreen, this.yPositionOnScreen), SeasideScramble.self.camera.getXNARect(), Color.White);
|
||||||
Vector2 offset = StardewValley.Game1.dialogueFont.MeasureString(this.menuText);
|
Vector2 offset = StardewValley.Game1.dialogueFont.MeasureString(this.menuText);
|
||||||
b.DrawString(StardewValley.Game1.dialogueFont,this.menuText,new Vector2((this.width / 2) - (offset.X / 2), this.height *.1f), Color.White);
|
b.DrawString(StardewValley.Game1.dialogueFont, this.menuText, new Vector2((this.width / 2) - (offset.X / 2), this.height * .1f), Color.White);
|
||||||
|
|
||||||
this.shootingGalleryButton.draw(b);
|
this.shootingGalleryButton.draw(b);
|
||||||
this.backButton.draw(b);
|
this.backButton.draw(b);
|
||||||
|
|
|
@ -13,37 +13,104 @@ using Revitalize.Framework.Minigame.SeasideScrambleMinigame.Interfaces;
|
||||||
|
|
||||||
namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Deals with handling a player.
|
||||||
|
/// </summary>
|
||||||
public class SSCPlayer : ISSCLivingEntity
|
public class SSCPlayer : ISSCLivingEntity
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The character animator.
|
||||||
|
/// </summary>
|
||||||
public AnimationManager characterSpriteController;
|
public AnimationManager characterSpriteController;
|
||||||
|
/// <summary>
|
||||||
|
/// Should the sprite be flipped?
|
||||||
|
/// </summary>
|
||||||
public bool flipSprite;
|
public bool flipSprite;
|
||||||
|
/// <summary>
|
||||||
|
/// The facing direction for the player.
|
||||||
|
/// </summary>
|
||||||
public SSCEnums.FacingDirection facingDirection;
|
public SSCEnums.FacingDirection facingDirection;
|
||||||
|
/// <summary>
|
||||||
|
/// The position for the player.
|
||||||
|
/// </summary>
|
||||||
public Microsoft.Xna.Framework.Vector2 position;
|
public Microsoft.Xna.Framework.Vector2 position;
|
||||||
|
/// <summary>
|
||||||
|
/// Is the player moving?
|
||||||
|
/// </summary>
|
||||||
public bool isMoving;
|
public bool isMoving;
|
||||||
|
/// <summary>
|
||||||
|
/// Did the player move this frame?
|
||||||
|
/// </summary>
|
||||||
private bool movedThisFrame;
|
private bool movedThisFrame;
|
||||||
|
/// <summary>
|
||||||
|
/// The draw color for the player.
|
||||||
|
/// </summary>
|
||||||
public Color playerColor;
|
public Color playerColor;
|
||||||
|
/// <summary>
|
||||||
|
/// The player's id.
|
||||||
|
/// </summary>
|
||||||
public SSCEnums.PlayerID playerID;
|
public SSCEnums.PlayerID playerID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The frame speed for the junimo walking.
|
||||||
|
/// </summary>
|
||||||
public const int junimoWalkingAnimationSpeed = 10;
|
public const int junimoWalkingAnimationSpeed = 10;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The mouse cursor.
|
||||||
|
/// </summary>
|
||||||
public StardustCore.Animations.AnimatedSprite mouseCursor;
|
public StardustCore.Animations.AnimatedSprite mouseCursor;
|
||||||
|
/// <summary>
|
||||||
|
/// The sensitivity for the mouse.
|
||||||
|
/// </summary>
|
||||||
public Vector2 mouseSensitivity;
|
public Vector2 mouseSensitivity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the mouse cursor be shown?
|
||||||
|
/// </summary>
|
||||||
public bool showMouseCursor;
|
public bool showMouseCursor;
|
||||||
|
/// <summary>
|
||||||
|
/// The delay to show the mouse but I dont think I use this.
|
||||||
|
/// </summary>
|
||||||
public int maxMouseSleepTime = 300;
|
public int maxMouseSleepTime = 300;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The current gun the player is holding. UPDATE THIS TO WEILD MULTIPLE GUNS!!!
|
||||||
|
/// </summary>
|
||||||
public SSCGuns.SSCGun gun;
|
public SSCGuns.SSCGun gun;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The hitbox for the player.
|
||||||
|
/// </summary>
|
||||||
public Rectangle hitBox;
|
public Rectangle hitBox;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The HUD for the player.
|
||||||
|
/// </summary>
|
||||||
public SSCMenus.HUD.CharacterHUD HUD;
|
public SSCMenus.HUD.CharacterHUD HUD;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The current health for the player.
|
||||||
|
/// </summary>
|
||||||
public int currentHealth;
|
public int currentHealth;
|
||||||
|
/// <summary>
|
||||||
|
/// The max health for the player.
|
||||||
|
/// </summary>
|
||||||
public int maxHealth;
|
public int maxHealth;
|
||||||
|
/// <summary>
|
||||||
|
/// The movement speed for the player.
|
||||||
|
/// </summary>
|
||||||
public float movementSpeed;
|
public float movementSpeed;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The status effects on the player.
|
||||||
|
/// </summary>
|
||||||
public SSCStatusEffects.StatusEffectManager statusEffects;
|
public SSCStatusEffects.StatusEffectManager statusEffects;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is the player dead?
|
||||||
|
/// </summary>
|
||||||
public bool isDead
|
public bool isDead
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -57,6 +124,10 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
public int MaxHealth { get => this.maxHealth; set => this.maxHealth = value; }
|
public int MaxHealth { get => this.maxHealth; set => this.maxHealth = value; }
|
||||||
public Rectangle HitBox { get => this.hitBox; set => this.hitBox = value; }
|
public Rectangle HitBox { get => this.hitBox; set => this.hitBox = value; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructor.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="PlayerID">Which player is this? One, two, etc...</param>
|
||||||
public SSCPlayer(SSCEnums.PlayerID PlayerID)
|
public SSCPlayer(SSCEnums.PlayerID PlayerID)
|
||||||
{
|
{
|
||||||
this.playerID = PlayerID;
|
this.playerID = PlayerID;
|
||||||
|
@ -226,6 +297,20 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
/// <param name="Time"></param>
|
/// <param name="Time"></param>
|
||||||
public void update(GameTime Time)
|
public void update(GameTime Time)
|
||||||
{
|
{
|
||||||
|
if (this.playerID == SSCEnums.PlayerID.One)
|
||||||
|
{
|
||||||
|
if (SeasideScramble.self.getMouseDelta().X != 0 || SeasideScramble.self.getMouseDelta().Y != 0)
|
||||||
|
{
|
||||||
|
this.mouseCursor.position = new Vector2(Game1.getMousePosition().X, Game1.getMousePosition().Y);
|
||||||
|
this.showMouseCursor = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.currentHealth < 0) this.currentHealth = 0;
|
||||||
|
|
||||||
|
this.gun.update(Time);
|
||||||
|
this.HUD.update(Time);
|
||||||
|
this.statusEffects.update(Time);
|
||||||
|
|
||||||
this.movedThisFrame = false;
|
this.movedThisFrame = false;
|
||||||
if (this.isMoving == false)
|
if (this.isMoving == false)
|
||||||
{
|
{
|
||||||
|
@ -272,19 +357,7 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
this.flipSprite = false;
|
this.flipSprite = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.playerID == SSCEnums.PlayerID.One)
|
|
||||||
{
|
|
||||||
if (SeasideScramble.self.getMouseDelta().X != 0 || SeasideScramble.self.getMouseDelta().Y != 0)
|
|
||||||
{
|
|
||||||
this.mouseCursor.position = new Vector2(Game1.getMousePosition().X, Game1.getMousePosition().Y);
|
|
||||||
this.showMouseCursor = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.currentHealth < 0) this.currentHealth = 0;
|
|
||||||
|
|
||||||
this.gun.update(Time);
|
|
||||||
this.HUD.update(Time);
|
|
||||||
this.statusEffects.update(Time);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -543,6 +616,10 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Shoots a bullet in the given direction using projectile information stored in the gun.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="direction"></param>
|
||||||
private void shoot(Vector2 direction)
|
private void shoot(Vector2 direction)
|
||||||
{
|
{
|
||||||
if (SeasideScramble.self.menuManager.isMenuUp) return;
|
if (SeasideScramble.self.menuManager.isMenuUp) return;
|
||||||
|
@ -553,6 +630,10 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Have this player take damage.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="amount"></param>
|
||||||
public void takeDamage(int amount)
|
public void takeDamage(int amount)
|
||||||
{
|
{
|
||||||
this.currentHealth -= amount;
|
this.currentHealth -= amount;
|
||||||
|
@ -562,16 +643,28 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Heal the player a certain amount of HP/
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="amount"></param>
|
||||||
public void heal(int amount)
|
public void heal(int amount)
|
||||||
{
|
{
|
||||||
this.takeDamage(amount * -1);
|
this.takeDamage(amount * -1);
|
||||||
|
if (this.currentHealth > this.maxHealth) this.currentHealth = this.maxHealth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Heal the player to full HP.
|
||||||
|
/// </summary>
|
||||||
public void healToFull()
|
public void healToFull()
|
||||||
{
|
{
|
||||||
this.currentHealth = this.maxHealth;
|
this.currentHealth = this.maxHealth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What happens when the player collides with a projectile.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="projectile"></param>
|
||||||
public void onCollision(SSCProjectiles.SSCProjectile projectile)
|
public void onCollision(SSCProjectiles.SSCProjectile projectile)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -585,13 +678,14 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
//ModCore.log("Can't get hit by own projectile.");
|
//ModCore.log("Can't get hit by own projectile.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/*if projectile.owner is player and friendly fire is off do nothing.
|
//if projectile.owner is player and friendly fire is off do nothing.
|
||||||
*
|
if(projectile.owner is SSCPlayer && SeasideScramble.self.friendlyFireEnabled==false)
|
||||||
*
|
{
|
||||||
*/
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ModCore.log("Big oof. Player hit by projectile.");
|
ModCore.log("Big oof. Player hit by projectile.");
|
||||||
this.CurrentHealth -= projectile.damage;
|
this.takeDamage(projectile.damage);
|
||||||
this.statusEffects.addStatusEffect(projectile.effect);
|
this.statusEffects.addStatusEffect(projectile.effect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,33 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCProjectiles
|
||||||
{
|
{
|
||||||
public class SSCProjectile
|
public class SSCProjectile
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The sprite for the projectile/
|
||||||
|
/// </summary>
|
||||||
public AnimatedSprite sprite;
|
public AnimatedSprite sprite;
|
||||||
|
/// <summary>
|
||||||
|
/// The direction the projectile travels.
|
||||||
|
/// </summary>
|
||||||
public Vector2 direction;
|
public Vector2 direction;
|
||||||
|
/// <summary>
|
||||||
|
/// The speed for the projectile.
|
||||||
|
/// </summary>
|
||||||
public float speed;
|
public float speed;
|
||||||
|
/// <summary>
|
||||||
|
/// The scale of the projectile.
|
||||||
|
/// </summary>
|
||||||
public float scale;
|
public float scale;
|
||||||
|
/// <summary>
|
||||||
|
/// The hitbox for the projectile.
|
||||||
|
/// </summary>
|
||||||
public Rectangle hitBox;
|
public Rectangle hitBox;
|
||||||
|
/// <summary>
|
||||||
|
/// The damage the projectile does upon contact.
|
||||||
|
/// </summary>
|
||||||
public int damage;
|
public int damage;
|
||||||
|
/// <summary>
|
||||||
|
/// The position of the projectile. Also resets the bounding box x,y location.
|
||||||
|
/// </summary>
|
||||||
public Vector2 position
|
public Vector2 position
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -28,6 +49,9 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCProjectiles
|
||||||
this.sprite.position = value;
|
this.sprite.position = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// The color of the projectile.
|
||||||
|
/// </summary>
|
||||||
public Color color
|
public Color color
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -40,7 +64,13 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCProjectiles
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The max amount of frames this projectile lives for.
|
||||||
|
/// </summary>
|
||||||
public int maxLifeSpan;
|
public int maxLifeSpan;
|
||||||
|
/// <summary>
|
||||||
|
/// The current lifespan for the projectile.
|
||||||
|
/// </summary>
|
||||||
public int currentLifeSpan;
|
public int currentLifeSpan;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -48,6 +78,9 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCProjectiles
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public object owner;
|
public object owner;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The velocity of the projectile.
|
||||||
|
/// </summary>
|
||||||
public Vector2 Velocity
|
public Vector2 Velocity
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -55,9 +88,14 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCProjectiles
|
||||||
return this.direction * this.speed;
|
return this.direction * this.speed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// The status effect the projectile inflicts upon contact.
|
||||||
|
/// </summary>
|
||||||
public SSCStatusEffects.StatusEffect effect;
|
public SSCStatusEffects.StatusEffect effect;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructor.
|
||||||
|
/// </summary>
|
||||||
public SSCProjectile()
|
public SSCProjectile()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -153,9 +191,12 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCProjectiles
|
||||||
this.die();
|
this.die();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What happens when the projectile collides with something.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="other"></param>
|
||||||
public virtual void onCollision(object other)
|
public virtual void onCollision(object other)
|
||||||
{
|
{
|
||||||
//Move this if to the player class.????
|
|
||||||
if(other is SSCPlayer)
|
if(other is SSCPlayer)
|
||||||
{
|
{
|
||||||
if (this.hasOwner())
|
if (this.hasOwner())
|
||||||
|
@ -165,12 +206,13 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame.SSCProjectiles
|
||||||
//ModCore.log("Can't get hit by own projectile.");
|
//ModCore.log("Can't get hit by own projectile.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/*if projectile.owner is player and friendly fire is off do nothing.
|
|
||||||
*
|
//if projectile.owner is player and friendly fire is off do nothing.
|
||||||
*
|
else if (SeasideScramble.self.friendlyFireEnabled == false && this.owner!=other)
|
||||||
*/
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ModCore.log("Big oof. Player hit by projectile.");
|
|
||||||
}
|
}
|
||||||
this.collisionLogic();
|
this.collisionLogic();
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,6 +65,15 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
|
|
||||||
public SSCFonts.SSCFont gameFont;
|
public SSCFonts.SSCFont gameFont;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The current game mode.
|
||||||
|
/// </summary>
|
||||||
|
public SSCEnums.SSCGameMode gameMode;
|
||||||
|
public bool friendlyFireEnabled;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RNG.
|
||||||
|
/// </summary>
|
||||||
public Random random
|
public Random random
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -73,6 +82,9 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constuctor.
|
||||||
|
/// </summary>
|
||||||
public SeasideScramble()
|
public SeasideScramble()
|
||||||
{
|
{
|
||||||
self = this;
|
self = this;
|
||||||
|
@ -110,6 +122,9 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
else return null;
|
else return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads in all of the necessary textures for Seaside Scramble.
|
||||||
|
/// </summary>
|
||||||
private void LoadTextures()
|
private void LoadTextures()
|
||||||
{
|
{
|
||||||
this.textureUtils = new SSCTextureUtilities();
|
this.textureUtils = new SSCTextureUtilities();
|
||||||
|
@ -134,12 +149,18 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
this.textureUtils.addTextureManager(enemies);
|
this.textureUtils.addTextureManager(enemies);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads in all of the maps for Seaside Scramble.
|
||||||
|
/// </summary>
|
||||||
private void LoadMaps()
|
private void LoadMaps()
|
||||||
{
|
{
|
||||||
this.SeasideScrambleMaps = new Dictionary<string, SeasideScrambleMap>();
|
this.SeasideScrambleMaps = new Dictionary<string, SeasideScrambleMap>();
|
||||||
this.SeasideScrambleMaps.Add("TestRoom", new SeasideScrambleMap(SeasideScrambleMap.LoadMap("TestRoom.tbin").Value));
|
this.SeasideScrambleMaps.Add("TestRoom", new SeasideScrambleMap(SeasideScrambleMap.LoadMap("TestRoom.tbin").Value));
|
||||||
this.SeasideScrambleMaps.Add("ShootingGallery", new SSCMaps.ShootingGallery(SeasideScrambleMap.LoadMap("ShootingGallery.tbin").Value));
|
this.SeasideScrambleMaps.Add("ShootingGallery", new SSCMaps.ShootingGallery(SeasideScrambleMap.LoadMap("ShootingGallery.tbin").Value));
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Loads in a default map for Seaside Scramble.
|
||||||
|
/// </summary>
|
||||||
private void loadStartingMap()
|
private void loadStartingMap()
|
||||||
{
|
{
|
||||||
this.currentMap = this.SeasideScrambleMaps["ShootingGallery"];
|
this.currentMap = this.SeasideScrambleMaps["ShootingGallery"];
|
||||||
|
@ -209,15 +230,7 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
b.End();
|
b.End();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// What happens when the left click is held.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="x"></param>
|
|
||||||
/// <param name="y"></param>
|
|
||||||
public void leftClickHeld(int x, int y)
|
|
||||||
{
|
|
||||||
//throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The id of the minigame???
|
/// The id of the minigame???
|
||||||
|
@ -229,6 +242,48 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
//throw new NotImplementedException();
|
//throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the game mode for the game.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Mode"></param>
|
||||||
|
public void setMode(SSCEnums.SSCGameMode Mode)
|
||||||
|
{
|
||||||
|
if (Mode == SSCEnums.SSCGameMode.None)
|
||||||
|
{
|
||||||
|
this.friendlyFireEnabled = false;
|
||||||
|
}
|
||||||
|
if(Mode== SSCEnums.SSCGameMode.ShootingGallery)
|
||||||
|
{
|
||||||
|
this.friendlyFireEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Mode== SSCEnums.SSCGameMode.PVP)
|
||||||
|
{
|
||||||
|
this.friendlyFireEnabled = true;
|
||||||
|
}
|
||||||
|
if(Mode== SSCEnums.SSCGameMode.Story)
|
||||||
|
{
|
||||||
|
this.friendlyFireEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.gameMode = Mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~//
|
||||||
|
// Input Logic //
|
||||||
|
//~~~~~~~~~~~~~~~~~//
|
||||||
|
#region
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What happens when the left click is held.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="x"></param>
|
||||||
|
/// <param name="y"></param>
|
||||||
|
public void leftClickHeld(int x, int y)
|
||||||
|
{
|
||||||
|
//throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Does this override free mous emovements?
|
/// Does this override free mous emovements?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -327,17 +382,31 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What happens when left click is released.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="x"></param>
|
||||||
|
/// <param name="y"></param>
|
||||||
public void releaseLeftClick(int x, int y)
|
public void releaseLeftClick(int x, int y)
|
||||||
{
|
{
|
||||||
//throw new NotImplementedException();
|
//throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What happens when right click is released.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="x"></param>
|
||||||
|
/// <param name="y"></param>
|
||||||
public void releaseRightClick(int x, int y)
|
public void releaseRightClick(int x, int y)
|
||||||
{
|
{
|
||||||
//throw new NotImplementedException();
|
//throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Receive input from a specific gamepad.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="state"></param>
|
||||||
|
/// <param name="ID"></param>
|
||||||
private void receiveGamepadInput(GamePadState state,SSCEnums.PlayerID ID)
|
private void receiveGamepadInput(GamePadState state,SSCEnums.PlayerID ID)
|
||||||
{
|
{
|
||||||
if (state == null) return;
|
if (state == null) return;
|
||||||
|
@ -350,6 +419,20 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the delta for mouse movement.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Vector2 getMouseDelta()
|
||||||
|
{
|
||||||
|
Vector2 ret = -1 * (this.oldMousePosition - new Vector2(Game1.getMousePosition().X, Game1.getMousePosition().Y));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called every update frame.
|
/// Called every update frame.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -410,16 +493,6 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
//throw new NotImplementedException();
|
//throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the delta for mouse movement.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public Vector2 getMouseDelta()
|
|
||||||
{
|
|
||||||
Vector2 ret = -1 * (this.oldMousePosition - new Vector2(Game1.getMousePosition().X, Game1.getMousePosition().Y));
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called when the minigame is quit upon.
|
/// Called when the minigame is quit upon.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -429,6 +502,13 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
ModCore.log("Exit the game!");
|
ModCore.log("Exit the game!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~//
|
||||||
|
// Static Functions //
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~//
|
||||||
|
|
||||||
|
#region
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Translates the position passed in into the relative position on the viewport.
|
/// Translates the position passed in into the relative position on the viewport.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -449,5 +529,7 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame
|
||||||
{
|
{
|
||||||
return new Vector2(globalPosition.X - (float)SeasideScramble.self.camera.viewport.X, globalPosition.Y - (float)SeasideScramble.self.camera.viewport.Y);
|
return new Vector2(globalPosition.X - (float)SeasideScramble.self.camera.viewport.X, globalPosition.Y - (float)SeasideScramble.self.camera.viewport.Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue