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.Components.Lucker.Cameras;
|
||||||
|
using LuckerGame.EntityComponents.Lucker;
|
||||||
using LuckerGame.Events;
|
using LuckerGame.Events;
|
||||||
using Sandbox;
|
using Sandbox;
|
||||||
|
|
||||||
@@ -11,9 +12,22 @@ namespace LuckerGame.Entities;
|
|||||||
public partial class Lucker : Entity
|
public partial class Lucker : Entity
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <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>
|
/// </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>
|
/// <summary>
|
||||||
/// Before the round has started, this player indicated they were ready
|
/// Before the round has started, this player indicated they were ready
|
||||||
@@ -25,6 +39,8 @@ public partial class Lucker : Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[BindComponent] public AbstractCamera Camera { get; }
|
[BindComponent] public AbstractCamera Camera { get; }
|
||||||
|
|
||||||
|
[BindComponent] public LuckerStats Stats { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates and properly sets up a Player entity for a given client
|
/// Creates and properly sets up a Player entity for a given client
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -37,6 +53,7 @@ public partial class Lucker : Entity
|
|||||||
player.Owner = client as Entity;
|
player.Owner = client as Entity;
|
||||||
player.Name = client.Name;
|
player.Name = client.Name;
|
||||||
var camera = player.Components.Create<RTSCamera>();
|
var camera = player.Components.Create<RTSCamera>();
|
||||||
|
var stats = player.Components.Create<LuckerStats>();
|
||||||
|
|
||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,19 @@ namespace LuckerGame.Entities;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class MinigameManager : Entity
|
public partial class MinigameManager : Entity
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The currently loaded minigame
|
||||||
|
/// </summary>
|
||||||
[Net] public Minigame LoadedMinigame { get; private set; }
|
[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; }
|
private List<TypeDescription> AvailableMinigames { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The players involved in the current minigame
|
||||||
|
/// </summary>
|
||||||
private List<Lucker> InvolvedPlayers { get; set; }
|
private List<Lucker> InvolvedPlayers { get; set; }
|
||||||
|
|
||||||
public override void Spawn()
|
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