Super Happy Jumping Pickle Man!

This commit is contained in:
J. M. Ellis
2024-05-27 21:50:09 -07:00
parent 1bfddab1b5
commit 02907cb4b6
11 changed files with 396 additions and 55 deletions
+125 -23
View File
@@ -7,27 +7,32 @@ namespace LunaLightXMG
{
public class Game1 : Game
{
// Class Objects
private Player player;
private PlayerInput playerInput;
private GraphicsDeviceManager graphics;
private SpriteBatch spriteBatch;
// Native retro scale
private int retroWidth = 320;
private int retroHeight = 180;
// Test Render Target
private RenderTarget2D renderTarget;
private Rectangle renderDestination;
bool resizing;
// Test sprites
Texture2D sprRo;
Texture2D sprCave1Background;
Texture2D sprCave1Foreground;
Texture2D sprCave1Walls;
// Test sprites - eventually handle in a sprite manager?
//Texture2D sprCave1Background;
//Texture2D sprCave1Foreground;
//Texture2D sprCave1Walls;
Texture2D platformTexture;
// Test player input and movement with abstracted player class
private Player player;
// Player input
private PlayerInput playerInput;
// Native retro scale
private int retroWidth = 320;
private int retroHeight = 180;
// Test platforms
Platform[] platforms;
// Debugging
SpriteFont debugFont;
public Game1()
{
@@ -37,10 +42,11 @@ namespace LunaLightXMG
Window.ClientSizeChanged += OnClientSizeChanged;
Window.AllowUserResizing = true;
IsMouseVisible = true;
IsMouseVisible = true;
// Test player input and movement with abstracted player class
player = new Player();
Vector2 initPlayerPosition = new Vector2(163, 63);
player = new Player(initPlayerPosition);
playerInput = new PlayerInput();
}
@@ -65,6 +71,72 @@ namespace LunaLightXMG
base.Initialize();
CalculateRenderDestination();
// Test initialize platforms -- this should be abstracted to a class
// Also, I'm assuming using a tool like tiled will prevent having to
// manually input platforms like below...
platforms = new Platform[]
{
// platforms
new Platform(new Vector2(48, 128), 16, 16),
new Platform(new Vector2(64, 128), 16, 16),
new Platform(new Vector2(96, 96), 16, 16),
new Platform(new Vector2(112, 96), 16, 16),
new Platform(new Vector2(192, 128), 16, 16),
new Platform(new Vector2(208, 128), 16, 16),
new Platform(new Vector2(240, 96), 16, 16),
new Platform(new Vector2(256, 96), 16, 16),
new Platform(new Vector2(192, 64), 16, 16),
new Platform(new Vector2(208, 64), 16, 16),
new Platform(new Vector2(144, 32), 16, 16),
new Platform(new Vector2(160, 32), 16, 16),
new Platform(new Vector2(288, 128), 16, 16),
new Platform(new Vector2(16, 96), 16, 16),
// bottom
new Platform(new Vector2(16, 160), 16, 16),
new Platform(new Vector2(32, 160), 16, 16),
new Platform(new Vector2(48, 160), 16, 16),
new Platform(new Vector2(64, 160), 16, 16),
new Platform(new Vector2(80, 160), 16, 16),
new Platform(new Vector2(96, 160), 16, 16),
new Platform(new Vector2(112, 160), 16, 16),
new Platform(new Vector2(128, 160), 16, 16),
new Platform(new Vector2(144, 160), 16, 16),
new Platform(new Vector2(160, 160), 16, 16),
new Platform(new Vector2(176, 160), 16, 16),
new Platform(new Vector2(192, 160), 16, 16),
new Platform(new Vector2(208, 160), 16, 16),
new Platform(new Vector2(224, 160), 16, 16),
new Platform(new Vector2(240, 160), 16, 16),
new Platform(new Vector2(256, 160), 16, 16),
new Platform(new Vector2(272, 160), 16, 16),
new Platform(new Vector2(288, 160), 16, 16),
// left side
new Platform(new Vector2(0, 0), 16, 16),
new Platform(new Vector2(0, 16), 16, 16),
new Platform(new Vector2(0, 32), 16, 16),
new Platform(new Vector2(0, 48), 16, 16),
new Platform(new Vector2(0, 64), 16, 16),
new Platform(new Vector2(0, 80), 16, 16),
new Platform(new Vector2(0, 96), 16, 16),
new Platform(new Vector2(0, 112), 16, 16),
new Platform(new Vector2(0, 128), 16, 16),
new Platform(new Vector2(0, 144), 16, 16),
// right side
new Platform(new Vector2(304, 0), 16, 16),
new Platform(new Vector2(304, 16), 16, 16),
new Platform(new Vector2(304, 32), 16, 16),
new Platform(new Vector2(304, 48), 16, 16),
new Platform(new Vector2(304, 64), 16, 16),
new Platform(new Vector2(304, 80), 16, 16),
new Platform(new Vector2(304, 96), 16, 16),
new Platform(new Vector2(304, 112), 16, 16),
new Platform(new Vector2(304, 128), 16, 16),
new Platform(new Vector2(304, 144), 16, 16)
};
}
private void CalculateRenderDestination()
@@ -89,13 +161,20 @@ namespace LunaLightXMG
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
sprRo = Content.Load<Texture2D>("sprRo_Wall");
sprCave1Background = Content.Load<Texture2D>("spr_cave1_background");
sprCave1Foreground = Content.Load<Texture2D>("spr_Cave1_foreground");
sprCave1Walls = Content.Load<Texture2D>("spr_Cave1_walls");
//sprCave1Background = Content.Load<Texture2D>("spr_cave1_background");
//sprCave1Foreground = Content.Load<Texture2D>("spr_Cave1_foreground");
//sprCave1Walls = Content.Load<Texture2D>("spr_Cave1_walls");
// Test platform
platformTexture = Content.Load<Texture2D>("platform");
// load player sprite
player.LoadContent(Content); // player sprite is now handled in player.cs
// Test Render Target
renderTarget = new RenderTarget2D(GraphicsDevice, retroWidth, retroHeight);
// Debugging
debugFont = Content.Load<SpriteFont>("fonts/debugFont");
}
protected override void Update(GameTime gameTime)
@@ -106,7 +185,7 @@ namespace LunaLightXMG
// Test player input and movement with abstracted player class
playerInput.Update();
player.Update(gameTime, playerInput);
player.Update(gameTime, playerInput, platforms);
base.Update(gameTime);
}
@@ -121,13 +200,19 @@ namespace LunaLightXMG
// Test Sprite
spriteBatch.Begin(samplerState: SamplerState.PointClamp);
// Draw sprites here
spriteBatch.Draw(sprCave1Background,new Vector2(0,0),Color.White);
//spriteBatch.Draw(sprCave1Background,new Vector2(0,0),Color.White);
// Test draw tiles
foreach (var platform in platforms)
{
platform.Draw(spriteBatch, platformTexture); // Assuming all tiles use the same texture for now
}
// Test player input and movement with abstracted player class
player.Draw(spriteBatch, sprRo);
player.Draw(spriteBatch);
spriteBatch.Draw(sprCave1Walls, new Vector2(0, 0), Color.White);
spriteBatch.Draw(sprCave1Foreground, new Vector2(0, 0), Color.White);
//spriteBatch.Draw(sprCave1Walls, new Vector2(0, 0), Color.White);
//spriteBatch.Draw(sprCave1Foreground, new Vector2(0, 0), Color.White);
spriteBatch.End();
@@ -137,7 +222,24 @@ namespace LunaLightXMG
spriteBatch.Draw(renderTarget, renderDestination, Color.White);
spriteBatch.End();
// Debugging
DrawDebugInfo();
base.Draw(gameTime);
}
// Debugging
private void DrawDebugInfo()
{
spriteBatch.Begin();
// Draw debug messages
spriteBatch.DrawString(debugFont, $"VSP: {player.vsp}", new Vector2(10, 10), Color.White);
spriteBatch.DrawString(debugFont, $"Grounded: {player.grounded}", new Vector2(10, 30), Color.White);
spriteBatch.DrawString(debugFont, $"Walled: {player.walled}", new Vector2(10, 50), Color.White);
spriteBatch.DrawString(debugFont, $"Position: {player.position}", new Vector2(10, 70), Color.White);
spriteBatch.End();
}
}
}