From: Samual Lenks Date: Tue, 4 Dec 2012 20:44:39 +0000 (-0500) Subject: Merge remote-tracking branch 'origin/master' into terencehill/cursormode X-Git-Tag: xonotic-v0.7.0~196^2~1 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=fcbf9538330960b989dbe84e7188349d7e8b109f;hp=77c8f18d6cf54ac0c0b1e426ac79842e7f593c80 Merge remote-tracking branch 'origin/master' into terencehill/cursormode --- diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index c7a66a8680..835d2855ed 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -383,9 +383,10 @@ float button_zoom; // 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. // All keys are in ascii. -// bInputType = 0 is key pressed, 1 is key released, 2 is mouse input. +// bInputType = 0 is key pressed, 1 is key released, 2 and 3 are mouse input. // In the case of keyboard input, nPrimary is the ascii code, and nSecondary is 0. // In the case of mouse input, nPrimary is xdelta, nSecondary is ydelta. +// In the case of mouse input after a setcursormode(1) call, nPrimary is xpos, nSecondary is ypos. float CSQC_InputEvent(float bInputType, float nPrimary, float nSecondary) { float bSkipKey; diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index 46d116cbd7..996302ca32 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -473,9 +473,9 @@ void CSQC_UpdateView(float w, float h) eventchase_current_distance = 0; // start from 0 next time } } - + // do lockview after event chase camera so that it still applies whenever necessary. - if(autocvar_cl_lockview || (autocvar__hud_configure && spectatee_status <= 0) || intermission > 1) + if(autocvar_cl_lockview) { setproperty(VF_ORIGIN, freeze_org); setproperty(VF_ANGLES, freeze_ang); diff --git a/qcsrc/client/csqc_builtins.qc b/qcsrc/client/csqc_builtins.qc index 15e62170ba..0fabb0d0c7 100644 --- a/qcsrc/client/csqc_builtins.qc +++ b/qcsrc/client/csqc_builtins.qc @@ -125,6 +125,7 @@ void (entity e) runstandardplayerphysics = #347; string (float playernum, string key) getplayerkeyvalue = #348; void (string cmdname) registercmd = #352; +void(float usecursor) setcursormode = #343; vector () getmousepos = #344; string (string s) uncolorstring = #170; diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 2e3607ff4f..16cf6d2e9c 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -5191,8 +5191,13 @@ void HUD_Main (void) HUD_Panel_HlBorder(panel_bg_border + 1.5 * hlBorderSize, '0 0.5 1', 0.25 * (1 - autocvar__menu_alpha)); } if (!hud_configure_prev) + { + setcursormode(1); hudShiftState = 0; + } } + else if (hud_configure_prev) + setcursormode(0); hud_configure_prev = autocvar__hud_configure; diff --git a/qcsrc/client/hud_config.qc b/qcsrc/client/hud_config.qc index c1d67af6c3..d1d5dfc8ae 100644 --- a/qcsrc/client/hud_config.qc +++ b/qcsrc/client/hud_config.qc @@ -635,8 +635,7 @@ float HUD_Panel_InputEvent(float bInputType, float nPrimary, float nSecondary) { string s; - // we only care for keyboard events - if(bInputType != 0 && bInputType != 1) + if(bInputType == 2) return false; if(!autocvar__hud_configure) @@ -646,6 +645,13 @@ float HUD_Panel_InputEvent(float bInputType, float nPrimary, float nSecondary) if(autocvar__menu_alpha) return true; + if(bInputType == 3) + { + mousepos_x = nPrimary; + mousepos_y = nSecondary; + return true; + } + // allow console bind to work string con_keys; float keys; @@ -1070,11 +1076,6 @@ void HUD_Panel_Mouse() if(autocvar__menu_alpha == 1) return; - mousepos = mousepos + getmousepos() * autocvar_menu_mouse_speed; - - mousepos_x = bound(0, mousepos_x, vid_conwidth); - mousepos_y = bound(0, mousepos_y, vid_conheight); - if(mouseClicked) { if(prevMouseClicked == 0) diff --git a/qcsrc/client/mapvoting.qc b/qcsrc/client/mapvoting.qc index 750bd2a753..0961096a4d 100644 --- a/qcsrc/client/mapvoting.qc +++ b/qcsrc/client/mapvoting.qc @@ -174,11 +174,6 @@ void MapVote_Draw() if(!mv_active) return; - mv_mousepos = mv_mousepos + getmousepos(); - - mv_mousepos_x = bound(0, mv_mousepos_x, vid_conwidth); - mv_mousepos_y = bound(0, mv_mousepos_y, vid_conheight); - center = (vid_conwidth - 1)/2; xmin = vid_conwidth*0.05; // 5% border must suffice xmax = vid_conwidth - xmin; @@ -335,8 +330,7 @@ void MapVote_Init() precache_sound ("misc/invshot.wav"); mv_active = 1; - - mv_mousepos = '0.5 0 0' * vid_conwidth + '0 0.5 0' * vid_conheight; + setcursormode(1); mv_selection = -1; for(n_ssdirs = 0; ; ++n_ssdirs) @@ -406,6 +400,13 @@ float MapVote_InputEvent(float bInputType, float nPrimary, float nSecondary) if (!mv_active) return false; + if(bInputType == 3) + { + mv_mousepos_x = nPrimary; + mv_mousepos_y = nSecondary; + return true; + } + if (bInputType != 0) return false;