Skip to content

Commit

Permalink
Review comments. S2CClanClanBaseGetInfoRes.
Browse files Browse the repository at this point in the history
  • Loading branch information
RyanYappert committed Oct 4, 2024
1 parent bb67046 commit 06b018f
Show file tree
Hide file tree
Showing 18 changed files with 260 additions and 6 deletions.
19 changes: 16 additions & 3 deletions Arrowgene.Ddon.GameServer/Characters/ClanManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -418,15 +418,22 @@ public List<CDataClanMemberInfo> MemberList(uint clanId)

public (uint ClanId, CDataClanMemberInfo MemberInfo) ClanMembership(uint characterId)
{
var clanId = Server.Database.SelectClanMembershipByCharacterId(characterId);
var membership = Server.Database.GetClanMember(characterId);
uint clanId = 0;
CDataClanMemberInfo membership = new();
Server.Database.ExecuteInTransaction(conn =>
{
clanId = Server.Database.SelectClanMembershipByCharacterId(characterId, conn);
membership = Server.Database.GetClanMember(characterId, conn);
});

return (clanId, membership);
}

public void SendToClan<T>(uint clanId, T packet)
where T : class, IPacketStructure, new()
{
if (clanId == 0) return;

foreach (var client in Server.ClientLookup.GetAll())
{
if (client.Character != null && client.Character.ClanId == clanId)
Expand All @@ -436,9 +443,15 @@ public void SendToClan<T>(uint clanId, T packet)
}
}

// Will likely need this later for clan searching.
private static bool ClanSearchBitmaskMatch(uint searchParam, uint match)
{
return (searchParam & match) == match;
}

private static int BitsToInt(IEnumerable<int> bitindices)
{
return bitindices.Aggregate(0, (sum, val) => sum + 2 ^ (val));
return bitindices.Aggregate(0, (sum, val) => sum + (1 << val));
}

private static List<int> IntToBits(int input)
Expand Down
6 changes: 6 additions & 0 deletions Arrowgene.Ddon.GameServer/Chat/ChatManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,12 @@ private void Deliver(GameClient client, ChatResponse response)
}
break;
case LobbyChatMsgType.Clan:
if (client.Character.ClanId == 0)
{
response.Recipients.Add(client);
break;
}

response.Recipients.AddRange(_server.ClientLookup.GetAll().Where(
x => x.Character != null
&& client.Character != null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public ClanClanGetHistoryHandler(DdonGameServer server) : base(server)

public override S2CClanClanGetHistoryRes Handle(GameClient client, C2SClanClanGetHistoryReq request)
{
// TODO: Implement.
return new S2CClanClanGetHistoryRes();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ public ClanClanGetJoinRequestedListHandler(DdonGameServer server) : base(server)

public override S2CClanClanGetJoinRequestedListRes Handle(GameClient client, C2SClanClanGetJoinRequestedListReq request)
{
// TODO: Implement.
// client.Send(InGameDump.Dump_69);
return new();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public ClanClanGetMyJoinRequestListHandler(DdonGameServer server) : base(server)

public override S2CClanClanGetMyJoinRequestListRes Handle(GameClient client, C2SClanClanGetMyJoinRequestListReq request)
{
// TODO: Implement.
return new S2CClanClanGetMyJoinRequestListRes();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public ClanClanScoutEntryGetInviteListHandler(DdonGameServer server) : base(serv

public override S2CClanClanScoutEntryGetInviteListRes Handle(GameClient client, C2SClanClanScoutEntryGetInviteListReq request)
{
// TODO: Implement.
return new();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public ClanClanScoutEntryGetInvitedListHandler(DdonGameServer server) : base(ser

public override S2CClanClanScoutEntryGetInvitedListRes Handle(GameClient client, C2SClanClanScoutEntryGetInvitedListReq request)
{
// TODO: Implement.
return new S2CClanClanScoutEntryGetInvitedListRes();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public ClanClanScoutEntrySearchHandler(DdonGameServer server) : base(server)

public override S2CClanClanScoutEntrySearchRes Handle(GameClient client, C2SClanClanScoutEntrySearchReq request)
{
// TODO: Implement.
return new S2CClanClanScoutEntrySearchRes();
}
}
Expand Down
1 change: 1 addition & 0 deletions Arrowgene.Ddon.GameServer/Handler/ClanClanSearchHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public ClanClanSearchHandler(DdonGameServer server) : base(server)

public override S2CClanClanSearchRes Handle(GameClient client, C2SClanClanSearchReq request)
{
// TODO: Implement.
return new S2CClanClanSearchRes();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public ClanClanSettingUpdateHandler(DdonGameServer server) : base(server)

public override S2CClanClanSettingUpdateRes Handle(GameClient client, C2SClanClanSettingUpdateReq request)
{
// TODO: Figure out what fires this and implement.
return new S2CClanClanSettingUpdateRes()
{
IsMemberNotice = false
Expand Down
8 changes: 8 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,11 @@ static EntitySerializer()
Create(new CDataClanShopConciergeItem.Serializer());
Create(new CDataClanShopFunctionInfo.Serializer());
Create(new CDataClanShopFunctionItem.Serializer());
Create(new CDataClanConciergeInfo.Serializer());
Create(new CDataClanConciergeNpc.Serializer());
Create(new CDataClanPartnerPawnInfo.Serializer());
Create(new CDataClanShopLineupName.Serializer());
Create(new CDataClanValueInfo.Serializer());

Create(new CDataClearTimePointBonus.Serializer());
Create(new CDataCommonU8.Serializer());
Expand Down Expand Up @@ -253,6 +258,8 @@ static EntitySerializer()
Create(new CDataPartyMemberMinimum.Serializer());
Create(new CDataPartyPlayerContext.Serializer());
Create(new CDataPartyQuestProgressInfo.Serializer());

Create(new CDataPawnExpeditionInfo.Serializer());
Create(new CDataPawnCraftData.Serializer());
Create(new CDataPawnCraftSkill.Serializer());
Create(new CDataPawnEquipInfo.Serializer());
Expand All @@ -268,6 +275,7 @@ static EntitySerializer()
Create(new CDataPawnTrainingPreparationInfoToAdvice.Serializer());
Create(new CDataPawnSearchParameter.Serializer());
Create(new CDataRegisterdPawnList.Serializer());

Create(new CDataPlayPointDataSerializer());
Create(new CDataPresetAbilityParam.Serializer());
Create(new CDataPriorityQuest.Serializer());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,57 @@
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Entity.Structure;
using Arrowgene.Ddon.Shared.Network;
using System.Collections.Generic;

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

public List<CDataCommonU32> FunctionReleaseIds { get; set; }
public List<CDataCommonU32> DungeonReleaseIds { get; set; }
public CDataPawnExpeditionInfo PawnExpeditionInfo { get; set; }
public CDataClanPartnerPawnInfo PartnerPawnInfo { get; set; }
public CDataClanConciergeInfo ConciergeInfo { get; set; }
public List<CDataClanShopLineupName> ShopLineupNameList { get; set; }
public List<CDataClanValueInfo> ClanValueInfoList { get; set; }

public class Serializer : PacketEntitySerializer<S2CClanClanBaseGetInfoRes>
{
public override void Write(IBuffer buffer, S2CClanClanBaseGetInfoRes obj)
{
#if false
WriteByteArray(buffer, BaseData);
#endif

WriteServerResponse(buffer, obj);
WriteByteArray(buffer, obj.BaseData);
WriteEntityList<CDataCommonU32>(buffer, obj.FunctionReleaseIds);
WriteEntityList<CDataCommonU32>(buffer, obj.DungeonReleaseIds);
WriteEntity<CDataPawnExpeditionInfo>(buffer, obj.PawnExpeditionInfo);
WriteEntity<CDataClanPartnerPawnInfo>(buffer, obj.PartnerPawnInfo);
WriteEntity<CDataClanConciergeInfo>(buffer, obj.ConciergeInfo);
WriteEntityList<CDataClanShopLineupName>(buffer, obj.ShopLineupNameList);
WriteEntityList<CDataClanValueInfo>(buffer, obj.ClanValueInfoList);
}

public override S2CClanClanBaseGetInfoRes Read(IBuffer buffer)
{
S2CClanClanBaseGetInfoRes obj = new S2CClanClanBaseGetInfoRes();
ReadServerResponse(buffer, obj);

obj.FunctionReleaseIds = ReadEntityList<CDataCommonU32>(buffer);
obj.DungeonReleaseIds = ReadEntityList<CDataCommonU32>(buffer);
obj.PawnExpeditionInfo = ReadEntity<CDataPawnExpeditionInfo>(buffer);
obj.PartnerPawnInfo = ReadEntity<CDataClanPartnerPawnInfo>(buffer);
obj.ConciergeInfo = ReadEntity<CDataClanConciergeInfo>(buffer);
obj.ShopLineupNameList = ReadEntityList<CDataClanShopLineupName>(buffer);
obj.ClanValueInfoList = ReadEntityList<CDataClanValueInfo>(buffer);
return obj;
}
}

private readonly byte[] BaseData =
private readonly byte[] BaseData =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02,
Expand Down Expand Up @@ -174,6 +202,5 @@ public override S2CClanClanBaseGetInfoRes Read(IBuffer buffer)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x52, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x3C
};

}
}
34 changes: 34 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/Structure/CDataClanConciergeInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Arrowgene.Buffers;
using System.Collections.Generic;

namespace Arrowgene.Ddon.Shared.Entity.Structure
{
public class CDataClanConciergeInfo
{
public CDataClanConciergeInfo()
{
ClanConciergeNpcList = new();
}

public uint NpcId { get; set; }
public List<CDataClanConciergeNpc> ClanConciergeNpcList { get; set; }


public class Serializer : EntitySerializer<CDataClanConciergeInfo>
{
public override void Write(IBuffer buffer, CDataClanConciergeInfo obj)
{
WriteUInt32(buffer, obj.NpcId);
WriteEntityList<CDataClanConciergeNpc>(buffer, obj.ClanConciergeNpcList);
}

public override CDataClanConciergeInfo Read(IBuffer buffer)
{
CDataClanConciergeInfo obj = new CDataClanConciergeInfo();
obj.NpcId = ReadUInt32(buffer);
obj.ClanConciergeNpcList = ReadEntityList<CDataClanConciergeNpc>(buffer);
return obj;
}
}
}
}
33 changes: 33 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/Structure/CDataClanConciergeNpc.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Arrowgene.Buffers;

namespace Arrowgene.Ddon.Shared.Entity.Structure
{
public class CDataClanConciergeNpc
{
public uint NpcId { get; set; }
public uint Price { get; set; }
public bool IsInit { get; set; }
public uint SortId { get; set; }

public class Serializer : EntitySerializer<CDataClanConciergeNpc>
{
public override void Write(IBuffer buffer, CDataClanConciergeNpc obj)
{
WriteUInt32(buffer, obj.NpcId);
WriteUInt32(buffer, obj.Price);
WriteBool(buffer, obj.IsInit);
WriteUInt32(buffer, obj.SortId);
}

public override CDataClanConciergeNpc Read(IBuffer buffer)
{
CDataClanConciergeNpc obj = new CDataClanConciergeNpc();
obj.NpcId = ReadUInt32(buffer);
obj.Price = ReadUInt32(buffer);
obj.IsInit = ReadBool(buffer);
obj.SortId = ReadUInt32(buffer);
return obj;
}
}
}
}
34 changes: 34 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/Structure/CDataClanPartnerPawnInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Arrowgene.Buffers;
using System.Collections.Generic;

namespace Arrowgene.Ddon.Shared.Entity.Structure
{
public class CDataClanPartnerPawnInfo
{
public CDataClanPartnerPawnInfo()
{
MyPartnerPawnList = new();
MemberPartnerPawnList = new();
}

public List<CDataCommonU32> MyPartnerPawnList { get; set; }
public List<CDataCommonU32> MemberPartnerPawnList { get; set; }

public class Serializer : EntitySerializer<CDataClanPartnerPawnInfo>
{
public override void Write(IBuffer buffer, CDataClanPartnerPawnInfo obj)
{
WriteEntityList<CDataCommonU32>(buffer, obj.MyPartnerPawnList);
WriteEntityList<CDataCommonU32>(buffer, obj.MemberPartnerPawnList);
}

public override CDataClanPartnerPawnInfo Read(IBuffer buffer)
{
CDataClanPartnerPawnInfo obj = new CDataClanPartnerPawnInfo();
obj.MyPartnerPawnList = ReadEntityList<CDataCommonU32>(buffer);
obj.MemberPartnerPawnList = ReadEntityList<CDataCommonU32>(buffer);
return obj;
}
}
}
}
32 changes: 32 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/Structure/CDataClanShopLineupName.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using Arrowgene.Buffers;

namespace Arrowgene.Ddon.Shared.Entity.Structure
{
public class CDataClanShopLineupName
{
public CDataClanShopLineupName()
{
Name = string.Empty;
}

public uint LineupID { get; set; }
public string Name { get; set; }

public class Serializer : EntitySerializer<CDataClanShopLineupName>
{
public override void Write(IBuffer buffer, CDataClanShopLineupName obj)
{
WriteUInt32(buffer, obj.LineupID);
WriteMtString(buffer, obj.Name);
}

public override CDataClanShopLineupName Read(IBuffer buffer)
{
CDataClanShopLineupName obj = new CDataClanShopLineupName();
obj.LineupID = ReadUInt32(buffer);
obj.Name = ReadMtString(buffer);
return obj;
}
}
}
}
27 changes: 27 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/Structure/CDataClanValueInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using Arrowgene.Buffers;

namespace Arrowgene.Ddon.Shared.Entity.Structure
{
public class CDataClanValueInfo
{
public byte Type { get; set; }
public uint Value { get; set; }

public class Serializer : EntitySerializer<CDataClanValueInfo>
{
public override void Write(IBuffer buffer, CDataClanValueInfo obj)
{
WriteByte(buffer, obj.Type);
WriteUInt32(buffer, obj.Value);
}

public override CDataClanValueInfo Read(IBuffer buffer)
{
CDataClanValueInfo obj = new CDataClanValueInfo();
obj.Type = ReadByte(buffer);
obj.Value = ReadUInt32(buffer);
return obj;
}
}
}
}
Loading

0 comments on commit 06b018f

Please sign in to comment.