[ioquake3] 24/50: Make Team Arena UI aspect correct in widescreen

Simon McVittie smcv at debian.org
Sun Jul 23 21:55:24 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian/master
in repository ioquake3.

commit 21eeaee9c840ac781996c06e97071dda6a2dc600
Author: Zack Middleton <zack at cloemail.com>
Date:   Sat Jul 1 11:27:31 2017 -0500

    Make Team Arena UI aspect correct in widescreen
---
 code/ui/ui_atoms.c | 10 +---------
 code/ui/ui_main.c  | 36 ++++++++++++++++++++++++------------
 2 files changed, 25 insertions(+), 21 deletions(-)

diff --git a/code/ui/ui_atoms.c b/code/ui/ui_atoms.c
index cdc4aeb..44ff3b0 100644
--- a/code/ui/ui_atoms.c
+++ b/code/ui/ui_atoms.c
@@ -420,18 +420,10 @@ Adjusted for resolution and screen aspect ratio
 */
 void UI_AdjustFrom640( float *x, float *y, float *w, float *h ) {
 	// expect valid pointers
-#if 0
-	*x = *x * uiInfo.uiDC.scale + uiInfo.uiDC.bias;
-	*y *= uiInfo.uiDC.scale;
-	*w *= uiInfo.uiDC.scale;
-	*h *= uiInfo.uiDC.scale;
-#endif
-
-	*x *= uiInfo.uiDC.xscale;
+	*x = *x * uiInfo.uiDC.xscale + uiInfo.uiDC.bias;
 	*y *= uiInfo.uiDC.yscale;
 	*w *= uiInfo.uiDC.xscale;
 	*h *= uiInfo.uiDC.yscale;
-
 }
 
 void UI_DrawNamedPic( float x, float y, float width, float height, const char *picname ) {
diff --git a/code/ui/ui_main.c b/code/ui/ui_main.c
index 3660470..c4f3ba5 100644
--- a/code/ui/ui_main.c
+++ b/code/ui/ui_main.c
@@ -129,6 +129,7 @@ static void UI_ParseTeamInfo(const char *teamFile);
 static const char *UI_SelectedMap(int index, int *actual);
 static const char *UI_SelectedHead(int index, int *actual);
 static int UI_GetIndexFromSelection(int actual);
+static void UI_DrawCinematic(int handle, float x, float y, float w, float h);
 
 int ProcessNewUI( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6 );
 
@@ -1110,8 +1111,7 @@ static void UI_DrawClanCinematic(rectDef_t *rect, float scale, vec4_t color) {
 			}
 			if (uiInfo.teamList[i].cinematic >= 0) {
 			  trap_CIN_RunCinematic(uiInfo.teamList[i].cinematic);
-				trap_CIN_SetExtents(uiInfo.teamList[i].cinematic, rect->x, rect->y, rect->w, rect->h);
-	 			trap_CIN_DrawCinematic(uiInfo.teamList[i].cinematic);
+				UI_DrawCinematic(uiInfo.teamList[i].cinematic, rect->x, rect->y, rect->w, rect->h);
 			} else {
 			  	trap_R_SetColor( color );
 				UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Metal);
@@ -1132,8 +1132,7 @@ static void UI_DrawPreviewCinematic(rectDef_t *rect, float scale, vec4_t color)
 		uiInfo.previewMovie = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.movieList[uiInfo.movieIndex]), 0, 0, 0, 0, (CIN_loop | CIN_silent) );
 		if (uiInfo.previewMovie >= 0) {
 		  trap_CIN_RunCinematic(uiInfo.previewMovie);
-			trap_CIN_SetExtents(uiInfo.previewMovie, rect->x, rect->y, rect->w, rect->h);
- 			trap_CIN_DrawCinematic(uiInfo.previewMovie);
+			UI_DrawCinematic(uiInfo.previewMovie, rect->x, rect->y, rect->w, rect->h);
 		} else {
 			uiInfo.previewMovie = -2;
 		}
@@ -1256,8 +1255,7 @@ static void UI_DrawMapCinematic(rectDef_t *rect, float scale, vec4_t color, qboo
 		}
 		if (uiInfo.mapList[map].cinematic >= 0) {
 		  trap_CIN_RunCinematic(uiInfo.mapList[map].cinematic);
-		  trap_CIN_SetExtents(uiInfo.mapList[map].cinematic, rect->x, rect->y, rect->w, rect->h);
- 			trap_CIN_DrawCinematic(uiInfo.mapList[map].cinematic);
+		  UI_DrawCinematic(uiInfo.mapList[map].cinematic, rect->x, rect->y, rect->w, rect->h);
 		} else {
 			uiInfo.mapList[map].cinematic = -2;
 		}
@@ -1337,8 +1335,7 @@ static void UI_DrawNetMapCinematic(rectDef_t *rect, float scale, vec4_t color) {
 
 	if (uiInfo.serverStatus.currentServerCinematic >= 0) {
 	  trap_CIN_RunCinematic(uiInfo.serverStatus.currentServerCinematic);
-	  trap_CIN_SetExtents(uiInfo.serverStatus.currentServerCinematic, rect->x, rect->y, rect->w, rect->h);
- 	  trap_CIN_DrawCinematic(uiInfo.serverStatus.currentServerCinematic);
+	  UI_DrawCinematic(uiInfo.serverStatus.currentServerCinematic, rect->x, rect->y, rect->w, rect->h);
 	} else {
 		UI_DrawNetMapPreview(rect, scale, color);
 	}
@@ -4974,6 +4971,15 @@ static void UI_StopCinematic(int handle) {
 }
 
 static void UI_DrawCinematic(int handle, float x, float y, float w, float h) {
+	// adjust coords to get correct placement in wide screen
+	UI_AdjustFrom640( &x, &y, &w, &h );
+
+	// CIN_SetExtents takes stretched 640x480 virtualized coords
+	x *= SCREEN_WIDTH / (float)uiInfo.uiDC.glconfig.vidWidth;
+	w *= SCREEN_WIDTH / (float)uiInfo.uiDC.glconfig.vidWidth;
+	y *= SCREEN_HEIGHT / (float)uiInfo.uiDC.glconfig.vidHeight;
+	h *= SCREEN_HEIGHT / (float)uiInfo.uiDC.glconfig.vidHeight;
+
 	trap_CIN_SetExtents(handle, x, y, w, h);
   trap_CIN_DrawCinematic(handle);
 }
@@ -5077,6 +5083,7 @@ void _UI_Init( qboolean inGameLoad ) {
 	if ( uiInfo.uiDC.glconfig.vidWidth * 480 > uiInfo.uiDC.glconfig.vidHeight * 640 ) {
 		// wide screen
 		uiInfo.uiDC.bias = 0.5 * ( uiInfo.uiDC.glconfig.vidWidth - ( uiInfo.uiDC.glconfig.vidHeight * (640.0/480.0) ) );
+		uiInfo.uiDC.xscale = uiInfo.uiDC.yscale;
 	}
 	else {
 		// no wide screen
@@ -5234,12 +5241,17 @@ UI_MouseEvent
 */
 void _UI_MouseEvent( int dx, int dy )
 {
+	int bias;
+
+	// convert X bias to 640 coords
+	bias = uiInfo.uiDC.bias / uiInfo.uiDC.xscale;
+
 	// update mouse screen position
 	uiInfo.uiDC.cursorx += dx;
-	if (uiInfo.uiDC.cursorx < 0)
-		uiInfo.uiDC.cursorx = 0;
-	else if (uiInfo.uiDC.cursorx > SCREEN_WIDTH)
-		uiInfo.uiDC.cursorx = SCREEN_WIDTH;
+	if (uiInfo.uiDC.cursorx < -bias)
+		uiInfo.uiDC.cursorx = -bias;
+	else if (uiInfo.uiDC.cursorx > SCREEN_WIDTH+bias)
+		uiInfo.uiDC.cursorx = SCREEN_WIDTH+bias;
 
 	uiInfo.uiDC.cursory += dy;
 	if (uiInfo.uiDC.cursory < 0)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/ioquake3.git



More information about the Pkg-games-commits mailing list