Ejemplo n.º 1
0
        private void RefreshData()
        {
            var raffleManager = new RaffleManager();

            LvSimulation.ItemsSource = null;
            LvSimulation.ItemsSource = raffleManager.SimulateRaffle();
        }
Ejemplo n.º 2
0
        private void BtnDoRaffle_Clicked(object sender, EventArgs e)
        {
            var raffleManager = new RaffleManager();
            var result        = raffleManager.DoRaffleAndSendSms();

            LvParticipants.IsVisible = false;
            BtnDoRaffle.IsVisible    = false;
            SlRaffleResult.IsVisible = true;
        }
Ejemplo n.º 3
0
        private static void ExecuteRaffle(object o)
        {
            TShock.Utils.Broadcast("Raffle beginning!", Color.GreenYellow);

            List <string> raffleValues = new List <string>(ExtendedAdmin.Config.RaffleOdds);

            RaffleManager manager = new RaffleManager(TShock.DB);

            var raffleTickets = manager.GetAllCurrentRaffleTickets();

            foreach (var ticket in raffleTickets)
            {
                for (int i = 0; i < ticket.TicketCount; i++)
                {
                    raffleValues.Add(ticket.User);
                }
            }

            while (raffleValues.Count < ExtendedAdmin.Config.RaffleOdds)
            {
                raffleValues.Add(null);
            }

            raffleValues = raffleValues.Shuffle().ToList();

            Random random = new Random();

            var winner = raffleValues[random.Next(0, raffleValues.Count - 1)];

            var raffle = manager.GetCurrentRaffle();

            if (!winner.IsNullOrEmptyTrim())
            {
                var winnerTicket = raffleTickets.FirstOrDefault(t => t.User == winner);

                TShock.Utils.Broadcast(string.Format("Congratulations {0}, you are the winner of {1} shards!", winnerTicket.CharacterName, raffle.Pot), Color.GreenYellow);
                TShock.Utils.Broadcast("A new raffle begins now!", Color.GreenYellow);

                var player = TShock.Players.Where(p => p != null && p.UserAccountName == winner).SingleOrDefault();

                manager.Reward(winner, winnerTicket.CharacterName, player, raffle.Pot);

                StartRaffle();
            }
            else
            {
                manager.UpdateRaffleTime();

                manager.DecreaseTickets(ExtendedAdmin.Config.RaffleTicketsKept);

                TShock.Utils.Broadcast(string.Format("There was no winner, {0} shards are now up for grabs!", raffle.Pot), Color.GreenYellow);
                TShock.Utils.Broadcast(string.Format("{0}% of tickets were claimed by the raffle.  Remember to buy more!", (100f - ExtendedAdmin.Config.RaffleTicketsKept).ToString("F2")), Color.GreenYellow);

                Update();
            }
        }
Ejemplo n.º 4
0
        private static void StartRaffle()
        {
            RaffleManager manager = new RaffleManager(TShock.DB);

            var raffle = manager.GetCurrentRaffle();

            if (raffle == null)
            {
                manager.CreateRaffle(ExtendedAdmin.Config.RaffleStartPot);

                NextRaffleTime = DateTime.Now.AddMinutes(ExtendedAdmin.Config.RaffleDuration);
            }
            else
            {
                NextRaffleTime = raffle.LastRaffle == DateTime.MinValue ? DateTime.Now.AddMinutes(ExtendedAdmin.Config.RaffleDuration) : raffle.LastRaffle.AddMinutes(ExtendedAdmin.Config.RaffleDuration);
            }
        }
Ejemplo n.º 5
0
        public static void RaffleInfo(CommandArgs args)
        {
            if (!args.Player.RealPlayer || args.Player.UserAccountName.IsNullOrEmptyTrim())
            {
                args.Player.SendMessage("You must be logged in to use this command.");
                return;
            }

            RaffleManager manager = new RaffleManager(TShock.DB);

            var raffle  = manager.GetCurrentRaffle();
            var tickets = manager.GetRaffleTickets(args.Player.UserAccountName, raffle.RaffleID);

            TimeSpan nextRaffle = RaffleHandler.NextRaffleTime - DateTime.Now;

            args.Player.SendMessage(string.Format("Ticket cost: {0} Current tickets: {1} Next raffle: {2} minute(s) {4} second(s) Current pot: {3}", ExtendedAdmin.Config.RaffleTicketCost, tickets.TicketCount, (int)nextRaffle.TotalMinutes, raffle.Pot, nextRaffle.Seconds), Color.Green);
        }
Ejemplo n.º 6
0
        public static void Update()
        {
            RaffleHandler.NextRaffleUpdate = DateTime.Now.AddMinutes(ExtendedAdmin.Config.RaffleUpdateDuration);

            RaffleManager manager = new RaffleManager(TShock.DB);

            var raffle = manager.GetCurrentRaffle();

            TimeSpan nextRaffle = RaffleHandler.NextRaffleTime - DateTime.Now;

            TShock.Utils.Broadcast(string.Format("Current raffle pot: {0}! Next raffle in {1} minute(s) {2} second(s)!", raffle.Pot, (int)nextRaffle.TotalMinutes, (int)nextRaffle.Seconds));

            var lastRaffle = manager.GetLastRaffle();

            if (lastRaffle != null)
            {
                TShock.Utils.Broadcast(string.Format("{0} won {1} in the last raffle!", lastRaffle.Winner, lastRaffle.Pot), Color.GreenYellow);
            }
        }
Ejemplo n.º 7
0
        public static void BuyRaffleTicket(CommandArgs args)
        {
            if (!args.Player.RealPlayer || args.Player.UserAccountName.IsNullOrEmptyTrim())
            {
                args.Player.SendMessage("You must be logged in to use this command.", Color.Red);
                return;
            }

            if (args.Parameters.Count > 0 && args.Parameters[0].ToIntegerOrDefault(-1) < 1)
            {
                args.Player.SendMessage("Invalid syntax! Proper syntax /buyraffleticket <amount>", Color.Red);
                return;
            }

            RaffleManager manager = new RaffleManager(TShock.DB);

            //var account = manager.GetServerPointAccounts(args.Player.UserAccountName);
            var ePlayer = ServerPointSystem.ServerPointSystem.EPRPlayers.Single(p => p.TSPlayer == args.Player);

            if (ePlayer == null)
            {
                args.Player.SendMessage("You do not have any shards.");
                return;
            }

            int amount;

            if (args.Parameters.Count > 0)
            {
                amount = args.Parameters[0].ToIntegerOrDefault(0);
            }
            else
            {
                amount = 1;
            }

            int totalCost = amount * ExtendedAdmin.Config.RaffleTicketCost;

            if (ePlayer.DisplayAccount < totalCost)
            {
                args.Player.SendMessage(string.Format("You do not have enough shards to buy {0} tickets.", amount), Color.Red);
                return;
            }

            var raffle  = manager.GetCurrentRaffle();
            var tickets = manager.GetRaffleTickets(args.Player.UserAccountName, raffle.RaffleID);

            if (tickets.TicketCount + amount > ExtendedAdmin.Config.MaxRaffleTickets)
            {
                args.Player.SendMessage(string.Format("You cannot have over {0} tickets.  You currently have {1}.", ExtendedAdmin.Config.MaxRaffleTickets, tickets.TicketCount), Color.Red);
                return;
            }

            if (manager.BuyTicket(args.Player, amount, totalCost))
            {
                tickets = manager.GetRaffleTickets(args.Player.UserAccountName, raffle.RaffleID);

                args.Player.SendMessage(string.Format("Successfully bought tickets. You now have {0} tickets.", tickets.TicketCount), Color.Green);
            }
            else
            {
                args.Player.SendMessage("Ticket purchase failed, please try again later.", Color.Red);
            }
        }