Adds basic lucker stats component holding score, removes unused client input fixes up lucker entity setting to properly set owner on the target entity
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using LuckerGame.Components.Lucker.Cameras;
|
||||
using LuckerGame.EntityComponents.Lucker;
|
||||
using LuckerGame.Events;
|
||||
using Sandbox;
|
||||
|
||||
@@ -11,9 +12,22 @@ namespace LuckerGame.Entities;
|
||||
public partial class Lucker : Entity
|
||||
{
|
||||
/// <summary>
|
||||
/// The entity this Player currently controls
|
||||
/// The entity this player controls. This value is networked and should be accessed through <see cref="Pawn"/>.
|
||||
/// </summary>
|
||||
public Entity Pawn { get; set; }
|
||||
[Net] private Entity InternalPawn { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Accesses or sets the entity this player current controls
|
||||
/// </summary>
|
||||
public Entity Pawn
|
||||
{
|
||||
get => InternalPawn;
|
||||
set
|
||||
{
|
||||
InternalPawn = value;
|
||||
value.Owner = this;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Before the round has started, this player indicated they were ready
|
||||
@@ -25,6 +39,8 @@ public partial class Lucker : Entity
|
||||
/// </summary>
|
||||
[BindComponent] public AbstractCamera Camera { get; }
|
||||
|
||||
[BindComponent] public LuckerStats Stats { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Creates and properly sets up a Player entity for a given client
|
||||
/// </summary>
|
||||
@@ -37,6 +53,7 @@ public partial class Lucker : Entity
|
||||
player.Owner = client as Entity;
|
||||
player.Name = client.Name;
|
||||
var camera = player.Components.Create<RTSCamera>();
|
||||
var stats = player.Components.Create<LuckerStats>();
|
||||
|
||||
return player;
|
||||
}
|
||||
|
||||
@@ -12,8 +12,19 @@ namespace LuckerGame.Entities;
|
||||
/// </summary>
|
||||
public partial class MinigameManager : Entity
|
||||
{
|
||||
/// <summary>
|
||||
/// The currently loaded minigame
|
||||
/// </summary>
|
||||
[Net] public Minigame LoadedMinigame { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// A cached list of available minigames. Gets reloaded on a hotreload
|
||||
/// </summary>
|
||||
private List<TypeDescription> AvailableMinigames { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The players involved in the current minigame
|
||||
/// </summary>
|
||||
private List<Lucker> InvolvedPlayers { get; set; }
|
||||
|
||||
public override void Spawn()
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
using Sandbox;
|
||||
|
||||
namespace LuckerGame.EntityComponents.Lucker;
|
||||
|
||||
/// <summary>
|
||||
/// A component for capturing and passing around a client's input for an attached Lucker
|
||||
/// </summary>
|
||||
public class LuckerClientInput : EntityComponent<Entities.Lucker>
|
||||
{
|
||||
[ClientInput]
|
||||
public Vector3 InputDirection { get; set; }
|
||||
|
||||
[ClientInput]
|
||||
public Angles ViewAngles { get; set; }
|
||||
}
|
||||
48
code/EntityComponents/Lucker/LuckerStats.cs
Normal file
48
code/EntityComponents/Lucker/LuckerStats.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using Sandbox;
|
||||
using Sandbox.UI;
|
||||
|
||||
namespace LuckerGame.EntityComponents.Lucker;
|
||||
|
||||
/// <summary>
|
||||
/// Handles the stats associated with a lucker during a lobby.
|
||||
/// </summary>
|
||||
public partial class LuckerStats : EntityComponent<Entities.Lucker>, ISingletonComponent
|
||||
{
|
||||
/// <summary>
|
||||
/// The lucker's current score.
|
||||
/// </summary>
|
||||
[Net] private long Score { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Adds points to this lucker's score
|
||||
/// </summary>
|
||||
/// <param name="points">points to add (or remove if negative)</param>
|
||||
public void AddScore( long points )
|
||||
{
|
||||
Score += points;
|
||||
if ( points == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var message = $"{Entity.Name} {(points > 0 ? "gained" : "lost")} {points} points!";
|
||||
ChatBox.AddInformation( To.Everyone, message );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resets this lucker's score to zero
|
||||
/// </summary>
|
||||
public void ResetScore()
|
||||
{
|
||||
Score = 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets this lucker's current score
|
||||
/// </summary>
|
||||
/// <returns>this lucker's current score</returns>
|
||||
public long GetScore()
|
||||
{
|
||||
return Score;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user