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 + ")");
            }
        }
Exemplo n.º 2
0
        ////////////////

        public bool BuyAndOpenPack_Synced(Player player, out string output)
        {
            var mymod = RewardsMod.Instance;

            ItemHelpers.DestroyItem(this.item);

            if (this.Info == null)
            {
                output = "No pack info available.";
                return(false);
            }

            var info  = (ShopPackDefinition)this.Info;
            int price = info.Price;

            var      myworld = ModContent.GetInstance <RewardsWorld>();
            KillData data    = myworld.Logic.GetPlayerData(player);

            if (data == null)
            {
                output = "No player data for " + player.name;
                return(false);
            }

            if (!data.Spend(price, player))
            {
                Main.NewText("Not enough progress points.", Color.Red);
                output = "";
                return(true);
            }

            if (Main.netMode == 0)
            {
                Item[] items = ShopPackDefinition.OpenPack(player, info);

                foreach (var hook in RewardsMod.Instance.OnPointsSpentHooks)
                {
                    hook(player, info.Name, info.Price, items);
                }
            }
            else if (Main.netMode == 1)
            {
                PackPurchaseProtocol.SendSpendToServer(info);
            }

            output = player.name + " bought " + info.Name + " (" + info.Price + ")";

            return(true);
        }