314 lines
13 KiB
C
314 lines
13 KiB
C
#include "Item.h"
|
|
|
|
char currentName[16];
|
|
|
|
bool isItemEmpty(Item* item){
|
|
if(item->id < 6 || item->id > 100 || item->onlyOne == true) return false;
|
|
if(item->countLevel < 1) return true;
|
|
return false;
|
|
}
|
|
|
|
void pushItemToInventoryFront(Item item, Inventory * inv){
|
|
if(inv->lastSlot < 300) ++inv->lastSlot;
|
|
int i;
|
|
for(i = inv->lastSlot;i > 0;--i){
|
|
inv->items[i] = inv->items[i-1]; // Move the items up the list.
|
|
inv->items[i].slotNum = i;
|
|
}
|
|
item.invPtr = (int*)inv;
|
|
inv->items[0] = item;
|
|
inv->items[0].slotNum = 0;
|
|
|
|
}
|
|
|
|
void addItemToInventory(Item item, Inventory * inv){
|
|
if(!item.onlyOne){
|
|
int i;
|
|
for(i = 0;i < inv->lastSlot;++i){ //Search inventory if item already exists.
|
|
if(inv->items[i].id == item.id){
|
|
inv->items[i].countLevel+=item.countLevel;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
item.slotNum = inv->lastSlot;
|
|
item.invPtr = (int*)inv;
|
|
inv->items[inv->lastSlot] = item;
|
|
++inv->lastSlot;
|
|
}
|
|
|
|
void removeItemFromCurrentInv(Item* item){
|
|
removeItemFromInventory(item->slotNum, (Inventory*)item->invPtr);
|
|
}
|
|
|
|
Item nullItem;
|
|
void removeItemFromInventory(int slot, Inventory * inv){
|
|
int i;
|
|
for(i = slot;i < inv->lastSlot - 1;++i){
|
|
inv->items[i] = inv->items[i + 1]; // Move the items down.
|
|
inv->items[i].slotNum--;
|
|
}
|
|
--inv->lastSlot;
|
|
inv->items[inv->lastSlot] = nullItem; // Make the last slot null.
|
|
}
|
|
|
|
Item newItem(int id, int cLevel){
|
|
Item item;
|
|
item.id = id;
|
|
if(id != ITEM_NULL){
|
|
if(cLevel > 999) cLevel = 999;
|
|
item.countLevel = cLevel;
|
|
if(id < 7 || (id > 27 && id < 51) || id > 100) item.onlyOne = true; // Tools + Furniture.
|
|
else item.onlyOne = false;
|
|
}
|
|
item.chestPtr = NULL;
|
|
return item;
|
|
}
|
|
|
|
Item* getItemFromInventory(int itemID, Inventory * inv){
|
|
int i;
|
|
for(i = 0;i < inv->lastSlot;++i){
|
|
if(inv->items[i].id == itemID){
|
|
return &inv->items[i];
|
|
}
|
|
}
|
|
return (Item*)NULL;
|
|
}
|
|
|
|
int countItemInv(int itemID, int level, Inventory* inv){
|
|
int i, count = 0;
|
|
for(i = 0;i < inv->lastSlot;++i){
|
|
if(inv->items[i].id == itemID){
|
|
if(inv->items[i].onlyOne){
|
|
if(level == inv->items[i].countLevel) count++;
|
|
} else count += inv->items[i].countLevel;
|
|
}
|
|
}
|
|
return count;
|
|
}
|
|
|
|
char* getItemName(int itemID, int countLevel){
|
|
switch(itemID){
|
|
case TOOL_SHOVEL:
|
|
switch(countLevel){
|
|
case 1: return "Rock Shovel";
|
|
case 2: return "Iron Shovel";
|
|
case 3: return "Gold Shovel";
|
|
case 4: return "Gem Shovel";
|
|
default: return "Wood Shovel";
|
|
}
|
|
case TOOL_HOE:
|
|
switch(countLevel){
|
|
case 1: return "Rock Hoe";
|
|
case 2: return "Iron Hoe";
|
|
case 3: return "Gold Hoe";
|
|
case 4: return "Gem Hoe";
|
|
default: return "Wood Hoe";
|
|
}
|
|
case TOOL_SWORD:
|
|
switch(countLevel){
|
|
case 1: return "Rock Sword";
|
|
case 2: return "Iron Sword";
|
|
case 3: return "Gold Sword";
|
|
case 4: return "Gem Sword";
|
|
default: return "Wood Sword";
|
|
}
|
|
case TOOL_PICKAXE:
|
|
switch(countLevel){
|
|
case 1: return "Rock Pickaxe";
|
|
case 2: return "Iron Pickaxe";
|
|
case 3: return "Gold Pickaxe";
|
|
case 4: return "Gem Pickaxe";
|
|
default: return "Wood Pickaxe";
|
|
}
|
|
case TOOL_AXE:
|
|
switch(countLevel){
|
|
case 1: return "Rock Axe";
|
|
case 2: return "Iron Axe";
|
|
case 3: return "Gold Axe";
|
|
case 4: return "Gem Axe";
|
|
default: return "Wood Axe";
|
|
}
|
|
case ITEM_ANVIL: return "Anvil";
|
|
case ITEM_CHEST: return "Chest";
|
|
case ITEM_OVEN: return "Oven";
|
|
case ITEM_FURNACE: return "Furnace";
|
|
case ITEM_WORKBENCH: return "Workbench";
|
|
case ITEM_LANTERN: return "Lantern";
|
|
case ITEM_POWGLOVE: return "Power Glove";
|
|
case ITEM_FLOWER: sprintf(currentName,"%d Flower", countLevel); return currentName;
|
|
case ITEM_WOOD: sprintf(currentName,"%d Wood", countLevel); return currentName;
|
|
case ITEM_STONE: sprintf(currentName,"%d Stone", countLevel); return currentName;
|
|
case ITEM_SAND: sprintf(currentName,"%d Sand", countLevel); return currentName;
|
|
case ITEM_DIRT: sprintf(currentName,"%d Dirt", countLevel); return currentName;
|
|
case ITEM_CLOUD: sprintf(currentName,"%d Cloud", countLevel); return currentName;
|
|
case ITEM_ACORN: sprintf(currentName,"%d Acorn", countLevel); return currentName;
|
|
case ITEM_CACTUS: sprintf(currentName,"%d Cactus", countLevel); return currentName;
|
|
case ITEM_SEEDS: sprintf(currentName,"%d Seeds", countLevel); return currentName;
|
|
case ITEM_WHEAT: sprintf(currentName,"%d Wheat", countLevel); return currentName;
|
|
case ITEM_FLESH: sprintf(currentName,"%d Flesh", countLevel); return currentName;
|
|
case ITEM_BREAD: sprintf(currentName,"%d Bread", countLevel); return currentName;
|
|
case ITEM_APPLE: sprintf(currentName,"%d Apple", countLevel); return currentName;
|
|
case ITEM_GOLD_APPLE: sprintf(currentName,"%d Golden Apple", countLevel); return currentName;
|
|
case ITEM_STRENGTH_POTION: sprintf(currentName,"%d Strength Potion", countLevel); return currentName;
|
|
case ITEM_COAL: sprintf(currentName,"%d Coal", countLevel); return currentName;
|
|
case ITEM_IRONORE: sprintf(currentName,"%d Iron ore", countLevel); return currentName;
|
|
case ITEM_GOLDORE: sprintf(currentName,"%d Gold ore", countLevel); return currentName;
|
|
case ITEM_IRONINGOT: sprintf(currentName,"%d Iron ingot", countLevel); return currentName;
|
|
case ITEM_GOLDINGOT: sprintf(currentName,"%d Gold ingot", countLevel); return currentName;
|
|
case ITEM_GLASS: sprintf(currentName,"%d Glass", countLevel); return currentName;
|
|
case ITEM_GEM: sprintf(currentName,"%d Gem", countLevel); return currentName;
|
|
case ITEM_SLIME: sprintf(currentName,"%d Slime", countLevel); return currentName;
|
|
|
|
case ITEM_LOOM: return "Loom";
|
|
case ITEM_ENCHANTER: return "Enchanter";
|
|
case ITEM_WALL_WOOD: sprintf(currentName,"%d Wood Wall", countLevel); return currentName;
|
|
case ITEM_WALL_STONE: sprintf(currentName,"%d Stone Wall", countLevel); return currentName;
|
|
case ITEM_WALL_IRON: sprintf(currentName,"%d Iron Wall", countLevel); return currentName;
|
|
case ITEM_WALL_GOLD: sprintf(currentName,"%d Gold Wall", countLevel); return currentName;
|
|
case ITEM_WALL_GEM: sprintf(currentName,"%d Gem Wall", countLevel); return currentName;
|
|
case ITEM_WOOL: sprintf(currentName,"%d Wool", countLevel); return currentName;
|
|
case ITEM_STRING: sprintf(currentName,"%d String", countLevel); return currentName;
|
|
case ITEM_PORK_RAW: sprintf(currentName,"%d Raw Pork", countLevel); return currentName;
|
|
case ITEM_PORK_COOKED: sprintf(currentName,"%d Cooked Pork", countLevel); return currentName;
|
|
case ITEM_BEEF_RAW: sprintf(currentName,"%d Raw Beef", countLevel); return currentName;
|
|
case ITEM_BEEF_COOKED: sprintf(currentName,"%d Steak", countLevel); return currentName;
|
|
case ITEM_LEATHER: sprintf(currentName,"%d Leather", countLevel); return currentName;
|
|
case ITEM_ARROW_WOOD: sprintf(currentName,"%d Wood Arrow", countLevel); return currentName;
|
|
case ITEM_ARROW_STONE: sprintf(currentName,"%d Rock Arrow", countLevel); return currentName;
|
|
case ITEM_ARROW_IRON: sprintf(currentName,"%d Iron Arrow", countLevel); return currentName;
|
|
case ITEM_ARROW_GOLD: sprintf(currentName,"%d Gold Arrow", countLevel); return currentName;
|
|
case ITEM_ARROW_GEM: sprintf(currentName,"%d Gem Arrow", countLevel); return currentName;
|
|
case ITEM_BONE: sprintf(currentName,"%d Bone", countLevel); return currentName;
|
|
case ITEM_DUNGEON_KEY: sprintf(currentName,"%d Dungeon Key", countLevel); return currentName;
|
|
case ITEM_WIZARD_SUMMON: sprintf(currentName,"%d Wizard Summon", countLevel); return currentName;
|
|
case ITEM_DRAGON_EGG: sprintf(currentName,"%d Dragon Egg", countLevel); return currentName;
|
|
case ITEM_DRAGON_SCALE: sprintf(currentName,"%d Dragon Scale", countLevel); return currentName;
|
|
case ITEM_BOOKSHELVES: sprintf(currentName,"%d Bookshelves", countLevel); return currentName;
|
|
case ITEM_MAGIC_DUST: sprintf(currentName,"%d Magic Dust", countLevel); return currentName;
|
|
case ITEM_COIN: sprintf(currentName,"%d Coins", countLevel); return currentName;
|
|
case TOOL_BUCKET:
|
|
switch(countLevel){
|
|
case 1: return "Water Bucket";
|
|
case 2: return "Lava Bucket";
|
|
default: return "Empty Bucket";
|
|
}
|
|
case TOOL_BOW: return "Bow";
|
|
case TOOL_MAGIC_COMPASS: return "Magic Compass";
|
|
default: return ""; // null
|
|
}
|
|
}
|
|
|
|
char* getBasicItemName(int itemID, int countLevel){
|
|
switch(itemID){
|
|
case TOOL_SHOVEL:
|
|
switch(countLevel){
|
|
case 1: return "Rock Shovel";
|
|
case 2: return "Iron Shovel";
|
|
case 3: return "Gold Shovel";
|
|
case 4: return "Gem Shovel";
|
|
default: return "Wood Shovel";
|
|
}
|
|
case TOOL_HOE:
|
|
switch(countLevel){
|
|
case 1: return "Rock Hoe";
|
|
case 2: return "Iron Hoe";
|
|
case 3: return "Gold Hoe";
|
|
case 4: return "Gem Hoe";
|
|
default: return "Wood Hoe";
|
|
}
|
|
case TOOL_SWORD:
|
|
switch(countLevel){
|
|
case 1: return "Rock Sword";
|
|
case 2: return "Iron Sword";
|
|
case 3: return "Gold Sword";
|
|
case 4: return "Gem Sword";
|
|
default: return "Wood Sword";
|
|
}
|
|
case TOOL_PICKAXE:
|
|
switch(countLevel){
|
|
case 1: return "Rock Pickaxe";
|
|
case 2: return "Iron Pickaxe";
|
|
case 3: return "Gold Pickaxe";
|
|
case 4: return "Gem Pickaxe";
|
|
default: return "Wood Pickaxe";
|
|
}
|
|
case TOOL_AXE:
|
|
switch(countLevel){
|
|
case 1: return "Rock Axe";
|
|
case 2: return "Iron Axe";
|
|
case 3: return "Gold Axe";
|
|
case 4: return "Gem Axe";
|
|
default: return "Wood Axe";
|
|
}
|
|
case ITEM_ANVIL: return "Anvil";
|
|
case ITEM_CHEST: return "Chest";
|
|
case ITEM_OVEN: return "Oven";
|
|
case ITEM_FURNACE: return "Furnace";
|
|
case ITEM_WORKBENCH: return "Workbench";
|
|
case ITEM_LANTERN: return "Lantern";
|
|
case ITEM_POWGLOVE: return "Power Glove";
|
|
case ITEM_FLOWER: return "Flower";
|
|
case ITEM_WOOD: return "Wood";
|
|
case ITEM_STONE: return "Stone";
|
|
case ITEM_SAND: return "Sand";
|
|
case ITEM_DIRT: return "Dirt";
|
|
case ITEM_CLOUD: return "Cloud";
|
|
case ITEM_ACORN: return "Acorn";
|
|
case ITEM_CACTUS: return "Cactus";
|
|
case ITEM_SEEDS: return "Seeds";
|
|
case ITEM_WHEAT: return "Wheat";
|
|
case ITEM_FLESH: return "Flesh";
|
|
case ITEM_BREAD: return "Bread";
|
|
case ITEM_APPLE: return "Apple";
|
|
case ITEM_GOLD_APPLE: return "Gold Apple";
|
|
case ITEM_COAL: return "Coal";
|
|
case ITEM_IRONORE: return "Iron ore";
|
|
case ITEM_GOLDORE: return "Gold ore";
|
|
case ITEM_IRONINGOT: return "Iron ingot";
|
|
case ITEM_GOLDINGOT: return "Gold ingot";
|
|
case ITEM_GLASS: return "Glass";
|
|
case ITEM_GEM: return "Gem";
|
|
case ITEM_SLIME: return "Slime";
|
|
|
|
case ITEM_LOOM: return "Loom";
|
|
case ITEM_ENCHANTER: return "Enchanter";
|
|
case ITEM_WALL_WOOD: return "Wood Wall";
|
|
case ITEM_WALL_STONE: return "Stone Wall";
|
|
case ITEM_WALL_IRON: return "Iron Wall";
|
|
case ITEM_WALL_GOLD: return "Gold Wall";
|
|
case ITEM_WALL_GEM: return "Gem Wall";
|
|
case ITEM_WOOL: return "Wool";
|
|
case ITEM_STRING: return "String";
|
|
case ITEM_PORK_RAW: return "Raw Pork";
|
|
case ITEM_PORK_COOKED: return "Cooked Pork";
|
|
case ITEM_BEEF_RAW: return "Raw Beef";
|
|
case ITEM_BEEF_COOKED: return "Steak";
|
|
case ITEM_LEATHER: return "Leather";
|
|
case ITEM_ARROW_WOOD: return "Wood Arrow";
|
|
case ITEM_ARROW_STONE: return "Rock Arrow";
|
|
case ITEM_ARROW_IRON: return "Iron Arrow";
|
|
case ITEM_ARROW_GOLD: return "Gold Arrow";
|
|
case ITEM_ARROW_GEM: return "Gem Arrow";
|
|
case ITEM_BONE: return "Bone";
|
|
case ITEM_DUNGEON_KEY: return "Dungeon Key";
|
|
case ITEM_WIZARD_SUMMON: return "Wizard Summon";
|
|
case ITEM_DRAGON_EGG: return "Dragon Egg";
|
|
case ITEM_DRAGON_SCALE: return "Dragon Scale";
|
|
case ITEM_BOOKSHELVES: return "Bookshelves";
|
|
case ITEM_MAGIC_DUST: return "Magic Dust";
|
|
case ITEM_COIN: return "Coin";
|
|
case ITEM_STRENGTH_POTION: return "Strength Potion";
|
|
case TOOL_BUCKET:
|
|
switch(countLevel){
|
|
case 1: return "Water Bucket";
|
|
case 2: return "Lava Bucket";
|
|
default: return "Empty Bucket";
|
|
}
|
|
case TOOL_BOW: return "Bow";
|
|
case TOOL_MAGIC_COMPASS: return "Magic Compass";
|
|
default: return ""; // null
|
|
}
|
|
|
|
}
|