106 lines
3.2 KiB
C#
106 lines
3.2 KiB
C#
using System.Diagnostics.CodeAnalysis;
|
|
|
|
using Google.Protobuf;
|
|
using Google.Protobuf.WellKnownTypes;
|
|
|
|
|
|
using ServerCore;
|
|
using ServerBase;
|
|
using ServerCommon;
|
|
using ServerCommon.BusinessLogDomain;
|
|
using MetaAssets;
|
|
|
|
|
|
namespace GameServer;
|
|
|
|
public partial class InstanceRoom
|
|
{
|
|
public async Task<bool> battleInstanceInit()
|
|
{
|
|
var result = await BattleInstanceManager.It.battleInstanceInit(this, _roomId);
|
|
if (result.isFail())
|
|
{
|
|
Log.getLogger().error(result.toBasicString());
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public async Task<Result> sendGameModeInstanceJoinSuccess(Player player)
|
|
{
|
|
await Task.CompletedTask;
|
|
//var game_mod_handler = GameModeManager.It.getGameModeJoinHandler(_placeType);
|
|
return new();
|
|
}
|
|
|
|
|
|
public bool tryGetInstanceMember(string userGuid, [MaybeNullWhen(false)] out Player out_player)
|
|
{
|
|
out_player = null;
|
|
if (false == m_players.TryGetValue(userGuid, out var player))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
out_player = player;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
public List<BattleRoundingExistUsers> tryGetInstanceExistUserForLog()
|
|
{
|
|
List<BattleRoundingExistUsers> users = new();
|
|
foreach (var player in m_players.Values)
|
|
{
|
|
BattleRoundingExistUsers user = new(player.getUserGuid(), player.getUserNickname());
|
|
users.Add(user);
|
|
}
|
|
|
|
return users;
|
|
}
|
|
|
|
public async Task LeaveBattleInstanceRoom(Player player, bool disconnected)
|
|
{
|
|
var user_guid = player.getUserGuid();
|
|
|
|
Log.getLogger().info($"BattleInstanceRoom.Leave() Start !!! - userGuid:{user_guid}, instanceRoomId:{_roomId}, sessionCount:{SessionCount}, addConnectedUser:{getMap().getCurrCountAsAddConnectedUser()}");
|
|
|
|
if (m_players.TryRemove(player.getUserGuid(), out _))
|
|
{
|
|
await BattleInstanceRoomHandler.leaveBattleInstanceRoom(user_guid, _roomId);
|
|
}
|
|
|
|
var location_attribute = player.getEntityAttribute<LocationAttribute>();
|
|
NullReferenceCheckHelper.throwIfNull(location_attribute, () => $"LocationAttribute is null !!! - player:{player.toBasicString()}");
|
|
location_attribute.CurrentIndunLocation.clear();
|
|
|
|
var game_zone_action = player.getEntityAction<GameZoneAction>();
|
|
await game_zone_action.tryLeaveGameZone();
|
|
|
|
if (SessionCount + getMap().getCurrCountAsAddConnectedUser() == 0)
|
|
{
|
|
if (!_isPartyInstance || _concertEnd)
|
|
{
|
|
await destroyRoom();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
{
|
|
ClientToGame clientToGame = new ClientToGame();
|
|
clientToGame.Message = new ClientToGameMessage();
|
|
clientToGame.Message.LeaveInstanceRoomMember = new ClientToGameMessage.Types.LeaveInstanceRoomMember();
|
|
clientToGame.Message.LeaveInstanceRoomMember.MemberGuid = player.getUserGuid();
|
|
|
|
Broadcast(clientToGame);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Log.getLogger().info($"InstanceRoom.Leave() Finish !!! - userGuid:{user_guid}, instanceRoomId:{_roomId}, sessionCount:{SessionCount}, addConnectedUser:{getMap().getCurrCountAsAddConnectedUser()}");
|
|
}
|
|
|
|
} |