private static Color ItemColor(ItemBase itemBase) { Color lCol = Color.green; if (itemBase.mType == ItemType.ItemCubeStack) { ItemCubeStack itemCubeStack = itemBase as ItemCubeStack; if (CubeHelper.IsGarbage(itemCubeStack.mCubeType)) { lCol = Color.red; } if (CubeHelper.IsSmeltableOre(itemCubeStack.mCubeType)) { lCol = Color.green; } } if (itemBase.mType == ItemType.ItemStack) { lCol = Color.cyan; } if (itemBase.mType == ItemType.ItemSingle) { lCol = Color.white; } if (itemBase.mType == ItemType.ItemCharge) { lCol = Color.magenta; } if (itemBase.mType == ItemType.ItemDurability) { lCol = Color.yellow; } if (itemBase.mType == ItemType.ItemLocation) { lCol = Color.gray; } return(lCol); }
public static bool StoreItems(Player player, ExtraStorageHoppers hopper, ItemBase itemToStore) { if ((player == WorldScript.mLocalPlayer) && !WorldScript.mLocalPlayer.mInventory.RemoveItemByExample(itemToStore, true)) { Debug.Log(string.Concat(new object[] { "Player ", player.mUserName, " doesnt have ", player.GetItemName(itemToStore) })); return(false); } if (!hopper.AddItem(itemToStore)) { Debug.LogWarning("Bad thing that used to be unhandled! Thread interaccess probably caused this to screw up!"); if (player == WorldScript.mLocalPlayer) { WorldScript.mLocalPlayer.mInventory.AddItem(itemToStore); return(false); } player.mInventory.AddItem(itemToStore); return(false); } if (player.mbIsLocalPlayer) { Color green = Color.green; ItemBase lItem = itemToStore; if (lItem.mType == ItemType.ItemCubeStack) { ItemCubeStack stack = lItem as ItemCubeStack; if (CubeHelper.IsGarbage(stack.mCubeType)) { green = Color.red; } if (CubeHelper.IsSmeltableOre(stack.mCubeType)) { green = Color.green; } } if (lItem.mType == ItemType.ItemStack) { green = Color.cyan; } if (lItem.mType == ItemType.ItemSingle) { green = Color.white; } if (lItem.mType == ItemType.ItemCharge) { green = Color.magenta; } if (lItem.mType == ItemType.ItemDurability) { green = Color.yellow; } if (lItem.mType == ItemType.ItemLocation) { green = Color.gray; } if (hopper.GetCubeValue() == 0) { green = Color.red; FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1L, hopper.mnZ, 0.75f, "Sent " + player.GetItemName(lItem) + " to the void!", green, 1.5f); } else { FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1L, hopper.mnZ, 0.75f, "Stored " + player.GetItemName(lItem), green, 1.5f); } } player.mInventory.VerifySuitUpgrades(); if (!WorldScript.mbIsServer) { NetworkManager.instance.SendInterfaceCommand("ExtraStorageHopperWindow", "StoreItems", null, itemToStore, hopper, 0f); } return(true); }
public static bool TakeItems(Player player, ExtraStorageHoppers hopper) { //ENABLE/DISABLE FEEDING OF HIVEBIND - ONLY FOR VOID HOPPER if (hopper.GetCubeValue() == 0) { if (hopper.FeedHiveMind) { hopper.FeedHiveMind = false; FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1L, hopper.mnZ, 1f, "Not Feeding Hivemind!", Color.green, 2f); } else { hopper.FeedHiveMind = true; FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1L, hopper.mnZ, 1f, "Feeding Hivemind!", Color.red, 2f); } return(true); } //******************** TAKE ITEMS FROM HOPPER AND ADD THEM TO INVENTORY ******************** if (hopper.mnStorageUsed > 0) { ItemBase lItemToAdd = hopper.RemoveFirstInventoryItem(); if (lItemToAdd != null) { Debug.Log("RemovingFirstInventoryItem from for " + player.mUserName); if (!player.mInventory.AddItem(lItemToAdd)) { if (!hopper.AddItem(lItemToAdd)) { ItemManager.instance.DropItem(lItemToAdd, player.mnWorldX, player.mnWorldY, player.mnWorldZ, Vector3.zero); } return(false); } if (player.mbIsLocalPlayer) { Color green = Color.green; if (lItemToAdd.mType == ItemType.ItemCubeStack) { ItemCubeStack stack = lItemToAdd as ItemCubeStack; if (CubeHelper.IsGarbage(stack.mCubeType)) { green = Color.red; } if (CubeHelper.IsSmeltableOre(stack.mCubeType)) { green = Color.green; } } if (lItemToAdd.mType == ItemType.ItemStack) { green = Color.cyan; } if (lItemToAdd.mType == ItemType.ItemSingle) { green = Color.white; } if (lItemToAdd.mType == ItemType.ItemCharge) { green = Color.magenta; } if (lItemToAdd.mType == ItemType.ItemDurability) { green = Color.yellow; } if (lItemToAdd.mType == ItemType.ItemLocation) { green = Color.gray; } FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1L, hopper.mnZ, 1f, player.GetItemName(lItemToAdd), green, 1.5f); } player.mInventory.VerifySuitUpgrades(); if (!WorldScript.mbIsServer) { NetworkManager.instance.SendInterfaceCommand("ExtraStorageHopperWindow", "TakeItems", null, lItemToAdd, hopper, 0f); } return(true); } } return(false); }
public static bool TakeItems(Player player, ExtraStorageHoppers_OT hopper) { if (hopper.mnStorageUsed > 0) { ItemBase lItemToAdd = hopper.RemoveFirstInventoryItem(); if (lItemToAdd != null) { Debug.Log("RemovingFirstInventoryItem from for " + player.mUserName); if (!player.mInventory.AddItem(lItemToAdd)) { if (!hopper.AddItem(lItemToAdd)) { ItemManager.instance.DropItem(lItemToAdd, player.mnWorldX, player.mnWorldY, player.mnWorldZ, Vector3.zero); } return(false); } if (player.mbIsLocalPlayer) { Color green = Color.green; if (lItemToAdd.mType == ItemType.ItemCubeStack) { ItemCubeStack stack = lItemToAdd as ItemCubeStack; if (CubeHelper.IsGarbage(stack.mCubeType)) { green = Color.red; } if (CubeHelper.IsSmeltableOre(stack.mCubeType)) { green = Color.green; } } if (lItemToAdd.mType == ItemType.ItemStack) { green = Color.cyan; } if (lItemToAdd.mType == ItemType.ItemSingle) { green = Color.white; } if (lItemToAdd.mType == ItemType.ItemCharge) { green = Color.magenta; } if (lItemToAdd.mType == ItemType.ItemDurability) { green = Color.yellow; } if (lItemToAdd.mType == ItemType.ItemLocation) { green = Color.gray; } FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1L, hopper.mnZ, 1f, player.GetItemName(lItemToAdd), green, 1.5f); } player.mInventory.VerifySuitUpgrades(); if (!WorldScript.mbIsServer) { NetworkManager.instance.SendInterfaceCommand("ExtraStorageHopperWindow_OT", "TakeItems", null, lItemToAdd, hopper, 0f); } return(true); } } return(false); }
public static bool TakeItems(Player player, StorageHopper hopper) { if (hopper.mnStorageUsed > 0) { // ushort lCube, lValue; // lSelectedHopper.GetSpecificCube(eHopperRequestType.eAny, out lCube, out lValue);//this also reduces CubeStacks // if (lCube != eCubeTypes.NULL) // { // Debug.Log("Transferring "+ TerrainData.mEntries[lCube].Name +" from StorageHopper to player inventory"); // WorldScript.mLocalPlayer.mInventory.CollectValue(lCube, lValue, 1); // WorldScript.mLocalPlayer.mInventory.VerifySuitUpgrades();//we may have just taken a suit upgrade OUT. // return; // } //only remove Items now //This is really ficking stupid, we should duplicate the item and ASK if it'll fit and THEN remove it. Please god someone change this. ItemBase lItem = hopper.RemoveFirstInventoryItem(); if (lItem != null) { Debug.Log("RemovingFirstInventoryItem from StorageHopper for " + player.mUserName); //This has a potential issue where the server and client diverge //TODO: ensure it fits? if (!player.mInventory.AddItem(lItem)) { //Do we know why it didn't fit? //Doesn't fit, put it back in if (!hopper.AddItem(lItem)) //oh dear god threading { //THROW IT TO THE GROUND ItemManager.instance.DropItem(lItem, player.mnWorldX, player.mnWorldY, player.mnWorldZ, Vector3.zero); } return(false); } else { if (player.mbIsLocalPlayer == true) { //if we know what sort of item it was, colour the text! Color lCol = Color.green; if (lItem.mType == ItemType.ItemCubeStack) { ItemCubeStack lCubeStack = lItem as ItemCubeStack; if (CubeHelper.IsGarbage(lCubeStack.mCubeType)) { lCol = Color.red; } if (CubeHelper.IsSmeltableOre(lCubeStack.mCubeType)) { lCol = Color.green; } } if (lItem.mType == ItemType.ItemStack) { //probably a crafted item of some sort; we could introspect further into bar types lCol = Color.cyan; } if (lItem.mType == ItemType.ItemSingle) { //Minecart lCol = Color.white; } if (lItem.mType == ItemType.ItemCharge) { //Drill head/Minecart lCol = Color.magenta; } if (lItem.mType == ItemType.ItemDurability) { //Drill head lCol = Color.yellow; } if (lItem.mType == ItemType.ItemLocation) { lCol = Color.gray; } FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1, hopper.mnZ, 1.0f, player.GetItemName(lItem), lCol, 1.5f); } } player.mInventory.VerifySuitUpgrades(); //we may have just taken a suit upgrade OUT. if (!WorldScript.mbIsServer) //Tell the server we took the items { NetworkManager.instance.SendInterfaceCommand(InterfaceName, InterfaceTakeItems, null, lItem, hopper, 0); } return(true); } } return(false); }
public static bool StoreItems(Player player, StorageHopper hopper, ItemBase itemToStore) { if (player == WorldScript.mLocalPlayer) { if (!WorldScript.mLocalPlayer.mInventory.RemoveItemByExample(itemToStore, true)) { // player didn't have this item Debug.Log("Player " + player.mUserName + " doesnt have " + itemToStore); return(false); } } //stored first to reduce the gap - the VSU below could take several hundred MS due to logging. if (!hopper.AddItem(itemToStore)) { Debug.LogWarning("Bad thing that used to be unhandled! Thread interaccess probably caused this to screw up!"); if (player == WorldScript.mLocalPlayer) { WorldScript.mLocalPlayer.mInventory.AddItem(itemToStore); return(false); } else { //Give the NETWORK player their items back! player.mInventory.AddItem(itemToStore); //This needs to be communicated to the player, NOT just added to the local version of the inventory return(false); } } if (player.mbIsLocalPlayer) { Color lCol = Color.green; ItemBase lItem = itemToStore; if (lItem.mType == ItemType.ItemCubeStack) { ItemCubeStack lCubeStack = lItem as ItemCubeStack; if (CubeHelper.IsGarbage(lCubeStack.mCubeType)) { lCol = Color.red; } if (CubeHelper.IsSmeltableOre(lCubeStack.mCubeType)) { lCol = Color.green; } } if (lItem.mType == ItemType.ItemStack) { //probably a crafted item of some sort; we could introspect further into bar types lCol = Color.cyan; } if (lItem.mType == ItemType.ItemSingle) { //Minecart lCol = Color.white; } if (lItem.mType == ItemType.ItemCharge) { //Drill head/Minecart lCol = Color.magenta; } if (lItem.mType == ItemType.ItemDurability) { //Drill head lCol = Color.yellow; } if (lItem.mType == ItemType.ItemLocation) { lCol = Color.gray; } FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1, hopper.mnZ, 0.75f, "Stored " + player.GetItemName(lItem), lCol, 1.5f); } player.mInventory.VerifySuitUpgrades(); //we may have just taken a suit upgrade OUT. if (!WorldScript.mbIsServer) { NetworkManager.instance.SendInterfaceCommand(InterfaceName, InterfaceStoreItems, null, itemToStore, hopper, 0); } return(true); }
public static bool TakeItems(Player player, ExtraStorageHoppers hopper, ItemBase item) { //ENABLE/DISABLE FEEDING OF HIVEBIND - ONLY FOR VOID HOPPER if (hopper.GetCubeValue() == 0) { if (hopper.FeedHiveMind) { hopper.FeedHiveMind = false; FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1L, hopper.mnZ, 1f, "Not Feeding Hivemind!", Color.green, 2f); } else { hopper.FeedHiveMind = true; FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1L, hopper.mnZ, 1f, "Feeding Hivemind!", Color.red, 2f); } return(true); } else if (hopper.mnStorageUsed > 0) { ItemBase itemBase; if (item == null) { itemBase = hopper.RemoveFirstInventoryItem(); } else if (item.mType == ItemType.ItemCubeStack) { hopper.TryPartialExtractItemsOrCubes(null, item.mnItemID, (item as ItemCubeStack).mCubeType, (item as ItemCubeStack).mCubeValue, ItemManager.GetCurrentStackSize(item), out itemBase); } else { hopper.TryPartialExtractItems(null, item.mnItemID, ItemManager.GetCurrentStackSize(item), out itemBase); } if (itemBase != null) { Debug.Log("Removing Item from StorageHopper for " + player.mUserName); if (!player.mInventory.AddItem(itemBase)) { if (!hopper.AddItem(itemBase)) { ItemManager.instance.DropItem(itemBase, player.mnWorldX, player.mnWorldY, player.mnWorldZ, Vector3.zero); } return(false); } if (player.mbIsLocalPlayer) { Color lCol = Color.green; if (itemBase.mType == ItemType.ItemCubeStack) { ItemCubeStack itemCubeStack = itemBase as ItemCubeStack; if (CubeHelper.IsGarbage(itemCubeStack.mCubeType)) { lCol = Color.red; } if (CubeHelper.IsSmeltableOre(itemCubeStack.mCubeType)) { lCol = Color.green; } } if (itemBase.mType == ItemType.ItemStack) { lCol = Color.cyan; } if (itemBase.mType == ItemType.ItemSingle) { lCol = Color.white; } if (itemBase.mType == ItemType.ItemCharge) { lCol = Color.magenta; } if (itemBase.mType == ItemType.ItemDurability) { lCol = Color.yellow; } if (itemBase.mType == ItemType.ItemLocation) { lCol = Color.gray; } FloatingCombatTextManager.instance.QueueText(hopper.mnX, hopper.mnY + 1L, hopper.mnZ, 1f, player.GetItemName(itemBase), lCol, 1.5f, 64f); } player.mInventory.VerifySuitUpgrades(); if (!WorldScript.mbIsServer) { NetworkManager.instance.SendInterfaceCommand("ExtraStorageHopperWindowNew", "TakeItems", null, itemBase, hopper, 0f); } return(true); } } return(false); }