Skip to content

Commit

Permalink
feat: Equipment Presets
Browse files Browse the repository at this point in the history
Added the ability to save equipment presets.
  • Loading branch information
pacampbell committed Oct 4, 2024
1 parent 0d8b2c0 commit 8b9c2d8
Show file tree
Hide file tree
Showing 15 changed files with 440 additions and 1 deletion.
3 changes: 3 additions & 0 deletions Arrowgene.Ddon.GameServer/DdonGameServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,9 @@ private void LoadPacketHandler()
AddHandler(new EquipUpdateHideCharacterLanternHandler(this));
AddHandler(new EquipUpdateHidePawnHeadArmorHandler(this));
AddHandler(new EquipUpdateHidePawnLanternHandler(this));
AddHandler(new EquipGetEquipPresetListHandler(this));
AddHandler(new EquipUpdateEquipPresetHandler(this));
AddHandler(new EquipUpdateEquipPresetNameHandler(this));

AddHandler(new EventStartHandler(this));
AddHandler(new EventEndHandler(this));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

using Arrowgene.Ddon.Server;
using Arrowgene.Ddon.Shared.Entity.PacketStructure;
using Arrowgene.Logging;

namespace Arrowgene.Ddon.GameServer.Handler
{
public class EquipGetEquipPresetListHandler : GameRequestPacketHandler<C2SEquipGetEquipPresetListReq, S2CEquipGetEquipPresetListRes>
{
private static readonly ServerLogger Logger = LogProvider.Logger<ServerLogger>(typeof(EquipGetEquipPresetListHandler));

public EquipGetEquipPresetListHandler(DdonGameServer server) : base(server)
{
}

public override S2CEquipGetEquipPresetListRes Handle(GameClient client, C2SEquipGetEquipPresetListReq request)
{
return new S2CEquipGetEquipPresetListRes();
}
}
}
31 changes: 31 additions & 0 deletions Arrowgene.Ddon.GameServer/Handler/EquipUpdateEquipPresetHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Arrowgene.Ddon.Server;
using Arrowgene.Ddon.Shared.Entity.PacketStructure;
using Arrowgene.Ddon.Shared.Entity.Structure;
using Arrowgene.Ddon.Shared.Model;
using Arrowgene.Logging;
using System.Collections.Generic;

namespace Arrowgene.Ddon.GameServer.Handler
{
public class EquipUpdateEquipPresetHandler : GameRequestPacketHandler<C2SEquipUpdateEquipPresetReq, S2CEquipUpdateEquipPresetRes>
{
private static readonly ServerLogger Logger = LogProvider.Logger<ServerLogger>(typeof(EquipUpdateEquipPresetHandler));

public EquipUpdateEquipPresetHandler(DdonGameServer server) : base(server)
{
}

public override S2CEquipUpdateEquipPresetRes Handle(GameClient client, C2SEquipUpdateEquipPresetReq request)
{
var result = new S2CEquipUpdateEquipPresetRes();

result.EquipPreset.PresetName = request.PresetName;
result.EquipPreset.PresetNo = request.PresetNo;
result.EquipPreset.PresetEquipInfoList = client.Character.Equipment.AsCDataPresetEquipInfo(EquipType.Performance);
result.EquipPreset.Job = client.Character.Job;

return result;
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using Arrowgene.Ddon.Server;
using Arrowgene.Ddon.Shared.Entity.PacketStructure;
using Arrowgene.Ddon.Shared.Entity.Structure;
using Arrowgene.Ddon.Shared.Model;
using Arrowgene.Logging;
using System.Collections.Generic;

namespace Arrowgene.Ddon.GameServer.Handler
{
public class EquipUpdateEquipPresetNameHandler : GameRequestPacketHandler<C2SEquipUpdateEquipPresetNameReq, S2CEquipUpdateEquipPresetNameRes>
{
private static readonly ServerLogger Logger = LogProvider.Logger<ServerLogger>(typeof(EquipUpdateEquipPresetNameHandler));

public EquipUpdateEquipPresetNameHandler(DdonGameServer server) : base(server)
{
}

public override S2CEquipUpdateEquipPresetNameRes Handle(GameClient client, C2SEquipUpdateEquipPresetNameReq request)
{
return new S2CEquipUpdateEquipPresetNameRes();
}
}
}

10 changes: 10 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ static EntitySerializer()
Create(new S2CCraftCraftRankUpNtc.Serializer());
Create(new CDataCurrentEquipInfo.Serializer());
Create(new CDataEquipSlot.Serializer());
Create(new CDataEquipPreset.Serializer());
Create(new CDataDeliveredItem.Serializer());
Create(new CDataDeliveredItemRecord.Serializer());
Create(new CDataDeliveryItem.Serializer());
Expand Down Expand Up @@ -278,6 +279,8 @@ static EntitySerializer()

Create(new CDataPlayPointDataSerializer());
Create(new CDataPresetAbilityParam.Serializer());
Create(new CDataPresetEquipInfo.Serializer());
Create(new CDatapresetEquipUnk0.Serializer());
Create(new CDataPriorityQuest.Serializer());
Create(new CDataPriorityQuestSetting.Serializer());

Expand Down Expand Up @@ -522,6 +525,9 @@ static EntitySerializer()
Create(new C2SEquipUpdateHideCharacterLanternReq.Serializer());
Create(new C2SEquipUpdateHidePawnHeadArmorReq.Serializer());
Create(new C2SEquipUpdateHidePawnLanternReq.Serializer());
Create(new C2SEquipGetEquipPresetListReq.Serializer());
Create(new C2SEquipUpdateEquipPresetReq.Serializer());
Create(new C2SEquipUpdateEquipPresetNameReq.Serializer());

Create(new C2SEntryBoardEntryBoardListReq.Serializer());
Create(new C2SEntryBoardEntryBoardItemCreateReq.Serializer());
Expand Down Expand Up @@ -1020,6 +1026,10 @@ static EntitySerializer()
Create(new S2CEquipUpdateHideCharacterLanternRes.Serializer());
Create(new S2CEquipUpdateHidePawnHeadArmorRes.Serializer());
Create(new S2CEquipUpdateHidePawnLanternRes.Serializer());
Create(new S2CEquipGetEquipPresetListRes.Serializer());
Create(new S2CEquipUpdateEquipPresetRes.Serializer());
Create(new S2CEquipUpdateEquipPresetNameRes.Serializer());

Create(new S2CExtendEquipSlotNtc.Serializer());
Create(new S2CGpGetGpRes.Serializer());
Create(new S2CGpGetGpDetailRes.Serializer());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Network;

namespace Arrowgene.Ddon.Shared.Entity.PacketStructure
{
public class C2SEquipGetEquipPresetListReq : IPacketStructure
{
public PacketId Id => PacketId.C2S_EQUIP_GET_EQUIP_PRESET_LIST_REQ;

public class Serializer : PacketEntitySerializer<C2SEquipGetEquipPresetListReq>
{
public override void Write(IBuffer buffer, C2SEquipGetEquipPresetListReq obj)
{
}

public override C2SEquipGetEquipPresetListReq Read(IBuffer buffer)
{
C2SEquipGetEquipPresetListReq obj = new C2SEquipGetEquipPresetListReq();
return obj;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Network;

namespace Arrowgene.Ddon.Shared.Entity.PacketStructure
{
public class C2SEquipUpdateEquipPresetNameReq : IPacketStructure
{
public PacketId Id => PacketId.C2S_EQUIP_UPDATE_EQUIP_PRESET_NAME_REQ;

public C2SEquipUpdateEquipPresetNameReq()
{
}

public uint PresetNo { get; set; }
public string PresetName { get; set; }

public class Serializer : PacketEntitySerializer<C2SEquipUpdateEquipPresetNameReq>
{
public override void Write(IBuffer buffer, C2SEquipUpdateEquipPresetNameReq obj)
{
WriteUInt32(buffer, obj.PresetNo);
WriteMtString(buffer, obj.PresetName);
}

public override C2SEquipUpdateEquipPresetNameReq Read(IBuffer buffer)
{
C2SEquipUpdateEquipPresetNameReq obj = new C2SEquipUpdateEquipPresetNameReq();
obj.PresetNo = ReadUInt32(buffer);
obj.PresetName = ReadMtString(buffer);
return obj;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Network;

namespace Arrowgene.Ddon.Shared.Entity.PacketStructure
{
public class C2SEquipUpdateEquipPresetReq : IPacketStructure
{
public C2SEquipUpdateEquipPresetReq()
{
PresetName = string.Empty;
}

public PacketId Id => PacketId.C2S_EQUIP_UPDATE_EQUIP_PRESET_REQ;

public uint PresetNo { get; set; }
public uint PawnId { get; set; }
public uint Type { get; set; }
public string PresetName { get; set; }

public class Serializer : PacketEntitySerializer<C2SEquipUpdateEquipPresetReq>
{
public override void Write(IBuffer buffer, C2SEquipUpdateEquipPresetReq obj)
{
WriteUInt32(buffer, obj.PresetNo);
WriteUInt32(buffer, obj.PawnId);
WriteUInt32(buffer, obj.Type);
WriteMtString(buffer, obj.PresetName);
}

public override C2SEquipUpdateEquipPresetReq Read(IBuffer buffer)
{
C2SEquipUpdateEquipPresetReq obj = new C2SEquipUpdateEquipPresetReq();
obj.PresetNo = ReadUInt32(buffer);
obj.PawnId = ReadUInt32(buffer);
obj.Type = ReadUInt32(buffer);
obj.PresetName = ReadMtString(buffer);
return obj;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using System.Collections.Generic;
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Entity.Structure;
using Arrowgene.Ddon.Shared.Network;

namespace Arrowgene.Ddon.Shared.Entity.PacketStructure
{
public class S2CEquipGetEquipPresetListRes : ServerResponse
{
public override PacketId Id => PacketId.S2C_EQUIP_GET_EQUIP_PRESET_LIST_RES;

public S2CEquipGetEquipPresetListRes()
{
EquipPresetList = new List<CDataEquipPreset>();
}

public List<CDataEquipPreset> EquipPresetList;

public class Serializer : PacketEntitySerializer<S2CEquipGetEquipPresetListRes>
{
public override void Write(IBuffer buffer, S2CEquipGetEquipPresetListRes obj)
{
WriteServerResponse(buffer, obj);
WriteEntityList(buffer, obj.EquipPresetList);
}

public override S2CEquipGetEquipPresetListRes Read(IBuffer buffer)
{
S2CEquipGetEquipPresetListRes obj = new S2CEquipGetEquipPresetListRes();
ReadServerResponse(buffer, obj);
obj.EquipPresetList = ReadEntityList<CDataEquipPreset>(buffer);
return obj;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Entity.Structure;
using Arrowgene.Ddon.Shared.Network;

namespace Arrowgene.Ddon.Shared.Entity.PacketStructure
{
public class S2CEquipUpdateEquipPresetNameRes : ServerResponse
{
public override PacketId Id => PacketId.S2C_EQUIP_UPDATE_EQUIP_PRESET_NAME_RES;

public S2CEquipUpdateEquipPresetNameRes()
{
}

public class Serializer : PacketEntitySerializer<S2CEquipUpdateEquipPresetNameRes>
{
public override void Write(IBuffer buffer, S2CEquipUpdateEquipPresetNameRes obj)
{
WriteServerResponse(buffer, obj);
}

public override S2CEquipUpdateEquipPresetNameRes Read(IBuffer buffer)
{
S2CEquipUpdateEquipPresetNameRes obj = new S2CEquipUpdateEquipPresetNameRes();
ReadServerResponse(buffer, obj);
return obj;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Entity.Structure;
using Arrowgene.Ddon.Shared.Network;

namespace Arrowgene.Ddon.Shared.Entity.PacketStructure
{
public class S2CEquipUpdateEquipPresetRes : ServerResponse
{
public override PacketId Id => PacketId.S2C_EQUIP_UPDATE_EQUIP_PRESET_RES;

public S2CEquipUpdateEquipPresetRes()
{
EquipPreset = new CDataEquipPreset();
}

public CDataEquipPreset EquipPreset { get; set; }

public class Serializer : PacketEntitySerializer<S2CEquipUpdateEquipPresetRes>
{
public override void Write(IBuffer buffer, S2CEquipUpdateEquipPresetRes obj)
{
WriteServerResponse(buffer, obj);
WriteEntity(buffer, obj.EquipPreset);
}

public override S2CEquipUpdateEquipPresetRes Read(IBuffer buffer)
{
S2CEquipUpdateEquipPresetRes obj = new S2CEquipUpdateEquipPresetRes();
ReadServerResponse(buffer, obj);
obj.EquipPreset = ReadEntity<CDataEquipPreset>(buffer);
return obj;
}
}
}
}
46 changes: 46 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/Structure/CDataEquipPreset.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Model;
using System.Collections.Generic;

namespace Arrowgene.Ddon.Shared.Entity.Structure
{
public class CDataEquipPreset
{
public CDataEquipPreset()
{
PresetName = string.Empty;
PresetEquipInfoList = new List<CDataPresetEquipInfo>();
PresetJobItemList = new List<CDataEquipJobItem>();
}

public uint PresetNo { get; set; }
public string PresetName { get; set; }
public JobId Job { get; set; }
public List<CDataPresetEquipInfo> PresetEquipInfoList { get; set; }
public List<CDataEquipJobItem> PresetJobItemList { get; set; }


public class Serializer : EntitySerializer<CDataEquipPreset>
{
public override void Write(IBuffer buffer, CDataEquipPreset obj)
{
WriteUInt32(buffer, obj.PresetNo);
WriteMtString(buffer, obj.PresetName);
WriteByte(buffer, (byte) obj.Job);
WriteEntityList(buffer, obj.PresetEquipInfoList);
WriteEntityList(buffer, obj.PresetJobItemList);
}

public override CDataEquipPreset Read(IBuffer buffer)
{
CDataEquipPreset obj = new CDataEquipPreset();
obj.PresetNo = ReadUInt32(buffer);
obj.PresetName = ReadMtString(buffer);
obj.Job = (JobId)ReadByte(buffer);
obj.PresetEquipInfoList = ReadEntityList<CDataPresetEquipInfo>(buffer);
obj.PresetJobItemList = ReadEntityList<CDataEquipJobItem>(buffer);
return obj;
}
}
}
}
Loading

0 comments on commit 8b9c2d8

Please sign in to comment.