Add intermission fanart, special thanks to Substance20.

This commit is contained in:
Mari the Deer 2020-03-14 14:54:07 +01:00
commit b6027efb8f
7 changed files with 82 additions and 2 deletions

View file

@ -22,3 +22,5 @@ Most of the work here is original, but there are some notable exceptions:
- MPlus font by M⁺ FONTS PROJECT (http://mplus-fonts.osdn.jp/mplus-bitmap-fonts). Modified to add gradients and drop shadow.
- Miniwi font by Josuah Demangeon (http://josuah.net). Modified to add gradients and drop shadow.
- Terrain splashes for Doom by MagicWazard.
- Intermission fanart:
* Substance20 (@S20TBL)

View file

@ -34,3 +34,6 @@ user bool swwm_shaders = true; // use pp shaders for some effects
user bool swwm_earbuster = false; // limits loudness of wallbuster fire sounds
server bool swwm_revive = false; // allows the player to do an "emergency reboot" when dying
server int swwm_revivecooldown = 30; // cooldown after using a revive, in seconds (0: no limit)
user int swwm_intertype = 0; // 0 - standard bg
// 1 - fanart
// 2 - 4komas

BIN
graphics/Fanart/S20TBL.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 KiB

View file

@ -46,6 +46,7 @@ SWWM_MCREDS = "SWWM GZ Credits";
SWWM_CLEAD = "Development Lead:";
SWWM_CASSETS = "Additional Assets:";
SWWM_CMUSIC = "Music Tracks Used:";
SWWM_CFANART = "Intermission Fanart:";
SWWM_CPATRON = "Patreon Backers:";
SWWM_CTHANK = "Special Thanks:";
SWWM_CDRAGON2 = "(For being a good pet dragon)";
@ -75,6 +76,10 @@ SWWM_OTHERVOICE = "Co-op Voice";
SWWM_REVIVE = "Emergency Reboot System";
SWWM_REVIVECOOLDOWN = "Reboot Cooldown";
SWWM_UNLIMITED = "Unlimited";
SWWM_INTERTYPE = "Intermission Art";
SWWM_INTERDEF = "N/A";
SWWM_INTERART = "Fanart";
SWWM_INTER4KOMA = "4Koma";
TOOLTIP_SWWM_VOICETYPE = "Sets the voice pack for the player.";
TOOLTIP_SWWM_MUTEVOICE = "Control what gets muted, if you'd rather have a more silent protagonist.";
TOOLTIP_SWWM_FLASHSTRENGTH = "Screen flashes usually happen when firing some weapons, you can lower this if these effects are harmful for you.";
@ -103,6 +108,7 @@ TOOLTIP_SWWM_SHADERS = "Use postprocess shaders for things like powerups and the
TOOLTIP_SWWM_OTHERVOICE = "Allows you to hear other player's voice lines, provided you're close enough.";
TOOLTIP_SWWM_REVIVE = "Allows the player to get back up after dying by pressing Fire. Has a configurable cooldown.";
TOOLTIP_SWWM_REVIVECOOLDOWN = "Time in seconds of downtime after using a reboot, where if you die again, you can't get back up. Set to 0 to allow unlimited reboots.";
TOOLTIP_SWWM_INTERTYPE = "Choose what to display in the background during intermissions.";
// knowledge base
SWWM_COMINGSOON = "(coming soon)";
SWWM_MISSTAB = "Mission";
@ -2109,6 +2115,11 @@ SWWM_INTERTIP19 = "With the right combination of dashing, boosting and wall jump
SWWM_INTERTIP20 = "In multiplayer, any keys you pick up will be immediately shared with other players.";
SWWM_INTERTIP21 = "Aim for a high score! The more enemies you kill the better. Don't forget to put that cash to use at the in-game store when you can.";
SWWM_INTERTIP22 = "Although chance boxes may sound like a terrible idea, there is a high probability of obtaining very valuable items for a much lower cost.";
// intermission fanart
SWWM_FANART = "Art: ";
SWWM_NFANART = "1";
SWWM_FANART1 = "S20TBL.jpg;Substance20 (@S20_TBL)";
// intermission 4komas (TBD)
/* SUBTITLES */
// voice name

View file

@ -45,6 +45,7 @@ SWWM_MCREDS = "Créditos de SWWM GZ";
SWWM_CLEAD = "Desarrollo Principal:";
SWWM_CASSETS = "Assets Adicionales:";
SWWM_CMUSIC = "Música Usada:";
SWWM_CFANART = "Fanart de Intermisión:";
SWWM_CPATRON = "Mecenas de Patreon:";
SWWM_CTHANK = "Agradecimientos Especiales:";
SWWM_CDRAGON2 = "(Por ser un buen dragón mascota)";
@ -74,6 +75,7 @@ SWWM_OTHERVOICE = "Voz en Cooperativo";
SWWM_REVIVE = "Sistema de Reinicio de Emergencia";
SWWM_REVIVECOOLDOWN = "Tiempo de recarga de Reinicio";
SWWM_UNLIMITED = "Ilimitado";
SWWM_INTERTYPE = "Arte de Intermisión";
TOOLTIP_SWWM_VOICETYPE = "Selecciona el pack de voz para el jugador.";
TOOLTIP_SWWM_MUTEVOICE = "Controla lo que se mutea, si prefieres tener un protagonista más silencioso.";
TOOLTIP_SWWM_FLASHSTRENGTH = "Los destellos en pantalla suelen ocurrir al disparar algunas armas, puedes reducirlo si este tipo de effectos te causan malestar.";
@ -102,6 +104,7 @@ TOOLTIP_SWWM_SHADERS = "Usa shaders de postprocesado para cosas como powerups y
TOOLTIP_SWWM_OTHERVOICE = "Te permite oír los comentarios de voz de otros jugadores, si estás lo suficientemente cerca.";
TOOLTIP_SWWM_REVIVE = "Permite al jugador volver a levantarse tras morir pulsando Fuego. Tiene un cooldown configurable.";
TOOLTIP_SWWM_REVIVECOOLDOWN = "Tiempo en segundos tras reiniciar, durante el cual si mueres otra vez, no puedes volver a levantarte. Pon a 0 para permitir reinicios ilimitados.";
TOOLTIP_SWWM_INTERTYPE = "Elige qué mostrar de fondo durante intermisiones.";
// knowledge base
SWWM_COMINGSOON = "(próximamente)";
SWWM_MISSTAB = "Misión";
@ -1866,6 +1869,9 @@ SWWM_INTERTIP19 = "Con la combinación adecuada de esprintar, impulsar, y saltar
SWWM_INTERTIP20 = "En multijugador, cualquier llave que recojas será compartida inmediatemente con otros jugadores.";
SWWM_INTERTIP21 = "¡Aumenta tu puntuación! Cuantos más enemigos elimines, mejor. No te olvides de hacer uso de esos puntos en la tienda in-game cuando puedas.";
SWWM_INTERTIP22 = "Aunque las cajas afortunadas no suenen a muy buena idea, hay muchas probabilidades de que te toquen items muy valiosos a un coste mucho más reducido.";
// intermission fanart
SWWM_INTERART = "Arte: ";
// intermission 4komas (TBD)
/* SUBTITLES */
// voice name

View file

@ -12,6 +12,12 @@ OptionValue "SWWMEnforce"
0, "$SWWM_USERSET"
1, "$SWWM_FORCEENABLE"
}
OptionValue "SWWMInterType"
{
0, "$SWWM_INTERDEF"
1, "$SWWM_INTERART"
//2, "$SWWM_INTER4KOMA"
}
OptionMenu "SWWMOptionMenu"
{
Class "SWWMOptionMenu"
@ -39,6 +45,7 @@ OptionMenu "SWWMOptionMenu"
Option "$SWWM_SCORENUMS", "swwm_scorenums", "YesNo"
Option "$SWWM_SCOREBONUS", "swwm_scorebonus", "YesNo"
Option "$SWWM_SHADERS", "swwm_shaders", "YesNo"
Option "$SWWM_INTERTYPE", "swwm_intertype", "SWWMInterType"
StaticText " "
StaticText "$SWWM_ITITLE", "Gold"
Option "$SWWM_ARMORUSE", "swwm_autousearmor", "YesNo"
@ -92,6 +99,10 @@ OptionMenu "SWWMCreditsMenu"
StaticText "Nitro", "Gold"
StaticText "Gateways Part II", "White"
StaticText " "
StaticText "$SWWM_CFANART", "Red"
StaticText " "
StaticText "Substance20 (@S20TBL)", "Gold"
StaticText " "
StaticText "$SWWM_CPATRON", "Red"
StaticText " "
StaticText "Christian Grab", "Gold"

View file

@ -1,13 +1,33 @@
Mixin Class SWWMStatScreen
{
TextureID bgtex;
transient TextureID bgtex, arttex;
transient Font TewiFont, MPlusFont;
int whichart;
transient CVar intertype, lang;
double hs;
Vector2 ss, origin;
// returns MPlus if we're playing in Japanese, otherwise returns the requested font
Font LangFont( Font req )
{
if ( !lang ) lang = CVar.GetCVar('language',players[consoleplayer]);
if ( lang.GetString() ~== "jp" ) return MPlusFont;
return req;
}
override void StartMusic()
{
S_ChangeMusic("music/DRAGONY.XM");
}
private void drawSWWMBg()
{
if ( !intertype ) intertype = CVar.GetCVar('swwm_intertype',players[consoleplayer]);
if ( !whichart )
{
int no = 0;
if ( intertype.GetInt() == 1 ) no = StringTable.Localize("$SWWM_NFANART").ToInt();
//else if ( intertype.GetInt() == 2 ) no = StringTable.Localize("$SWWM_N4KOMA").ToInt();
whichart = Random[InterArt](1,no);
}
if ( !bgtex ) bgtex = TexMan.CheckForTexture("graphics/InterBG.png",TexMan.Type_MiscPatch);
double ar = Screen.GetAspectRatio();
Vector2 tsize = TexMan.GetScaledSize(bgtex);
@ -17,7 +37,29 @@ Mixin Class SWWMStatScreen
else if ( sar < ar ) vsize = (tsize.x,tsize.x/ar);
else vsize = tsize;
Screen.DrawTexture(bgtex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true);
// TODO background pics (fanart, 4komas, etc.)
// background pics (fanart, 4komas)
if ( intertype.GetInt() == 1 )
{
String artstr = StringTable.Localize(String.Format("$SWWM_FANART%d",whichart));
int semic = artstr.IndexOf(";");
if ( !arttex ) arttex = TexMan.CheckForTexture(String.Format("graphics/Fanart/%s",artstr.Left(semic)),TexMan.Type_MiscPatch);
tsize = TexMan.GetScaledSize(arttex);
sar = tsize.x/tsize.y;
if ( sar > ar ) vsize = (tsize.y*ar,tsize.y);
else if ( sar < ar ) vsize = (tsize.x,tsize.x/ar);
else vsize = tsize;
Screen.DrawTexture(arttex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true);
String bstr = String.Format("\cx%s\c- %s",StringTable.Localize("$SWWM_FANART"),artstr.Mid(semic+1));
Font fnt = LangFont(TewiFont);
int len = fnt.StringWidth(bstr);
int bw = int((len+8)*hs), bh = int((fnt.GetHeight()+4)*hs);
Screen.Dim("Black",.8,Screen.GetWidth()-bw,Screen.GetHeight()-bh,bw,bh);
Screen.DrawText(fnt,Font.CR_GOLD,ss.x-(len+4),ss.y-(fnt.GetHeight()+2),bstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
}
/*else if ( intertype.GetInt() == 2 )
{
// TBD when there's art
}*/
// TODO intermission tips at the bottom
}
override void drawShowNextLoc( void )
@ -27,6 +69,11 @@ Mixin Class SWWMStatScreen
}
override void Drawer( void )
{
if ( !TewiFont ) TewiFont = Font.GetFont('TewiShaded');
if ( !MPlusFont ) MPlusFont = Font.GetFont('MPlusShaded');
hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/400.)),1.);
ss = (Screen.GetWidth(),Screen.GetHeight())/hs;
origin = (ss.x-640,ss.y-400)/2.;
switch ( CurState )
{
case StatCount: