public override int Use()
        {
            int used = base.Use();

            if (used < 0)
            {
                return(used); // Item cannot be used
            }
            var extenderCollection = GetExtenderCollection();

            if (extenderCollection == null)
            {
                DevdogLogger.LogWarning("Can't use bag, no collection found with interface " + typeof(ICollectionExtender));
                return(-2);
            }

            bool added = extenderCollection.extenderCollection.AddItemAndRemove(this);

            if (added)
            {
                return(1);
            }

            return(-2);
        }
        protected virtual void HandleSkinnedMeshes(EquippableInventoryItem copy, CharacterEquipmentTypeBinder binder)
        {
            if (binder.equipTransform == null)
            {
                return;
            }

            if (replaceSkinnedMeshBones)
            {
                var itemSkinned = copy.GetComponentInChildren <SkinnedMeshRenderer>();
                if (itemSkinned != null)
                {
                    // It's a skinned mesh, combine the bones of this mesh with the player's bones to sync animations.
                    var playerSkinned = binder.equipTransform.GetComponentInParent <SkinnedMeshRenderer>();
                    if (playerSkinned != null)
                    {
                        itemSkinned.rootBone = binder.rootBone;

                        if (forceReplaceAllBones)
                        {
                            itemSkinned.bones = playerSkinned.bones;
                            DevdogLogger.LogVerbose("Force copied " + itemSkinned.bones.Length + " bones to new skinned mesh", itemSkinned);
                        }
                        else
                        {
                            ReplaceBonesOnTarget(playerSkinned, itemSkinned);
                        }
                    }
                    else
                    {
                        DevdogLogger.LogWarning("Tried to equip skinned item to player, but no skinned mesh renderer found in equip position's parent.", binder.equipTransform);
                    }
                }
            }
        }
        public virtual void InitSightTrigger()
        {
            _sightTrigger = GetComponentInChildren <SphereCollider>();
            if (_sightTrigger == null)
            {
                var obj = new GameObject("_Col");
                obj.transform.SetParent(transform, false);
                _sightTrigger = obj.AddComponent <SphereCollider>();
            }

            _sightTrigger.isTrigger = true;
            _sightTrigger.radius    = config.viewingDistance;
            _sightTrigger.GetOrAddComponent <ObserverTriggerHelperBehaviour>();
            var r = _sightTrigger.GetOrAddComponent <Rigidbody>();

            r.useGravity  = false;
            r.isKinematic = true;

            if (LosManager.instance.settings != null)
            {
                _sightTrigger.gameObject.layer = LosManager.instance.settings.sightLayerID;
            }
            else
            {
                DevdogLogger.LogWarning("Settings database not set on LosManager");
            }
        }
Example #4
0
 public static void SetLanguage(string lang)
 {
     _currentDatabase = FindLocalizationDatabaseByName(lang);
     if (_currentDatabase == null)
     {
         DevdogLogger.LogWarning("Couldn't find localization database with language identifier \"" + lang + "\"");
     }
 }
 protected virtual void OnAchievementTaskProgressChanged(float taskProgressBefore, Task task, Achievement achievement)
 {
     if (uiElements.ContainsKey(achievement))
     {
         uiElements[achievement].Repaint(taskProgressBefore, task, achievement);
     }
     else
     {
         DevdogLogger.LogWarning("Couldn't repaint UI element for achievement " + achievement.ID + " - Not found in dict UI lookup.");
     }
 }
        public void GiveRewards(Quest quest)
        {
            var col = ItemCollectionBase.FindByName(collectionName);
            if (col == null)
            {
                DevdogLogger.LogWarning("Collection with name " + collectionName + " not found.");
                return;
            }

            col.AddSlots(extraSlots);
        }
        public bool NotifyItemUnEquipped()
        {
            var extenderCollection = GetExtenderCollection();

            if (extenderCollection == null)
            {
                DevdogLogger.LogWarning("Can't unequip bag, no inventory found with extender collection");
                return(false);
            }

            return(extenderCollection.extendingCollection.RemoveSlots(extendBySlots));
        }
Example #8
0
        protected virtual Sprite GetIcon(ITriggerInputHandler inputHandler)
        {
            var binding = keyIconBindings.FirstOrDefault(o => o.keyCode.ToString() == inputHandler.ToString());

            if (binding == null)
            {
                DevdogLogger.LogWarning("Couldn't find binding for keycode : " + inputHandler.ToString(), this);
                return(null);
            }

            return(binding.sprite);
        }
        public override void OnExecute(IDialogueOwner dialogueOwner)
        {
            if (camera == null)
            {
                DevdogLogger.LogWarning("The player's camera is not defined. Can't set position");
                Finish(true);
                return;
            }

            camera.SetCameraPosition(position);
            Finish(true);
        }
        protected ILocalIdentifier GetLocalIdentifierFromNetworkIdentity(NetworkIdentity identity)
        {
            foreach (var q in questStates)
            {
                if (q.Key.ID == identity.playerControllerId.ToString()) // TODO: Not a valid ID comparison
                {
                    return(q.Key);
                }
            }

            DevdogLogger.LogWarning("Local identifier not found for identity with controller ID: " + identity.playerControllerId);
            return(null);
        }
Example #11
0
        public void GiveRewards(Quest quest)
        {
            var p    = statDecorator.stat;
            var stat = currentPlayer.stats.Get(p.category, p.name);

            if (stat == null)
            {
                DevdogLogger.LogWarning("Stat with ID " + p.ID + " not found.");
                return;
            }

            currentPlayer.stats.Set(statDecorator);
        }
Example #12
0
        public void GiveRewards(Quest quest)
        {
            var task = quest.GetTask(taskName);

            if (task == null)
            {
                DevdogLogger.LogWarning("Task " + taskName + " not found on quest " + quest);
                return;
            }

            task.timeLimitInSeconds += addTimeInSeconds;
            DevdogLogger.LogVerbose("Gave task " + taskName + " " + addTimeInSeconds + " extra seconds (rewardGiver)");
        }
Example #13
0
        public static Variable Get(Guid g)
        {
            DevdogLogger.LogVerbose("Getting variable with GUID: " + g + " Looking through " + variableContainers.Count + " containers.");
            foreach (var container in variableContainers)
            {
                var v = container.Get(g);
                if (v != null)
                {
                    return(v);
                }
            }

            DevdogLogger.LogWarning("Trying to get variable with GUID " + g + " - Not found.");
            return(null);
        }
        void InventoryPlayerPickedUpItem(int ufpsItemID, int ufpsPlayerID, Vector3 itemPosition, Quaternion itemRotation, PhotonMessageInfo info)
        {
            List <vp_ItemPickup> pickups;

            if (!vp_MPPickupManager.Instance.Pickups.TryGetValue(ufpsItemID, out pickups))
            {
                DevdogLogger.LogWarning("No local copy of ufps item with ID: " + ufpsItemID + " found, ignoring call");
                return;
            }

            if (pickups.Count > 0 && pickups[0] != null && pickups[0].gameObject != null)
            {
                vp_Utility.Activate(pickups[0].gameObject, false);
            }

            DevdogLogger.LogVerbose("Client looted item with UFPS ID: " + ufpsItemID);

            vp_MPNetworkPlayer player;

            if (!vp_MPNetworkPlayer.PlayersByID.TryGetValue(ufpsPlayerID, out player))
            {
                DevdogLogger.LogWarning("Player with playerID : " + ufpsPlayerID + " not found");
                return;
            }

            if (player == null)
            {
                return;
            }

            if (player.Collider == null)
            {
                return;
            }

            foreach (vp_ItemPickup p in pickups)
            {
                var a = p as ItemTriggerUFPS;
                if (a == null)
                {
                    continue;
                }

                a.TryGiveToPlayer(player.Collider, p.Amount, false);
                Debug.Log("---- Giving UFPS item to player - ItemID: " + a.ID);
            }
        }
        private void InventoryDroppedObject(int itemID, int ufpsItemID, int amount, Vector3 position, Quaternion rotation, PhotonMessageInfo info)
        {
            DevdogLogger.LogVerbose("Player dropped item with ID: " + itemID, info.photonView);

            List <vp_ItemPickup> pickups;

            if (!vp_MPPickupManager.Instance.Pickups.TryGetValue(ufpsItemID, out pickups))
            {
                DevdogLogger.LogWarning("Player dropped object but no local copy was found: UFPS ID: " + ufpsItemID + " - ItemID: " + itemID);
                return;
            }

            if (pickups[0].gameObject != null)
            {
                var item = pickups[0].gameObject.GetComponent <UFPSInventoryItemBase>();
                if (item == null)
                {
                    Debug.LogWarning("Non UFPS Item was dropped??", pickups[0].gameObject);
                    return;
                }

                item.transform.SetParent(null);
                item.transform.position = position;
                item.transform.rotation = rotation;
                item.gameObject.SetActive(true);


                if (item is EquippableUFPSInventoryItem)
                {
                    ((EquippableUFPSInventoryItem)item).currentClipCount = (uint)amount;
                }
                else if (item is UnitTypeUFPSInventoryItem)
                {
                    ((UnitTypeUFPSInventoryItem)item).unitAmount = (uint)amount;
                }


                var trigger = item.gameObject.GetComponent <ItemTriggerUFPS>();
                if (trigger != null)
                {
                    trigger.ID     = ufpsItemID;
                    trigger.Amount = amount;
                }

                DevdogLogger.LogVerbose("Client dropped item #" + item.ID + " (" + item.name + ") with " + amount + " bullets (UFPSID: " + ufpsItemID + ")", item);
            }
        }
        public virtual void CraftCurrentlySelectedBlueprint(int amount)
        {
            if (progressContainer.isCrafting)
            {
                // TODO: Have to remove for QUEUE // Cancel queue item?
                progressContainer.CancelActiveCraftAndClearQueue();
                return;
            }

            if (currentBlueprint == null)
            {
                DevdogLogger.LogWarning("No blueprint selected, can't craft.", this);
                return;
            }

            progressContainer.AddBlueprintToCraftingQueue(PlayerManager.instance.currentPlayer.inventoryPlayer, currentCategory, currentBlueprint, amount, storeRewardItemsInCollection, removeItemsFromCollection);
        }
        public static string GetSaveFolderForFolderName(string name)
        {
            if (isPrefabsSaveFolderSet == false)
            {
                DevdogLogger.LogWarning("Trying to grab folder for: " + name + " but no prefab folder is set.");
                return(string.Empty);
            }

            var saveFolder = prefabsSaveFolder + "/" + name;

            if (AssetDatabase.IsValidFolder(saveFolder) == false)
            {
                CreateFolderIfDoesNotExistAlready(prefabsSaveFolder, name);
                DevdogLogger.LogVerbose("Trying to grab folder for " + name + " but could not be found. Creating one...");
            }

            return(saveFolder);
        }
        public bool CanUnEquip()
        {
            var extenderCollection = GetExtenderCollection();

            if (extenderCollection == null)
            {
                DevdogLogger.LogWarning("Can't unequip bag, no inventory found with extender collection");
                return(false);
            }

            var slot = extenderCollection.extendingCollection.FindFirstEmptySlot(this);

            if (slot == -1)
            {
                return(false);
            }

            return(CanUnEquip(extenderCollection.extendingCollection, (uint)slot));
        }
        public override bool CanUse(Dialogue.Dialogue dialogue)
        {
            var currentAffinity = QuestSystemLoveHateBridgeManager.factionManager.GetAffinity(judgeFactionName, subjectFactionName);

            switch (filterType)
            {
            case FilterType.HigherThanOrEqual:
                return(currentAffinity >= affinity);

            case FilterType.LowerThanOrEqual:
                return(currentAffinity <= affinity);

            default:
            {
                DevdogLogger.LogWarning("Filter type of " + filterType + " not found, please report this error + Stack trace.");
                return(false);
            }
            }
        }
Example #20
0
 public void UseWaypointGroup(WaypointGroup group, bool startAtClosestWaypoint)
 {
     if (startAtClosestWaypoint)
     {
         var info = group.FindClosestWaypoint(transform.position);
         if (info.waypoint != null)
         {
             UseWaypointGroup(group, info.index);
         }
         else
         {
             DevdogLogger.LogWarning("Couldn't find closest waypoint in waypointGroup", this);
         }
     }
     else
     {
         UseWaypointGroup(group, 0);
     }
 }
        private void LootableOnOnLootedItem(InventoryItemBase item, uint itemId, uint slot, uint amount)
        {
            DevdogLogger.LogVerbose("[Client] LootableObject - Item got removed from LootableObject", this);
            photonView.RPC("LootableObjectItemRemoved", PhotonTargets.OthersBuffered, (int)slot);

            vp_MPNetworkPlayer player;

            if (!vp_MPNetworkPlayer.Players.TryGetValue(PlayerManager.instance.currentPlayer.transform, out player))
            {
                DevdogLogger.LogWarning("Player could not be found...");
                return;
            }

            var ufpsItem = item as UFPSInventoryItemBase;

            if (ufpsItem != null)
            {
                InventoryMPUFPSPickupManager.instance.photonView.RPC("InventoryPlayerPickedUpItem", PhotonTargets.Others, ufpsItem.itemPickup.ID, player.ID, transform.position, transform.rotation);
            }
        }
        public void NotifyItemEquipped()
        {
            NotifyItemUsed(1, false);

            var extenderCollection = GetExtenderCollection();

            if (extenderCollection == null)
            {
                DevdogLogger.LogWarning("Can't use bag, no inventory found with extender collection");
                return;
            }

            // Used from some collection, equip
            bool added = extenderCollection.extendingCollection.AddSlots(extendBySlots);

            if (added)
            {
                AudioManager.AudioPlayOneShot(playOnEquip);
            }
        }
Example #23
0
        public virtual void InitSightTrigger()
        {
            _sightTrigger           = GetOrCreateSightTrigger();
            _sightTrigger.isTrigger = true;
            _sightTrigger.radius    = config.viewingDistance;
            _sightTrigger.GetOrAddComponent <ObserverTriggerHelperBehaviour>();
            var r = _sightTrigger.GetOrAddComponent <Rigidbody>();

            r.useGravity  = false;
            r.isKinematic = true;

            if (LosManager.instance.settings != null)
            {
                _sightTrigger.gameObject.layer = LosManager.instance.settings.sightLayerID;
            }
            else
            {
                DevdogLogger.LogWarning("Settings database not set on LosManager");
            }
        }
Example #24
0
        protected virtual void OnCurrentDialogueNodeChanged(NodeBase before, NodeBase after)
        {
            if (currentNodeUI != null)
            {
                Destroy(currentNodeUI.gameObject);
            }

            if (after.uiPrefab == null)
            {
                DevdogLogger.LogWarning("No prefab found for node. Make sure to assign your UI prefabs to the manager", this);
                return;
            }

            if (after.ownerType != DialogueOwnerType.DialogueOwner)
            {
                SetDialogueSpeakerIcon(hideDialogueOwnerIconOnPlayerNode ? null : QuestManager.instance.settingsDatabase.playerDialogueIcon);
                if (dialogueOwnerName != null)
                {
                    dialogueOwnerName.text = (hideDialogueOwnerNameOnPlayerNode ? string.Empty : QuestManager.instance.settingsDatabase.playerName);
                }
            }
            else
            {
                var owner = DialogueManager.instance.currentDialogueOwner;
                if (owner != null)
                {
                    SetDialogueSpeakerIcon(owner.ownerIcon);
                    if (dialogueOwnerName != null)
                    {
                        dialogueOwnerName.text = owner.ownerName;
                    }
                }
            }

            currentNodeUI = UnityEngine.Object.Instantiate <NodeUIBase>(after.uiPrefab);
            currentNodeUI.transform.SetParent(nodeUIContainer);
            UIUtility.ResetTransform(currentNodeUI.transform);
            UIUtility.InheritParentSize(currentNodeUI.transform);

            currentNodeUI.Repaint(after);
        }
        public override void OnExecute(IDialogueOwner dialogueOwner)
        {
            if (DialogueManager.instance.currentDialogueOwner != null)
            {
                var fsm = DialogueManager.instance.currentDialogueOwner.transform.GetComponent <PlayMakerFSM>();
                if (fsm != null)
                {
                    fsm.SendEvent(eventName);
                }
                else
                {
                    DevdogLogger.LogWarning("No FSM found on dialogue owner. Event not invoked.");
                }
            }
            else
            {
                DevdogLogger.LogWarning("Dialogue not opened through a dialogue owner. No object is set and no FSM can therefore be found.");
            }

            Finish(true);
        }
        public bool CanUnEquip(ItemCollectionBase toCollection, uint toIndex)
        {
            var extenderCollection = GetExtenderCollection();

            if (extenderCollection == null)
            {
                DevdogLogger.LogWarning("Can't unequip bag, no inventory found with extender collection");
                return(false);
            }

            // If the item is placed inside the slots it's supposed to rmove it should fail...
            var clearSlots = extendBySlots + layoutSize;
            var c          = extenderCollection.extendingCollection;

            if (toIndex > toCollection.items.Length - clearSlots)
            {
                return(false);
            }

            return(c.CanRemoveSlots(clearSlots));
        }
Example #27
0
        public static List <DrawerBase> BuildEditorHierarchy(Type type, object value)
        {
            var oldMode = GCSettings.LatencyMode;

            try
            {
                GCSettings.LatencyMode = GCLatencyMode.LowLatency;

                var l = new List <DrawerBase>();
                List <FieldInfo> fields = new List <FieldInfo>();
                if (_serializableFieldsCache.ContainsKey(type))
                {
                    fields = _serializableFieldsCache[type];
                }
                else
                {
                    ReflectionUtility.GetAllSerializableFieldsInherited(type, fields);
                    _serializableFieldsCache[type] = fields;
                }

                foreach (var field in fields)
                {
                    var drawer = BuildEditorHierarchy(field, value);
                    if (drawer != null)
                    {
                        l.Add(drawer);
                    }
                    else
                    {
                        DevdogLogger.LogWarning("Couldn't create drawer for serializable type: " + field.FieldType);
                    }
                }

                return(l);
            }
            finally
            {
                GCSettings.LatencyMode = oldMode;
            }
        }
Example #28
0
        private ConditionInfo HasAffinity(QuestStatusAction currentAction)
        {
            if (currentAction != status)
            {
                // Not the status we're testing, this condition doesn't apply, always accept.
                return(ConditionInfo.success);
            }

            var currentAffinity = QuestSystemLoveHateBridgeManager.factionManager.GetAffinity(judgeFactionName, subjectFactionName);

            switch (filterType)
            {
            case FilterType.HigherThanOrEqual:
            {
                if (currentAffinity >= affinity)
                {
                    return(ConditionInfo.success);
                }

                return(new ConditionInfo(false, new MultiLangString("", string.Format(affinityToLowString.message, currentAffinity, affinity))));
            }

            case FilterType.LowerThanOrEqual:
            {
                if (currentAffinity <= affinity)
                {
                    return(ConditionInfo.success);
                }

                return(new ConditionInfo(false, new MultiLangString("", string.Format(affinityToHighString.message, currentAffinity, affinity))));
            }

            default:
            {
                DevdogLogger.LogWarning("Filter type of " + filterType + " not found, please report this error + Stack trace.");
                return(new ConditionInfo(false));
            }
            }
        }
        private ICollectionExtender GetExtenderCollection()
        {
            var player = PlayerManager.instance.currentPlayer;

            if (player == null)
            {
                DevdogLogger.LogWarning("No current player, can't get collections.");
                return(null);
            }

            var collectionExtenders = FindObjectsOfType <ItemCollectionBase>();
            var interfaces          = collectionExtenders.OfType <ICollectionExtender>();

            foreach (var i in interfaces)
            {
                if (player.inventoryPlayer.inventoryCollections.Contains(i.extendingCollection))
                {
                    return(i);
                }
            }

            return(null);
        }
 public void TriggerUse()
 {
     DevdogLogger.LogWarning("Trigger actions can't be used on data wrapper.");
 }