초기커밋
This commit is contained in:
103
GameServer/Entity/Inventory/Owner/User/UserInventoryAction.cs
Normal file
103
GameServer/Entity/Inventory/Owner/User/UserInventoryAction.cs
Normal file
@@ -0,0 +1,103 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
using Amazon.S3.Model;
|
||||
|
||||
|
||||
using ServerCore; using ServerBase;
|
||||
using ServerCommon;
|
||||
|
||||
|
||||
|
||||
namespace GameServer
|
||||
{
|
||||
public class UserInventoryAction : InventoryActionBase
|
||||
{
|
||||
public UserInventoryAction(Player owner)
|
||||
: base(owner)
|
||||
{
|
||||
}
|
||||
|
||||
public override async Task<Result> onInit()
|
||||
{
|
||||
await Task.CompletedTask;
|
||||
|
||||
var result = new Result();
|
||||
|
||||
var owner = getOwner() as Player;
|
||||
NullReferenceCheckHelper.throwIfNull(owner, () => $"owner is null !!!");
|
||||
|
||||
result = await getBagInven().onInit();
|
||||
if (result.isFail())
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
getEquipInvens().TryAdd(InvenEquipType.Tool, new ToolEquipInven(owner));
|
||||
getEquipInvens().TryAdd(InvenEquipType.Cloth, new ClothEquipInven(owner));
|
||||
getEquipInvens().TryAdd(InvenEquipType.Tattoo, new TattooEquipInven(owner));
|
||||
|
||||
var equip_inven_initializers = new Initializers();
|
||||
foreach (var each in getEquipInvens())
|
||||
{
|
||||
equip_inven_initializers.appendInitializer(each.Value as IInitializer);
|
||||
}
|
||||
result = await equip_inven_initializers.init("User EquipInvens");
|
||||
if (result.isFail())
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public override void onClear()
|
||||
{
|
||||
var player = getOwner() as Player;
|
||||
NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
|
||||
|
||||
// 삭제할 가방 인벤토리내의 아이템 목록을 초기화 한다.
|
||||
var bag_inven = getBagInven();
|
||||
NullReferenceCheckHelper.throwIfNull(bag_inven, () => $"bag_inven is null !!! - {player.toBasicString()}");
|
||||
|
||||
bag_inven.clearItemAll();
|
||||
// 가방 인벤토리내의 Tab별 개수 정보 초기화 한다.
|
||||
bag_inven.resetItemCountInTabs();
|
||||
|
||||
// 삭제할 장착 인벤토리내의 아이템 목록을 초기화 한다.
|
||||
var to_clear_equip_invens = new List<InvenEquipType>() {
|
||||
InvenEquipType.Tool
|
||||
, InvenEquipType.Cloth
|
||||
, InvenEquipType.Tattoo
|
||||
};
|
||||
foreach(var inven_equip_type in to_clear_equip_invens)
|
||||
{
|
||||
if (true == getEquipInvens().TryGetValue(inven_equip_type, out var found_equip_inven))
|
||||
{
|
||||
var tool_equip_inven = found_equip_inven as IWithInventoryAccessor;
|
||||
NullReferenceCheckHelper.throwIfNull(tool_equip_inven, () => $"tool_equip_inven is null !!! - {player.toBasicString()}");
|
||||
|
||||
tool_equip_inven.clearItemAll();
|
||||
}
|
||||
}
|
||||
|
||||
// 능력치 속성 정보들도 초기화 한다.
|
||||
var ability_action = player.getEntityAction<AbilityAction>();
|
||||
NullReferenceCheckHelper.throwIfNull(ability_action, () => $"ability_action is null !!! - {player.toBasicString()}");
|
||||
|
||||
ability_action.clearAbility();
|
||||
}
|
||||
|
||||
public override Item onAllocItem()
|
||||
{
|
||||
var player = getOwner() as Player;
|
||||
NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
|
||||
|
||||
return new UserItem(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user