]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote branch 'origin/master' into mirceakitsune/preview_images
authorSamual <samual@xonotic.org>
Sat, 7 Jan 2012 18:18:00 +0000 (13:18 -0500)
committerSamual <samual@xonotic.org>
Sat, 7 Jan 2012 18:18:00 +0000 (13:18 -0500)
Conflicts:
qcsrc/common/util.qh

1  2 
qcsrc/client/Main.qc
qcsrc/client/mapvoting.qc
qcsrc/common/util.qc
qcsrc/common/util.qh

diff --combined qcsrc/client/Main.qc
index 95ff68f52fb2455c1ba8f52d5c0157445207126f,3798edf8a78ca20cb03853a05ccd57b6c614b926..8facbf500ff9a8e2b28567b7b96bd85c88c85ebf
@@@ -3,7 -3,6 +3,6 @@@
  //include "main.qh"
  
  #define DP_CSQC_ENTITY_REMOVE_IS_B0RKED
  void menu_show_error()
  {
        drawstring('0 200 0', _("ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"), '8 8 0', '1 0 0', 1, 0);
@@@ -71,6 -70,7 +70,7 @@@ void precache_all_playermodels(string p
  
  string forcefog;
  void WaypointSprite_Load();
+ void ConsoleCommand_macro_init();
  void CSQC_Init(void)
  {
        prvm_language = cvar_string("prvm_language");
                        break;
        maxclients = i;
  
-       registercommand("hud_configure");
-       registercommand("hud_save");
+       //registercommand("hud_configure");
+       //registercommand("hud_save");
        //registercommand("menu_action");
+       
+       ConsoleCommand_macro_init();
  
-       registercommand("+showscores");registercommand("-showscores");
-       registercommand("+showaccuracy");registercommand("-showaccuracy");
- #ifndef CAMERATEST
-       if(isdemo())
-       {
- #endif
-               registercommand("+forward");registercommand("-forward");
-               registercommand("+back");registercommand("-back");
-               registercommand("+moveup");registercommand("-moveup");
-               registercommand("+movedown");registercommand("-movedown");
-               registercommand("+moveright");registercommand("-moveright");
-               registercommand("+moveleft");registercommand("-moveleft");
-               registercommand("+roll_right");registercommand("-roll_right");
-               registercommand("+roll_left");registercommand("-roll_left");
- #ifndef CAMERATEST
-       }
- #endif
        registercvar("hud_usecsqc", "1");
        registercvar("scoreboard_columns", "default");
  
  
        hud_configure_prev = -1;
        tab_panel = -1;
 +
 +      draw_currentSkin = strzone(strcat("gfx/menu/", cvar_string("menu_skin")));
  }
  
  // CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)
@@@ -382,290 -364,7 +366,7 @@@ void PostInit(void
        postinit = true;
  }
  
- // CSQC_ConsoleCommand : Used to parse commands in the console that have been registered with the "registercommand" function
- // Return value should be 1 if CSQC handled the command, otherwise return 0 to have the engine handle it.
  float button_zoom;
- void Cmd_HUD_SetFields(float);
- void Cmd_HUD_Help(float);
- float CSQC_ConsoleCommand(string strMessage)
- {
-       float argc;
-       // Tokenize String
-       argc = tokenize_console(strMessage);
-       // Acquire Command
-       string strCmd;
-       strCmd = argv(0);
-       if(strCmd == "hud_configure") { // config hud
-               cvar_set("_hud_configure", ftos(!autocvar__hud_configure));
-               return true;
-       } else if(strCmd == "hud_save") { // save hud config
-               if(argv(1) == "" || argv(2)) {
-                       print(_("Usage:\n"));
-                       print(_("hud_save configname   (saves to hud_skinname_configname.cfg)\n"));
-               }
-               else
-                       HUD_Panel_ExportCfg(argv(1));
-               return true;
-       } else if(strCmd == "+showscores") {
-               scoreboard_showscores = true;
-               return true;
-       } else if(strCmd == "-showscores") {
-               scoreboard_showscores = false;
-               return true;
-       } else if(strCmd == "+showaccuracy") {
-               scoreboard_showaccuracy = true;
-               return true;
-       } else if(strCmd == "-showaccuracy") {
-               scoreboard_showaccuracy = false;
-               return true;
-       }
-       if(camera_active)
-       if(strCmd == "+forward" || strCmd == "-back") {
-               ++camera_direction_x;
-               return true;
-       } else if(strCmd == "-forward" || strCmd == "+back") {
-               --camera_direction_x;
-               return true;
-       } else if(strCmd == "+moveright" || strCmd == "-moveleft") {
-               --camera_direction_y;
-               return true;
-       } else if(strCmd == "-moveright" || strCmd == "+moveleft") {
-               ++camera_direction_y;
-               return true;
-       } else if(strCmd == "+moveup" || strCmd == "-movedown") {
-               ++camera_direction_z;
-               return true;
-       } else if(strCmd == "-moveup" || strCmd == "+movedown") {
-               --camera_direction_z;
-               return true;
-       } else if(strCmd == "+roll_right" || strCmd == "-roll_left") {
-               ++camera_roll;
-               return true;
-       } else if(strCmd == "+roll_left" || strCmd == "-roll_right") {
-               --camera_roll;
-               return true;
-       }
-       return false;
- }
- .vector view_ofs;
- entity debug_shotorg;
- void ShotOrg_Draw()
- {
-       self.origin = view_origin + view_forward * self.view_ofs_x + view_right * self.view_ofs_y + view_up * self.view_ofs_z;
-       self.angles = view_angles;
-       self.angles_x = -self.angles_x;
-       if not(self.cnt)
-               self.drawmask = MASK_NORMAL;
-       else
-               self.drawmask = 0;
- }
- void ShotOrg_Draw2D()
- {
-       vector coord2d_topleft, coord2d_topright, coord2d;
-       string s;
-       vector fs;
-       s = vtos(self.view_ofs);
-       s = substring(s, 1, strlen(s) - 2);
-       if(tokenize_console(s) == 3)
-               s = strcat(argv(0), " ", argv(1), " ", argv(2));
-       coord2d_topleft = project_3d_to_2d(self.origin + view_up * 4 - view_right * 4);
-       coord2d_topright = project_3d_to_2d(self.origin + view_up * 4 + view_right * 4);
-       fs = '1 1 0' * ((coord2d_topright_x - coord2d_topleft_x) / stringwidth(s, FALSE, '8 8 0'));
-       coord2d = coord2d_topleft;
-       if(fs_x < 8)
-       {
-               coord2d_x += (coord2d_topright_x - coord2d_topleft_x) * (1 - 8 / fs_x) * 0.5;
-               fs = '8 8 0';
-       }
-       coord2d_y -= fs_y;
-       coord2d_z = 0;
-       drawstring(coord2d, s, fs, '1 1 1', 1, 0);
- }
- void ShotOrg_Spawn()
- {
-       debug_shotorg = spawn();
-       debug_shotorg.draw = ShotOrg_Draw;
-       debug_shotorg.draw2d = ShotOrg_Draw2D;
-       debug_shotorg.renderflags = RF_VIEWMODEL;
-       debug_shotorg.effects = EF_FULLBRIGHT;
-       precache_model("models/shotorg_adjuster.md3");
-       setmodel(debug_shotorg, "models/shotorg_adjuster.md3");
-       debug_shotorg.scale = 2;
-       debug_shotorg.view_ofs = '25 8 -8';
- }
- void DrawDebugModel()
- {
-       if(time - floor(time) > 0.5)
-       {
-               PolyDrawModel(self);
-               self.drawmask = 0;
-       }
-       else
-       {
-               self.renderflags = 0;
-               self.drawmask = MASK_NORMAL;
-       }
- }
- void GameCommand(string msg)
- {
-       string s;
-       float argc;
-       entity e;
-       argc = tokenize_console(msg);
-       if(argv(0) == "help" || argc == 0)
-       {
-               print(_("Usage: cl_cmd COMMAND..., where possible commands are:\n"));
-               print(_("  scoreboard_columns_set ...\n"));
-               print(_("  scoreboard_columns_help\n"));
-               GameCommand_Generic("help");
-               return;
-       }
-       if(GameCommand_Generic(msg))
-               return;
-       string cmd;
-       cmd = argv(0);
-       if(cmd == "mv_download") {
-               Cmd_MapVote_MapDownload(argc);
-       }
-       else if(cmd == "hud_panel_radar_maximized")
-       {
-               if(argc == 1)
-                       hud_panel_radar_maximized = !hud_panel_radar_maximized;
-               else
-                       hud_panel_radar_maximized = (stof(argv(1)) != 0);
-       }
-       else if(cmd == "scoreboard_columns_set") {
-               Cmd_HUD_SetFields(argc);
-       }
-       else if(cmd == "scoreboard_columns_help") {
-               Cmd_HUD_Help(argc);
-       }
- #ifdef BLURTEST
-       else if(cmd == "blurtest") {
-               blurtest_time0 = time;
-               blurtest_time1 = time + stof(argv(1));
-               blurtest_radius = stof(argv(2));
-               blurtest_power = stof(argv(3));
-       }
- #endif
-       else if(cmd == "shotorg_move") {
-               if(!debug_shotorg)
-                       ShotOrg_Spawn();
-               else
-                       debug_shotorg.view_ofs = debug_shotorg.view_ofs + stov(argv(1));
-               localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n");
-       }
-       else if(cmd == "shotorg_movez") {
-               if(!debug_shotorg)
-                       ShotOrg_Spawn();
-               else
-                       debug_shotorg.view_ofs = debug_shotorg.view_ofs + stof(argv(1)) * (debug_shotorg.view_ofs * (1 / debug_shotorg.view_ofs_x)); // closer/farther, same xy pos
-               localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n");
-       }
-       else if(cmd == "shotorg_set") {
-               if(!debug_shotorg)
-                       ShotOrg_Spawn();
-               else
-                       debug_shotorg.view_ofs = stov(argv(1));
-               localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n");
-       }
-       else if(cmd == "shotorg_setz") {
-               if(!debug_shotorg)
-                       ShotOrg_Spawn();
-               else
-                       debug_shotorg.view_ofs = debug_shotorg.view_ofs * (stof(argv(1)) / debug_shotorg.view_ofs_x); // closer/farther, same xy pos
-               localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n");
-       }
-       else if(cmd == "shotorg_toggle_hide") {
-               if(debug_shotorg)
-               {
-                       debug_shotorg.cnt = !debug_shotorg.cnt;
-               }
-       }
-       else if(cmd == "shotorg_end") {
-               if(debug_shotorg)
-               {
-                       print(vtos(debug_shotorg.view_ofs), "\n");
-                       remove(debug_shotorg);
-                       debug_shotorg = world;
-               }
-               localcmd("sv_cmd debug_shotorg\n");
-       }
-       else if(cmd == "sendcvar") {
-               // W_FixWeaponOrder will trash argv, so save what we need.
-               string thiscvar;
-               thiscvar = strzone(argv(1));
-               s = cvar_string(thiscvar);
-               if(thiscvar == "cl_weaponpriority")
-                       s = W_FixWeaponOrder(W_NumberWeaponOrder(s), 1);
-               else if(substring(thiscvar, 0, 17) == "cl_weaponpriority" && strlen(thiscvar) == 18)
-                       s = W_FixWeaponOrder(W_NumberWeaponOrder(s), 0);
-               localcmd("cmd sentcvar ", thiscvar, " \"", s, "\"\n");
-               strunzone(thiscvar);
-       }
-       else if(cmd == "spawn") {
-               s = argv(1);
-               e = spawn();
-               precache_model(s);
-               setmodel(e, s);
-               setorigin(e, view_origin);
-               e.angles = view_angles;
-               e.draw = DrawDebugModel;
-               e.classname = "debugmodel";
-       }
-     else if(cmd == "vyes")
-     {
-         if(uid2name_dialog)
-         {
-             vote_active = 0; // force the panel to disappear right as we have selected the value (to prevent it from fading out in the normal vote panel pos)
-             vote_prev = 0;
-             localcmd("setreport cl_allow_uid2name 1\n");
-             vote_change = -9999;
-                       uid2name_dialog = 0;
-         }
-         else
-         {
-             localcmd("cmd vote yes\n");
-         }
-     }
-     else if(cmd == "vno")
-     {
-         if(uid2name_dialog)
-         {
-             vote_active = 0;
-             vote_prev = 0;
-             localcmd("setreport cl_allow_uid2name 0\n");
-             vote_change = -9999;
-                       uid2name_dialog = 0;
-         }
-         else
-         {
-             localcmd("cmd vote no\n");
-         }
-     }
-       else
-       {
-               print("Invalid command. For a list of supported commands, try cl_cmd help.\n");
-       }
-       return;
- }
  
  // CSQC_InputEvent : Used to perform actions based on any key pressed, key released and mouse on the client.
  // Return value should be 1 if CSQC handled the input, otherwise return 0 to have the input passed to the engine.
index ebb2c4e746a4961ecccbfb993ee081d7ab227e65,769b921a43fd39d3fe5bf2937b0505d542561eed..4cb8dad05fff509e7a905ffc6627a850df8459fb
@@@ -88,10 -88,7 +88,10 @@@ void MapVote_DrawMapItem(vector pos, fl
        }
        else
        {
 -              drawpic(pos, pic, img_size, '1 1 1', theAlpha, DRAWFLAG_NORMAL);
 +              if(drawgetimagesize(pic) == '0 0 0')
 +                      drawpic(pos, draw_UseSkinFor("nopreview_map"), img_size, '1 1 1', theAlpha, DRAWFLAG_NORMAL);
 +              else
 +                      drawpic(pos, pic, img_size, '1 1 1', theAlpha, DRAWFLAG_NORMAL);
        }
  
        if(id == mv_ownvote)
@@@ -283,7 -280,7 +283,7 @@@ void Cmd_MapVote_MapDownload(float argc
                return;
        } else {
                print(_("Requesting preview...\n"));
-               localcmd(strcat("\ncmd mv_getpic ", ftos(id), "\n"));
+               localcmd(strcat("\ncmd mv_getpicture ", ftos(id), "\n"));
        }
  }
  
diff --combined qcsrc/common/util.qc
index e698a28bd8a4caff798f7767820924ffd8c9bd85,19339a36e99635908c379b21383ceff01d7dc42a..8f190f163cecb958f035910209175828383ae80a
@@@ -39,16 -39,6 +39,16 @@@ void wordwrap_sprint(string s, float l
  #endif
  #endif
  
 +#ifndef SVQC
 +string draw_UseSkinFor(string pic)
 +{
 +      if(substring(pic, 0, 1) == "/")
 +              return substring(pic, 1, strlen(pic)-1);
 +      else
 +              return strcat(draw_currentSkin, "/", pic);
 +}
 +#endif
 +
  string unescape(string in)
  {
        float i, len;
@@@ -852,28 -842,48 +852,48 @@@ void get_mi_min_max_texcoords(float mod
  }
  #endif
  
void cvar_settemp(string cv, string val)
float cvar_settemp(string tmp_cvar, string tmp_value)
  {
+       float created_saved_value;
        entity e;
+       
+       if not(tmp_cvar || tmp_value)
+       {
+               dprint("Error: Invalid usage of cvar_settemp(string, string); !\n");
+               return FALSE;
+       }
+       
        for(e = world; (e = find(e, classname, "saved_cvar_value")); )
-               if(e.netname == cv)
-                       goto saved;
+               if(e.netname == tmp_cvar)
+                       goto saved; // skip creation
+                       
+       // creating a new entity to keep track of this cvar
        e = spawn();
        e.classname = "saved_cvar_value";
-       e.netname = strzone(cv);
-       e.message = strzone(cvar_string(cv));
- :saved
-       cvar_set(cv, val);
+       e.netname = strzone(tmp_cvar);
+       e.message = strzone(cvar_string(tmp_cvar));
+       created_saved_value = TRUE;
+       
+       // an entity for this cvar already exists
+       :saved
+       
+       // update the cvar to the value given
+       cvar_set(tmp_cvar, tmp_value);
+       
+       return created_saved_value;
  }
  
void cvar_settemp_restore()
float cvar_settemp_restore()
  {
+       float i;
        entity e;
        while((e = find(world, classname, "saved_cvar_value")))
        {
                cvar_set(e.netname, e.message);
                remove(e);
        }
+       
+       return i;
  }
  
  float almost_equals(float a, float b)
@@@ -2081,6 -2091,46 +2101,46 @@@ float lowestbit(float f
        return f;
  }
  
+ /*
+ string strlimitedlen(string input, string truncation, float strip_colors, float limit)
+ {
+       if(strlen((strip_colors ? strdecolorize(input) : input)) <= limit)
+               return input;
+       else
+               return strcat(substring(input, 0, (strlen(input) - strlen(truncation))), truncation);
+ }*/
+ // escape the string to make it safe for consoles
+ string MakeConsoleSafe(string input)
+ {
+       input = strreplace("\n", "", input);
+       input = strreplace("\\", "\\\\", input);
+       input = strreplace("$", "$$", input);
+       input = strreplace("\"", "\\\"", input);
+       return input;
+ }
+ #ifndef MENUQC
+ // get true/false value of a string with multiple different inputs
+ float InterpretBoolean(string input)
+ {
+       switch(strtolower(input))
+       {
+               case "yes":
+               case "true":
+               case "on":
+                       return TRUE;
+               
+               case "no":
+               case "false":
+               case "off":
+                       return FALSE;
+               
+               default: return stof(input);
+       }
+ }
+ #endif
  #ifdef CSQC
  entity ReadCSQCEntity()
  {
diff --combined qcsrc/common/util.qh
index 78c9baa6edade795bd07237d3a4e56122c525265,a8dd88c2f05b7b7490bd989a8015969533dc3106..dc8b8708b616a3307384301b9d71584fd24e4c28
@@@ -20,15 -20,6 +20,11 @@@ void wordwrap_sprint(string s, float l)
  #endif
  void wordwrap_cb(string s, float l, void(string) callback)
  
- float GameCommand_Generic(string cmd);
- // returns TRUE if handled, FALSE otherwise
- // tokenizes its input!
 +#ifndef SVQC
 +string draw_currentSkin;
 +string draw_UseSkinFor(string pic);
 +#endif
 +
  // iterative depth-first search, with fields that go "up", "down left" and "right" in a tree
  // for each element, funcPre is called first, then funcPre and funcPost for all its children, and funcPost last
  void depthfirst(entity start, .entity up, .entity downleft, .entity right, void(entity, entity) funcPre, void(entity, entity) funcPost, entity pass);
@@@ -94,8 -85,8 +90,8 @@@ string swapInPriorityList(string order
  
  float cvar_value_issafe(string s);
  
void cvar_settemp(string pKey, string pValue);
void cvar_settemp_restore();
float cvar_settemp(string pKey, string pValue);
float cvar_settemp_restore();
  
  #ifndef MENUQC
  // modes: 0 = trust q3map2 (_mini images)
@@@ -282,5 -273,15 +278,15 @@@ float lowestbit(float f)
  entity ReadCSQCEntity()
  #endif
  
+ #ifndef MENUQC
+ string strtolower(string s);
+ #endif
+ string MakeConsoleSafe(string input);
+ #ifndef MENUQC
+ float InterpretBoolean(string input);
+ #endif
  // generic shutdown handler
  void Shutdown();