초기커밋
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user