Beispiel #1
0
        public void UpdateJumpPad(JumpPad update)
        {
            var query =
                string.Format(
                    "UPDATE JumpPads SET PosX = {0}, PosY = {1}, Jump = {2}, Launch = {3}, Width = {4}, Height = {5}, Permission = @0 WHERE ID = @1",
                    update.posx, update.posy, update.jump, update.launch, update.width, update.height);

            Query(query, update.permission, update.Id);
        }
Beispiel #2
0
        public int AddJumpPad(JumpPad copy)
        {
            Query("INSERT INTO JumpPads (PosX, PosY, Jump, Launch, Width, Height, Permission) VALUES (@0, @1, @2, @3, @4, @5, @6)",
                  copy.posx, copy.posy, copy.jump, copy.launch, copy.width, copy.height, copy.permission);

            using (var reader = QueryReader("SELECT max(ID) FROM JumpPads"))
            {
                if (reader.Read())
                {
                    var id = reader.Get <int>("max(ID)");
                    return(id);
                }
            }

            return(-1);
        }
Beispiel #3
0
        public void LoadJumpPads(ref List <JumpPad> list)
        {
            using (var reader = QueryReader("SELECT * FROM JumpPads"))
            {
                while (reader.Read())
                {
                    var id         = reader.Get <int>("ID");
                    var x          = reader.Get <float>("PosX");
                    var y          = reader.Get <float>("PosY");
                    var jump       = reader.Get <float>("Jump");
                    var launch     = reader.Get <float>("Launch");
                    var width      = reader.Get <int>("Width");
                    var height     = reader.Get <int>("Height");
                    var permission = reader.Get <string>("Permission");

                    var jumpPad = new JumpPad(x, y, jump, launch, width, height, permission)
                    {
                        Id = id
                    };
                    list.Add(jumpPad);
                }
            }
        }
Beispiel #4
0
        private void AddJumpPad(CommandArgs args)
        {
            if (args.Parameters.Count == 1)
            {
                if (args.Parameters[0].ToLowerInvariant() == "reload" && args.Player.Group.HasPermission("jumppads.reload"))
                {
                    _jumpPads.Clear();
                    db.LoadJumpPads(ref _jumpPads);

                    args.Player.SendSuccessMessage("JumpPads have been reloaded.");
                    return;
                }

                if (args.Parameters[0].ToLowerInvariant() == "disable")
                {
                    _disable[args.Player.Index] = true;
                    args.Player.SendSuccessMessage("JumpPads will no longer effect you.");
                    return;
                }

                if (args.Parameters[0].ToLowerInvariant() == "enable")
                {
                    _disable[args.Player.Index] = false;
                    args.Player.SendSuccessMessage("JumpPads will now effect you.");
                    return;
                }

                if ((args.Parameters[0].ToLowerInvariant() == "d" || args.Parameters[0].ToLowerInvariant() == "delete") &&
                    args.Player.Group.HasPermission("jumppads.delete"))
                {
                    if (_jumpPads.Count == 0)
                    {
                        args.Player.SendErrorMessage("No jumppads have been defined.");
                        return;
                    }

                    var index = -1;
                    for (var i = 0; i < _jumpPads.Count; i++)
                    {
                        if (_jumpPads[i].InArea(args.Player))
                        {
                            index = i;
                            break;
                        }
                    }

                    if (index == -1)
                    {
                        args.Player.SendErrorMessage("Failed to find a jumppad underneath you.");
                        return;
                    }

                    var jp = _jumpPads[index];
                    _jumpPads.RemoveAt(index);
                    db.DeleteJumpPad(jp.Id);
                    jp.UnwriteWire();

                    args.Player.SendSuccessMessage("Deleted the jumppad underneath you.");
                    return;
                }
            }

            if (args.Parameters.Count < 2)
            {
                args.Player.SendErrorMessage("Invalid syntax. {0}jumppad [width|height|jump|launch|permission] [value]",
                                             TShock.Config.CommandSpecifier);
                return;
            }

            var newJumpPad = false;
            var makeWire   = true;
            var jumpPad    = _jumpPads.FirstOrDefault(j => j.CanJump(args.Player));

            if (jumpPad == null)
            {
                jumpPad    = new JumpPad(args.Player.TileX, args.Player.TileY, 0f, 0f, 3, 1, string.Empty);
                newJumpPad = true;
            }

            if (args.Parameters.Last().ToLowerInvariant() == "-nowire")
            {
                makeWire = false;
            }

            switch (args.Parameters[0].ToLowerInvariant())
            {
            case "width":
            case "w":
            {
                int width;
                if (!int.TryParse(args.Parameters[1], out width))
                {
                    args.Player.SendErrorMessage("Invalid width.");
                    return;
                }

                if (makeWire)
                {
                    jumpPad.ReWriteWire(width, -1);
                }

                args.Player.SendSuccessMessage("JumpPad on your position is now {0} blocks wide.", width);
                break;
            }

            case "height":
            case "h":
            {
                int height;
                if (!int.TryParse(args.Parameters[1], out height))
                {
                    args.Player.SendErrorMessage("Invalid height.");
                    return;
                }

                if (makeWire)
                {
                    jumpPad.ReWriteWire(-1, height);
                }

                args.Player.SendSuccessMessage("JumpPad on your position is now {0} blocks high.", height);
                break;
            }

            case "jump":
            case "j":
            {
                float jump;
                if (!float.TryParse(args.Parameters[1], out jump))
                {
                    args.Player.SendErrorMessage("Invalid jump height.");
                    return;
                }

                jumpPad.jump = -jump;
                args.Player.SendSuccessMessage("JumpPad on your position now has a jump power of {0}.", jump);
                break;
            }

            case "launch":
            case "l":
            {
                float launch;
                if (!float.TryParse(args.Parameters[1], out launch))
                {
                    args.Player.SendErrorMessage("Invalid launch power.");
                    return;
                }

                jumpPad.launch = launch;
                args.Player.SendSuccessMessage("JumpPad on your position now has a launch power of {0}.", launch);
                break;
            }

            case "permission":
            case "perm":
            case "p":
            {
                var permission = args.Parameters[1].ToLowerInvariant();

                jumpPad.permission = permission;
                args.Player.SendSuccessMessage("JumpPad on your position now requires the permission '{0}'.", permission);
                break;
            }

            default:
            {
                args.Player.SendErrorMessage("Invalid syntax. {0}jumppad [width|height|jump|permission] [value]",
                                             TShock.Config.CommandSpecifier);
                break;
            }
            }

            if (newJumpPad)
            {
                jumpPad.Id = db.AddJumpPad(jumpPad);
                _jumpPads.Add(jumpPad);

                if (makeWire)
                {
                    jumpPad.WriteWire();
                }
            }
            else
            {
                db.UpdateJumpPad(jumpPad);
            }
        }