Exemplo n.º 1
0
        public NeedType ResolveActiveNeed(NeedData needData)
        {
            NeedType currentNeed = needData.CurrentNeed;
            NeedType biggestNeed = needData.GetLeastSatisfied();

            bool biggestNeedShouldBecomeCurrent;

            if (currentNeed == NeedType.Default || currentNeed == biggestNeed)
            {
                biggestNeedShouldBecomeCurrent = true;
            }
            else
            {
                float       currentNeedSatisfaction = needData.GetSatisfaction(currentNeed);
                float       biggestNeedSatisfaction = needData.GetSatisfaction(biggestNeed);
                const float threshold           = 0.10f;
                bool        thresholdIsExceeded = currentNeedSatisfaction - biggestNeedSatisfaction > threshold;
                biggestNeedShouldBecomeCurrent = thresholdIsExceeded;
            }

            if (biggestNeedShouldBecomeCurrent)
            {
                currentNeed = biggestNeed;
            }
            return(currentNeed);
        }
Exemplo n.º 2
0
            public override bool Equals(object obj)
            {
                if (obj == null)
                {
                    return(false);
                }
                NeedData needData = obj as NeedData;

                if (needData == null)
                {
                    return(false);
                }
                return(conditionType == needData.conditionType && enemyId == needData.enemyId && mapId == needData.mapId && questId == needData.questId && rateType == needData.rateType && needName == needData.needName && needNum.value == needData.needNum.value);
            }
Exemplo n.º 3
0
 public void DumpBinary(BinaryWriter writer)
 {
     writer.Write(id);
     writer.Write(locationNumber);
     writer.Write(deliveryNumber);
     writer.Write(name);
     writer.Write((int)type);
     writer.Write((int)subType);
     writer.Write((int)textType);
     writer.Write(eventID);
     writer.Write((int)fieldMode);
     writer.Write((int)difficulty);
     writer.Write(npcID);
     writer.Write(npcComment);
     writer.Write(npcClearComment);
     writer.Write(clearEventID);
     writer.Write(clearEventTitle);
     writer.Write(jumpType);
     writer.Write(jumpMapID);
     for (int i = 0; i < targetPortalID.Length; i++)
     {
         writer.Write(targetPortalID[i]);
     }
     writer.Write(placeName);
     writer.Write(enemyName);
     writer.Write(appearQuestId);
     writer.Write(appearDeliveryId);
     for (int j = 0; j < needs.Length; j++)
     {
         NeedData needData = needs[j];
         writer.Write((int)needData.conditionType);
         writer.Write(needData.enemyId);
         writer.Write(needData.mapId);
         writer.Write(needData.questId);
         writer.Write((int)needData.rateType);
         writer.Write(needData.needName);
         writer.Write(needData.needNum);
     }
 }
Exemplo n.º 4
0
 public string PublishNeedData(NeedData needData)
 {
     return(_eventHandlerSource.CallbackChannel?.PublishNeedData(needData));
 }
Exemplo n.º 5
0
 public string PublishNeedData(NeedData needData)
 {
     return(((Func <NeedData, string>)_functionStore[typeof(NeedData)])(needData));
 }
Exemplo n.º 6
0
        public void LoadFromBinary(BinaryTableReader reader, ref uint key)
        {
            id                = key;
            locationNumber    = reader.ReadString(string.Empty);
            deliveryNumber    = reader.ReadString(string.Empty);
            name              = reader.ReadString(string.Empty);
            type              = (DELIVERY_TYPE)reader.ReadUInt32(0u);
            subType           = (DELIVERY_SUB_TYPE)reader.ReadUInt32(0u);
            textType          = (DELIVERY_TYPE)reader.ReadUInt32(0u);
            eventID           = reader.ReadInt32(0);
            fieldMode         = (DIFFICULTY_MODE)reader.ReadUInt32(0u);
            difficulty        = (DIFFICULTY_MODE)reader.ReadUInt32(0u);
            npcID             = reader.ReadUInt32(0u);
            npcComment        = reader.ReadString(string.Empty);
            npcClearComment   = reader.ReadString(string.Empty);
            clearEventID      = reader.ReadUInt32(0u);
            clearEventTitle   = reader.ReadString(string.Empty);
            jumpType          = reader.ReadInt32(0);
            jumpMapID         = reader.ReadInt32(0);
            targetPortalID[0] = reader.ReadInt32(0);
            targetPortalID[1] = reader.ReadInt32(0);
            targetPortalID[2] = reader.ReadInt32(0);
            placeName         = reader.ReadString(string.Empty);
            enemyName         = reader.ReadString(string.Empty);
            appearQuestId     = reader.ReadUInt32(0u);
            appearDeliveryId  = reader.ReadUInt32(0u);
            List <NeedData> list = new List <NeedData>();
            int             i    = 0;

            for (int num = 5; i < num; i++)
            {
                DELIVERY_CONDITION_TYPE dELIVERY_CONDITION_TYPE = DELIVERY_CONDITION_TYPE.NONE;
                uint num2    = 0u;
                uint num3    = 0u;
                uint questId = 0u;
                DELIVERY_RATE_TYPE dELIVERY_RATE_TYPE = DELIVERY_RATE_TYPE.RATE_10000;
                string             empty = string.Empty;
                uint num4 = 0u;
                uint num5 = 0u;
                dELIVERY_CONDITION_TYPE = (DELIVERY_CONDITION_TYPE)reader.ReadUInt32(0u);
                num2 = reader.ReadUInt32(0u);
                num3 = reader.ReadUInt32(0u);
                if (i == 0)
                {
                    questId = reader.ReadUInt32(0u);
                }
                dELIVERY_RATE_TYPE = (DELIVERY_RATE_TYPE)reader.ReadUInt32(0u);
                empty = reader.ReadString(string.Empty);
                num4  = reader.ReadUInt32(0u);
                num5  = reader.ReadUInt32(0u);
                NeedData needData = new NeedData(dELIVERY_CONDITION_TYPE, num2, num3, questId, dELIVERY_RATE_TYPE, empty, num4, num5);
                if (needData.IsValid())
                {
                    list.Add(needData);
                }
            }
            needs = list.ToArray();
            if (string.IsNullOrEmpty(locationNumber))
            {
                locationNumber = (id / 100u % 1000u).ToString();
            }
            if (string.IsNullOrEmpty(deliveryNumber))
            {
                deliveryNumber = (id % 100u).ToString();
            }
        }
Exemplo n.º 7
0
        public static bool cb(CSVReader csv_reader, DeliveryData data, ref uint key)
        {
            data.id = key;
            csv_reader.Pop(ref data.locationNumber);
            csv_reader.Pop(ref data.deliveryNumber);
            csv_reader.Pop(ref data.name);
            csv_reader.Pop(ref data.type);
            csv_reader.PopEnum(ref data.subType, DELIVERY_SUB_TYPE.NONE);
            csv_reader.PopEnum(ref data.textType, DELIVERY_TYPE.ETC);
            csv_reader.PopEnum(ref data.clearIngameType, CLEAR_INGAME.DEAFULT);
            csv_reader.Pop(ref data.eventID);
            csv_reader.Pop(ref data.fieldMode);
            csv_reader.Pop(ref data.difficulty);
            csv_reader.Pop(ref data.npcID);
            csv_reader.Pop(ref data.npcComment);
            csv_reader.Pop(ref data.npcClearComment);
            csv_reader.Pop(ref data.clearEventID);
            csv_reader.Pop(ref data.clearEventTitle);
            csv_reader.Pop(ref data.jumpType);
            csv_reader.Pop(ref data.jumpMapID);
            csv_reader.Pop(ref data.targetPortalID[0]);
            csv_reader.Pop(ref data.targetPortalID[1]);
            csv_reader.Pop(ref data.targetPortalID[2]);
            csv_reader.Pop(ref data.placeName);
            csv_reader.Pop(ref data.enemyName);
            csv_reader.Pop(ref data.appearQuestId);
            csv_reader.Pop(ref data.appearDeliveryId);
            List <NeedData> list = new List <NeedData>();
            int             i    = 0;

            for (int num = 5; i < num; i++)
            {
                DELIVERY_CONDITION_TYPE value = DELIVERY_CONDITION_TYPE.NONE;
                uint value2 = 0u;
                uint value3 = 0u;
                uint value4 = 0u;
                DELIVERY_RATE_TYPE value5 = DELIVERY_RATE_TYPE.RATE_10000;
                string             value6 = string.Empty;
                uint value7 = 0u;
                uint value8 = 0u;
                csv_reader.PopEnum(ref value, DELIVERY_CONDITION_TYPE.NONE);
                csv_reader.Pop(ref value2);
                csv_reader.Pop(ref value3);
                if (i == 0)
                {
                    csv_reader.Pop(ref value4);
                }
                csv_reader.Pop(ref value5);
                csv_reader.Pop(ref value6);
                csv_reader.Pop(ref value7);
                csv_reader.Pop(ref value8);
                NeedData needData = new NeedData(value, value2, value3, value4, value5, value6, value7, value8);
                if (needData.IsValid())
                {
                    list.Add(needData);
                }
            }
            data.needs = list.ToArray();
            if (string.IsNullOrEmpty(data.locationNumber))
            {
                data.locationNumber = (data.id / 100u % 1000u).ToString();
            }
            if (string.IsNullOrEmpty(data.deliveryNumber))
            {
                data.deliveryNumber = (data.id % 100u).ToString();
            }
            csv_reader.Pop(ref data.regionId);
            csv_reader.Pop(ref data.appearRegionId);
            return(true);
        }
Exemplo n.º 8
0
 public void ModifyNeedWithFactor(NeedData needData, NeedType needType, NeedFactor needFactor, float delta)
 {
     needData.ModifyNeedWithFactor(needType, needFactor, delta);
 }
Exemplo n.º 9
0
 public void ModifyNeed(NeedData needData, NeedType needType, float delta)
 {
     needData.ModifySatisfaction(needType, delta);
 }