197 lines
7.3 KiB
C#
197 lines
7.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using Google.Protobuf.WellKnownTypes;
|
|
using Newtonsoft.Json;
|
|
|
|
|
|
using ServerCore;
|
|
using ServerBase;
|
|
|
|
|
|
using SESSION_ID = System.Int32;
|
|
using WORLD_ID = System.UInt32;
|
|
using META_ID = System.UInt32;
|
|
using ENTITY_GUID = System.String;
|
|
using ACCOUNT_ID = System.String;
|
|
using OWNER_GUID = System.String;
|
|
using USER_GUID = System.String;
|
|
using CHARACTER_GUID = System.String;
|
|
using ITEM_GUID = System.String;
|
|
using ENTITY_UNIQUE_ID = System.String;
|
|
using ANCHOR_META_GUID = System.String;
|
|
using NPC_UNIQUE_ID = System.String;
|
|
using FARMING_ENTITY_GUID = System.String;
|
|
using LOCATION_UNIQUE_ID = System.String;
|
|
using FARMING_EFFECT_DOC_LINK_PKSK = System.String;
|
|
|
|
|
|
|
|
namespace ServerCommon;
|
|
|
|
public class FarmingEffectAttrib : AttribBase
|
|
{
|
|
[JsonProperty("anchor_meta_guid")] //[PK 참조]
|
|
public ANCHOR_META_GUID AnchorMetaGuid { get; set; } = string.Empty;
|
|
|
|
[JsonProperty("location_unique_id")] //[SK 참조]
|
|
public LOCATION_UNIQUE_ID LocationUniqueId { get; set; } = string.Empty;
|
|
|
|
[JsonProperty("farming_prop_meta_id")]
|
|
public META_ID FarmingPropMetaId { get; set; } = 0;
|
|
|
|
[JsonProperty("farming_summoned_enity_type")]
|
|
public FarmingSummonedEntityType FarmingSummonedEntityType { get; set; } = FarmingSummonedEntityType.None;
|
|
|
|
[JsonProperty("farming_entity_guid")] // FarmingSummonedEntityType.User: UserGuid, FarmingSummonedEntityType.Beacon: UgcNpcMetaGuid:
|
|
public FARMING_ENTITY_GUID FarmingEntityGuid { get; set; } = string.Empty;
|
|
|
|
[JsonProperty("farming_state")]
|
|
public FarmingStateType FarmingState { get; set; } = FarmingStateType.None;
|
|
|
|
[JsonProperty("farming_action_req_try_count")]
|
|
public Int16 FarmingActionReqTryCount { get; set; } = 0;
|
|
|
|
[JsonProperty("completed_reward_count")]
|
|
public Int16 CompletedRewardCount { get; set; } = 0;
|
|
|
|
[JsonProperty]
|
|
public DateTime FarmingLastUpdateTime { get; set; } = DateTimeHelper.MinTime;
|
|
|
|
[JsonProperty("farming_start_time")]
|
|
public DateTime FarmingStartTime { get; set; } = DateTimeHelper.MinTime;
|
|
|
|
[JsonProperty("farming_end_time")]
|
|
public DateTime FarmingEndTime { get; set; } = DateTimeHelper.MinTime;
|
|
|
|
[JsonProperty("farming_respawn_time")]
|
|
public DateTime FarmingRespawnTime { get; set; } = DateTimeHelper.MinTime;
|
|
|
|
public FarmingEffectAttrib()
|
|
: base(typeof(FarmingEffectAttrib).Name, false)
|
|
{ }
|
|
}
|
|
|
|
//=============================================================================================
|
|
// Primary Key
|
|
// PK(Partition Key) : "farming_effect#anchor_meta_guid"
|
|
// SK(Sort Key) : "{LOCATION_UNIQUE_ID}"
|
|
// DocType : "FarmingEffectDoc"
|
|
// FarmingEffectAttrib : {}
|
|
// ...
|
|
//=============================================================================================
|
|
|
|
public class FarmingEffectDoc : DynamoDbDocBase
|
|
{
|
|
private static string getDocTypeName() { return typeof(FarmingEffectDoc).Name; }
|
|
private string getPrefixOfPK() { return $"farming_effect#"; }
|
|
private string getPrefixOfSK() { return $""; }
|
|
|
|
public static FARMING_EFFECT_DOC_LINK_PKSK makeLINK_PKSK(ANCHOR_META_GUID anchorMetaGuid, LOCATION_UNIQUE_ID locationUniqueId)
|
|
{
|
|
return $"farming_effect#{anchorMetaGuid}-{locationUniqueId}";
|
|
}
|
|
|
|
public FarmingEffectDoc()
|
|
: base(getDocTypeName())
|
|
{
|
|
appendAttribWrapperAll();
|
|
}
|
|
|
|
public FarmingEffectDoc(ANCHOR_META_GUID anchorMetaGuid, LOCATION_UNIQUE_ID locationUniqueId)
|
|
: base(getDocTypeName())
|
|
{
|
|
setCombinationKeyForPK(anchorMetaGuid);
|
|
setCombinationKeyForSK(locationUniqueId);
|
|
|
|
appendAttribWrapperAll();
|
|
|
|
fillUpPrimaryKey(onMakePK(), onMakeSK());
|
|
|
|
var to_set_farming_effect_attrib = getAttrib<FarmingEffectAttrib>();
|
|
NullReferenceCheckHelper.throwIfNull(to_set_farming_effect_attrib, () => $"to_set_farming_effect_attrib is null !!!");
|
|
|
|
to_set_farming_effect_attrib.AnchorMetaGuid = anchorMetaGuid;
|
|
to_set_farming_effect_attrib.LocationUniqueId = locationUniqueId;
|
|
}
|
|
|
|
public FarmingEffectDoc( ANCHOR_META_GUID anchorMetaGuid, LOCATION_UNIQUE_ID locationUniqueId
|
|
, META_ID farmingPropMetaId
|
|
, FarmingSummonedEntityType farmingSummonedEntityType, FARMING_ENTITY_GUID farmingEntityGuid
|
|
, FarmingStateType farmingState
|
|
, Int16 farmingActionReqTryCount
|
|
, DateTime farmingStartTime, DateTime farmingEndTime )
|
|
: base(getDocTypeName())
|
|
{
|
|
setCombinationKeyForPK(anchorMetaGuid);
|
|
setCombinationKeyForSK(locationUniqueId);
|
|
|
|
appendAttribWrapperAll();
|
|
|
|
fillUpPrimaryKey(onMakePK(), onMakeSK());
|
|
|
|
var to_set_farming_effect_attrib = getAttrib<FarmingEffectAttrib>();
|
|
NullReferenceCheckHelper.throwIfNull(to_set_farming_effect_attrib, () => $"to_set_farming_effect_attrib is null !!!");
|
|
|
|
to_set_farming_effect_attrib.AnchorMetaGuid = anchorMetaGuid;
|
|
to_set_farming_effect_attrib.LocationUniqueId = locationUniqueId;
|
|
to_set_farming_effect_attrib.FarmingPropMetaId = farmingPropMetaId;
|
|
to_set_farming_effect_attrib.FarmingSummonedEntityType = farmingSummonedEntityType;
|
|
to_set_farming_effect_attrib.FarmingEntityGuid = farmingEntityGuid;
|
|
to_set_farming_effect_attrib.FarmingState = farmingState;
|
|
|
|
to_set_farming_effect_attrib.FarmingActionReqTryCount = farmingActionReqTryCount;
|
|
|
|
to_set_farming_effect_attrib.FarmingStartTime = farmingStartTime;
|
|
to_set_farming_effect_attrib.FarmingEndTime = farmingEndTime;
|
|
}
|
|
|
|
private void appendAttribWrapperAll()
|
|
{
|
|
appendAttribWrapper(new AttribWrapper<FarmingEffectAttrib>());
|
|
}
|
|
|
|
protected override string onGetPrefixOfPK()
|
|
{
|
|
return getPrefixOfPK();
|
|
}
|
|
|
|
protected override ServerErrorCode onCheckAndSetSK(string sortKey)
|
|
{
|
|
var error_code = onFillupCombinationKeyForSK(sortKey, out var fillup_key);
|
|
if (error_code.isFail())
|
|
{
|
|
return error_code;
|
|
}
|
|
|
|
getPrimaryKey().fillUpSK(sortKey);
|
|
setCombinationKeyForSK(fillup_key);
|
|
|
|
return ServerErrorCode.Success;
|
|
}
|
|
|
|
public FarmingSummary toFarmingSummary(USER_GUID userGuid)
|
|
{
|
|
var farming_effect_attrib = getAttrib<FarmingEffectAttrib>();
|
|
NullReferenceCheckHelper.throwIfNull(farming_effect_attrib, () => $"farming_effect_attrib is null !!!");
|
|
|
|
var farming_summary = new FarmingSummary();
|
|
farming_summary.FarmingAnchorMetaId = farming_effect_attrib.AnchorMetaGuid;
|
|
farming_summary.FarmingPropMetaId = (Int32)farming_effect_attrib.FarmingPropMetaId;
|
|
farming_summary.FarmingUserGuid = userGuid;
|
|
|
|
farming_summary.FarmingSummonType = farming_effect_attrib.FarmingSummonedEntityType;
|
|
farming_summary.FarmingEntityGuid = farming_effect_attrib.FarmingEntityGuid;
|
|
|
|
farming_summary.FarmingState = farming_effect_attrib.FarmingState;
|
|
farming_summary.StartTime = farming_effect_attrib.FarmingStartTime.toSpecifyKindOnly(DateTimeKind.Utc).ToTimestamp();
|
|
farming_summary.EndTime = farming_effect_attrib.FarmingEndTime.toSpecifyKindOnly(DateTimeKind.Utc).ToTimestamp();
|
|
|
|
return farming_summary;
|
|
}
|
|
}
|