]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/Main.qc
quick implementation of shownames in the HUD. Currently networked via MSG_ONE, not...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / Main.qc
index 435dedabc770dbed309f663ad5945d99322b9b5e..d208640326061a8b1e4f5fef9dda2f6975cac897 100644 (file)
@@ -27,7 +27,7 @@ void cvar_clientsettemp_restore()
 
 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);
+       drawstring('0 200 0', _("ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"), '8 8 0', '1 0 0', 1, 0);
 };
 
 // CSQC_Init : Called every time the CSQC code is initialized (essentially at map load)
@@ -46,33 +46,34 @@ string cl_announcer_prev;
 void WaypointSprite_Load();
 void CSQC_Init(void)
 {
+       prvm_language = cvar_string("prvm_language");
+       
 #ifdef USE_FTE
 #pragma target ID
        __engine_check = checkextension("DP_SV_WRITEPICTURE");
        if(!__engine_check)
        {
-               print("^3Your engine build is outdated\n^3This Server uses a newer QC VM. Please update!\n");
+               print(_("^3Your engine build is outdated\n^3This Server uses a newer QC VM. Please update!\n"));
                localcmd("\ndisconnect\n");
                return;
        }
 #pragma target FTE
 #endif
-       
+
        check_unacceptable_compiler_bugs();
 
 #ifdef WATERMARK
-       print("^4CSQC Build information: ", WATERMARK(), "\n");
+       print(sprintf(_("^4CSQC Build information: %s\n"), WATERMARK()));
 #endif
 
        float i;
-       CSQC_CheckEngine();
 
        binddb = db_create();
        tempdb = db_create();
        ClientProgsDB = db_load("client.db");
        compressShortVector_init();
 
-       drawfont = 0;
+       drawfont = FONT_USER+1;
        menu_visible = FALSE;
        menu_show = menu_show_error;
        menu_action = menu_sub_null;
@@ -135,6 +136,8 @@ void CSQC_Init(void)
        WaypointSprite_Load();
 
        // precaches
+       precache_sound("misc/hit.wav");
+       precache_sound("misc/typehit.wav");
        Projectile_Precache();
        Hook_Precache();
        GibSplash_Precache();
@@ -148,6 +151,9 @@ void CSQC_Init(void)
        }
        Tuba_Precache();
 
+       if(autocvar_cl_reticle_item_normal) precache_pic("gfx/reticle_normal");
+       if(autocvar_cl_reticle_item_nex) precache_pic("gfx/reticle_nex");
+
        get_mi_min_max_texcoords(1); // try the CLEVER way first
        minimapname = strcat("gfx/", mi_shortname, "_radar.tga");
        shortmapname = mi_shortname;
@@ -223,7 +229,7 @@ float SetTeam(entity o, float Team)
                        default:
                                if(GetTeam(Team, false) == NULL)
                                {
-                                       print("trying to switch to unsupported team ", ftos(Team), "\n");
+                                       print(sprintf(_("trying to switch to unsupported team %d\n"), Team));
                                        Team = COLOR_SPECTATOR;
                                }
                                break;
@@ -239,7 +245,7 @@ float SetTeam(entity o, float Team)
                        default:
                                if(GetTeam(Team, false) == NULL)
                                {
-                                       print("trying to switch to unsupported team ", ftos(Team), "\n");
+                                       print(sprintf(_("trying to switch to unsupported team %d\n"), Team));
                                        Team = COLOR_SPECTATOR;
                                }
                                break;
@@ -249,7 +255,6 @@ float SetTeam(entity o, float Team)
        {
                if(o.has_team)
                {
-                       //print("(DISCONNECT) leave team ", ftos(o.team), "\n");
                        tm = GetTeam(o.team, false);
                        tm.team_size -= 1;
                        o.has_team = 0;
@@ -260,7 +265,6 @@ float SetTeam(entity o, float Team)
        {
                if not(o.has_team)
                {
-                       //print("(CONNECT) enter team ", ftos(o.team), "\n");
                        o.team = Team;
                        tm = GetTeam(Team, true);
                        tm.team_size += 1;
@@ -269,11 +273,9 @@ float SetTeam(entity o, float Team)
                }
                else if(Team != o.team)
                {
-                       //print("(CHANGE) leave team ", ftos(o.team), "\n");
                        tm = GetTeam(o.team, false);
                        tm.team_size -= 1;
                        o.team = Team;
-                       //print("(CHANGE) enter team ", ftos(o.team), "\n");
                        tm = GetTeam(Team, true);
                        tm.team_size += 1;
                        return TRUE;
@@ -293,7 +295,6 @@ void Playerchecker_Think()
                {
                        if(e.sort_prev)
                        {
-                               //print("playerchecker: KILL KILL KILL\n");
                                // player disconnected
                                SetTeam(e, -1);
                                RemovePlayer(e);
@@ -305,7 +306,6 @@ void Playerchecker_Think()
                {
                        if not(e.sort_prev)
                        {
-                               //print("playerchecker: SPAWN SPAWN SPAWN\n");
                                // player connected
                                if not(e)
                                        playerslots[i] = e = spawn();
@@ -327,7 +327,6 @@ void Porto_Init();
 void TrueAim_Init();
 void PostInit(void)
 {
-       print(strcat("PostInit\n    maxclients = ", ftos(maxclients), "\n"));
        localcmd(strcat("\nscoreboard_columns_set ", autocvar_scoreboard_columns, ";\n"));
 
        entity playerchecker;
@@ -362,8 +361,8 @@ float CSQC_ConsoleCommand(string strMessage)
                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");
+                       print(_("Usage:\n"));
+                       print(_("hud_save configname   (saves to hud_skinname_configname.cfg)\n"));
                }
                else
                        HUD_Panel_ExportCfg(argv(1));
@@ -510,10 +509,10 @@ void GameCommand(string msg)
 
        if(argv(0) == "help" || argc == 0)
        {
-               print("Usage: cl_cmd COMMAND..., where possible commands are:\n");
-               print("  settemp cvar value\n");
-               print("  scoreboard_columns_set ...\n");
-               print("  scoreboard_columns_help\n");
+               print(_("Usage: cl_cmd COMMAND..., where possible commands are:\n"));
+               print(_("  settemp cvar value\n"));
+               print(_("  scoreboard_columns_set ...\n"));
+               print(_("  scoreboard_columns_help\n"));
                GameCommand_Generic("help");
                return;
        }
@@ -718,7 +717,7 @@ void Ent_ReadPlayerScore()
 #ifdef DP_CSQC_ENTITY_REMOVE_IS_B0RKED
        if(!isNew && n != self.sv_entnum)
        {
-               print("A CSQC entity changed its owner!\n");
+               print(_("A CSQC entity changed its owner!\n"));
                isNew = true;
                Ent_Remove();
                self.enttype = ENT_CLIENT_SCORES;
@@ -932,7 +931,7 @@ void(float bIsNewEntity) CSQC_Ent_Update =
        if(self.enttype)
                if(t != self.enttype)
                {
-                       print("A CSQC entity changed its type!\n");
+                       print(_("A CSQC entity changed its type!\n"));
                        Ent_Remove();
                        bIsNewEntity = 1;
                }
@@ -969,7 +968,7 @@ void(float bIsNewEntity) CSQC_Ent_Update =
                case ENT_CLIENT_GAUNTLET: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_GAUNTLET); break;
                case ENT_CLIENT_ACCURACY: Ent_ReadAccuracy(); break;
                default:
-                       error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n"));
+                       error(strcat(_("unknown entity type in CSQC_Ent_Update: %d\n"), self.enttype));
                        break;
        }
 
@@ -1094,10 +1093,14 @@ void Ent_Init()
        g_balance_electro_secondary_bouncestop = ReadCoord();
 
        nex_scope = !ReadByte();
-       campingrifle_scope = !ReadByte();
+       sniperrifle_scope = !ReadByte();
 
        serverflags = ReadByte();
 
+       minelayer_maxmines = ReadByte();
+
+       g_trueaim_minrange = ReadCoord();
+
        if(!postinit)
                PostInit();
 }
@@ -1326,6 +1329,16 @@ void Net_WeaponComplain() {
        weapontime = time; // ping the weapon panel
 }
 
+void Net_ShowNames()
+{
+    if(shownames_netname)
+        strunzone(shownames_netname);
+    shownames_netname = strzone(ReadString());
+    shownames_health = ReadByte();
+    shownames_armor = ReadByte();
+    shownames_time = time + 0.25;
+}
+
 // CSQC_Parse_TempEntity : Handles all temporary entity network data in the CSQC layer.
 // You must ALWAYS first acquire the temporary ID, which is sent as a byte.
 // Return value should be 1 if CSQC handled the temporary entity, otherwise return 0 to have the engine process the event.
@@ -1396,10 +1409,10 @@ float CSQC_Parse_TempEntity()
                        Net_WeaponComplain();
                        bHandled = true;
                        break;
-               case TE_CSQC_CR_MAXBULLETS:
-                       cr_maxbullets = ReadByte();
-                       bHandled = true;
-                       break;
+               case TE_CSQC_SHOWNAMES:
+            Net_ShowNames();
+            bHandled = true;
+            break;
                default:
                        // No special logic for this temporary entity; return 0 so the engine can handle it
                        bHandled = false;
@@ -1441,12 +1454,12 @@ string getcommandkey(string text, string command)
 
        if ("" == keys) {
                if (hud_showbinds > 1)
-                       return strcat(text, " (not bound)");
+                       return sprintf(_("%s (not bound)"), text);
                else
                        return text;
        }
        else if (hud_showbinds > 1)
-               return strcat(text, " (", keys, ")");
+               return sprintf(_("%s (%s)"), text, keys);
        else
                return keys;
 }