Example #1
0
        public override void OnResponse(Server.Network.NetState sender, RelayInfo info)
        {
            int val, type, index;

            DecodeButtonId(info.ButtonID, out val, out type, out index);

            if (val < 0)
            {
                return;
            }

            Player target = State as Player;

            switch (type)
            {
            case 0:     //change main page
                Page page;

                switch (index)
                {
                case 1: page = Page.Information; break;

                case 2: page = Page.Manage; break;

                default: return;
                }

                From.SendGump(new PerkAdminGump(From, page, null, null));
                break;

            case 1:     //select player
                switch (index)
                {
                case 0:
                    From.SendMessage("Select a player to view perks.");
                    From.BeginTarget(18, false, TargetFlags.None, (from, targ) => From.SendGump(new PerkAdminGump(From, Page.Manage_Targeted, null, targ)));
                    break;
                }
                break;

            case 2:     //remove perk
                if (target == null)
                {
                    From.SendGump(new PerkAdminGump(From, Page.Manage_Targeted, "The targeted player was lost! Please try again.", State));
                }
                else
                {
                    Perk.Remove(target, (PerkPosition)index);
                    From.SendGump(new PerkAdminGump(From, Page.Manage_Targeted, null, State));
                }
                break;

            case 3:     //increase level
            case 4:     //decrease level
                if (target == null)
                {
                    From.SendGump(new PerkAdminGump(From, Page.Manage_Targeted, "The targeted player was lost! Please try again.", State));
                }
                else
                {
                    Tuple <Perk, Perk> targetPerks = Perk.GetPerks(target);
                    Perk targetPerk;

                    switch ((PerkPosition)index)
                    {
                    default:
                    case PerkPosition.Primary:
                        targetPerk = targetPerks.Item1;
                        break;

                    case PerkPosition.Secondary:
                        targetPerk = targetPerks.Item2;
                        break;
                    }

                    if (!(targetPerk is Empty))
                    {
                        if (type == 3 && targetPerk.Level < PerkLevel.Fifth)
                        {
                            targetPerk.Level++;
                        }
                        else if (targetPerk.Level > PerkLevel.First)
                        {
                            targetPerk.Level--;
                        }
                    }

                    From.SendGump(new PerkAdminGump(From, Page.Manage_Targeted, null, State));
                }
                break;
            }
        }