private async UniTask LoadGuildRoutine(int id) { if (id > 0 && !loadingGuildIds.Contains(id)) { loadingGuildIds.Add(id); GuildResp resp = await DbServiceClient.ReadGuildAsync(new ReadGuildReq() { GuildId = id }); guilds[id] = resp.GuildData.FromByteString <GuildData>(); loadingGuildIds.Remove(id); } }
private async UniTask LoadGuildRoutine(int id) { if (id > 0 && !loadingGuildIds.Contains(id)) { loadingGuildIds.Add(id); GuildResp resp = await DbServiceClient.ReadGuildAsync(new ReadGuildReq() { GuildId = id, }); ServerGuildHandlers.SetGuild(id, resp.GuildData); loadingGuildIds.Remove(id); } }
public async UniTaskVoid HandleRequestIncreaseGuildSkillLevel(RequestHandlerData requestHandler, RequestIncreaseGuildSkillLevelMessage request, RequestProceedResultDelegate <ResponseIncreaseGuildSkillLevelMessage> result) { #if UNITY_STANDALONE && !CLIENT_BUILD await UniTask.Yield(); IPlayerCharacterData playerCharacter; if (!GameInstance.ServerUserHandlers.TryGetPlayerCharacter(requestHandler.ConnectionId, out playerCharacter)) { result.Invoke(AckResponseCode.Error, new ResponseIncreaseGuildSkillLevelMessage() { message = UITextKeys.UI_ERROR_NOT_LOGGED_IN, }); return; } ValidateGuildRequestResult validateResult = GameInstance.ServerGuildHandlers.CanIncreaseGuildSkillLevel(playerCharacter, request.dataId); if (!validateResult.IsSuccess) { result.Invoke(AckResponseCode.Error, new ResponseIncreaseGuildSkillLevelMessage() { message = validateResult.GameMessage, }); return; } // Save to database GuildResp resp = await DbServiceClient.AddGuildSkillAsync(new AddGuildSkillReq() { GuildId = validateResult.GuildId, SkillId = request.dataId, }); GuildData guild = resp.GuildData; GameInstance.ServerGuildHandlers.SetGuild(validateResult.GuildId, guild); // Broadcast via chat server if (ChatNetworkManager.IsClientConnected) { ChatNetworkManager.SendSetGuildSkillLevel(null, MMOMessageTypes.UpdateGuild, validateResult.GuildId, request.dataId, guild.GetSkillLevel(request.dataId)); ChatNetworkManager.SendSetGuildLevelExpSkillPoint(null, MMOMessageTypes.UpdateGuild, validateResult.GuildId, guild.level, guild.exp, guild.skillPoint); } GameInstance.ServerGameMessageHandlers.SendSetGuildSkillLevelToMembers(guild, request.dataId); GameInstance.ServerGameMessageHandlers.SendSetGuildLevelExpSkillPointToMembers(guild); result.Invoke(AckResponseCode.Success, new ResponseIncreaseGuildSkillLevelMessage()); #endif }
public async UniTaskVoid IncreaseGuildExp(IPlayerCharacterData playerCharacter, int exp) { #if UNITY_STANDALONE && !CLIENT_BUILD ValidateGuildRequestResult validateResult = this.CanIncreaseGuildExp(playerCharacter, exp); if (!validateResult.IsSuccess) { return; } GuildResp resp = await DbServiceClient.IncreaseGuildExpAsync(new IncreaseGuildExpReq() { GuildId = validateResult.GuildId, Exp = exp, }); GuildData guild = resp.GuildData; SetGuild(validateResult.GuildId, guild); // Broadcast via chat server if (ChatNetworkManager.IsClientConnected) { ChatNetworkManager.SendSetGuildLevelExpSkillPoint(null, MMOMessageTypes.UpdateGuild, guild.id, guild.level, guild.exp, guild.skillPoint); } GameInstance.ServerGameMessageHandlers.SendSetGuildLevelExpSkillPointToMembers(guild); #endif }
public async UniTaskVoid HandleRequestCreateGuild(RequestHandlerData requestHandler, RequestCreateGuildMessage request, RequestProceedResultDelegate <ResponseCreateGuildMessage> result) { #if UNITY_STANDALONE && !CLIENT_BUILD await UniTask.Yield(); IPlayerCharacterData playerCharacter; if (!GameInstance.ServerUserHandlers.TryGetPlayerCharacter(requestHandler.ConnectionId, out playerCharacter)) { result.Invoke(AckResponseCode.Error, new ResponseCreateGuildMessage() { message = UITextKeys.UI_ERROR_NOT_LOGGED_IN, }); return; } ValidateGuildRequestResult validateResult = playerCharacter.CanCreateGuild(request.guildName); if (!validateResult.IsSuccess) { result.Invoke(AckResponseCode.Error, new ResponseCreateGuildMessage() { message = validateResult.GameMessage, }); return; } FindGuildNameResp findGuildNameResp = await DbServiceClient.FindGuildNameAsync(new FindGuildNameReq() { GuildName = request.guildName, }); if (findGuildNameResp.FoundAmount > 0) { result.Invoke(AckResponseCode.Error, new ResponseCreateGuildMessage() { message = UITextKeys.UI_ERROR_GUILD_NAME_EXISTED, }); return; } GuildResp createGuildResp = await DbServiceClient.CreateGuildAsync(new CreateGuildReq() { LeaderCharacterId = playerCharacter.Id, GuildName = request.guildName, }); GuildData guild = createGuildResp.GuildData; GameInstance.Singleton.SocialSystemSetting.DecreaseCreateGuildResource(playerCharacter); GameInstance.ServerGuildHandlers.SetGuild(guild.id, guild); playerCharacter.GuildId = guild.id; playerCharacter.GuildRole = guild.GetMemberRole(playerCharacter.Id); playerCharacter.SharedGuildExp = 0; if (playerCharacter is BasePlayerCharacterEntity) { // Sync guild name to client (playerCharacter as BasePlayerCharacterEntity).GuildName = request.guildName; } // Broadcast via chat server if (ChatNetworkManager.IsClientConnected) { ChatNetworkManager.SendCreateGuild(null, MMOMessageTypes.UpdateGuild, guild.id, request.guildName, playerCharacter.Id); ChatNetworkManager.SendAddSocialMember(null, MMOMessageTypes.UpdateGuildMember, guild.id, playerCharacter.Id, playerCharacter.CharacterName, playerCharacter.DataId, playerCharacter.Level); } GameInstance.ServerGameMessageHandlers.SendSetGuildData(requestHandler.ConnectionId, guild); GameInstance.ServerGameMessageHandlers.SendAddGuildMembersToOne(requestHandler.ConnectionId, guild); result.Invoke(AckResponseCode.Success, new ResponseCreateGuildMessage()); #endif }