From: Rudolf Polzer Date: Sun, 9 May 2010 13:28:25 +0000 (+0200) Subject: un-weirden the aspect of the player model previews X-Git-Tag: xonotic-v0.1.0preview~637^2^2~5 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=c14d904c76575f5b36310513aa4d6cabe514f665;p=xonotic%2Fxonotic-data.pk3dir.git un-weirden the aspect of the player model previews --- diff --git a/models/player/carni.zym_0.tga b/models/player/carni.zym_0.tga index 8794d6678..8e7931556 100644 Binary files a/models/player/carni.zym_0.tga and b/models/player/carni.zym_0.tga differ diff --git a/models/player/carni.zym_1.tga b/models/player/carni.zym_1.tga index 0d4d317e4..b5ed5130b 100644 Binary files a/models/player/carni.zym_1.tga and b/models/player/carni.zym_1.tga differ diff --git a/models/player/crash.zym_0.tga b/models/player/crash.zym_0.tga index 57c655b2d..8d543fcb1 100644 Binary files a/models/player/crash.zym_0.tga and b/models/player/crash.zym_0.tga differ diff --git a/models/player/grunt.zym_0.tga b/models/player/grunt.zym_0.tga index 0a4d0206e..96fa4b4fa 100644 Binary files a/models/player/grunt.zym_0.tga and b/models/player/grunt.zym_0.tga differ diff --git a/models/player/headhunter.zym_0.tga b/models/player/headhunter.zym_0.tga index 1ae924909..fa4ce0c60 100644 Binary files a/models/player/headhunter.zym_0.tga and b/models/player/headhunter.zym_0.tga differ diff --git a/models/player/insurrectionist.zym_0.tga b/models/player/insurrectionist.zym_0.tga index e6bc1e8d8..fd09128ef 100644 Binary files a/models/player/insurrectionist.zym_0.tga and b/models/player/insurrectionist.zym_0.tga differ diff --git a/models/player/jeandarc.zym_1.tga b/models/player/jeandarc.zym_1.tga index e2621fb96..84e1903a5 100644 Binary files a/models/player/jeandarc.zym_1.tga and b/models/player/jeandarc.zym_1.tga differ diff --git a/models/player/lurk.zym_0.tga b/models/player/lurk.zym_0.tga index 1ac6fe1a5..fd55f55bb 100644 Binary files a/models/player/lurk.zym_0.tga and b/models/player/lurk.zym_0.tga differ diff --git a/models/player/lurk.zym_1.tga b/models/player/lurk.zym_1.tga index 07689367e..18eb91814 100644 Binary files a/models/player/lurk.zym_1.tga and b/models/player/lurk.zym_1.tga differ diff --git a/models/player/lycanthrope.zym_0.tga b/models/player/lycanthrope.zym_0.tga index d212e4da0..836eb8205 100644 Binary files a/models/player/lycanthrope.zym_0.tga and b/models/player/lycanthrope.zym_0.tga differ diff --git a/models/player/marine.zym_0.tga b/models/player/marine.zym_0.tga index e75e1c6a7..f7efd21e6 100644 Binary files a/models/player/marine.zym_0.tga and b/models/player/marine.zym_0.tga differ diff --git a/models/player/nexus.zym_0.tga b/models/player/nexus.zym_0.tga index fb915b6a8..cab6e0fff 100644 Binary files a/models/player/nexus.zym_0.tga and b/models/player/nexus.zym_0.tga differ diff --git a/models/player/nexus.zym_1.tga b/models/player/nexus.zym_1.tga index b0e81125d..c6579f98c 100644 Binary files a/models/player/nexus.zym_1.tga and b/models/player/nexus.zym_1.tga differ diff --git a/models/player/pyria.zym_0.tga b/models/player/pyria.zym_0.tga index a0c983766..6d86c4fc8 100644 Binary files a/models/player/pyria.zym_0.tga and b/models/player/pyria.zym_0.tga differ diff --git a/models/player/shock.zym_0.tga b/models/player/shock.zym_0.tga index e296c2a8c..a5fde6ccb 100644 Binary files a/models/player/shock.zym_0.tga and b/models/player/shock.zym_0.tga differ diff --git a/models/player/skadi.zym_0.tga b/models/player/skadi.zym_0.tga index 3d4bb91c2..9ed26e2f9 100644 Binary files a/models/player/skadi.zym_0.tga and b/models/player/skadi.zym_0.tga differ diff --git a/models/player/specop.zym_0.tga b/models/player/specop.zym_0.tga index e19d0ab4a..1c0e06e9a 100644 Binary files a/models/player/specop.zym_0.tga and b/models/player/specop.zym_0.tga differ diff --git a/models/player/visitant.zym_1.tga b/models/player/visitant.zym_1.tga index 1dc5b02ba..295e89a62 100644 Binary files a/models/player/visitant.zym_1.tga and b/models/player/visitant.zym_1.tga differ diff --git a/models/player/xolar.dpm_0.tga b/models/player/xolar.dpm_0.tga index f5ab215fa..ed2106af8 100644 Binary files a/models/player/xolar.dpm_0.tga and b/models/player/xolar.dpm_0.tga differ diff --git a/qcsrc/menu/item/image.c b/qcsrc/menu/item/image.c index 4e252d8d2..c60ec232f 100644 --- a/qcsrc/menu/item/image.c +++ b/qcsrc/menu/item/image.c @@ -4,6 +4,7 @@ CLASS(Image) EXTENDS(Item) METHOD(Image, draw, void(entity)) METHOD(Image, toString, string(entity)) METHOD(Image, resizeNotify, void(entity, vector, vector, vector, vector)) + METHOD(Image, updateAspect, void(entity)) ATTRIB(Image, src, string, string_null) ATTRIB(Image, color, vector, '1 1 1') ATTRIB(Image, forcedAspect, float, 0) @@ -25,9 +26,11 @@ void drawImage(entity me) { draw_Picture(me.imgOrigin, me.src, me.imgSize, me.color, 1); } -void resizeNotifyImage(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) +void updateAspectImage(entity me) { - resizeNotifyItem(me, relOrigin, relSize, absOrigin, absSize); + float asp; + if(me.size_x <= 0 || me.size_y <= 0) + return; if(me.forcedAspect == 0) { me.imgOrigin = '0 0 0'; @@ -35,17 +38,30 @@ void resizeNotifyImage(entity me, vector relOrigin, vector relSize, vector absOr } else { - if(absSize_x > me.forcedAspect * absSize_y) + if(me.forcedAspect < 0) + { + vector sz; + sz = draw_PictureSize(me.src); + asp = sz_x / sz_y; + } + else + asp = me.forcedAspect; + if(me.size_x > asp * me.size_y) { // x too large, so center x-wise - me.imgSize = eY + eX * (absSize_y * me.forcedAspect / absSize_x); + me.imgSize = eY + eX * (me.size_y * asp / me.size_x); } else { // y too large, so center y-wise - me.imgSize = eX + eY * (absSize_x / (me.forcedAspect * absSize_y)); + me.imgSize = eX + eY * (me.size_x / (asp * me.size_y)); } me.imgOrigin = '0.5 0.5 0' - 0.5 * me.imgSize; } } +void resizeNotifyImage(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) +{ + resizeNotifyItem(me, relOrigin, relSize, absOrigin, absSize); + me.updateAspect(me); +} #endif diff --git a/qcsrc/menu/xonotic/image.c b/qcsrc/menu/xonotic/image.c index 40709cd35..65f5ee9d8 100644 --- a/qcsrc/menu/xonotic/image.c +++ b/qcsrc/menu/xonotic/image.c @@ -16,13 +16,6 @@ entity makeXonoticImage(string theImage, float theAspect) void configureXonoticImageXonoticImage(entity me, string theImage, float theAspect) { me.configureImage(me, theImage); - if(theAspect < 0) // use image aspect - { - vector sz; - sz = draw_PictureSize(theImage); - me.forcedAspect = sz_x / sz_y; - } - else - me.forcedAspect = theAspect; + me.forcedAspect = theAspect; } #endif diff --git a/qcsrc/menu/xonotic/playermodel.c b/qcsrc/menu/xonotic/playermodel.c index f98b23cf1..27d5721af 100644 --- a/qcsrc/menu/xonotic/playermodel.c +++ b/qcsrc/menu/xonotic/playermodel.c @@ -47,7 +47,7 @@ void configureXonoticPlayerModelSelectorXonoticPlayerModelSelector(entity me) float sortbuf, glob, i; string fn; - me.configureXonoticImage(me, string_null, 263.0/360.0); + me.configureXonoticImage(me, string_null, -1); sortbuf = buf_create(); glob = search_begin(get_model_datafilename(string_null, -1, "txt"), TRUE, TRUE); @@ -131,6 +131,10 @@ void goXonoticPlayerModelSelector(entity me, float d) me.currentSkin = stof(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_SKIN)); me.currentModel = strzone(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_MODEL)); me.currentModelDescription = strzone(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_DESC)); + + // fix the image + me.src = me.currentModelImage; + me.updateAspect(me); } void PlayerModelSelector_Next_Click(entity btn, entity me) @@ -157,9 +161,7 @@ void drawXonoticPlayerModelSelector(entity me) float i, n; vector o; - me.src = me.currentModelImage; drawImage(me); - me.src = string_null; // draw text on the image, handle \n in the description draw_CenterText('0.5 0 0', me.currentModelTitle, me.realFontSize * (me.titleFontSize / me.fontSize), SKINCOLOR_MODELTITLE, SKINALPHA_MODELTITLE, FALSE);