using Google.Protobuf.WellKnownTypes; using Nettention.Proud; using ServerCommon; using ServerCore; using ServerBase; using static ClientToGameRes.Types; using META_ID = System.UInt32; using USER_GUID = System.String; namespace GameServer { public static class CraftNotifyHelper { public static bool send_S2C_NTF_CRAFT_RECIPES(this Player player) { var craft_recipe_action = player.getEntityAction(); NullReferenceCheckHelper.throwIfNull(craft_recipe_action, () => $"craft_recipe_action is null !!! - {player.toBasicString()}"); var craft_recipe_meta_ids = craft_recipe_action.getRecipeMetaIds(); var noti_packet = makeAckCraftRecipePacket(craft_recipe_meta_ids); if (false == GameServerApp.getServerLogic().onSendPacket(player, noti_packet)) { return false; } return true; } public static ClientToGame makeAckCraftRecipePacket(List craftMetaIds) { var noti_packet = new ClientToGame(); noti_packet.Message = new(); noti_packet.Message.NtfCraftRecipesInfo = new(); noti_packet.Message.NtfCraftRecipesInfo.CraftMetaIds.AddRange(craftMetaIds); return noti_packet; } public static bool send_S2C_NTF_CRAFT_INFOS(this Player player) { var craft_action = player.getEntityAction(); NullReferenceCheckHelper.throwIfNull(craft_action, () => $"craft_action is null !!! - {player.toBasicString()}"); var craftInfos = craft_action.getCraftInfoList(); if (false == GameServerApp.getServerLogic().onSendPacket(player, makeNotiCraftInfoPacket(craftInfos, player.getUserGuid()))) { return false; } return true; } public static bool send_S2C_NTF_CRAFT_HELPED(this Player player, int craft_helped_count, string craft_help_user_nickname) { var noti_packet = new ClientToGame(); noti_packet.Message = new(); noti_packet.Message.NtfCraftHelped = new(); noti_packet.Message.NtfCraftHelped.HelpedCount = craft_helped_count; noti_packet.Message.NtfCraftHelped.HelpUserNickName = craft_help_user_nickname; if (false == GameServerApp.getServerLogic().onSendPacket(player, noti_packet)) { return false; } return true; } public async static Task send_S2C_NTF_TARGET_CRAFT_INFOS(this Player player, USER_GUID target_guid) { var server_logic = GameServerApp.getServerLogic(); var dynamo_db_client = server_logic.getDynamoDbClient(); var craft_doc = new CraftDoc(); craft_doc.setCombinationKeyForPK(target_guid); craft_doc.onApplyPKSK(); var query_config = dynamo_db_client.makeQueryConfigForReadByPKOnly(craft_doc.getPK()); (var result, var craft_docs) = await dynamo_db_client.simpleQueryDocTypesWithQueryOperationConfig(query_config); if (result.isFail()) { return false; } List craftInfos = new List(); foreach(var doc in craft_docs) { var doc_attrib = doc.getAttrib(); NullReferenceCheckHelper.throwIfNull(doc_attrib, () => $"doc_attrib is null !!! - {player.toBasicString()}"); CraftInfo craftInfo = new CraftInfo(); craftInfo.AnchorGuid = doc_attrib.AnchorGuid; craftInfo.CraftMetaId = (int)doc_attrib.CraftMetaId; craftInfo.CraftFinishTime = Timestamp.FromDateTime(doc_attrib.CraftFinishTime); craftInfo.CraftStartTime = Timestamp.FromDateTime(doc_attrib.CraftStartTime); craftInfo.BeaconGuid = craftInfo.BeaconGuid; craftInfos.Add(craftInfo); } if (false == GameServerApp.getServerLogic().onSendPacket(player, makeNotiCraftInfoPacket(craftInfos, target_guid))) { return false; } return true; } public static ClientToGame makeNotiCraftInfoPacket(List craftInfos, USER_GUID owner_guid) { var noti_packet = new ClientToGame(); noti_packet.Message = new(); noti_packet.Message.NtfCraftInfos = new(); noti_packet.Message.NtfCraftInfos.CraftInfos.AddRange(craftInfos); noti_packet.Message.NtfCraftInfos.OwnerGuid = owner_guid; return noti_packet; } public static ClientToGame makeNtfCraftUpdatePacket(string anchor_guid, Timestamp finish_craft_time) { var noti_packet = new ClientToGame(); noti_packet.Message = new(); noti_packet.Message.NtfCraftHelpUpdate = new(); noti_packet.Message.NtfCraftHelpUpdate.AnchorGuid = anchor_guid; noti_packet.Message.NtfCraftHelpUpdate.CraftFinishTime = finish_craft_time; return noti_packet; } public static void send_GS2GS_NTF_CraftUpdate(string destServer, string room_id, string anchor_guid, Timestamp finish_craft_time, string owner_guid, int owner_helped_count, string help_user_name) { var server_logic = GameServerApp.getServerLogic(); var rabbitMQ4Game = server_logic.getRabbitMqConnector() as RabbitMQ4Game; NullReferenceCheckHelper.throwIfNull(rabbitMQ4Game, () => $"rabbitMQ4Game is null !!!"); ServerMessage notiMessage = new(); notiMessage.NtfCraftHelp = new() { RoomId = room_id, AnchorGuid = anchor_guid, CraftFinishTime = finish_craft_time, OwnerGuid = owner_guid, OwnerHelpedCount = owner_helped_count, HelpUserName = help_user_name }; rabbitMQ4Game.SendMessage(destServer, notiMessage); } } }