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); } }
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; } }
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); } } }