Added credits, activitypoints and moved some files

main
Tiger 2023-09-23 15:33:23 +02:00
parent f4690c2dd3
commit 5ed8eb6913
8 changed files with 127 additions and 0 deletions

View File

@ -0,0 +1,30 @@
using Tiger.Communication.Messages.Interfaces;
using Tiger.Communication.Messages.Outgoing.Notifications;
using Tiger.Communication.Messages.Outgoing.Users;
using Tiger.Communication.Messages.Types;
using Tiger.Networking.Game.Sessions;
namespace Tiger.Communication.Messages.Incoming.Inventory.Purse;
public class GetCreditsInfoEvent : IMessageEvent
{
private readonly IGameSessionManager _gameSessionManager;
public GetCreditsInfoEvent(IGameSessionManager gameSessionManager)
{
_gameSessionManager = gameSessionManager;
}
public IncomingHeaders Header => IncomingHeaders.GetCreditsInfoEvent;
public async Task HandleAsync(GameSession gameSession, ClientMessage request)
{
if (gameSession.Habbo == null)
{
await _gameSessionManager.CloseAsync("Not logged in", gameSession);
return;
}
await gameSession.SendComposerAsync(new CreditBalanceComposer(gameSession.Habbo.Credits));
await gameSession.SendComposerAsync(new ActivityPointsComposer(gameSession.Habbo.Activitypoints ?? null));
}
}

View File

@ -0,0 +1,29 @@
using Tiger.Communication.Messages.Interfaces;
using Tiger.Communication.Messages.Types;
using Tiger.Game.Habbos;
namespace Tiger.Communication.Messages.Outgoing.Notifications;
public class ActivityPointsComposer : IMessageComposer
{
private readonly IEnumerable<Activitypoints>? _activitypoints;
public ActivityPointsComposer(IEnumerable<Activitypoints>? activitypoints)
{
_activitypoints = activitypoints;
}
public OutgoingHeaders Header => OutgoingHeaders.ActivityPointsMessageComposer;
public void Compose(ServerMessage message)
{
message.AppendInt32(_activitypoints?.Count() ?? 0);
if (_activitypoints == null) return;
foreach (var activitypoint in _activitypoints)
{
message.AppendInt32(activitypoint.Type);
message.AppendUInt32(activitypoint.Amount);
}
}
}

View File

@ -0,0 +1,20 @@
using Tiger.Communication.Messages.Interfaces;
using Tiger.Communication.Messages.Types;
namespace Tiger.Communication.Messages.Outgoing.Users;
public class CreditBalanceComposer : IMessageComposer
{
private readonly uint _credits;
public CreditBalanceComposer(uint credits)
{
_credits = credits;
}
public OutgoingHeaders Header => OutgoingHeaders.CreditBalanceComposer;
public void Compose(ServerMessage message)
{
message.AppendString($"{_credits}.0");
}
}

View File

@ -0,0 +1,27 @@
namespace Tiger.Game.Habbos;
public class Activitypoints
{
public virtual Habbo Habbo { get; set; } = null!;
public virtual byte Type { get; set; }
public virtual uint Amount { get; set; }
public override bool Equals(object? obj)
{
if (obj is not Activitypoints other)
return false;
return Habbo.Id == other.Habbo.Id && Type == other.Type;
}
public override int GetHashCode()
{
unchecked
{
var hash = 17;
hash = hash * 23 + Habbo.Id.GetHashCode();
hash = hash * 23 + Type.GetHashCode();
return hash;
}
}
}

View File

@ -0,0 +1,16 @@
using FluentNHibernate.Mapping;
namespace Tiger.Game.Habbos;
public class ActivitypointsMap : ClassMap<Activitypoints>
{
public ActivitypointsMap()
{
Table("habbo_activitypoints");
LazyLoad();
CompositeId()
.KeyProperty(h => h.Type, "type")
.KeyReference(h => h.Habbo, "habbo_id");
Map(h => h.Amount).Column("amount").Not.Nullable();
}
}

View File

@ -17,4 +17,5 @@ public class Habbo
public virtual uint AchievementScore { get; set; }
public virtual uint? GroupId { get; set; }
public virtual string? SsoTicket { get; set; }
public virtual IEnumerable<Activitypoints>? Activitypoints { get; set; }
}

View File

@ -23,5 +23,6 @@ public class HabboMap : ClassMap<Habbo>
Map(h => h.AchievementScore).Column("achievement_score").Not.Nullable();
Map(h => h.GroupId).Column("group_id").Nullable();
Map(h => h.SsoTicket).Column("sso_ticket").Nullable();
HasMany<Activitypoints>(h => h.Activitypoints).LazyLoad().Inverse().Cascade.All();
}
}

View File

@ -26,4 +26,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="Communication\Messages\Incoming\Users\" />
</ItemGroup>
</Project>