From 3a78a2dd6f604534c7baf56a94ea7d4463b0d48f Mon Sep 17 00:00:00 2001 From: Mircea Kitsune Date: Wed, 26 Oct 2011 00:21:45 +0300 Subject: [PATCH] Use switches instead of if checks where possible --- qcsrc/server/mutators/sandbox.qc | 278 ++++++++++++++++--------------- 1 file changed, 143 insertions(+), 135 deletions(-) diff --git a/qcsrc/server/mutators/sandbox.qc b/qcsrc/server/mutators/sandbox.qc index 50a4f5f07..0b472ad6a 100644 --- a/qcsrc/server/mutators/sandbox.qc +++ b/qcsrc/server/mutators/sandbox.qc @@ -47,171 +47,179 @@ MUTATOR_HOOKFUNCTION(sandbox_PlayerCommand) return TRUE; } - entity e; - if(argv(1) == "help") + switch(argv(1)) { - print_to(self, "You can use the following sandbox commands:"); - print_to(self, "^7\"^2spawn_item ^3item^7\" spawns the specified item in front of the player. Only weapons are currently supported"); - print_to(self, "^7\"^2spawn_object ^3models/foo/bar.md3^7\" spawns a new object in front of the player, and gives it the specified model"); - print_to(self, "^7\"^2remove_object^7\" removes the object the player is looking at. Players can only remove their own objects"); - print_to(self, "^7\"^2duplicate_object_copy^7\" copies the object the player is looking at. Players can only copy their own objects"); - print_to(self, "^7\"^2duplicate_object_paste^7\" pastes the copied object in front of the player"); - print_to(self, "^7\"^2edit_object ^3property value^7\" edits the given property of the object. Players can only edit their own objects"); - print_to(self, "^7Object properties for ^2edit_object^7:"); - print_to(self, "^3skin ^7- changes the skin of the object"); - print_to(self, "^3frame ^7- object animation frame, for self-animated models"); - print_to(self, "^3physics ^7- object physics, 0 = static, 1 = movable, 2 = physical"); - print_to(self, "^7The ^1drag object ^7key can be used to grab and carry objects. Players can only grab their own objects"); - return TRUE; - } - else if(argv(1) == "spawn_item") - { - // only weapons are currently supported - - if(cmd_argc < 3) - { - print_to(self, "WARNING: Attempted to spawn an item without specifying its type. Please specify the name of your item after the 'spawn_item' command"); + entity e; + + // ---------------- COMMAND: HELP ---------------- + case "help": + print_to(self, "You can use the following sandbox commands:"); + print_to(self, "^7\"^2spawn_item ^3item^7\" spawns the specified item in front of the player. Only weapons are currently supported"); + print_to(self, "^7\"^2spawn_object ^3models/foo/bar.md3^7\" spawns a new object in front of the player, and gives it the specified model"); + print_to(self, "^7\"^2remove_object^7\" removes the object the player is looking at. Players can only remove their own objects"); + print_to(self, "^7\"^2duplicate_object_copy^7\" copies the object the player is looking at. Players can only copy their own objects"); + print_to(self, "^7\"^2duplicate_object_paste^7\" pastes the copied object in front of the player"); + print_to(self, "^7\"^2edit_object ^3property value^7\" edits the given property of the object. Players can only edit their own objects"); + print_to(self, "^7Object properties for ^2edit_object^7:"); + print_to(self, "^3skin ^7- changes the skin of the object"); + print_to(self, "^3frame ^7- object animation frame, for self-animated models"); + print_to(self, "^3physics ^7- object physics, 0 = static, 1 = movable, 2 = physical"); + print_to(self, "^7The ^1drag object ^7key can be used to grab and carry objects. Players can only grab their own objects"); return TRUE; - } - // spawn a new item - float i; - makevectors(self.v_angle); - WarpZone_TraceLine(self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * autocvar_g_sandbox_editor_distance_spawn, MOVE_NOMONSTERS, self); + // ---------------- COMMAND: SPAWN ITEM ---------------- + case "spawn_item": + // only weapons are currently supported - for(i = WEP_FIRST; i <= WEP_LAST; ++i) - { - e = get_weaponinfo(i); - if(e.netname == argv(2)) + if(cmd_argc < 3) { - W_ThrowNewWeapon(self, i, FALSE, trace_endpos, '0 0 0'); - if(autocvar_g_sandbox_info) - print(strcat(self.netname, " spawned a ^2", e.netname, "^7 at origin ", vtos(e.origin), "\n")); + print_to(self, "WARNING: Attempted to spawn an item without specifying its type. Please specify the name of your item after the 'spawn_item' command"); return TRUE; } - } - print_to(self, "WARNING: Attempted to spawn an invalid or unsupported item. See 'sandbox help' for allowed items"); - return TRUE; - } - else if(argv(1) == "spawn_object") - { - // don't allow spawning objects without a model - if(cmd_argc < 3) - { - print_to(self, "WARNING: Attempted to spawn an object without specifying a model. Please specify the path to your model file after the 'spawn_object' command"); - return TRUE; - } - else if not(fexists(argv(2))) - { - print_to(self, "WARNING: Attempted to spawn an object with a non-existent model. Make sure the path to your model file is correct"); + // spawn a new item + float i; + makevectors(self.v_angle); + WarpZone_TraceLine(self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * autocvar_g_sandbox_editor_distance_spawn, MOVE_NOMONSTERS, self); + + for(i = WEP_FIRST; i <= WEP_LAST; ++i) + { + e = get_weaponinfo(i); + if(e.netname == argv(2)) + { + W_ThrowNewWeapon(self, i, FALSE, trace_endpos, '0 0 0'); + if(autocvar_g_sandbox_info) + print(strcat(self.netname, " spawned a ^2", e.netname, "^7 at origin ", vtos(e.origin), "\n")); + return TRUE; + } + } + + print_to(self, "WARNING: Attempted to spawn an invalid or unsupported item. See 'sandbox help' for allowed items"); return TRUE; - } - e = sandbox_SpawnObject(); - setmodel(e, argv(2)); + // ---------------- COMMAND: SPAWN OBJECT ---------------- + case "spawn_object": + // don't allow spawning objects without a model + if(cmd_argc < 3) + { + print_to(self, "WARNING: Attempted to spawn an object without specifying a model. Please specify the path to your model file after the 'spawn_object' command"); + return TRUE; + } + else if not(fexists(argv(2))) + { + print_to(self, "WARNING: Attempted to spawn an object with a non-existent model. Make sure the path to your model file is correct"); + return TRUE; + } - if(autocvar_g_sandbox_info) - print(strcat(self.netname, " spawned an object at origin ", vtos(e.origin), "\n")); + e = sandbox_SpawnObject(); + setmodel(e, argv(2)); - return TRUE; - } - else if(argv(1) == "remove_object") - { - e = sandbox_EditObject(); - if(e != world) - { if(autocvar_g_sandbox_info) - print(strcat(self.netname, " removed an object at origin ", vtos(e.origin), "\n")); - remove(e); - e = world; - return TRUE; - } + print(strcat(self.netname, " spawned an object at origin ", vtos(e.origin), "\n")); - print_to(self, "WARNING: Object could not be removed. Make sure you are facing an object that belongs to you"); - return TRUE; - } - else if(argv(1) == "duplicate_object_copy") - { - // copies customizable properties of the selected object to the clipboard + return TRUE; - e = sandbox_EditObject(); // you can only copy objects you can edit, so this works - if(e != world) - { - // set clipboard properties - if(self.object_clipboard) - strunzone(self.object_clipboard); - self.object_clipboard = strzone(strcat(e.model, " ", ftos(e.skin), " ", ftos(e.frame), " ", ftos(e.movetype))); + // ---------------- COMMAND: REMOVE OBJECT ---------------- + case "remove_object": + e = sandbox_EditObject(); + if(e != world) + { + if(autocvar_g_sandbox_info) + print(strcat(self.netname, " removed an object at origin ", vtos(e.origin), "\n")); + remove(e); + e = world; + return TRUE; + } - print_to(self, "Object copied to clipboard"); + print_to(self, "WARNING: Object could not be removed. Make sure you are facing an object that belongs to you"); return TRUE; - } - print_to(self, "WARNING: Object could not be copied. Make sure you are facing an object that belongs to you"); - return TRUE; - } - else if(argv(1) == "duplicate_object_paste") - { - // spawns a new object using the properties in the player's clipboard + // ---------------- COMMAND: DUPLICATE OBJECT COPY ---------------- + case "duplicate_object_copy": + // copies customizable properties of the selected object to the clipboard - if(!self.object_clipboard) // no object in clipboard - { - print_to(self, "WARNING: No object in clipboard. You must copy an object before you can paste it"); + e = sandbox_EditObject(); // you can only copy objects you can edit, so this works + if(e != world) + { + // set clipboard properties + if(self.object_clipboard) + strunzone(self.object_clipboard); + self.object_clipboard = strzone(strcat(e.model, " ", ftos(e.skin), " ", ftos(e.frame), " ", ftos(e.movetype))); + + print_to(self, "Object copied to clipboard"); + return TRUE; + } + + print_to(self, "WARNING: Object could not be copied. Make sure you are facing an object that belongs to you"); return TRUE; - } - e = sandbox_SpawnObject(); - tokenize_console(self.object_clipboard); + // ---------------- COMMAND: DUPLICATE OBJECT PASTE ---------------- + case "duplicate_object_paste": + // spawns a new object using the properties in the player's clipboard - // apply clipboard properties - setmodel(e, argv(0)); - e.skin = stof(argv(1)); - e.frame = stof(argv(2)); - e.movetype = stof(argv(3)); + if(!self.object_clipboard) // no object in clipboard + { + print_to(self, "WARNING: No object in clipboard. You must copy an object before you can paste it"); + return TRUE; + } - print_to(self, "Object pasted"); - if(autocvar_g_sandbox_info) - print(strcat(self.netname, " pasted an object at origin ", vtos(e.origin), "\n")); + e = sandbox_SpawnObject(); + tokenize_console(self.object_clipboard); + + // apply clipboard properties + setmodel(e, argv(0)); + e.skin = stof(argv(1)); + e.frame = stof(argv(2)); + e.movetype = stof(argv(3)); + + print_to(self, "Object pasted"); + if(autocvar_g_sandbox_info) + print(strcat(self.netname, " pasted an object at origin ", vtos(e.origin), "\n")); - return TRUE; - } - else if(argv(1) == "edit_object") - { - if(!argv(2) || !argv(3)) - { - print_to(self, "WARNING: Too few parameters. You must specify a property to edit, followed by its value"); return TRUE; - } - - e = sandbox_EditObject(); - if(e != world) - { - if(argv(2) == "skin") - e.skin = stof(argv(3)); - else if(argv(2) == "frame") - e.frame = stof(argv(3)); - else if(argv(2) == "physics") + + // ---------------- COMMAND: EDIT OBJECT ---------------- + case "edit_object": + if(!argv(2) || !argv(3)) { - if(argv(3) == "0") // static - e.movetype = MOVETYPE_NONE; - else if(argv(3) == "1") // movable - e.movetype = MOVETYPE_TOSS; - else if(argv(3) == "2") // physical - e.movetype = MOVETYPE_PHYSICS; + print_to(self, "WARNING: Too few parameters. You must specify a property to edit, followed by its value"); + return TRUE; } - else - print_to(self, "WARNING: Invalid object property. For usage information, type 'sandbox help'"); + e = sandbox_EditObject(); + if(e != world) + { + switch(argv(2)) + { + case "skin": + e.skin = stof(argv(3)); + break; + case "frame": + e.frame = stof(argv(3)); + break; + case "physics": + if(argv(3) == "0") // static + e.movetype = MOVETYPE_NONE; + else if(argv(3) == "1") // movable + e.movetype = MOVETYPE_TOSS; + else if(argv(3) == "2") // physical + e.movetype = MOVETYPE_PHYSICS; + break; + default: + print_to(self, "WARNING: Invalid object property. For usage information, type 'sandbox help'"); + break; + } + + return TRUE; + } + + print_to(self, "WARNING: Object could not be edited. Make sure you are facing an object that belongs to you"); return TRUE; - } - print_to(self, "WARNING: Object could not be edited. Make sure you are facing an object that belongs to you"); - return TRUE; - } - else - { - print_to(self, "Invalid command. For usage information, type 'sandbox help'"); - return TRUE; + // ---------------- COMMAND: DEFAULT ---------------- + default: + print_to(self, "Invalid command. For usage information, type 'sandbox help'"); + return TRUE; } } return FALSE; -- 2.39.2