////////////////

        public int CountShopItems()
        {
            var mymod = (RewardsMod)this.mod;

            ShopPackDefinition[] defs = ShopPackDefinition.GetValidatedLoadout(false);
            return(defs.Length);
        }
        private void ReceiveMe(Player player)
        {
            var mymod   = RewardsMod.Instance;
            var myworld = ModContent.GetInstance <RewardsWorld>();

            KillData data = myworld.Logic.GetPlayerData(player);

            if (data == null)
            {
                throw new ModHelpersException("No player data for " + player.name);
            }

            if (!data.Spend((int)this.Pack.Price, player))
            {
                LogHelpers.Warn("Not enough PP. PP out of sync.");
                //return;	// TODO: Add validation of purchases
            }

            Item[] items = ShopPackDefinition.OpenPack(player, this.Pack);

            foreach (var hook in RewardsMod.Instance.OnPointsSpentHooks)
            {
                hook(player, this.Pack.Name, this.Pack.Price, items);
            }

            if (mymod.SettingsConfig.DebugModeInfo)
            {
                LogHelpers.Alert("Purchase made for " + player.name + " of " + this.Pack.Name + " (" + this.Pack.Price + ")");
            }
        }
Beispiel #3
0
        public static void ShopAddPack(ShopPackDefinition pack)
        {
            var    mymod = RewardsMod.Instance;
            string fail;

            if (!pack.Validate(out fail))
            {
                throw new ModHelpersException("Invalid shop pack by name " + pack.Name + " (" + fail + ")");
            }

            mymod.ShopConfig.ShopLoadout.Add(pack);
        }
        ////////////////

        public override void SetupShop(Chest shop, ref int nextSlot)
        {
            var mymod     = (RewardsMod)this.mod;
            int shopStart = WayfarerTownNPC.CurrentShop * 40;

            ShopPackDefinition[] defs = ShopPackDefinition.GetValidatedLoadout(true);

            for (int i = shopStart; i < defs.Length; i++)
            {
                if (nextSlot >= 40)
                {
                    break;
                }

                shop.item[nextSlot++] = ShopPackItem.CreateItem(defs[i]);
            }
        }
Beispiel #5
0
        public static ShopPackDefinition ShopRemoveLastPack()
        {
            var mymod = RewardsMod.Instance;
            IList <ShopPackDefinition> shop = mymod.ShopConfig.ShopLoadout;
            int last = shop.Count - 1;
            ShopPackDefinition def = null;
            string             _;

            for (int i = last; i >= 0; i--)
            {
                if (!shop[i].Validate(out _) || !shop[i].RequirementsMet())
                {
                    continue;
                }

                def = shop[i];
                shop.RemoveAt(i);
                break;
            }
            return(def);
        }
		private void LoadLicensePacks() {
			var licDef = new ShopPackItemDefinition(
				new ItemDefinition( ModContent.ItemType<LicenseItem>() ),
				LicensesMod.Config.LicensesPerPack,
				null
			);
			var wildLicDef = new ShopPackItemDefinition(
				new ItemDefinition( ModContent.ItemType<WildcardLicenseItem>() ),
				LicensesMod.Config.WildcardLicensesPerPack,
				null
			);

			var def1 = new ShopPackDefinition(
				null,
				"Standard License Pack",
				LicensesMod.Config.LicensePackCostInPP,
				new List<ShopPackItemDefinition> { licDef }
			);
			var def2 = new ShopPackDefinition(
				null,
				"Wildcard License Pack",
				LicensesMod.Config.WildcardLicensePackCostInPP,
				new List<ShopPackItemDefinition> { wildLicDef }
			);
			
			if( LicensesMod.Config.ResetWayfarerShop ) {
				RewardsAPI.ShopClear();
			}

			if( LicensesMod.Config.LicensesPerPack > 0 ) {
				RewardsAPI.ShopAddPack( def1 );
			}
			if( LicensesMod.Config.WildcardLicensesPerPack > 0 ) {
				RewardsAPI.ShopAddPack( def2);
			}
		}
 private PackPurchaseProtocol(ShopPackDefinition pack)
 {
     this.Pack = pack;
 }
        public static void SendSpendToServer(ShopPackDefinition pack)
        {
            var protocol = new PackPurchaseProtocol(pack);

            protocol.SendToServer(false);
        }