~ruther/NosSmooth

0f1e903964594a97c4639735fc64424f712f3683 — František Boháček 3 years ago d5d868e
feat: implement character and player properties
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

Do not follow this link