초기커밋

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,141 @@

using ServerCore;
using ServerBase;
using ServerCommon;
namespace GameServer;
public class BeaconAppearanceCustomizeAction : EntityActionBase
{
public BeaconAppearanceCustomizeAction(UgcNpc owner)
: base(owner)
{
}
public override async Task<Result> onInit()
{
await Task.CompletedTask;
var result = new Result();
return result;
}
public override void onClear()
{
return;
}
public async Task<Result> tryLoadAppearanceCustomizeFromDoc(AppearanceCustomizeDoc appearanceCustomizeDoc)
{
var beacon = getOwner() as UgcNpc;
NullReferenceCheckHelper.throwIfNull(beacon, () => $"beacon is null !!!");
NullReferenceCheckHelper.throwIfNull(appearanceCustomizeDoc, () => $"appearanceCustomizeDoc is null !!! - {beacon.toBasicString()}");
var result = new Result();
var err_msg = string.Empty;
var appearance_customize_attrib = appearanceCustomizeDoc.getAttrib<AppearanceCustomizeAttrib>();
NullReferenceCheckHelper.throwIfNull(appearance_customize_attrib, () => $"appearance_customize_attrib is null !!! - {beacon.toBasicString()}");
var appearance_customize_attribute = beacon.getEntityAttribute<AppearanceCustomizeAttribute>();
NullReferenceCheckHelper.throwIfNull(appearance_customize_attribute, () => $"appearance_customize_attribute is null !!!");
result = await ServerBase.DataCopyHelper.copyEntityAttributeFromDocs(appearance_customize_attribute, new List<DynamoDbDocBase>() { appearanceCustomizeDoc });
if (result.isFail())
{
err_msg = $"Failed to copyEntityAttributeFromDocs() !!!, to:{appearance_customize_attribute.getTypeName()}, from:{appearanceCustomizeDoc.getTypeName()} : {result.toBasicString()} - {beacon.toBasicString()}";
Log.getLogger().error(err_msg);
return result;
}
return result;
}
public async Task<Result> tryCustomizeAppearance(AppearanceCustomization appearCustomize)
{
var beacon = getOwner() as UgcNpc;
NullReferenceCheckHelper.throwIfNull(beacon, () => $"beacon is null !!!");
var player = beacon.onGetMasterEntity();
NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
ArgumentNullReferenceCheckHelper.throwIfNull(appearCustomize, () => $"appearCustomize is null !!!");
var result = new Result();
var err_msg = string.Empty;
var ugcn_npc_action = beacon.getEntityAction<UgcNpcAction>();
NullReferenceCheckHelper.throwIfNull(ugcn_npc_action, () => $"ugcn_npc_action is null !!! - {player.toBasicString()}");
//=====================================================================================
// 1. 비컨의 배치 상태를 체크 한다.
//=====================================================================================
if (true == ugcn_npc_action.isLocatedUgcNpc())
{
err_msg = $"UgcNpc located state !!! : {beacon.toSummaryString()} - {player.toBasicString()}";
result.setFail(ServerErrorCode.UgcNpcLocatedState, err_msg);
return result;
}
//=====================================================================================
// 2. 금전을 소모 한다.
//=====================================================================================
var money_action = player.getEntityAction<MoneyAction>();
NullReferenceCheckHelper.throwIfNull(money_action, () => $"money_action is null !!! - {player.toBasicString()}");
var req_currency_type = (CurrencyType)ServerCommon.MetaHelper.GameConfigMeta.NpcCustomizeCostType;
result = await money_action.spendMoney(req_currency_type, ServerCommon.MetaHelper.GameConfigMeta.NpcCustomizeCost);
if (result.isFail())
{
return result;
}
//=====================================================================================
// 3. 비컨 외형 커스마이징 정보를 갱신 한다.
//=====================================================================================
updateAppearanceCustomize(appearCustomize);
return result;
}
private void updateAppearanceCustomize(AppearanceCustomization appearCustomize)
{
ArgumentNullReferenceCheckHelper.throwIfNull(appearCustomize, () => $"appearCustomize is null !!!");
var beacon = getOwner() as UgcNpc;
NullReferenceCheckHelper.throwIfNull(beacon, () => $"beacon is null !!!");
var player = beacon.onGetMasterEntity();
NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
var appearance_customize_attribute = beacon.getEntityAttribute<AppearanceCustomizeAttribute>();
NullReferenceCheckHelper.throwIfNull(appearance_customize_attribute, () => $"appearance_customize_attribute is null !!!");
appearance_customize_attribute.BasicStyle = appearCustomize.BasicStyle;
appearance_customize_attribute.BodyShape = appearCustomize.BodyShape;
appearance_customize_attribute.HairStyle = appearCustomize.HairStyle;
appearance_customize_attribute.CustomValues = appearCustomize.CustomValues.ToList();
appearance_customize_attribute.modifiedEntityAttribute(true);
}
public AppearanceCustomization toAppearanceCustomization()
{
var beacon = getOwner() as UgcNpc;
NullReferenceCheckHelper.throwIfNull(beacon, () => $"beacon is null !!!");
var appearance_customize_attribute = beacon.getEntityAttribute<AppearanceCustomizeAttribute>();
NullReferenceCheckHelper.throwIfNull(appearance_customize_attribute, () => $"appearance_customize_attribute is null !!!");
var appearance_customize = new AppearanceCustomization();
appearance_customize.BasicStyle = appearance_customize_attribute.BasicStyle;
appearance_customize.BodyShape = appearance_customize_attribute.BodyShape;
appearance_customize.HairStyle = appearance_customize_attribute.HairStyle;
appearance_customize.CustomValues.AddRange(appearance_customize_attribute.CustomValues.ToList());
return appearance_customize;
}
}

View File

@@ -0,0 +1,101 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static StackExchange.Redis.Role;
using ServerCore; using ServerBase;
using ServerCommon;
using ServerCommon.BusinessLogDomain;
using static ServerCommon.MetaHelper;
using GameServer;
namespace GameServer
{
public class CharacterAppearanceCustomizeAction : EntityActionBase
{
public CharacterAppearanceCustomizeAction(Character owner)
: base(owner)
{
}
public override async Task<Result> onInit()
{
await Task.CompletedTask;
var result = new Result();
return result;
}
public override void onClear()
{
return;
}
public async Task<(Result, CharacterAttribute.AppearanceProfile?)> tryCustomizeAppearance(AppearanceCustomization appearCustomize)
{
ArgumentNullReferenceCheckHelper.throwIfNull(appearCustomize, () => $"appearCustomize is null !!!");
var character = getOwner() as Character;
NullReferenceCheckHelper.throwIfNull(character, () => $"character is null !!!");
var player = character.getRootParent() as Player;
NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
var result = new Result();
var err_msg = string.Empty;
//=====================================================================================
// 1. 금전을 소모 한다.
//=====================================================================================
var money_action = player.getEntityAction<MoneyAction>();
NullReferenceCheckHelper.throwIfNull(money_action, () => $"money_action is null !!! - {player.toBasicString()}");
var req_currency_type = (CurrencyType)ServerCommon.MetaHelper.GameConfigMeta.CharacterCustomizeCostType;
result = await money_action.spendMoney(req_currency_type, GameConfigMeta.CharacterCustomizeCost);
if (result.isFail())
{
return (result, null);
}
//=====================================================================================
// 2. 캐릭터 외형 커스마이징 정보를 갱신 한다.
//=====================================================================================
var appearance_profile = updateAppearanceCustomize(appearCustomize);
NullReferenceCheckHelper.throwIfNull(appearance_profile, () => $"appearance_profile is null !!! - {player.toBasicString()}");
return (result, appearance_profile);
}
private CharacterAttribute.AppearanceProfile updateAppearanceCustomize(AppearanceCustomization appearCustomize)
{
ArgumentNullReferenceCheckHelper.throwIfNull(appearCustomize, () => $"appearCustomize is null !!!");
var character = getOwner() as Character;
NullReferenceCheckHelper.throwIfNull(character, () => $"character is null !!!");
var character_attribute = character.getEntityAttribute<CharacterAttribute>();
NullReferenceCheckHelper.throwIfNull(character_attribute, () => $"character_attribute is null !!!");
var appearance_profile = character_attribute.AppearanceProfileValue;
NullReferenceCheckHelper.throwIfNull(appearance_profile, () => $"appearance_profile is null !!!");
appearance_profile.BasicStyle = (UInt32)appearCustomize.BasicStyle;
appearance_profile.BodyShape = (UInt32)appearCustomize.BodyShape;
appearance_profile.HairStyle = (UInt32)appearCustomize.HairStyle;
appearance_profile.CustomValues = appearCustomize.CustomValues.ToList();
character_attribute.modifiedEntityAttribute();
return appearance_profile;
}
}
}