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); }
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); }
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); }
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; } } }
private void PickUp(AiController aiController, SmartObject smartObject) { //event EventRelay.OnItemPickedUp(aiController, smartObject as Item); }