초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
using Google.Protobuf;
using Google.Protobuf.WellKnownTypes;
using ServerCore;
using ServerBase;
using ServerCommon;
using ServerCommon.BusinessLogDomain;
using MetaAssets;
namespace GameServer.PacketHandler;
[PacketHandler(typeof(ClientToGameReq), typeof(ClientToGameReq.Types.C2GS_REQ_ENTITY_STATE_DANCE_END), typeof(EntityStateDanceEndPacketHandler), typeof(GameLoginListener))]
public class EntityStateDanceEndPacketHandler : PacketRecvHandler
{
public override async Task<Result> onProcessPacket(ISession entityWithSession, IMessage recvMessage)
{
await Task.CompletedTask;
var result = new Result();
var err_msg = string.Empty;
var player = entityWithSession as Player;
ArgumentNullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
var game_msg = recvMessage as ClientToGame;
ArgumentNullReferenceCheckHelper.throwIfNull(game_msg, () => $"game_msg is null !!! - {player.toBasicString()}");
var request = game_msg.Request.ReqEntityStateDanceEnd;
ArgumentNullReferenceCheckHelper.throwIfNull(request, () => $"request is null !!! - {player.toBasicString()}");
var player_action = player.getEntityAction<PlayerAction>();
NullReferenceCheckHelper.throwIfNull(player_action, () => $"player_action is null !!! - {player.toBasicString()}");
var selected_character = player_action.getSelectedCharacter();
NullReferenceCheckHelper.throwIfNull(selected_character, () => $"selected_character is null !!! - {player.toBasicString()}");
var character_action = selected_character.getEntityAction<CharacterAction>();
NullReferenceCheckHelper.throwIfNull(character_action, () => $"character_action is null !!! - {player.toBasicString()}");
var game_zone_action = player.getEntityAction<GameZoneAction>();
NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
//var server_logic = GameServerApp.getServerLogic();
var character_attribute = selected_character.getEntityAttribute<CharacterAttribute>();
NullReferenceCheckHelper.throwIfNull(character_attribute, () => $"character_attribute is null !!!");
var change_type = EntityStateType.None;
character_action.setStateInfo(change_type, "", 0);
send_C2GS_ACK_ENTITY_STATE_DANCE_END(player, result);
/*
댄스 상태는 휘발성 상태로 판단하여 트랜잭션 처리하지 않고 메모리에서만 판단
추후 사이드 이펙트 있을경우를 대비해 당분간 코드는 주석으로 남겨놓음 25년 2월 이후 삭제 예정 24-12-03
var fn_change_entity_state_type = async delegate()
{
var character_attribute = selected_character.getEntityAttribute<CharacterAttribute>();
NullReferenceCheckHelper.throwIfNull(character_attribute, () => $"character_attribute is null !!!");
//현재 상태가 DANCE가 아닌데 패킷이 오면 예외 처리를 해줘야 되나? 말아야 되나? 일단 해주자.
if (character_attribute.StateInfo.StateType != EntityStateType.Dancing)
{
err_msg = $"Current state is not dancing !!! current State : {character_attribute.StateInfo.StateType}, player : {player.toBasicString()}";
result.setFail(ServerErrorCode.EntityStateNotDancing, err_msg);
send_C2GS_ACK_ENTITY_STATE_DANCE_END(player, result);
}
var change_type = EntityStateType.None;
character_action.setStateInfo(change_type, "", 0);
character_attribute.modifiedEntityAttribute();
var batch = new QueryBatchEx<QueryRunnerWithDocument>( player, LogActionType.DanceEntityStateEnd
, server_logic.getDynamoDbClient()
, true);
{
batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
}
//log 추가
batch.appendBusinessLog(new ChangeDanceEntityStateBusinessLog(EntityStateType.Dancing, change_type, "", 0));
result = await QueryHelper.sendQueryAndBusinessLog(batch);
if (result.isFail())
{
send_C2GS_ACK_ENTITY_STATE_DANCE_END(player, result);
return result;
}
send_C2GS_ACK_ENTITY_STATE_DANCE_END(player, result);
return result;
};
result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "ChangeEntityStateType", fn_change_entity_state_type);
if (result.isFail())
{
err_msg = $"Failed to runTransactionRunnerSafely() !!! : {result.toBasicString()} - {player.toBasicString()}";
ServerCore.Log.getLogger().error(err_msg);
return result;
}*/
character_action.broadcastCharacterInfo();
var invokers = new List<ILogInvoker>();
var log_action = new LogActionEx(LogActionType.DanceEntityStateEnd);
invokers.Add(new ChangeDanceEntityStateBusinessLog(EntityStateType.Dancing, change_type, "", 0));
BusinessLogger.collectLogs(log_action, player, invokers);
return result;
}
public static bool send_C2GS_ACK_ENTITY_STATE_DANCE_END(Player player, Result result)
{
var ack_packet = new ClientToGame();
ack_packet.Response = new ClientToGameRes();
ack_packet.Response.ErrorCode = result.ErrorCode;
ack_packet.Response.AckEntityStateDanceEnd = new();
if (false == GameServerApp.getServerLogic().onSendPacket(player, ack_packet))
{
return false;
}
return true;
}
}