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(); 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(); 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()); } 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(); 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; } }