示例#1
0
        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;
        }
示例#2
0
        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);
        }