M Core/NosSmooth.Game/Data/Characters/Character.cs => Core/NosSmooth.Game/Data/Characters/Character.cs +100 -10
@@ 1,12 1,102 @@
-//
-// Character.cs
-//
-// Copyright (c) Christofel authors. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+// Character.cs
+//
+// Copyright (c) František Boháček. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-namespace NosSmooth.Game.Entities;
+using NosCore.Packets.Enumerations;
+using NosCore.Shared.Enumerations;
+using NosSmooth.Game.Data.Chat;
+using NosSmooth.Game.Data.Entities;
+using NosSmooth.Game.Data.Info;
+using NosSmooth.Game.Data.Social;
-public class Character : Player
-{
-
-}>
\ No newline at end of file
+namespace NosSmooth.Game.Data.Characters;
+
+/// <summary>
+/// Represents the client character.
+/// </summary>
+/// <param name="Inventory">The character's inventory with items.</param>
+/// <param name="Family">The family of the character, if any..</param>
+/// <param name="Friends">The friends of the character.</param>
+/// <param name="Skills">The current skill set of the character.</param>
+/// <param name="Group">The group the character is in, if any. Contains pets and partners as well.</param>
+/// <param name="SkillCp">The skill cp amount used for learning new skills.</param>
+/// <param name="Id">The id of the character entity.</param>
+/// <param name="Name">The name of the character entity.</param>
+/// <param name="Position">The position of the character.</param>
+/// <param name="Speed">The movement speed of the character.</param>
+/// <param name="Level">The </param>
+/// <param name="JobLevel">The </param>
+/// <param name="HeroLevel">The </param>
+/// <param name="Direction"></param>
+/// <param name="Hp"></param>
+/// <param name="Mp"></param>
+/// <param name="Faction"></param>
+/// <param name="Size"></param>
+/// <param name="AuthorityType"></param>
+/// <param name="Gender"></param>
+/// <param name="HairStyle"></param>
+/// <param name="HairColor"></param>
+/// <param name="Class"></param>
+/// <param name="Icon"></param>
+/// <param name="Compliment"></param>
+/// <param name="Morph"></param>
+/// <param name="ArenaWinner"></param>
+/// <param name="Invisible"></param>
+/// <param name="Reputation"></param>
+public record Character
+(
+ Inventory.Inventory? Inventory = default,
+ Family? Family = default,
+ IReadOnlyList<Friend>? Friends = default,
+ Skills? Skills = default,
+ Group? Group = default,
+ int? SkillCp = default,
+ long Id = default,
+ string? Name = default,
+ Position? Position = default,
+ byte? Speed = default,
+ Level? Level = default,
+ Level? JobLevel = default,
+ Level? HeroLevel = default,
+ byte? Direction = default,
+ Health? Hp = default,
+ Health? Mp = default,
+ FactionType? Faction = default,
+ short Size = default,
+ AuthorityType AuthorityType = default,
+ GenderType Gender = default,
+ HairStyleType HairStyle = default,
+ HairColorType HairColor = default,
+ CharacterClassType Class = default,
+ byte? Icon = default,
+ short? Compliment = default,
+ Morph? Morph = default,
+ bool? ArenaWinner = default,
+ bool? Invisible = default,
+ long? Reputation = default
+) : Player(
+ Id,
+ Name,
+ Position,
+ Speed,
+ Level,
+ HeroLevel,
+ Direction,
+ Hp,
+ Mp,
+ Faction,
+ Size,
+ AuthorityType,
+ Gender,
+ HairStyle,
+ HairColor,
+ Class,
+ Icon,
+ Compliment,
+ Morph,
+ ArenaWinner,
+ Invisible,
+ Reputation
+);<
\ No newline at end of file
M Core/NosSmooth.Game/Data/Entities/IEntity.cs => Core/NosSmooth.Game/Data/Entities/IEntity.cs +3 -3
@@ 5,9 5,9 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using NosCore.Shared.Enumerations;
-using NosSmooth.Game.Data;
+using NosSmooth.Game.Data.Info;
-namespace NosSmooth.Game.Entities;
+namespace NosSmooth.Game.Data.Entities;
/// <summary>
/// Base type for entities.
@@ 27,7 27,7 @@ public interface IEntity
/// <summary>
/// Gets the position of the entity.
/// </summary>
- public Position Position { get; }
+ public Position? Position { get; }
/// <summary>
/// Gets the type of the entity.
M Core/NosSmooth.Game/Data/Entities/LivingEntity.cs => Core/NosSmooth.Game/Data/Entities/LivingEntity.cs +9 -5
@@ 5,10 5,9 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using NosCore.Packets.Enumerations;
-using NosCore.Shared.Enumerations;
-using NosSmooth.Game.Data;
+using NosSmooth.Game.Data.Info;
-namespace NosSmooth.Game.Entities;
+namespace NosSmooth.Game.Data.Entities;
/// <summary>
/// Represents any nostale living entity such as monster, npc, player.
@@ 33,15 32,20 @@ public interface ILivingEntity : IEntity
/// <summary>
/// Gets the percentage of the health points of the entity. May be null if unknown.
/// </summary>
- public byte? HpPercentage { get; }
+ public Health? Hp { get; }
/// <summary>
/// Gets the percentage of the mana points of the entity. May be null if unknown.
/// </summary>
- public byte? MpPercentage { get; }
+ public Health? Mp { get; }
/// <summary>
/// Gets the faction of the entity. May be null if unknown.
/// </summary>
public FactionType? Faction { get; }
+
+ /// <summary>
+ /// Gets the size of the entity.
+ /// </summary>
+ public short Size { get; }
}=
\ No newline at end of file
M Core/NosSmooth.Game/Data/Entities/Player.cs => Core/NosSmooth.Game/Data/Entities/Player.cs +64 -8
@@ 1,12 1,68 @@
-//
-// Player.cs
-//
-// Copyright (c) Christofel authors. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+// Player.cs
+//
+// Copyright (c) František Boháček. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-namespace NosSmooth.Game.Entities;
+using NosCore.Packets.Enumerations;
+using NosCore.Shared.Enumerations;
+using NosSmooth.Game.Data.Characters;
+using NosSmooth.Game.Data.Info;
-public class Player
+namespace NosSmooth.Game.Data.Entities;
+
+/// <summary>
+/// Represents nostale player entity.
+/// </summary>
+/// <param name="Id">The id of the player.</param>
+/// <param name="Name">The name of the player.</param>
+/// <param name="Position">The position the player is at.</param>
+/// <param name="Speed"></param>
+/// <param name="Level"></param>
+/// <param name="Direction"></param>
+/// <param name="Hp"></param>
+/// <param name="Mp"></param>
+/// <param name="Faction"></param>
+/// <param name="Size"></param>
+/// <param name="AuthorityType"></param>
+/// <param name="Gender"></param>
+/// <param name="HairStyle"></param>
+/// <param name="HairColor"></param>
+/// <param name="Class"></param>
+/// <param name="Icon"></param>
+/// <param name="Compliment"></param>
+/// <param name="Morph"></param>
+/// <param name="ArenaWinner"></param>
+/// <param name="Invisible"></param>
+public record Player
+(
+ long Id,
+ string? Name = default,
+ Position? Position = default,
+ byte? Speed = default,
+ Level? Level = default,
+ Level? HeroLevel = default,
+ byte? Direction = default,
+ Health? Hp = default,
+ Health? Mp = default,
+ FactionType? Faction = default,
+ short Size = default,
+ AuthorityType AuthorityType = default,
+ GenderType Gender = default,
+ HairStyleType HairStyle = default,
+ HairColorType HairColor = default,
+ CharacterClassType Class = default,
+ byte? Icon = default,
+ short? Compliment = default,
+ Morph? Morph = default,
+ bool? ArenaWinner = default,
+ bool? Invisible = default,
+ long? Reputation = default
+) : ILivingEntity
{
-
+ /// <inheritdoc/>
+ ushort? ILivingEntity.Level => Level?.Lvl;
+
+ /// <inheritdoc />
+ public VisualType Type => VisualType.Player;
}=
\ No newline at end of file