コード例 #1
0
    public static void SpawnWeapon(string weaponName)
    {
        var owner = ConsoleSystem.Caller?.Pawn as FloodPlayer;

        if (ConsoleSystem.Caller == null)
        {
            return;
        }
        //Creates weapon entity reference
        BaseFloodWeapon weapon = Library.Create <BaseFloodWeapon>(weaponName);
        //get player inv
        var inventory = owner.Inventory as Inventory;

        //see if we already have it
        if (!inventory.CanAdd(weapon))
        {
            return;
        }
        Log.Info($"{ConsoleSystem.Caller.Name} spawned {weaponName}");
        int cost = weapon.Cost;

        //Spends money for weapon
        if (owner.Money >= cost)
        {
            owner.Money = owner.Money - cost;
            //Adds weapon to inv
            owner.Inventory.Add(weapon, true);
            owner.playerWeapons.Add(weaponName, weapon);
        }
    }
コード例 #2
0
    public static void SellWeapon(string weaponName)
    {
        var owner = ConsoleSystem.Caller?.Pawn as FloodPlayer;

        if (ConsoleSystem.Caller == null)
        {
            return;
        }

        var inventory = owner.Inventory as Inventory;

        BaseFloodWeapon weapon = Library.Create <BaseFloodWeapon>(weaponName);

        if (!inventory.CanAdd(weapon))
        {
            inventory.Drop(owner.playerWeapons[weaponName]);
            owner.Money += weapon.Cost;
        }
    }
コード例 #3
0
ファイル: WeaponList.cs プロジェクト: Exer0s/flood
    public WeaponList()
    {
        AddClass("weaponpage");
        AddChild(out Canvas, "canvas");

        Canvas.Layout.AutoColumns = true;
        Canvas.Layout.ItemSize    = new Vector2(100, 100);
        Canvas.OnCreateCell       = (cell, data) =>
        {
            var             entry          = (LibraryAttribute)data;
            var             localPlayer    = Local.Pawn as FloodPlayer;
            var             localInventory = localPlayer.Inventory as Inventory;
            var             localClient    = Local.Client;
            BaseFloodWeapon weapon         = Library.Create <BaseFloodWeapon>(entry.Name);
            var             btn            = cell.Add.Button($"{entry.Title}");
            var             cost           = cell.Add.Label($"${weapon.Cost}", "weaponcost");

            btn.AddClass("icon");
            btn.AddEvent("onclick", () => {
                if (localPlayer == null)
                {
                    return;
                }
                //Buying weapons
                if (localInventory.CanAdd(weapon) && !localPlayer.playerWeapons.ContainsKey(entry.Name))
                {
                    if (localPlayer.Money >= weapon.Cost)
                    {
                        ConsoleSystem.Run("spawn_weapon", entry.Name);
                        //TODO : on buy, make the font smaller and change the text color to white
                        cell.SetClass("owned", true);
                        cost.Text = "Purchased";
                    }
                }
                else
                {
                    //Log.Info($"Purchase info : {localInventory.CanAdd( weapon ).ToString()} || {localPlayer.playerWeapons.ContainsKey( entry.Name ).ToString()}" );
                }
                //Selling weapons
                //!! This doesnt work till they make Dictionary's networkable
                if (!localInventory.CanAdd(weapon) && localPlayer.playerWeapons.ContainsKey(entry.Name))
                {
                    ConsoleSystem.Run("sell_weapon", entry.Name);
                    SetClass("purchased", false);
                    cost.Text = $"${weapon.Cost}";
                }
            });
            btn.Style.Background = new PanelBackground
            {
                Texture = Texture.Load($"/ui/weapons/{entry.Name}.png", false)
            };
        };

        var ents = Library.GetAllAttributes <BaseFloodWeapon>();

        foreach (var entry in ents)
        {
            //Log.Info( $"Weapon loaded :{entry.Name} | {entry.Title} " );
            //if ( entry.Title.Contains("BaseFloodWeapon") ) return;
            var weaponIcon = Texture.Load($"/ui/weapons/{entry.Name}.png", false);

            if (weaponIcon != null)
            {
                Canvas.AddItem(entry);
            }
        }
    }