public void Attack(SmartObject smartObject)
        {
            if (!_controller.stateController.InCombat)
            {
                _controller.stateController.InCombat = true;
            }

            switch (smartObject)
            {
            case AiController aiController:
                aiController.aiStats.TakeDamage(1);

                if (aiController.aiStats.stats.Health <= 0)
                {
                    _controller.ResetAction(smartObject);
                }

                Debug.Log("Attacking " + aiController + " | Health Left: " + aiController.aiStats.stats.Health);
                break;

            case PlaceableObject placeableObject:

                break;
            }

            EventRelay.OnCombatModeInitiated(smartObject);
        }
        /// <summary>
        /// Toggles the the ability for the player to control the colonist movement directly with right clicks
        /// and puts the colonist in a drafted state where he can target non friendlies.
        /// </summary>
        public void ToggleDraftState()
        {
            _controller.stateController.Drafted = !_controller.stateController.Drafted;
            //give player the ability to control the colonist
            _controller.enablePlayerControl = _controller.stateController.Drafted;

            EventRelay.OnToggleDrafted(_controller);
        }
示例#3
0
        private void OnMouseDown()
        {
            if (EventSystem.current.IsPointerOverGameObject())
            {
                return;
            }

            EventRelay.OnObjectSelected(this);
            //SelectionManager.SelectObject(this);
        }
        /// <summary>
        /// Toggle the mode which the Ai will combat in, Melee (fists or weapon) or Ranged (if has one equipped)
        /// </summary>
        public void ToggleCombatMode()
        {
            if (!_controller.equipment.IsEquipped(EquipmentSlot.EquipmentType.RangedWep))
            {
                Debug.Log("No Ranged Weapon Equipped!");
                return;
            }

            combatModeMelee = !combatModeMelee;

            combatMode = combatModeMelee ? CombatMode.Melee: CombatMode.Ranged;

            EventRelay.OnCombatModeToggled(_controller);
        }
示例#5
0
        private void AddItemToInventory(AiController controller, Item item)
        {
            if (holdingItems.ContainsKey(item.baseObjectInfo.Id) ||
                (currentWeight + item.itemTypeData.itemData.itemWeight) > weightLimit)
            {
                return;
            }

            holdingItems.Add(item.baseObjectInfo.Id, item);
            currentWeight += item.itemTypeData.itemData.itemWeight;

            SetItemTransform(item, inventoryHolder.transform, new Vector3(0, 0, 0), false);

            EventRelay.OnInventoryUpdated(controller);
        }
示例#6
0
        private void DropInventoryItem(AiController controller, Item item)
        {
            if (!holdingItems.ContainsKey(item.baseObjectInfo.Id))
            {
                return;
            }

            holdingItems.Remove(item.baseObjectInfo.Id);
            currentWeight -= item.itemTypeData.itemData.itemWeight;

            SetItemTransform(item, null, item.usedBy.transform.position + new Vector3(0, 1.4f, 0), true);
            item.GetComponent <Rigidbody>().AddForce(transform.forward + new Vector3(0, 1, 0) * 2, ForceMode.VelocityChange);

            //EventRelay.OnItemDropped(controller, item);
            EventRelay.OnInventoryUpdated(controller);
        }
        public void PopulateInventoryData(AiController controller)
        {
            ClearInventoryUISlots();

            foreach (var item in controller.inventory.holdingItems)
            {
                var slot = Instantiate(inventorySlotPrefab, inventoryHolderContent.transform).GetComponent <UI_InventorySlot>();

                tempInventorySlots.Add(slot);
                slot.active = true;

                slot.itemReference = item.Value;

                slot.itemName.text        = item.Value.baseObjectInfo.ObjectName;
                slot.itemDescription.text = item.Value.baseObjectInfo.Description;
                slot.itemCount.text       = UI_SelectionController.CachedIntToString[item.Value.ItemCount];

                slot.itemWeight.text = UI_SelectionController.CachedIntToString[(int)item.Value.itemTypeData.itemData.itemWeight];

                slot.itemIcon.sprite = item.Value.itemTypeData.itemData.inventorySprite;

                slot.dropButton.onClick.AddListener(delegate { EventRelay.OnItemDropped(controller, item.Value); });

                switch (item.Value.itemTypeData)
                {
                case Consumable consumable:

                    break;

                case Resource resource:

                    break;

                case Weapon weapon:

                    slot.equipButton.onClick.AddListener(delegate { EventRelay.OnItemEquipped(controller, item.Value); });

                    break;
                }
            }
        }
示例#8
0
 private void PickUp(AiController aiController, SmartObject smartObject)
 {
     //event
     EventRelay.OnItemPickedUp(aiController, smartObject as Item);
 }