XPBar¶
Doelstelling¶
Het doel was om een visuele indicatie can je experience en level te laten zien, zodat je weet hoe sterk je bent.
Toegepaste oplossing¶
Meeste logica is overgenomen van Bar en PlayerHealthBar. Eerst hebben we in player een stukje code aangemaakt waar we vandaan halen hoeveel expereince we hebben.
public float GetExperiencePercentage()
{
var experienceNeeded = (baseExperienceForLevelUp * Level) + baseExperienceForLevelUp;
return (float)Exp / experienceNeeded;
}
Hiernaast heb ik heb alleen een bar op een andere positie met andere kleuren aangemaakt, met text die je level weergeeft. Eerst heb ik hier de kleuren veranderd en alle variabels aangemaakt.
namespace Client.Systems.Bar;
public class XPBarSystem : BaseSystem
{
protected StateManager state;
protected GameState game;
protected Texture2D pixel;
protected StatusBar bar = new()
{
colours = new()
{
background = Color.DimGray,
full = Color.Green,
lost = Color.DimGray,
gained = Color.ForestGreen,
}
};
protected SpriteFont font;
protected Vector2 padding = new(10, 35);
protected Vector2 pos;
protected Vector2 size = new(350, 20);
En daarna heb ik de bar initialized en getekend
public XPBarSystem() : base()
{
pos = padding;
}
public override void Initialize(App app, SystemHandler handler)
{
base.Initialize(app, handler);
state = handler.GetSystem<StateManager>();
handler
.GetSystem<EventBus>()
.Subscribe((StateChangedEvent e) => {
if (e.newState == game)
Reset();
});
}
public override void LoadContent()
{
game = state.GetState<GameState>();
pixel = App.AssetManager.GetSprite("Images/pixel");
font = App.AssetManager.Content.Load<SpriteFont>("Fonts/SpriteFont@20px");
}
public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
{
if (state.currentState != game)
return;
var experiencePercentage = game.Player.GetExperiencePercentage();
bar.UpdateAndDraw(gameTime, spriteBatch, pos, size, experiencePercentage);
var levelText = $"Level {game.Player.Level}";
var levelPosition = new Vector2(pos.X + (size.X / 2), pos.Y + (size.Y / 2));
spriteBatch.BetterDrawString(font, levelText, levelPosition, new(1), origin: new Vector2(.5f, .5f));
}
}
Bronnen¶
- C# documentation. (z.d.) learn.microsoft.com.
Laatst geraadpleegd op 10 juni 2024, van https://learn.microsoft.com/en-uk/dotnet/csharp/ - Monogame documentation. (z.d.) monogame.net.
Laatst geraadpleegd op 10 juni 2024, van https://monogame.net/articles
Laatst geüpdatet:
June 11, 2024
Gecreëerd: June 4, 2024
Gecreëerd: June 4, 2024