public void Update(KeyboardState kstate, GameTime gameTime, Camera camera) { // start the fire if (playerNearItem != null && kstate.IsKeyDown(Keys.C)) // TODO: and keypress time { // Remove items from inv TODO: for now this just takes the first ore, grass, wood etc in inventory if (!cooking) { int nWood = 0; int nGrass = 0; // check for kindling foreach (var item in playerNearItem.inventory) { if (item is IWood) { nWood += item.amountStacked; } if (item is IGrass) { nGrass += item.amountStacked; } } if (nWood >= 2 && nGrass >= 2) { cooking = true; RemoveKindlingConsumables(); } } } if (craftingQueue.Count > 0) { msCrafting += gameTime.ElapsedGameTime.Milliseconds; } // create and drop item when crafting if (craftingQueue.Count > 0 && msCrafting > craftingQueue.Peek().msCraftTime) { InventoryItem item = craftingQueue.Dequeue(); Vector2 dropLoc = new Vector2(GetBoundingBox().Center.ToVector2().X, GetBoundingBox().Center.ToVector2().Y + 40); item.location = dropLoc; item.onGround = true; if (inInteriorId != Guid.Empty) // add drops to interior { BoundingBoxLocations.interiorMap[inInteriorId].interiorObjectsToAdd.Add(item); } else // add drops to world { ItemUtility.ItemsToUpdate.Add(item); } msCrafting = 0; // reset smelting if (craftingQueue.Count <= 0) { cooking = false; currColumnFrame = 0; emittingLight.lit = false; } } if (playerNearItem != null && kstate.IsKeyDown(Keys.C) && !drawCraftingMenu && cooking) { drawCraftingMenu = true; } if (drawCraftingMenu) { if (kstate.IsKeyDown(Keys.Escape) || playerNearItem == null) { drawCraftingMenu = false; } } // lighting the furnace when running if (emittingLight.lit) { emittingLight.Update(kstate, gameTime, GetBoundingBox().Center.ToVector2()); } if (cooking) { emittingLight.lit = true; // cooking so animate and being timer msCooking += gameTime.ElapsedGameTime.Milliseconds; msThisFrame += gameTime.ElapsedGameTime.Milliseconds; if (msThisFrame > msPerFrame) { currColumnFrame++; msThisFrame = 0; if (currColumnFrame == nColumns) { currColumnFrame = 1; } } } if (canPickUp) { // pick up the item if (playerNearItem != null && kstate.IsKeyDown(Keys.P)) { InventoryItem cfi = new ClayFurnaceItem(playerNearItem.teamType, regionKey, location, _content, _graphics); if (playerNearItem.AddInventoryItem(cfi)) { cfi.placeableVersion = this; cfi.inInventory = true; cfi.onGround = false; cfi.stackable = false; cfi.amountStacked = 1; remove = true; } } // there is a timer for how long you have to pick up item once you have the required number of hits msSinceStartPickupTimer += gameTime.ElapsedGameTime.Milliseconds; if (msSinceStartPickupTimer > msPickupTimer) { msSinceStartPickupTimer = 0; canPickUp = false; nTimesHit = 0; } } playerNearItem = null; }
private InventoryItem DeserializeInventoryItem(string itemKey) { InventoryItem item = null; switch (itemKey) { // TODO: ALL THE ITEMS :( case "scales": return(new Scales(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "feather": return(new Feather(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "fishOil": return(new FishOil(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "goldCoins": return(new GoldCoins(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "chiliFish": return(new ChiliFish(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "chiliPepper": return(new ChiliPepper(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "cookedFish": return(new CookedFish(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "cookedMeat": return(new CookedMeat(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "rawFish": return(new RawFish(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "rawMeat": return(new RawMeat(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "spoiledFish": return(new SpoiledFish(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "spoiledMeat": return(new SpoiledMeat(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "islandGrass": return(new IslandGrass(TeamType.GroundObject, "GustoMap", Vector2.Zero, _content, _graphics)); case "baseSword": return(new BaseSword(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "lantern": return(new Lantern(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "baseBarrelItem": return(new BaseBarrelItem(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "basePlank": return(new BasePlank(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "cannonBallItem": return(new CannonBallItem(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "arrowItem": return(new ArrowItem(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "rustyHarpoonItem": return(new RustyHarpoonItem(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "coal": return(new Coal(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "ironBar": return(new IronBar(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "tribalTokens": return(new TribalTokens(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "ironOre": return(new IronOre(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "nails": return(new Nails(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "pickaxe": return(new Pickaxe(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "pistol": return(new Pistol(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "baseCannon": return(new BaseCannon(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "ballista": return(new Ballista(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "crossBow": return(new CrossBow(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "pistolShotItem": return(new PistolShotItem(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "shortSword": return(new ShortSword(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "shovel": return(new Shovel(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "softWood": return(new SoftWood(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics)); case "baseChestItem": BaseChestItem bci = new BaseChestItem(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics); bci.placeableVersion = new BaseChest(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics); return(bci); case "anvilItem": AnvilItem ai = new AnvilItem(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics); ai.placeableVersion = new CraftingAnvil(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics); return(ai); case "clayFurnaceItem": ClayFurnaceItem cfi = new ClayFurnaceItem(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics); cfi.placeableVersion = new ClayFurnace(TeamType.Gusto, "GustoMap", Vector2.Zero, _content, _graphics); return(cfi); case "treasureMapItem": return(null); // This is handled in calling method to deserialize some speical detials } return(item); }