コード例 #1
0
    /*
     *      Removes items with matching type and name.
     *      If max is greater than zero, will return up to that many items.
     */
    public List <ItemData> RetrieveItems(Item.Types itemType, string itemName, int max = 0)
    {
        List <ItemData> ret = new List <ItemData>();

        foreach (ItemData data in items)
        {
            if (max > 0 && ret.Count >= max)
            {
                break;
            }
            if (data.type != itemType || itemName != data.name)
            {
                continue;
            }
            if (data.stackable)
            {
                int startingQuantity = data.GetQuantity();
                ret.Add(data.Pop(max));
            }
            else
            {
                ret.Add(data);
            }
        }

        foreach (ItemData data in ret)
        {
            items.Remove(data);
        }
        return(ret);
    }
コード例 #2
0
    public void SpawnItem(Item.Types type, int quantity = 1)
    {
        Vector3 pos  = RandomItemSpawn();
        Item    item = Item.Factory(type);

        item.Translation = pos;
        AddChild(item);
    }
コード例 #3
0
    public ItemData GenerateItem(Item.Types type, Vector3 pos)
    {
        Item     item = Item.Factory(type);
        ItemData data = item.GetData();

        data.id  = NextItemId();
        data.pos = pos;

        return(data);
    }
コード例 #4
0
 public int IndexOf(Item.Types type, string name)
 {
     for (int i = 0; i < items.Count; i++)
     {
         ItemData item = items[i];
         if (item.type == type && item.name == name)
         {
             return(i);
         }
     }
     return(-1);
 }
コード例 #5
0
    public int GetQuantity(Item.Types itemType, string itemName)
    {
        int ret = 0;

        foreach (ItemData data in items)
        {
            if (data.type == itemType && itemName == data.name)
            {
                ret += data.GetQuantity();
            }
        }
        return(ret);
    }
コード例 #6
0
ファイル: Arena.cs プロジェクト: windsurfer/FPS_Project
    public Item DeferredSpawnItem(Item.Types type, string name, float x, float y, float z)
    {
        Vector3 pos  = new Vector3(x, y, z);
        Item    item = Item.Factory(type);

        item.Translation = pos;

        Node itemNode = item as Node;

        itemNode.Name = name;

        AddChild(item);
        return(item);
    }
コード例 #7
0
    public void EquipActor(Actor actor, Item.Types itemType, string itemName)
    {
        int index = actor.IndexOf(itemType, itemName);

        if (index == -1)
        {
            GD.Print("Actor doesn't have this weapon.");
        }
        else
        {
            GD.Print("Equipping Actor with " + itemType.ToString());
            actor.EquipItem(index);
        }
    }
コード例 #8
0
ファイル: Arena.cs プロジェクト: windsurfer/FPS_Project
    public void SpawnItem(Item.Types type)
    {
        if (Session.NetActive() && !Session.IsServer())
        {
            return;
        }
        Vector3 pos  = RandomItemSpawn();
        Item    item = Item.Factory(type);

        item.Translation = pos;
        AddChild(item);


        if (Session.IsServer())
        {
            string name     = NextItemName();
            Node   itemNode = item as Node;
            itemNode.Name = name;
            Rpc(nameof(DeferredSpawnItem), type, name, pos.x, pos.y, pos.z);
        }
    }
コード例 #9
0
    public List <Item.Types> GetAvailableSpells()
    {
        StatsManager      stats = GetPlayerStats();
        List <Item.Types> ret   = new List <Item.Types>();

        List <StatsManager.Facts> spellSlots = new List <StatsManager.Facts> {
            StatsManager.Facts.SpellSlot1,
            StatsManager.Facts.SpellSlot2,
            StatsManager.Facts.SpellSlot3,
            StatsManager.Facts.SpellSlot4,
            StatsManager.Facts.SpellSlot5,
            StatsManager.Facts.SpellSlot6,
            StatsManager.Facts.SpellSlot7,
            StatsManager.Facts.SpellSlot8,
            StatsManager.Facts.SpellSlot9,
            StatsManager.Facts.SpellSlot10
        };

        int slotsMax = stats.GetStat(StatsManager.Stats.SlotsMax);

        for (int i = 0; i < slotsMax; i++)
        {
            string     slotContents = stats.GetFact(spellSlots[i]);
            Item.Types spell        = Item.GetTypeFromString(slotContents);
            if (spell != Item.Types.None)
            {
                ret.Add(spell);
            }
        }

        return(ret);

        return(new List <Item.Types> {
            Item.Types.FireballSpell,
            Item.Types.HealSpell,
            Item.Types.StaminaSpell,
            Item.Types.ManaSpell
        });
    }
コード例 #10
0
ファイル: Build.cs プロジェクト: Svendre/CultGame1
 public WallBuild(Item.Types itemType) : base(new Inventory(new[] { new Item(itemType, WALL_BUILD_AMOUNT) }))
 {
     wallType = itemType;
 }
コード例 #11
0
ファイル: ItemStorage.cs プロジェクト: K07H/The-Forest
 private bool MatchType(Item.Types mask, Item.Types type)
 {
     return((mask & type) != (Item.Types) 0);
 }
コード例 #12
0
 public static IEnumerable <Item> ItemsByType(Item.Types typeMask)
 {
     return(from i in ItemDatabase._instance._items
            where (i._type & typeMask) != (Item.Types) 0
            select i);
 }
コード例 #13
0
 public int IndexOf(Item.Types type, string name)
 {
     return(inventory.IndexOf(type, name));
 }
コード例 #14
0
ファイル: Item.cs プロジェクト: Bruno13/TheForest
 public bool MatchType(Item.Types type)
 {
     return((this._type & type) != (Item.Types) 0);
 }
コード例 #15
0
 public ItemIdPicker(Item.Types restrictedToType)
 {
     this.Type       = restrictedToType;
     this.Restricted = true;
 }
コード例 #16
0
ファイル: ItemTypeFilter.cs プロジェクト: K07H/The-Forest
 public ItemTypeFilter(Item.Types type)
 {
     this.Type = type;
 }