Mod rebranding to "Codename: Demolitionist".
|
|
@ -1,7 +1,8 @@
|
||||||
## Some Weird Weapons Mod ~ GZDoom Edition
|
|
||||||

|

|
||||||
|
|
||||||
**SWWM GZ** brings to **GZDoom** a "best of" collection of custom weapons I've made for **Unreal Tournament**, plus many new things that didn't make the cut there. It is also effectively a reboot of the entire **SWWM** series, which unfortunately ended with the cancelled **SWWM Z**, this mod's direct predecessor.
|
**Codename: Demolitionist** is an all-original gameplay mod for **GZDoom** with a basis on rapid, fluid movement mechanics as well as very satisfying, punchy, strong weaponry. In it, you play as the titular **Demolitionist**, a robot with quite a personality, who's destined to save the day, as explosively as necessary.
|
||||||
|
|
||||||
|
The mod's arsenal could be seen as a *"best of"* collection of custom weapons I've made for **Unreal Tournament**, plus many new things that didn't make the cut there. It is also effectively a reboot of the entire **Some Weird Weapons Mod *(SWWM)*** series, which unfortunately ended with the cancelled **SWWM Z**, this mod's direct predecessor *(hence this project originally starting its days under the name of **SWWM GZ**)*.
|
||||||
|
|
||||||
It contains weapons and items remastered and revived from old projects such as the previous **SWWM** entries, along with the **Zanaveth Ultra Suite** side project, and also notably, the main **UnSX** series that never truly saw the light of day, as all work done on it so far has been lost forever. There may also be some original things here and there just to spice things up.
|
It contains weapons and items remastered and revived from old projects such as the previous **SWWM** entries, along with the **Zanaveth Ultra Suite** side project, and also notably, the main **UnSX** series that never truly saw the light of day, as all work done on it so far has been lost forever. There may also be some original things here and there just to spice things up.
|
||||||
|
|
||||||
|
|
@ -556,6 +557,6 @@ These components are toggleable.
|
||||||
|
|
||||||
That's all the info I can provide on this here Readme file, at least for now. Stay tuned for much more that will come in the future, as this mod is in constant development.
|
That's all the info I can provide on this here Readme file, at least for now. Stay tuned for much more that will come in the future, as this mod is in constant development.
|
||||||
|
|
||||||
Anyway, hope you have lots of fun playing **SWWM GZ**. Godspeed, and happy fragging!
|
Anyway, hope you have lots of fun playing **Codename: Demolitionist**. Godspeed, and happy fragging!
|
||||||
|
|
||||||
— *Marisa*
|
— *Marisa*
|
||||||
|
|
|
||||||
1
animdefs.misc
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
cameratexture LOGOFADE 64 64
|
||||||
|
|
@ -122,6 +122,9 @@ nosave noarchive bool swwm_tooltipnote = false; // set if the note on how to dis
|
||||||
nosave bool swwm_nointertips = false; // hides intermission tips, in case you don't want to see them
|
nosave bool swwm_nointertips = false; // hides intermission tips, in case you don't want to see them
|
||||||
server bool swwm_demoslayer = false; // if you're below 100hp, enemies drop healing orbs when you kill them
|
server bool swwm_demoslayer = false; // if you're below 100hp, enemies drop healing orbs when you kill them
|
||||||
nosave bool swwm_beepboop = false; // prompts the Demolitionist to go "beep", "boop" and "bop" when pressing any switch (may get annoying)
|
nosave bool swwm_beepboop = false; // prompts the Demolitionist to go "beep", "boop" and "bop" when pressing any switch (may get annoying)
|
||||||
|
nosave bool swwm_oldlogo = false; // restores the old SWWM GZ logo and intro
|
||||||
|
nosave string swwm_menuposehistory = ""; // stores currently seen poses for the main menu, for shuffling
|
||||||
|
nosave string swwm_titlesubhistory = ""; // stores currently seen subtitles for the title screen, for shuffling
|
||||||
|
|
||||||
// minimap settings
|
// minimap settings
|
||||||
nosave bool swwm_mm_enable = true; // show a minimap below the score counter
|
nosave bool swwm_mm_enable = true; // show a minimap below the score counter
|
||||||
|
|
|
||||||
|
|
@ -570,5 +570,7 @@ decal HeartyGlow
|
||||||
decal DemoSpray
|
decal DemoSpray
|
||||||
{
|
{
|
||||||
pic DemoIcon
|
pic DemoIcon
|
||||||
|
x-scale 0.25
|
||||||
|
y-scale 0.25
|
||||||
solid
|
solid
|
||||||
}
|
}
|
||||||
|
|
|
||||||
BIN
docimg/logo.png
|
Before Width: | Height: | Size: 887 KiB After Width: | Height: | Size: 767 KiB |
62
gldefs.misc
|
|
@ -60,6 +60,68 @@ HardwareShader Texture "graphics/M_SWWM.png"
|
||||||
Texture "Layer6" "graphics/M_SWWM_Layer6.png"
|
Texture "Layer6" "graphics/M_SWWM_Layer6.png"
|
||||||
Define "NO_BILINEAR"
|
Define "NO_BILINEAR"
|
||||||
}
|
}
|
||||||
|
HardwareShader Texture "graphics/NewLogo.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/NewLogoAnimated.fp"
|
||||||
|
// what no 2d arrays does to a mf
|
||||||
|
Texture "Layer1" "graphics/NewLogo_Layer1.png"
|
||||||
|
Texture "Layer2" "graphics/NewLogo_Layer2.png"
|
||||||
|
Texture "Layer3" "graphics/NewLogo_Layer3.png"
|
||||||
|
Texture "gradtex" "graphics/NewLogo_Grad.png"
|
||||||
|
Texture "fadetex" "LOGOFADE"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOLITIONIST.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/DemoIcon.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_DEEPIMPACT.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_EXPLOGUN.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_SPREADGUN.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_WALLBUSTER.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_EVISCERATOR.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_HELLBLAZER.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_BIOSPARK.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_SILVERBULLET.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_CANDYGUN.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_YNYKRON.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
|
HardwareShader Texture "graphics/M_DEMOCHAN_PUSHER.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
}
|
||||||
HardwareShader Texture "graphics/UnSXLogo.png"
|
HardwareShader Texture "graphics/UnSXLogo.png"
|
||||||
{
|
{
|
||||||
Shader "shaders/glsl/Bilinear.fp"
|
Shader "shaders/glsl/Bilinear.fp"
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 534 B After Width: | Height: | Size: 683 B |
BIN
graphics/M_DEMOCHAN_BIOSPARK.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
graphics/M_DEMOCHAN_CANDYGUN.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
graphics/M_DEMOCHAN_DEEPIMPACT.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
graphics/M_DEMOCHAN_EVISCERATOR.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
graphics/M_DEMOCHAN_EXPLOGUN.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
graphics/M_DEMOCHAN_HELLBLAZER.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
graphics/M_DEMOCHAN_PUSHER.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
graphics/M_DEMOCHAN_SILVERBULLET.png
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
BIN
graphics/M_DEMOCHAN_SPREADGUN.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
graphics/M_DEMOCHAN_WALLBUSTER.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
graphics/M_DEMOCHAN_YNYKRON.png
Normal file
|
After Width: | Height: | Size: 2 MiB |
BIN
graphics/M_DEMOLITIONIST.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
graphics/M_GRAD.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
graphics/NewLogo.png
Normal file
|
After Width: | Height: | Size: 2 MiB |
BIN
graphics/NewLogo_Grad.png
Normal file
|
After Width: | Height: | Size: 824 B |
BIN
graphics/NewLogo_Layer1.png
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
BIN
graphics/NewLogo_Layer2.png
Normal file
|
After Width: | Height: | Size: 770 KiB |
BIN
graphics/NewLogo_Layer3.png
Normal file
|
After Width: | Height: | Size: 407 KiB |
BIN
graphics/NewLogo_Letter0.png
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
graphics/NewLogo_Letter1.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
graphics/NewLogo_Letter10.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
graphics/NewLogo_Letter11.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
graphics/NewLogo_Letter12.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
graphics/NewLogo_Letter2.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
graphics/NewLogo_Letter3.png
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
graphics/NewLogo_Letter4.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
graphics/NewLogo_Letter5.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
graphics/NewLogo_Letter6.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
graphics/NewLogo_Letter7.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
graphics/NewLogo_Letter8.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
graphics/NewLogo_Letter9.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
|
|
@ -221,7 +221,7 @@ TXT_DEFAULTPICKUPMSG = "Unidentified Item";
|
||||||
QUITMSG = "You really want to go?\nWhat a shame...";
|
QUITMSG = "You really want to go?\nWhat a shame...";
|
||||||
QUITMSG1 = "Wow, don't just go and leave!\nThere's still a lot of stuff to do!";
|
QUITMSG1 = "Wow, don't just go and leave!\nThere's still a lot of stuff to do!";
|
||||||
QUITMSG2 = "Oh, you're going now?\nWell, see you around, then.";
|
QUITMSG2 = "Oh, you're going now?\nWell, see you around, then.";
|
||||||
QUITMSG3 = "Thanks for playing \cySWWM GZ\c-.\nI hope to see you again soon.";
|
QUITMSG3 = "Thank you for playing.\nI hope to see you again soon.";
|
||||||
QUITMSG4 = "<See you again, have a nice day>";
|
QUITMSG4 = "<See you again, have a nice day>";
|
||||||
QUITMSG5 = "Ah, fun time is over, I guess...";
|
QUITMSG5 = "Ah, fun time is over, I guess...";
|
||||||
QUITMSG6 = "My love for you is like a truck.\n\cg!!BERSERKER!!\c-";
|
QUITMSG6 = "My love for you is like a truck.\n\cg!!BERSERKER!!\c-";
|
||||||
|
|
@ -686,17 +686,41 @@ D_TETHERFAIL = "The Safety Tether link was obstructed.";
|
||||||
D_MASHIRO = "\cjShe knows where you are...\c-";
|
D_MASHIRO = "\cjShe knows where you are...\c-";
|
||||||
SWWM_YNYKRONREADY = "Ynykron Artifact ready for firing.";
|
SWWM_YNYKRONREADY = "Ynykron Artifact ready for firing.";
|
||||||
SWWM_SWAPWEAPON = "\cjPress \cfUse\cj to swap \cf%s\cj for \cf%s\cj.\c-";
|
SWWM_SWAPWEAPON = "\cjPress \cfUse\cj to swap \cf%s\cj for \cf%s\cj.\c-";
|
||||||
|
SWWM_TITLEPRESENTSA = "UnSX Team";
|
||||||
|
SWWM_TITLEPRESENTSB = "presents";
|
||||||
SWWM_TITLEPRESENTS = "presents";
|
SWWM_TITLEPRESENTS = "presents";
|
||||||
|
SWWM_TITLEMODBYA = "a mod by";
|
||||||
|
SWWM_TITLEMODBYB = "Marisa Kirisame";
|
||||||
SWWM_TITLEMODBY = "a mod by \cxMarisa Kirisame";
|
SWWM_TITLEMODBY = "a mod by \cxMarisa Kirisame";
|
||||||
SWWM_TITLESCROLL = "SWWM GZ ~ Cute Robutt Whomst Love To Explode Demons\n"
|
SWWM_TITLEINTROA = "On that day, humankind saw itself in dire danger, facing an impending doom.";
|
||||||
"A wondrous GZDoom gameplay mod by Marisa Kirisame of UnSX Team\n"
|
SWWM_TITLEINTROB = "But one machine stood up, who fought back, who could end this whole invasion.";
|
||||||
"Lovingly designed 3D models with hand-painted 256-color dithered textures\n"
|
SWWM_TITLEINTROC = "The demons would learn to fear that machine, who they know only by one name...";
|
||||||
"Almost 60k lines of ZScript, and still counting (god help me)\n"
|
SWWM_NTITLESCROLL = "9";
|
||||||
"The deepest lore this side of the Doom Modiverse\n"
|
SWWM_TITLESCROLL1 = "SWWM GZ ~ Cute Robutt Whomst Love To Explode Demons";
|
||||||
"And much much more!\n"
|
SWWM_TITLESCROLL1_NEW = "Codename: Demolitionist ~ Cute Robutt Whomst Love To Explode Demons";
|
||||||
"Greetz to Mub, Ribbed, Slemg, Bunr, Kegbine, Term-kun, Hype64, Bartendy, Skelly, Mr. BIG SHOT WildWeasel, Endy, Mima-sama, Sinkie, BillowPlaster, Disgusting Dog Water, Dangle Logo, Lämp Paipu, Leek Spah, Boingy, MarTREE, Dusty Demon Bread, Roasted Rock, Ed the Netcode Boy, Thirst Cactus, JimJam, Cappy Jay, A Nom, Missy Fits, Minor Cookie, Squid Kid, YukiCute, MafSulk, FineRaff25, NetroRutcase, ShudTheFugUpRyan, Kobl, Cacous Seriodemon, Zomb, Man of Chins, Bun Pun, Zikeous Shadestructor, Blimyot, Baja Blast Tittums, DrySpy.py, Typo Gem, Wantopus, Morf, Daedalus, Popato, SpengRob, Sgt. Shellpost, Loud M, Snk, Donut, C.Kid, Emit Birb, You Go To Sleep, Rach, Le No Chicken, Murasa, Smart Cactus Dude, Phantomboobs, Sanae Kochiya, Gardeboy, Cat, HK417, Smol Koa, Joe Mama, Jahn, Guta, Glue, Atan, Schweet Prints, Angury Teeth Practitioner, Sell Her, MiSiFu, Portuguese Sausage, Scoob Stub, Actually Jabba, Very Honest Cat, Chiaki's Tit Mole, Homie, Snacks, Tubz, Toof, Teef, Frisp, Trashkat, Succ 'n Spicy, Melissa Follower When, Shokku, Scummyboi, Kat Gravity Rush, John Romero, John Carmack, Tim Allen, Tim Sweeney and last but not least my beloved pet dragon\n"
|
SWWM_TITLESCROLL2 = "A wondrous GZDoom gameplay mod by Marisa Kirisame of UnSX Team";
|
||||||
"I tried to squeeze as many names as possible in there, that I could remember, at least, so if you're not in there and want in, feel free to ask\n"
|
SWWM_TITLESCROLL3 = "Lovingly designed 3D models with hand-painted 256-color dithered textures";
|
||||||
"There's nothing else to see here, the scroll will now wrap around, see you again, have a nice day";
|
SWWM_TITLESCROLL4 = "Over 60k lines of ZScript, and still counting (god help me)";
|
||||||
|
SWWM_TITLESCROLL5 = "The deepest lore this side of the Doom Modiverse";
|
||||||
|
SWWM_TITLESCROLL6 = "And much much more!";
|
||||||
|
SWWM_TITLESCROLL7 = "Greetz to Mub, Ribbed, Slemg, Bunr, Kegbine, Term-kun, Hype64, Bartendy, Skelly, Mr. BIG SHOT WildWeasel, Endy, Mima-sama, Sinkie, BillowPlaster, Disgusting Dog Water, Dangle Logo, Lämp Paipu, Leek Spah, Boingy, MarTREE, Dusty Demon Bread, Roasted Rock, Ed the Netcode Boy, Thirst Cactus, JimJam, Cappy Jay, A Nom, Missy Fits, Minor Cookie, Squid Kid, YukiCute, MafSulk, FineRaff25, NetroRutcase, ShudTheFugUpRyan, Kobl, Cacous Seriodemon, Zomb, Man of Chins, Bun Pun, Zikeous Shadestructor, Blimyot, Baja Blast Tittums, DrySpy.py, Typo Gem, Wantopus, Morf, Daedalus, Popato, SpengRob, Sgt. Shellpost, Loud M, Snk, Donut, C.Kid, Emit Birb, You Go To Sleep, Rach, Le No Chicken, Murasa, Smart Cactus Dude, Phantomboobs, Sanae Kochiya, Gardeboy, Cat, HK417, Smol Koa, Joe Mama, Jahn, Guta, Glue, Atan, Schweet Prints, Angury Teeth Practitioner, Sell Her, MiSiFu, Portuguese Sausage, Scoob Stub, Actually Jabba, Very Honest Cat, Chiaki's Tit Mole, Homie, Snacks, Tubz, Toof, Teef, Frisp, Trashkat, Succ 'n Spicy, Melissa Follower When, Shokku, Scummyboi, Kat Gravity Rush, John Romero, John Carmack, Tim Allen, Tim Sweeney and last but not least my beloved pet dragon";
|
||||||
|
SWWM_TITLESCROLL8 = "I tried to squeeze as many names as possible in there, that I could remember, at least, so if you're not in there and want in, feel free to ask";
|
||||||
|
SWWM_TITLESCROLL9 = "There's nothing else to see here, the scroll will now wrap around, see you again, have a nice day";
|
||||||
|
SWWM_NTITLESUB = "14";
|
||||||
|
SWWM_TITLESUB1 = "The World Is In Danger And We Have Just Sent\nThis Double-Cheeked Sassy Robot To Save It!?";
|
||||||
|
SWWM_TITLESUB2 = "&Knuckles";
|
||||||
|
SWWM_TITLESUB3 = "The mod previously known as SWWM GZ";
|
||||||
|
SWWM_TITLESUB4 = "I'm so sorry, Icarus, but you\ncan no longer call this Swim Jizz";
|
||||||
|
SWWM_TITLESUB5 = "Do you like guns? We got guns!\nBig guns! Small guns! All the guns!";
|
||||||
|
SWWM_TITLESUB6 = "Featuring revolutionary Shiny Metal Cheeks™ technology!";
|
||||||
|
SWWM_TITLESUB7 = "This ain't your ordinary gameplay mod, no sir";
|
||||||
|
SWWM_TITLESUB8 = "The misadventures of a very sassy robot\nand all their fun explosive toys";
|
||||||
|
SWWM_TITLESUB9 = "Featuring Dante from the Devil May Cry series\n(not really, that's a joke)";
|
||||||
|
SWWM_TITLESUB10 = "<Insert witty subtitle here>";
|
||||||
|
SWWM_TITLESUB11 = "Slaughterwads too hard? No problem!\nJust play them with this mod!";
|
||||||
|
SWWM_TITLESUB12 = " Did you know this subtitle is misaligned?";
|
||||||
|
SWWM_TITLESUB13 = "I like big explosions and I cannot lie";
|
||||||
|
SWWM_TITLESUB14 = "If you wrapped a cat in a tortilla,\nwould you call that a purrito?";
|
||||||
SWWM_UNIT_METER = "m";
|
SWWM_UNIT_METER = "m";
|
||||||
SWWM_UNIT_KILOMETER = "km";
|
SWWM_UNIT_KILOMETER = "km";
|
||||||
SWWM_UNIT_KPH = "km/h";
|
SWWM_UNIT_KPH = "km/h";
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[default]
|
[default]
|
||||||
// keybinds
|
// keybinds
|
||||||
SWWM_KEYS = "SWWM GZ Bindings";
|
SWWM_KEYS = "DEMOLITIONIST Bindings";
|
||||||
SWWM_PRIMARYFIRE = "Primary Fire";
|
SWWM_PRIMARYFIRE = "Primary Fire";
|
||||||
SWWM_SECONDARYFIRE = "Secondary Fire";
|
SWWM_SECONDARYFIRE = "Secondary Fire";
|
||||||
SWWM_RELOADFIRE = "Reload";
|
SWWM_RELOADFIRE = "Reload";
|
||||||
|
|
@ -29,7 +29,7 @@ SWWM_SKHARDCORECONFIRM = "\cgYou think the mod's too easy?\nPrepare yourself.\c-
|
||||||
SWWM_SKLUNATIC = "\crI WANT DIE\c-";
|
SWWM_SKLUNATIC = "\crI WANT DIE\c-";
|
||||||
SWWM_SKLUNATICCONFIRM = "\crYou will die, you will suffer.\nThat, I can guarantee.\c-\n\n\cfAll changes from Masochist\n+\n2x speedup for all enemy actions\nEnemy projectiles will multiply\nAdditional enemies may spawn\nEnemies react instantly\nEnemies don't flinch\nInfighting is disabled\c-\n\n(Press Y to die instantly)";
|
SWWM_SKLUNATICCONFIRM = "\crYou will die, you will suffer.\nThat, I can guarantee.\c-\n\n\cfAll changes from Masochist\n+\n2x speedup for all enemy actions\nEnemy projectiles will multiply\nAdditional enemies may spawn\nEnemies react instantly\nEnemies don't flinch\nInfighting is disabled\c-\n\n(Press Y to die instantly)";
|
||||||
// mod menu
|
// mod menu
|
||||||
SWWM_MTITLE = "SWWM GZ Options";
|
SWWM_MTITLE = "DEMOLITIONIST Options";
|
||||||
SWWM_PTITLE = "Player Options";
|
SWWM_PTITLE = "Player Options";
|
||||||
SWWM_VOICETYPE = "Demolitionist Voice Pack";
|
SWWM_VOICETYPE = "Demolitionist Voice Pack";
|
||||||
SWWM_MUTELEVEL = "Voice Muting Level";
|
SWWM_MUTELEVEL = "Voice Muting Level";
|
||||||
|
|
@ -216,6 +216,7 @@ SWWM_DEMOSLAYER = "Demoslayer Mode";
|
||||||
SWWM_BEEPBOOP = "Switch Emoting";
|
SWWM_BEEPBOOP = "Switch Emoting";
|
||||||
SWWM_VOICEAMP = "Voice Amplification";
|
SWWM_VOICEAMP = "Voice Amplification";
|
||||||
SWWM_CLEARFX = "Clear All Effects";
|
SWWM_CLEARFX = "Clear All Effects";
|
||||||
|
SWWM_OLDLOGO = "Old Branding";
|
||||||
SWWM_MMTITLE = "Minimap Settings";
|
SWWM_MMTITLE = "Minimap Settings";
|
||||||
SWWM_MM_ENABLE = "Show Minimap";
|
SWWM_MM_ENABLE = "Show Minimap";
|
||||||
SWWM_MM_ROTATE = "Rotate Minimap";
|
SWWM_MM_ROTATE = "Rotate Minimap";
|
||||||
|
|
@ -379,6 +380,7 @@ TOOLTIP_SWWM_DEMOSLAYER = "Killed enemies may drop health and armor orbs.";
|
||||||
TOOLTIP_SWWM_BEEPBOOP = "The Demolitionist will make cute noises whenever pressing any usable line. This might get annoying, so it's optional.";
|
TOOLTIP_SWWM_BEEPBOOP = "The Demolitionist will make cute noises whenever pressing any usable line. This might get annoying, so it's optional.";
|
||||||
TOOLTIP_SWWM_VOICEAMP = "At their default volume, the Demolitionist's voice lines might be drowned out by in-game audio. This sets an additional amplification level so they're louder than other sounds.";
|
TOOLTIP_SWWM_VOICEAMP = "At their default volume, the Demolitionist's voice lines might be drowned out by in-game audio. This sets an additional amplification level so they're louder than other sounds.";
|
||||||
TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Fades out any active blood, gore, debris and casings.";
|
TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Fades out any active blood, gore, debris and casings.";
|
||||||
|
TOOLTIP_SWWM_OLDLOGO = "For those who miss the days of SWWM GZ, you can restore the old title screen and main menu with this.";
|
||||||
TOOLTIP_SWWMMINIMAPMENU = "Configure the minimap.";
|
TOOLTIP_SWWMMINIMAPMENU = "Configure the minimap.";
|
||||||
TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements.";
|
TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements.";
|
||||||
TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap under the score counter.";
|
TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap under the score counter.";
|
||||||
|
|
@ -415,8 +417,21 @@ TOOLTIP_SWWM_MM_THINGCOLOR_CITEM = "Color for items that count towards map tally
|
||||||
TOOLTIP_SWWM_MM_THINGCOLOR_VIPITEM = "Color for very important items.";
|
TOOLTIP_SWWM_MM_THINGCOLOR_VIPITEM = "Color for very important items.";
|
||||||
TOOLTIP_SWWM_MM_THINGCOLOR_SHOOTABLE = "Color for things that can be damaged.";
|
TOOLTIP_SWWM_MM_THINGCOLOR_SHOOTABLE = "Color for things that can be damaged.";
|
||||||
TOOLTIP_SWWM_MM_THINGCOLOR_MISSILE = "Color for projectiles.";
|
TOOLTIP_SWWM_MM_THINGCOLOR_MISSILE = "Color for projectiles.";
|
||||||
|
// main menu poses (do not localize)
|
||||||
|
SWWM_NMENUPOSE = "11";
|
||||||
|
SWWM_MENUPOSE1 = "graphics/M_DEMOCHAN_DEEPIMPACT.png";
|
||||||
|
SWWM_MENUPOSE2 = "graphics/M_DEMOCHAN_EXPLOGUN.png";
|
||||||
|
SWWM_MENUPOSE3 = "graphics/M_DEMOCHAN_SPREADGUN.png";
|
||||||
|
SWWM_MENUPOSE4 = "graphics/M_DEMOCHAN_WALLBUSTER.png";
|
||||||
|
SWWM_MENUPOSE5 = "graphics/M_DEMOCHAN_EVISCERATOR.png";
|
||||||
|
SWWM_MENUPOSE6 = "graphics/M_DEMOCHAN_HELLBLAZER.png";
|
||||||
|
SWWM_MENUPOSE7 = "graphics/M_DEMOCHAN_BIOSPARK.png";
|
||||||
|
SWWM_MENUPOSE8 = "graphics/M_DEMOCHAN_SILVERBULLET.png";
|
||||||
|
SWWM_MENUPOSE9 = "graphics/M_DEMOCHAN_CANDYGUN.png";
|
||||||
|
SWWM_MENUPOSE10 = "graphics/M_DEMOCHAN_YNYKRON.png";
|
||||||
|
SWWM_MENUPOSE11 = "graphics/M_DEMOCHAN_PUSHER.png";
|
||||||
// credits
|
// credits
|
||||||
SWWM_MCREDS = "SWWM GZ Credits";
|
SWWM_MCREDS = "DEMOLITIONIST Credits";
|
||||||
SWWM_CSTITLE = "UnSX Side Story: Demolitionist";
|
SWWM_CSTITLE = "UnSX Side Story: Demolitionist";
|
||||||
SWWM_CSTITLE2 = "Cute Robutt Whomst Love To Explode Demons";
|
SWWM_CSTITLE2 = "Cute Robutt Whomst Love To Explode Demons";
|
||||||
SWWM_CLEAD = "Development Lead:";
|
SWWM_CLEAD = "Development Lead:";
|
||||||
|
|
|
||||||
|
|
@ -203,7 +203,7 @@ TXT_DEFAULTPICKUPMSG = "Ítem No Identificado";
|
||||||
QUITMSG = "¿En serio quieres irte?\nPues que pena...";
|
QUITMSG = "¿En serio quieres irte?\nPues que pena...";
|
||||||
QUITMSG1 = "Wow, pero no te vayas aun,\n¡quedan muchas cosas que hacer!";
|
QUITMSG1 = "Wow, pero no te vayas aun,\n¡quedan muchas cosas que hacer!";
|
||||||
QUITMSG2 = "¿Oh, te marchas ya? Pues nada,\nnos vemos luego, supongo.";
|
QUITMSG2 = "¿Oh, te marchas ya? Pues nada,\nnos vemos luego, supongo.";
|
||||||
QUITMSG3 = "Gracias por jugar a \cySWWM GZ\c-.\nEspero volverte a ver pronto.";
|
QUITMSG3 = "Gracias por jugar.\nEspero volverte a ver pronto.";
|
||||||
QUITMSG5 = "Ah, se acabó la fiesta, supongo...";
|
QUITMSG5 = "Ah, se acabó la fiesta, supongo...";
|
||||||
QUITMSG6 = "Mi amor por ti es como un camión.\n\cg!!BERSERKER!!\c-";
|
QUITMSG6 = "Mi amor por ti es como un camión.\n\cg!!BERSERKER!!\c-";
|
||||||
QUITMSG7 = "No te vayas ahora, o \cfSaya\c- hablará\nmal de ti en Twitter punto com.";
|
QUITMSG7 = "No te vayas ahora, o \cfSaya\c- hablará\nmal de ti en Twitter punto com.";
|
||||||
|
|
@ -580,16 +580,34 @@ D_TETHERFAIL = "El vínculo del Enlace de Seguridad fue obstruído.";
|
||||||
D_MASHIRO = "\cjSabe donde estás...\c-";
|
D_MASHIRO = "\cjSabe donde estás...\c-";
|
||||||
SWWM_YNYKRONREADY = "Artefacto Ynykron listo para disparar.";
|
SWWM_YNYKRONREADY = "Artefacto Ynykron listo para disparar.";
|
||||||
SWWM_SWAPWEAPON = "\cjPulsa \cfUsar\cj para cambiar \cf%s\cj por \cf%s\cj.\c-";
|
SWWM_SWAPWEAPON = "\cjPulsa \cfUsar\cj para cambiar \cf%s\cj por \cf%s\cj.\c-";
|
||||||
|
SWWM_TITLEPRESENTSB = "presenta";
|
||||||
SWWM_TITLEPRESENTS = "presenta";
|
SWWM_TITLEPRESENTS = "presenta";
|
||||||
|
SWWM_TITLEMODBYA = "un mod de";
|
||||||
SWWM_TITLEMODBY = "un mod de \cxMarisa Kirisame";
|
SWWM_TITLEMODBY = "un mod de \cxMarisa Kirisame";
|
||||||
SWWM_TITLESCROLL = "SWWM GZ ~ Cute Robutt Whomst Love To Explode Demons\n"
|
SWWM_TITLEINTROA = "Ese día, la humanidad se vió en peligro, enfrentándose a su propia perdición.";
|
||||||
"Un maravilleante mod de gameplay para GZDoom por Marisa Kirisame de UnSX Team\n"
|
SWWM_TITLEINTROB = "Pero una máquina se alzó, decidida a luchar, y poner fin a toda esta invasión.";
|
||||||
"Modelos 3D diseñados con cariño con texturas pintadas a mano de 256 colores con dithering\n"
|
SWWM_TITLEINTROC = "Los demonios aprenderían a temer la máquina, la cual conocen por un solo nombre...";
|
||||||
"Casi 60 mil líneas de ZScript, y aun contando (dios me ayude)\n"
|
SWWM_TITLESCROLL2 = "Un maravilleante mod de gameplay para GZDoom por Marisa Kirisame de UnSX Team";
|
||||||
"El lore más profundo a este lado del Modiverso de Doom\n"
|
SWWM_TITLESCROLL3 = "Modelos 3D diseñados con cariño con texturas pintadas a mano de 256 colores con dithering";
|
||||||
"¡Y mucho mucho más!\nSaludos a Mub, Ribbed, Slemg, Bunr, Kegbine, Term-kun, Hype64, Bartendy, Skelly, Mr. BIG SHOT WildWeasel, Endy, Mima-sama, Sinkie, BillowPlaster, Disgusting Dog Water, Dangle Logo, Lämp Paipu, Leek Spah, Boingy, MarTREE, Dusty Demon Bread, Roasted Rock, Ed the Netcode Boy, Thirst Cactus, JimJam, Cappy Jay, A Nom, Missy Fits, Minor Cookie, Squid Kid, YukiCute, MafSulk, FineRaff25, NetroRutcase, ShudTheFugUpRyan, Kobl, Cacous Seriodemon, Zomb, Man of Chins, Bun Pun, Zikeous Shadestructor, Blimyot, Baja Blast Tittums, DrySpy.py, Typo Gem, Wantopus, Morf, Daedalus, Popato, SpengRob, Sgt. Shellpost, Loud M, Snk, Donut, C.Kid, Emit Birb, You Go To Sleep, Rach, Le No Chicken, Murasa, Smart Cactus Dude, Phantomboobs, Sanae Kochiya, Gardeboy, Cat, HK417, Smol Koa, Joe Mama, Jahn, Guta, Glue, Atan, Schweet Prints, Angury Teeth Practitioner, Sell Her, MiSiFu, Portuguese Sausage, Scoob Stub, Actually Jabba, Very Honest Cat, Chiaki's Tit Mole, Homie, Snacks, Tubz, Toof, Teef, Frisp, Trashkat, Succ 'n Spicy, Melissa Follower When, Shokku, Scummyboi, Kat Gravity Rush, John Romero, John Carmack, Tim Allen, Tim Sweeney y por último pero no menos importante mi querido dragón mascota\n"
|
SWWM_TITLESCROLL4 = "Más de 60 mil líneas de ZScript, y aun contando (dios me ayude)";
|
||||||
"He intentado estrujar todos los nombres que he podido ahí, que haya podido recordar, por lo menos, así que si no estás ahí y quieres entrar, solo pídelo\n"
|
SWWM_TITLESCROLL5 = "El lore más profundo a este lado del Modiverso de Doom";
|
||||||
"Ya no queda nada más que ver aquí, el scroll ahora hará bucle, see you again, have a nice day";
|
SWWM_TITLESCROLL6 = "¡Y mucho mucho más!";
|
||||||
|
SWWM_TITLESCROLL7 = "Saludos a Mub, Ribbed, Slemg, Bunr, Kegbine, Term-kun, Hype64, Bartendy, Skelly, Mr. BIG SHOT WildWeasel, Endy, Mima-sama, Sinkie, BillowPlaster, Disgusting Dog Water, Dangle Logo, Lämp Paipu, Leek Spah, Boingy, MarTREE, Dusty Demon Bread, Roasted Rock, Ed the Netcode Boy, Thirst Cactus, JimJam, Cappy Jay, A Nom, Missy Fits, Minor Cookie, Squid Kid, YukiCute, MafSulk, FineRaff25, NetroRutcase, ShudTheFugUpRyan, Kobl, Cacous Seriodemon, Zomb, Man of Chins, Bun Pun, Zikeous Shadestructor, Blimyot, Baja Blast Tittums, DrySpy.py, Typo Gem, Wantopus, Morf, Daedalus, Popato, SpengRob, Sgt. Shellpost, Loud M, Snk, Donut, C.Kid, Emit Birb, You Go To Sleep, Rach, Le No Chicken, Murasa, Smart Cactus Dude, Phantomboobs, Sanae Kochiya, Gardeboy, Cat, HK417, Smol Koa, Joe Mama, Jahn, Guta, Glue, Atan, Schweet Prints, Angury Teeth Practitioner, Sell Her, MiSiFu, Portuguese Sausage, Scoob Stub, Actually Jabba, Very Honest Cat, Chiaki's Tit Mole, Homie, Snacks, Tubz, Toof, Teef, Frisp, Trashkat, Succ 'n Spicy, Melissa Follower When, Shokku, Scummyboi, Kat Gravity Rush, John Romero, John Carmack, Tim Allen, Tim Sweeney y por último pero no menos importante mi querido dragón mascota";
|
||||||
|
SWWM_TITLESCROLL8 = "He intentado estrujar todos los nombres que he podido ahí, que haya podido recordar, por lo menos, así que si no estás ahí y quieres entrar, solo pídelo";
|
||||||
|
SWWM_TITLESCROLL9 = "Ya no queda nada más que ver aquí, el scroll ahora hará bucle, see you again, have a nice day";
|
||||||
|
SWWM_TITLESUB1 = "El Mundo Está En Peligro Y Acabamos De Mandar\nEste Robot Culogordo Guasón Para Salvarlo!?";
|
||||||
|
SWWM_TITLESUB3 = "El mod anteriormente conocido como SWWM GZ";
|
||||||
|
SWWM_TITLESUB4 = "Lo siento mucho, Icarus, pero ya\nno puedes llamarlo Swim Jizz";
|
||||||
|
SWWM_TITLESUB5 = "¿Te gustan las armas? ¡Tenemos armas!\n¡Armas grandes! ¡Armas pequeñas! ¡Todas las armas!";
|
||||||
|
SWWM_TITLESUB6 = "¡Con tecnología revolucionaria de Brillantes Nalgas Metálicas!";
|
||||||
|
SWWM_TITLESUB7 = "Este no es el típico mod de gameplay, no señor";
|
||||||
|
SWWM_TITLESUB8 = "Las desaventuras de un robot graciosillo\ny todos sus juguetes explosivos";
|
||||||
|
SWWM_TITLESUB9 = "Presentando a Dante de la serie Devil May Cry\n(bueno no, es broma)";
|
||||||
|
SWWM_TITLESUB10 = "<Insertar subtítulo ingenioso aquí>";
|
||||||
|
SWWM_TITLESUB11 = "¿Slaughterwads demasiado difíciles? ¡No hay problema!\n¡Solo tienes que jugarlos con este mod!";
|
||||||
|
SWWM_TITLESUB12 = " ¿Sabías que este subtítulo está desencuadrado?";
|
||||||
|
SWWM_TITLESUB13 = "Me gustan las grandes explosiones y no puedo mentir";
|
||||||
|
SWWM_TITLESUB14 = "Si las gafas son buenas para la vista,\n¿por que no llevan lentes?";
|
||||||
SWWM_YOURSELF = "Tú";
|
SWWM_YOURSELF = "Tú";
|
||||||
SWWM_DOKIDOKI = "El Poder del Amor™";
|
SWWM_DOKIDOKI = "El Poder del Amor™";
|
||||||
SWWM_GRAVKILL = "Gravedad";
|
SWWM_GRAVKILL = "Gravedad";
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[es]
|
[es]
|
||||||
// keybinds
|
// keybinds
|
||||||
SWWM_KEYS = "Controles de SWWM GZ";
|
SWWM_KEYS = "Controles de DEMOLITIONIST";
|
||||||
SWWM_PRIMARYFIRE = "Fuego Primario";
|
SWWM_PRIMARYFIRE = "Fuego Primario";
|
||||||
SWWM_SECONDARYFIRE = "Fuego Secundario";
|
SWWM_SECONDARYFIRE = "Fuego Secundario";
|
||||||
SWWM_RELOADFIRE = "Recargar";
|
SWWM_RELOADFIRE = "Recargar";
|
||||||
|
|
@ -29,7 +29,7 @@ SWWM_SKHARDCORECONFIRM = "\cg¿Crees que el mod es muy fácil?\nPues prepárate.
|
||||||
SWWM_SKLUNATIC = "\crINTENTA MUERTE\c-";
|
SWWM_SKLUNATIC = "\crINTENTA MUERTE\c-";
|
||||||
SWWM_SKLUNATICCONFIRM = "\crVas a morir, vas a sufrir.\nEso te lo puedo garantizar.\c-\n\n\cfTodos los cambios de Masoca\n+\nDoble velocidad de enemigos\nProyectiles enemigos duplicados\nPueden aparecer enemigos extra\nReflejos instantáneos de enemigo\nLos enemigos no se estremecen\nLos enemigos no pelean entre si\c-\n\n(Pulsa Y para morir al instante)";
|
SWWM_SKLUNATICCONFIRM = "\crVas a morir, vas a sufrir.\nEso te lo puedo garantizar.\c-\n\n\cfTodos los cambios de Masoca\n+\nDoble velocidad de enemigos\nProyectiles enemigos duplicados\nPueden aparecer enemigos extra\nReflejos instantáneos de enemigo\nLos enemigos no se estremecen\nLos enemigos no pelean entre si\c-\n\n(Pulsa Y para morir al instante)";
|
||||||
// mod menu
|
// mod menu
|
||||||
SWWM_MTITLE = "Opciones de SWWM GZ";
|
SWWM_MTITLE = "Opciones de DEMOLITIONIST";
|
||||||
SWWM_PTITLE = "Opciones de Jugador";
|
SWWM_PTITLE = "Opciones de Jugador";
|
||||||
SWWM_VOICETYPE = "Pack de Voz de Demolicionista";
|
SWWM_VOICETYPE = "Pack de Voz de Demolicionista";
|
||||||
SWWM_MUTELEVEL = "Nivel de Muteo de Voz";
|
SWWM_MUTELEVEL = "Nivel de Muteo de Voz";
|
||||||
|
|
@ -415,7 +415,7 @@ TOOLTIP_SWWM_MM_THINGCOLOR_VIPITEM = "Color para ítems muy importantes.";
|
||||||
TOOLTIP_SWWM_MM_THINGCOLOR_SHOOTABLE = "Color para cosas que pueden ser dañadas.";
|
TOOLTIP_SWWM_MM_THINGCOLOR_SHOOTABLE = "Color para cosas que pueden ser dañadas.";
|
||||||
TOOLTIP_SWWM_MM_THINGCOLOR_MISSILE = "Color para proyectiles.";
|
TOOLTIP_SWWM_MM_THINGCOLOR_MISSILE = "Color para proyectiles.";
|
||||||
// credits
|
// credits
|
||||||
SWWM_MCREDS = "Créditos de SWWM GZ";
|
SWWM_MCREDS = "Créditos de DEMOLITIONIST";
|
||||||
SWWM_CLEAD = "Desarrollo Principal:";
|
SWWM_CLEAD = "Desarrollo Principal:";
|
||||||
SWWM_CDEV2 = "Autoproclamada Maga de ZScript";
|
SWWM_CDEV2 = "Autoproclamada Maga de ZScript";
|
||||||
SWWM_CASSETS = "Assets Adicionales:";
|
SWWM_CASSETS = "Assets Adicionales:";
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
[default]
|
[default]
|
||||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw1.2pre r106 \cu(Tue 11 Jan 02:18:38 CET 2022)\c-";
|
SWWM_MODVER="\chSWWM \czGZ\c- \cw1.2pre r107 \cu(Thu 13 Jan 00:27:14 CET 2022)\c-";
|
||||||
SWWM_SHORTVER="\cw1.2pre r106 \cu(2022-01-11 02:18:38)\c-";
|
SWWM_SHORTVER="\cw1.2pre r107 \cu(2022-01-13 00:27:14)\c-";
|
||||||
|
|
|
||||||
|
|
@ -165,6 +165,7 @@ OptionMenu "SWWMOptionMenu"
|
||||||
Option "$SWWM_INTERMUSIC", "swwm_intermusic", "YesNo"
|
Option "$SWWM_INTERMUSIC", "swwm_intermusic", "YesNo"
|
||||||
}
|
}
|
||||||
Option "$SWWM_FUZZ", "swwm_fuzz", "YesNo"
|
Option "$SWWM_FUZZ", "swwm_fuzz", "YesNo"
|
||||||
|
Option "$SWWM_OLDLOGO", "swwm_oldlogo", "YesNo"
|
||||||
IfGame(Doom, Heretic)
|
IfGame(Doom, Heretic)
|
||||||
{
|
{
|
||||||
Option "$SWWM_SILENCEMAP", "swwm_silencemap", "YesNo"
|
Option "$SWWM_SILENCEMAP", "swwm_silencemap", "YesNo"
|
||||||
|
|
|
||||||
98
shaders/glsl/NewLogoAnimated.fp
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
// animated DEMOLITIONIST logo
|
||||||
|
|
||||||
|
#define overlay(a,b) (a<0.5)?(2.0*a*b):(1.0-(2.0*(1.0-a)*(1.0-b)))
|
||||||
|
#define hardlight(a,b) (2*a<1.0)?clamp(2.0*a*b,0.0,1.0):clamp(1.0-2.0*(1.0-b)*(1.0-a),0.0,1.0)
|
||||||
|
const float pi = 3.14159265358979323846;
|
||||||
|
|
||||||
|
vec2 warpcoord( in vec2 uv )
|
||||||
|
{
|
||||||
|
vec2 offset;
|
||||||
|
offset.y = sin(pi*2.*(uv.x*8.+timer*.25))*.005;
|
||||||
|
offset.x = cos(pi*2.*(uv.y*4.+timer*.25))*.005;
|
||||||
|
return uv+offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
// based on gimp color to alpha, but simplified
|
||||||
|
vec4 blacktoalpha( in vec4 src )
|
||||||
|
{
|
||||||
|
vec4 dst = src;
|
||||||
|
float alpha = 0.;
|
||||||
|
float a;
|
||||||
|
a = clamp(dst.r,0.,1.);
|
||||||
|
if ( a > alpha ) alpha = a;
|
||||||
|
a = clamp(dst.g,0.,1.);
|
||||||
|
if ( a > alpha ) alpha = a;
|
||||||
|
a = clamp(dst.b,0.,1.);
|
||||||
|
if ( a > alpha ) alpha = a;
|
||||||
|
if ( alpha > 0. )
|
||||||
|
{
|
||||||
|
float ainv = 1./alpha;
|
||||||
|
dst.rgb *= ainv;
|
||||||
|
}
|
||||||
|
dst.a *= alpha;
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
#ifdef NO_BILINEAR
|
||||||
|
#define BilinearSample(x,y,z,w) texture(x,y)
|
||||||
|
#else
|
||||||
|
vec4 BilinearSample( in sampler2D tex, in vec2 pos, in vec2 size, in vec2 pxsize )
|
||||||
|
{
|
||||||
|
vec2 f = fract(pos*size);
|
||||||
|
pos += (.5-f)*pxsize;
|
||||||
|
vec4 p0q0 = texture(tex,pos);
|
||||||
|
vec4 p1q0 = texture(tex,pos+vec2(pxsize.x,0));
|
||||||
|
vec4 p0q1 = texture(tex,pos+vec2(0,pxsize.y));
|
||||||
|
vec4 p1q1 = texture(tex,pos+vec2(pxsize.x,pxsize.y));
|
||||||
|
vec4 pInterp_q0 = mix(p0q0,p1q0,f.x);
|
||||||
|
vec4 pInterp_q1 = mix(p0q1,p1q1,f.x);
|
||||||
|
return mix(pInterp_q0,pInterp_q1,f.y);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
vec3 GradientMap( in vec3 color )
|
||||||
|
{
|
||||||
|
double gray = dot(color,vec3(.333333));
|
||||||
|
vec2 size = vec2(512.,8.);
|
||||||
|
vec2 pxsize = 1./size;
|
||||||
|
return BilinearSample(gradtex,vec2(gray/2.+.25,0),size,pxsize).rgb;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetupMaterial( inout Material mat )
|
||||||
|
{
|
||||||
|
// store these to save some time
|
||||||
|
vec2 size = vec2(textureSize(Layer1,0));
|
||||||
|
vec2 pxsize = 1./size;
|
||||||
|
// y'all ready for this multilayered madness?
|
||||||
|
vec2 uv = vTexCoord.st;
|
||||||
|
// base blank layer
|
||||||
|
vec4 base = vec4(1.);
|
||||||
|
// first layer, warp then multiply red
|
||||||
|
base.rgb *= BilinearSample(Layer1,warpcoord(uv),size,pxsize).x;
|
||||||
|
// first layer, multiply green
|
||||||
|
base.rgb *= BilinearSample(Layer1,uv,size,pxsize).y;
|
||||||
|
// first layer, add blue
|
||||||
|
base.rgb += BilinearSample(Layer1,uv,size,pxsize).zzz;
|
||||||
|
// multiply by red fade
|
||||||
|
base.rgb *= texture(fadetex,vec2(.5)).x;
|
||||||
|
// gradient map result
|
||||||
|
base.rgb = GradientMap(base.rgb);
|
||||||
|
// color to alpha
|
||||||
|
base = blacktoalpha(base);
|
||||||
|
// second layer, alpha blend
|
||||||
|
vec4 tmp = BilinearSample(Layer2,uv,size,pxsize);
|
||||||
|
vec4 tmp2;
|
||||||
|
tmp2.a = tmp.a+base.a*(1-tmp.a);
|
||||||
|
tmp2.rgb = (tmp.rgb*tmp.a+base.rgb*base.a*(1-tmp.a))/tmp2.a;
|
||||||
|
base = tmp2;
|
||||||
|
// third layer, hard light with two multiplied masks
|
||||||
|
tmp.xy = BilinearSample(Layer3,uv,size,pxsize).xy;
|
||||||
|
tmp.y *= BilinearSample(Layer3,clamp(uv+vec2(1.-texture(fadetex,vec2(.5)).y*2.,0.),vec2(0.),vec2(1.)),size,pxsize).z;
|
||||||
|
tmp2.r = hardlight(base.r,tmp.x);
|
||||||
|
tmp2.g = hardlight(base.g,tmp.x);
|
||||||
|
tmp2.b = hardlight(base.b,tmp.x);
|
||||||
|
base.rgb = mix(base.rgb,tmp2.rgb,tmp.y);
|
||||||
|
// clamp
|
||||||
|
base = clamp(base,vec4(0.),vec4(1.));
|
||||||
|
// ding, logo's done
|
||||||
|
mat.Base = base;
|
||||||
|
}
|
||||||
|
|
@ -23,6 +23,8 @@ title/explo3 sounds/OUCHEX3.ogg
|
||||||
title/explo4 sounds/OUCHEX4.ogg
|
title/explo4 sounds/OUCHEX4.ogg
|
||||||
$random title/explo { title/explo1 title/explo2 title/explo3 title/explo4 }
|
$random title/explo { title/explo1 title/explo2 title/explo3 title/explo4 }
|
||||||
$limit title/explo 64
|
$limit title/explo 64
|
||||||
|
title/thump sounds/TitleThump.ogg
|
||||||
|
$limit title/thump 16
|
||||||
|
|
||||||
saya/giggle1 sounds/saya/saya_giggle1.ogg
|
saya/giggle1 sounds/saya/saya_giggle1.ogg
|
||||||
saya/giggle2 sounds/saya/saya_giggle2.ogg
|
saya/giggle2 sounds/saya/saya_giggle2.ogg
|
||||||
|
|
|
||||||
BIN
sounds/TitleThump.ogg
Normal file
BIN
sprites/LGFDA0.png
Normal file
|
After Width: | Height: | Size: 106 B |
23
zmapinfo.txt
|
|
@ -100,14 +100,33 @@ GameInfo
|
||||||
"KirinMangaGesture",
|
"KirinMangaGesture",
|
||||||
"KirinPlushGesture",
|
"KirinPlushGesture",
|
||||||
"PsykkonovexxGesture"
|
"PsykkonovexxGesture"
|
||||||
// really damn big textures
|
// preload intro textures
|
||||||
PrecacheTextures = "graphics/SWWMGZLogo.png",
|
PrecacheTextures = "graphics/SWWMGZLogo.png",
|
||||||
"graphics/SWWMGZLogo_Layer1.png",
|
"graphics/SWWMGZLogo_Layer1.png",
|
||||||
"graphics/SWWMGZLogo_Layer2.png",
|
"graphics/SWWMGZLogo_Layer2.png",
|
||||||
"graphics/SWWMGZLogo_Layer3.png",
|
"graphics/SWWMGZLogo_Layer3.png",
|
||||||
"graphics/SWWMGZLogo_Layer4.png",
|
"graphics/SWWMGZLogo_Layer4.png",
|
||||||
"graphics/SWWMGZLogo_Layer5.png",
|
"graphics/SWWMGZLogo_Layer5.png",
|
||||||
"graphics/SWWMGZLogo_Layer6.png"
|
"graphics/SWWMGZLogo_Layer6.png",
|
||||||
|
"graphics/NewLogo.png",
|
||||||
|
"graphics/NewLogo_Grad.png",
|
||||||
|
"graphics/NewLogo_Layer1.png",
|
||||||
|
"graphics/NewLogo_Layer2.png",
|
||||||
|
"graphics/NewLogo_Layer3.png",
|
||||||
|
"graphics/NewLogo_Letter0.png",
|
||||||
|
"graphics/NewLogo_Letter1.png",
|
||||||
|
"graphics/NewLogo_Letter2.png",
|
||||||
|
"graphics/NewLogo_Letter3.png",
|
||||||
|
"graphics/NewLogo_Letter4.png",
|
||||||
|
"graphics/NewLogo_Letter5.png",
|
||||||
|
"graphics/NewLogo_Letter6.png",
|
||||||
|
"graphics/NewLogo_Letter7.png",
|
||||||
|
"graphics/NewLogo_Letter8.png",
|
||||||
|
"graphics/NewLogo_Letter9.png",
|
||||||
|
"graphics/NewLogo_Letter10.png",
|
||||||
|
"graphics/NewLogo_Letter11.png",
|
||||||
|
"graphics/NewLogo_Letter12.png",
|
||||||
|
"graphics/NewLogo_Letter13.png"
|
||||||
}
|
}
|
||||||
|
|
||||||
ClearSkills
|
ClearSkills
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,8 @@ Class SWWMCreditsMenu : GenericMenu
|
||||||
String oldlang;
|
String oldlang;
|
||||||
Vector2 ss;
|
Vector2 ss;
|
||||||
double hs;
|
double hs;
|
||||||
int logow, logoh;
|
Vector2 logosz;
|
||||||
|
double logow, logoh;
|
||||||
|
|
||||||
String oldmus;
|
String oldmus;
|
||||||
int oldorder;
|
int oldorder;
|
||||||
|
|
@ -139,8 +140,13 @@ Class SWWMCreditsMenu : GenericMenu
|
||||||
Super.Init(parent);
|
Super.Init(parent);
|
||||||
bgtex = TexMan.CheckForTexture("graphics/tempbg.png",TexMan.Type_Any);
|
bgtex = TexMan.CheckForTexture("graphics/tempbg.png",TexMan.Type_Any);
|
||||||
UpdateSize();
|
UpdateSize();
|
||||||
logo = TexMan.CheckForTexture("graphics/M_SWWM.png",TexMan.Type_Any);
|
logo = TexMan.CheckForTexture(swwm_oldlogo?"graphics/M_SWWM.png":"graphics/M_DEMOLITIONIST.png",TexMan.Type_Any);
|
||||||
[logow, logoh] = TexMan.GetSize(logo);
|
logosz = TexMan.GetScaledSize(logo);
|
||||||
|
if ( !swwm_oldlogo )
|
||||||
|
{
|
||||||
|
logosz *= (2./3.);
|
||||||
|
logosz.y += 36.;
|
||||||
|
}
|
||||||
stitle = StringTable.Localize("$SWWM_CSTITLE");
|
stitle = StringTable.Localize("$SWWM_CSTITLE");
|
||||||
stitle2 = StringTable.Localize("$SWWM_CSTITLE2");
|
stitle2 = StringTable.Localize("$SWWM_CSTITLE2");
|
||||||
sdev = StringTable.Localize("$SWWM_CLEAD");
|
sdev = StringTable.Localize("$SWWM_CLEAD");
|
||||||
|
|
@ -175,8 +181,7 @@ Class SWWMCreditsMenu : GenericMenu
|
||||||
clocal.Push(new("SWWMCreditsEntry").Init("Marisa Kirisame","$SWWM_LOCES"));
|
clocal.Push(new("SWWMCreditsEntry").Init("Marisa Kirisame","$SWWM_LOCES"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("Snacks"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("Snacks"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("john"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("john"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("Jonas Höglund"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("FireFly"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("Alexa Jones-Gonzales"));
|
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("Corey Hectus"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("Corey Hectus"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("Dac"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("Dac"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("Pietro Gagliardi"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("Pietro Gagliardi"));
|
||||||
|
|
@ -185,7 +190,6 @@ Class SWWMCreditsMenu : GenericMenu
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("John"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("John"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("VoanHead"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("VoanHead"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("NekoMithos"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("NekoMithos"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("Ceyne Taikato"));
|
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("bouncytem"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("bouncytem"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("Brett Saltzer"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("Brett Saltzer"));
|
||||||
cpatrons.Push(new("SWWMCreditsEntry").Init("Clint Walker"));
|
cpatrons.Push(new("SWWMCreditsEntry").Init("Clint Walker"));
|
||||||
|
|
@ -210,9 +214,9 @@ Class SWWMCreditsMenu : GenericMenu
|
||||||
cthanks.Push(new("SWWMCreditsEntry").Init("$SWWM_CDEVS1","$SWWM_CDEVS2"));
|
cthanks.Push(new("SWWMCreditsEntry").Init("$SWWM_CDEVS1","$SWWM_CDEVS2"));
|
||||||
cthanks.Push(new("SWWMCreditsEntry").Init("$SWWM_CYOU1","$SWWM_CYOU2"));
|
cthanks.Push(new("SWWMCreditsEntry").Init("$SWWM_CYOU1","$SWWM_CYOU2"));
|
||||||
speed = 16.;
|
speed = 16.;
|
||||||
spos = ss.y-logoh;
|
spos = ss.y-logosz.y;
|
||||||
// calc total height
|
// calc total height
|
||||||
theight = logoh;
|
theight = int(logosz.y);
|
||||||
theight += 8*(SECTION_PAD+bigfont.GetHeight());
|
theight += 8*(SECTION_PAD+bigfont.GetHeight());
|
||||||
for ( int i=0; i<cdev.Size(); i++ )
|
for ( int i=0; i<cdev.Size(); i++ )
|
||||||
{
|
{
|
||||||
|
|
@ -263,17 +267,18 @@ Class SWWMCreditsMenu : GenericMenu
|
||||||
double DrawLogo( double x, double y )
|
double DrawLogo( double x, double y )
|
||||||
{
|
{
|
||||||
// don't draw if we're offscreen, saves time
|
// don't draw if we're offscreen, saves time
|
||||||
if ( (y+logoh < 0) || (y > ss.y) ) return logoh;
|
if ( (y+logosz.y < 0) || (y > ss.y) ) return logosz.y;
|
||||||
Screen.DrawTexture(logo,true,x-logow/2,y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
if ( swwm_oldlogo ) Screen.DrawTexture(logo,true,x-logosz.x/2,y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||||
Screen.DrawText(smallfont,Font.CR_SAPPHIRE,x-smallfont.StringWidth(stitle)/2,y+(logoh-28),stitle,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
else Screen.DrawTexture(logo,true,x-logosz.x/2,y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ScaleX,(2./3.),DTA_ScaleY,(2./3.));
|
||||||
|
Screen.DrawText(smallfont,Font.CR_SAPPHIRE,x-smallfont.StringWidth(stitle)/2,y+(logosz.y-28),stitle,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||||
// underline
|
// underline
|
||||||
int w = max(smallfont.StringWidth(stitle),smallfont.StringWidth(stitle2));
|
int w = max(smallfont.StringWidth(stitle),smallfont.StringWidth(stitle2));
|
||||||
int cw = int(ceil((w+8)/6.))*6;
|
int cw = int(ceil((w+8)/6.))*6;
|
||||||
double xx = x-cw/2;
|
double xx = x-cw/2;
|
||||||
for ( int i=0; i<cw; i+=6 )
|
for ( int i=0; i<cw; i+=6 )
|
||||||
Screen.DrawChar(smallfont,Font.CR_SAPPHIRE,xx+i,y+(logoh-22),0x5F,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
Screen.DrawChar(smallfont,Font.CR_SAPPHIRE,xx+i,y+(logosz.y-22),0x5F,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||||
Screen.DrawText(smallfont,Font.CR_WHITE,x-smallfont.StringWidth(stitle2)/2,y+(logoh-9),stitle2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
Screen.DrawText(smallfont,Font.CR_WHITE,x-smallfont.StringWidth(stitle2)/2,y+(logosz.y-9),stitle2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||||
return logoh;
|
return logosz.y;
|
||||||
}
|
}
|
||||||
double DrawSection( double x, double y, String txt )
|
double DrawSection( double x, double y, String txt )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -284,32 +284,84 @@ Class SWWMCleanMenu : ListMenu
|
||||||
|
|
||||||
Class SWWMMainMenu : SWWMCleanMenu
|
Class SWWMMainMenu : SWWMCleanMenu
|
||||||
{
|
{
|
||||||
TextureID demotex;
|
TextureID demotex, gradtex;
|
||||||
double demopos;
|
double demopos;
|
||||||
transient uint prevms;
|
transient uint prevms;
|
||||||
|
|
||||||
|
private TextureID GetDemoTex()
|
||||||
|
{
|
||||||
|
if ( swwm_oldlogo ) return TexMan.CheckForTexture("graphics/M_DEMOCHAN.png",TexMan.Type_Any);
|
||||||
|
Array<String> done;
|
||||||
|
Array<int> candidates;
|
||||||
|
let c = CVar.FindCVar('swwm_menuposehistory');
|
||||||
|
String str = c.GetString();
|
||||||
|
if ( str != "" ) str.Split(done,";");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
c.SetString("2");
|
||||||
|
return TexMan.CheckForTexture(StringTable.Localize("$SWWM_MENUPOSE2"),TexMan.Type_Any);
|
||||||
|
}
|
||||||
|
int npose = StringTable.Localize("$SWWM_NMENUPOSE").ToInt();
|
||||||
|
for ( int i=1; i<=npose; i++ )
|
||||||
|
{
|
||||||
|
String sn = String.Format("%d",i);
|
||||||
|
if ( done.Find(sn) < done.Size() ) continue;
|
||||||
|
candidates.Push(i);
|
||||||
|
}
|
||||||
|
if ( candidates.Size() == 0 )
|
||||||
|
{
|
||||||
|
c.SetString("2");
|
||||||
|
return TexMan.CheckForTexture(StringTable.Localize("$SWWM_MENUPOSE2"),TexMan.Type_Any);
|
||||||
|
}
|
||||||
|
int which = candidates[Random[UIStuff](0,candidates.Size()-1)];
|
||||||
|
c.SetString(str..";"..which);
|
||||||
|
return TexMan.CheckForTexture(StringTable.Localize("$SWWM_MENUPOSE"..which),TexMan.Type_Any);
|
||||||
|
}
|
||||||
|
|
||||||
override void Init( Menu parent, ListMenuDescriptor desc )
|
override void Init( Menu parent, ListMenuDescriptor desc )
|
||||||
{
|
{
|
||||||
Super.Init(parent,desc);
|
Super.Init(parent,desc);
|
||||||
demotex = TexMan.CheckForTexture("graphics/M_DEMOCHAN.png",TexMan.Type_Any);
|
demotex = GetDemoTex();
|
||||||
demopos = 120;
|
demopos = 120;
|
||||||
prevms = MSTime();
|
prevms = MSTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
override void OnReturn()
|
override void OnReturn()
|
||||||
{
|
{
|
||||||
|
demotex = GetDemoTex();
|
||||||
demopos = 120;
|
demopos = 120;
|
||||||
prevms = MSTime();
|
prevms = MSTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int GetMenuYOffset()
|
||||||
|
{
|
||||||
|
int mofs = CleanHeight_1/2-160;
|
||||||
|
return mofs;
|
||||||
|
}
|
||||||
|
|
||||||
override void Drawer()
|
override void Drawer()
|
||||||
{
|
{
|
||||||
double frametime = (MSTime()-prevms)/1000.;
|
double frametime = (MSTime()-prevms)/1000.;
|
||||||
double theta = clamp(2.*frametime,0.,1.); // naive, but whatever
|
double theta = clamp(2.*frametime,0.,1.); // naive, but whatever
|
||||||
if ( prevms ) demopos = demopos*(1.-theta)-40*theta;
|
if ( prevms ) demopos = demopos*(1.-theta)-40*theta;
|
||||||
double alph = clamp(1.-(demopos/100),0.,1.);
|
double alph = clamp(1.-(demopos/100),0.,1.);
|
||||||
Screen.DrawTexture(demotex,false,(demopos-160)*CleanXFac_1+(Screen.GetWidth()*.5),(Screen.GetHeight()-400*CleanYFac_1)/2 + sin(gametic*GameTicRate*.1)*CleanYFac_1*8*(alph**2),DTA_CleanNoMove_1,true,DTA_Alpha,alph,DTA_ColorOverlay,Color(64+int(191*(1.-(alph**2))),0,0,0));
|
if ( !swwm_oldlogo )
|
||||||
|
{
|
||||||
|
if ( !gradtex ) gradtex = TexMan.CheckForTexture("graphics/M_GRAD.png",TexMan.Type_Any);
|
||||||
|
double scl = Screen.GetHeight()/960.;
|
||||||
|
Screen.DrawTexture(gradtex,false,0,Screen.GetHeight(),DTA_DestWidth,Screen.GetWidth(),DTA_DestHeight,256*CleanYFac_1,DTA_LegacyRenderStyle,STYLE_Shaded,DTA_FillColor,Color(0,0,0),DTA_TopOffset,256,DTA_Alpha,.35);
|
||||||
|
Screen.DrawTexture(gradtex,false,Screen.GetWidth()/2,Screen.GetHeight(),DTA_Rotate,90,DTA_DestHeight,Screen.GetHeight(),DTA_DestWidthF,600*scl*alph,DTA_LegacyRenderStyle,STYLE_Shaded,DTA_FillColor,Color(0,0,0),DTA_TopOffset,256,DTA_Alpha,alph*.5);
|
||||||
|
Screen.DrawTexture(gradtex,false,Screen.GetWidth()/2,0,DTA_Rotate,270,DTA_DestHeight,Screen.GetHeight(),DTA_DestWidthF,600*scl*alph,DTA_LegacyRenderStyle,STYLE_Shaded,DTA_FillColor,Color(0,0,0),DTA_TopOffset,256,DTA_Alpha,alph*.5);
|
||||||
|
Screen.DrawTexture(gradtex,false,Screen.GetWidth()/2,Screen.GetHeight(),DTA_Rotate,90,DTA_DestHeight,Screen.GetHeight(),DTA_DestWidthF,500*scl*alph,DTA_LegacyRenderStyle,STYLE_AddShaded,DTA_FillColor,Color(40,80,120),DTA_TopOffset,256,DTA_Alpha,alph);
|
||||||
|
Screen.DrawTexture(gradtex,false,Screen.GetWidth()/2,0,DTA_Rotate,270,DTA_DestHeight,Screen.GetHeight(),DTA_DestWidthF,500*scl*alph,DTA_LegacyRenderStyle,STYLE_AddShaded,DTA_FillColor,Color(40,80,120),DTA_TopOffset,256,DTA_Alpha,alph);
|
||||||
|
Screen.DrawTexture(demotex,false,Screen.GetWidth()/2,0,DTA_ScaleX,scl,DTA_ScaleY,scl,DTA_Alpha,alph,DTA_ColorOverlay,Color(int(255*(1.-(alph**2))),0,0,0));
|
||||||
|
}
|
||||||
|
else Screen.DrawTexture(demotex,false,(demopos-160)*CleanXFac_1+(Screen.GetWidth()*.5),(Screen.GetHeight()-400*CleanYFac_1)/2 + sin(gametic*GameTicRate*.1)*CleanYFac_1*8*(alph**2),DTA_CleanNoMove_1,true,DTA_Alpha,alph,DTA_ColorOverlay,Color(64+int(191*(1.-(alph**2))),0,0,0));
|
||||||
|
if ( !swwm_oldlogo ) for ( int i=0; i<mDesc.mItems.Size(); i++ )
|
||||||
|
mDesc.mItems[i].OffsetPositionY(GetMenuYOffset());
|
||||||
Super.Drawer();
|
Super.Drawer();
|
||||||
|
if ( !swwm_oldlogo ) for ( int i=0; i<mDesc.mItems.Size(); i++ )
|
||||||
|
mDesc.mItems[i].OffsetPositionY(-GetMenuYOffset());
|
||||||
int xx, yy;
|
int xx, yy;
|
||||||
String str = StringTable.Localize("$SWWM_MODVER");
|
String str = StringTable.Localize("$SWWM_MODVER");
|
||||||
int width = smallfont.StringWidth(str)+8;
|
int width = smallfont.StringWidth(str)+8;
|
||||||
|
|
@ -320,6 +372,16 @@ Class SWWMMainMenu : SWWMCleanMenu
|
||||||
Screen.DrawText(smallfont,Font.CR_GOLD,(xx+4)*CleanXFac_1,(yy+2)*CleanYFac_1,str,DTA_CleanNoMove_1,true);
|
Screen.DrawText(smallfont,Font.CR_GOLD,(xx+4)*CleanXFac_1,(yy+2)*CleanYFac_1,str,DTA_CleanNoMove_1,true);
|
||||||
prevms = MSTime();
|
prevms = MSTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override bool MouseEvent( int type, int x, int y )
|
||||||
|
{
|
||||||
|
if ( !swwm_oldlogo ) for ( int i=0; i<mDesc.mItems.Size(); i++ )
|
||||||
|
mDesc.mItems[i].OffsetPositionY(GetMenuYOffset());
|
||||||
|
let res = Super.MouseEvent(type,x,y);
|
||||||
|
if ( !swwm_oldlogo ) for ( int i=0; i<mDesc.mItems.Size(); i++ )
|
||||||
|
mDesc.mItems[i].OffsetPositionY(-GetMenuYOffset());
|
||||||
|
return res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// skill/episode menu hack
|
// skill/episode menu hack
|
||||||
|
|
@ -536,35 +598,42 @@ Class ListMenuItemSWWMStaticTextM : ListMenuItem
|
||||||
// scaled SWWM GZ logo
|
// scaled SWWM GZ logo
|
||||||
class ListMenuItemSWWMLogo : ListMenuItem
|
class ListMenuItemSWWMLogo : ListMenuItem
|
||||||
{
|
{
|
||||||
TextureID mTexture;
|
TextureID mTexture, mOldTexture;
|
||||||
|
|
||||||
void Init( ListMenuDescriptor desc )
|
void Init( ListMenuDescriptor desc )
|
||||||
{
|
{
|
||||||
Super.Init(desc.mXpos,desc.mYpos);
|
Super.Init(desc.mXpos,desc.mYpos);
|
||||||
mTexture = TexMan.CheckForTexture("graphics/M_SWWM.png",TexMan.Type_Any);
|
mTexture = TexMan.CheckForTexture("graphics/M_DEMOLITIONIST.png",TexMan.Type_Any);
|
||||||
|
mOldTexture = TexMan.CheckForTexture("graphics/M_SWWM.png",TexMan.Type_Any);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int GetMenuYOffset()
|
||||||
|
{
|
||||||
|
int mofs = CleanHeight_1/2-160;
|
||||||
|
return mofs;
|
||||||
}
|
}
|
||||||
|
|
||||||
override void Draw( bool selected, ListMenuDescriptor desc )
|
override void Draw( bool selected, ListMenuDescriptor desc )
|
||||||
{
|
{
|
||||||
if ( !mTexture.Exists() )
|
let tex = swwm_oldlogo?mOldTexture:mTexture;
|
||||||
|
if ( !tex.Exists() )
|
||||||
return;
|
return;
|
||||||
int w = desc?desc.DisplayWidth():ListMenuDescriptor.CleanScale;
|
int w = desc?desc.DisplayWidth():ListMenuDescriptor.CleanScale;
|
||||||
int h = desc?desc.DisplayHeight():-1;
|
int h = desc?desc.DisplayHeight():-1;
|
||||||
Vector2 vs = TexMan.GetScaledSize(mTexture);
|
Vector2 vs = TexMan.GetScaledSize(tex);
|
||||||
double scl = 256./vs.x;
|
double scl = swwm_oldlogo?(256./vs.x):(2./3.);
|
||||||
vs *= scl;
|
|
||||||
double x;
|
double x;
|
||||||
if ( w == ListMenuDescriptor.CleanScale )
|
if ( w == ListMenuDescriptor.CleanScale )
|
||||||
{
|
{
|
||||||
x = (320-vs.x)/2;
|
x = (320-vs.x*scl)/2;
|
||||||
double y = -48;
|
double y = swwm_oldlogo?(-48):(-24+GetMenuYOffset());
|
||||||
SWWMUtility.AdjustClean_1(x,y);
|
SWWMUtility.AdjustClean_1(x,y);
|
||||||
Screen.DrawTexture(mTexture,false,x,y,DTA_ScaleX,CleanXFac_1*scl,DTA_ScaleY,CleanYFac_1*scl);
|
Screen.DrawTexture(tex,false,x,y,DTA_ScaleX,CleanXFac_1*scl,DTA_ScaleY,CleanYFac_1*scl);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x = (w-vs.x)/2;
|
x = (w-vs.x*scl)/2;
|
||||||
Screen.DrawTexture(mTexture,false,x,-48,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_ScaleX,scl,DTA_ScaleY,scl);
|
Screen.DrawTexture(tex,false,x,swwm_oldlogo?(-48):(-24+GetMenuYOffset()),DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_ScaleX,scl,DTA_ScaleY,scl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -777,17 +846,17 @@ class ListMenuItemSWWMTextItemM : ListMenuItemSelectable
|
||||||
yofs *= CleanYFac_1;
|
yofs *= CleanYFac_1;
|
||||||
double x = (320-GetWidth())/2;
|
double x = (320-GetWidth())/2;
|
||||||
SWWMUtility.AdjustClean_1(x,y);
|
SWWMUtility.AdjustClean_1(x,y);
|
||||||
Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_CleanNoMove_1,true,DTA_CenterOffset,true,DTA_Rotate,15.*sin(8*Menu.MenuTime()));
|
Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_ScaleX,CleanXFac_1/4.,DTA_ScaleY,CleanYFac_1/4.,DTA_CenterOffset,true,DTA_Rotate,15.*sin(8*Menu.MenuTime()));
|
||||||
x = (320+GetWidth())/2;
|
x = (320+GetWidth())/2;
|
||||||
SWWMUtility.AdjustClean_1x(x);
|
SWWMUtility.AdjustClean_1x(x);
|
||||||
Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_CleanNoMove_1,true,DTA_CenterOffset,true,DTA_Rotate,-15.*sin(8*Menu.MenuTime()));
|
Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_ScaleX,CleanXFac_1/4.,DTA_ScaleY,CleanYFac_1/4.,DTA_CenterOffset,true,DTA_Rotate,-15.*sin(8*Menu.MenuTime()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
double x = (w-GetWidth())/2;
|
double x = (w-GetWidth())/2;
|
||||||
Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_CenterOffset,true,DTA_Rotate,15.*sin(8*Menu.MenuTime()));
|
Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_ScaleX,.25,DTA_ScaleY,.25,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_CenterOffset,true,DTA_Rotate,15.*sin(8*Menu.MenuTime()));
|
||||||
x = (w+GetWidth())/2;
|
x = (w+GetWidth())/2;
|
||||||
Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_CenterOffset,true,DTA_Rotate,-15.*sin(8*Menu.MenuTime()));
|
Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_ScaleX,.25,DTA_ScaleY,.25,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_CenterOffset,true,DTA_Rotate,-15.*sin(8*Menu.MenuTime()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -838,21 +907,24 @@ Class ListMenuItemSWWMPatchItemM : ListMenuItemSelectable
|
||||||
if ( tex.isNull() ) return;
|
if ( tex.isNull() ) return;
|
||||||
int w = desc?desc.DisplayWidth():ListMenuDescriptor.CleanScale;
|
int w = desc?desc.DisplayWidth():ListMenuDescriptor.CleanScale;
|
||||||
int h = desc?desc.DisplayHeight():-1;
|
int h = desc?desc.DisplayHeight():-1;
|
||||||
Vector2 vs = TexMan.GetScaledSize(mTexture);
|
double y = mYpos+mHeight/2;
|
||||||
double y = mYpos+vs.y/2;
|
|
||||||
if ( w == ListMenuDescriptor.CleanScale )
|
if ( w == ListMenuDescriptor.CleanScale )
|
||||||
{
|
{
|
||||||
double x = (320-vs.x)/2;
|
xofs *= CleanXFac_1;
|
||||||
Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_Clean,true,DTA_CenterOffset,true,DTA_Rotate,15.*sin(8*Menu.MenuTime()));
|
yofs *= CleanYFac_1;
|
||||||
x = (320+vs.x)/2;
|
double x = (320-GetWidth())/2;
|
||||||
Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_Clean,true,DTA_CenterOffset,true,DTA_Rotate,-15.*sin(8*Menu.MenuTime()));
|
SWWMUtility.AdjustClean_1(x,y);
|
||||||
|
Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_ScaleX,CleanXFac_1/4.,DTA_ScaleY,CleanYFac_1/4.,DTA_CenterOffset,true,DTA_Rotate,15.*sin(8*Menu.MenuTime()));
|
||||||
|
x = (320+GetWidth())/2;
|
||||||
|
SWWMUtility.AdjustClean_1x(x);
|
||||||
|
Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_ScaleX,CleanXFac_1/4.,DTA_ScaleY,CleanYFac_1/4.,DTA_CenterOffset,true,DTA_Rotate,-15.*sin(8*Menu.MenuTime()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
double x = (w-vs.x)/2;
|
double x = (w-GetWidth())/2;
|
||||||
Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_CenterOffset,true,DTA_Rotate,15.*sin(8*Menu.MenuTime()));
|
Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_ScaleX,.25,DTA_ScaleY,.25,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_CenterOffset,true,DTA_Rotate,15.*sin(8*Menu.MenuTime()));
|
||||||
x = (w+vs.x)/2;
|
x = (w+GetWidth())/2;
|
||||||
Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_CenterOffset,true,DTA_Rotate,-15.*sin(8*Menu.MenuTime()));
|
Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_ScaleX,.25,DTA_ScaleY,.25,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_CenterOffset,true,DTA_Rotate,-15.*sin(8*Menu.MenuTime()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,16 +12,21 @@ Struct TitleExplosion
|
||||||
|
|
||||||
Class SWWMTitleStuff : EventHandler
|
Class SWWMTitleStuff : EventHandler
|
||||||
{
|
{
|
||||||
ui TextureID tex[4];
|
ui TextureID tex[5];
|
||||||
|
ui TextureID letters[13];
|
||||||
|
ui TextureID camtex; // must be drawn for shaders to actually use it
|
||||||
|
ui BrokenLines stitle;
|
||||||
ui Array<String> scrolls;
|
ui Array<String> scrolls;
|
||||||
ui int sline;
|
ui int sline;
|
||||||
ui double sbase;
|
ui double sbase;
|
||||||
ui String lastlang;
|
ui String lastlang, lastlang2;
|
||||||
|
ui bool lastlogo;
|
||||||
ui TitleExplosion smk[64];
|
ui TitleExplosion smk[64];
|
||||||
ui TextureID smk_frame[19];
|
ui TextureID smk_frame[19];
|
||||||
int titletimer;
|
int titletimer;
|
||||||
ui int rss;
|
ui int rss;
|
||||||
ui int stopinit_t;
|
ui int stopinit_t;
|
||||||
|
bool bFadeIn;
|
||||||
|
|
||||||
private ui int GetUIRandom()
|
private ui int GetUIRandom()
|
||||||
{
|
{
|
||||||
|
|
@ -84,13 +89,17 @@ Class SWWMTitleStuff : EventHandler
|
||||||
|
|
||||||
override void WorldLoaded( WorldEvent e )
|
override void WorldLoaded( WorldEvent e )
|
||||||
{
|
{
|
||||||
|
let f = LogoFader(Actor.Spawn("LogoFader"));
|
||||||
|
f.hnd = self;
|
||||||
|
TexMan.SetCameraToTexture(f,"LOGOFADE",90);
|
||||||
titletimer = -300;
|
titletimer = -300;
|
||||||
let shnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler"));
|
let shnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler"));
|
||||||
if ( !shnd ) return;
|
if ( !shnd ) return;
|
||||||
if ( shnd.titlefirst )
|
if ( shnd.titlefirst )
|
||||||
{
|
{
|
||||||
titletimer = GameTicRate*26; // skip to logo
|
titletimer = GameTicRate*22; // skip to logo
|
||||||
S_ChangeMusic("music/TRAUMATI.XM",2); // skip to order 2
|
S_ChangeMusic("music/TRAUMATI.XM",1); // skip to order 1
|
||||||
|
bFadeIn = true;
|
||||||
}
|
}
|
||||||
shnd.titlefirst = true;
|
shnd.titlefirst = true;
|
||||||
}
|
}
|
||||||
|
|
@ -98,6 +107,12 @@ Class SWWMTitleStuff : EventHandler
|
||||||
override void UiTick()
|
override void UiTick()
|
||||||
{
|
{
|
||||||
if ( (titletimer > -80) && (titletimer < -20) ) TickExplosions();
|
if ( (titletimer > -80) && (titletimer < -20) ) TickExplosions();
|
||||||
|
if ( !swwm_oldlogo )
|
||||||
|
{
|
||||||
|
// title lettering
|
||||||
|
if ( ((double(titletimer)/GameTicRate) >= 23.) && ((double(titletimer)/GameTicRate) <= 25.4) && !(titletimer%5) )
|
||||||
|
S_StartSound("title/thump",CHAN_WEAPON,CHANF_UI|CHANF_OVERLAP,1.,ATTN_NONE);
|
||||||
|
}
|
||||||
if ( gamestate != GS_LEVEL ) return;
|
if ( gamestate != GS_LEVEL ) return;
|
||||||
// you're not supposed to be here
|
// you're not supposed to be here
|
||||||
Menu.SetMenu('EndGameMenu');
|
Menu.SetMenu('EndGameMenu');
|
||||||
|
|
@ -122,8 +137,8 @@ Class SWWMTitleStuff : EventHandler
|
||||||
|
|
||||||
override void RenderUnderlay( RenderEvent e )
|
override void RenderUnderlay( RenderEvent e )
|
||||||
{
|
{
|
||||||
if ( !tex[0] ) tex[0] = TexMan.CheckForTexture("graphics/UnSXLogo.png",TexMan.Type_Any);
|
if ( !camtex ) camtex = TexMan.CheckForTexture("LOGOFADE",TexMan.Type_Any);
|
||||||
if ( !tex[1] ) tex[1] = TexMan.CheckForTexture("graphics/SWWMGZLogo.png",TexMan.Type_Any);
|
Screen.DrawTexture(camtex,false,0,0);
|
||||||
if ( !tex[2] ) tex[2] = TexMan.CheckForTexture("graphics/tempbg.png",TexMan.Type_Any);
|
if ( !tex[2] ) tex[2] = TexMan.CheckForTexture("graphics/tempbg.png",TexMan.Type_Any);
|
||||||
if ( !tex[3] ) tex[3] = TexMan.CheckForTexture((gameinfo.gametype&GAME_Raven)?"TITLE":"TITLEPIC",TexMan.Type_MiscPatch);
|
if ( !tex[3] ) tex[3] = TexMan.CheckForTexture((gameinfo.gametype&GAME_Raven)?"TITLE":"TITLEPIC",TexMan.Type_MiscPatch);
|
||||||
Vector2 tsize, vsize;
|
Vector2 tsize, vsize;
|
||||||
|
|
@ -155,42 +170,25 @@ Class SWWMTitleStuff : EventHandler
|
||||||
else Screen.Dim("Black",1.,0,0,Screen.GetWidth(),Screen.GetHeight());
|
else Screen.Dim("Black",1.,0,0,Screen.GetWidth(),Screen.GetHeight());
|
||||||
double hs = max(min(floor(Screen.GetWidth()/320.),floor(Screen.GetHeight()/200.)),1.);
|
double hs = max(min(floor(Screen.GetWidth()/320.),floor(Screen.GetHeight()/200.)),1.);
|
||||||
Vector2 ss = (Screen.GetWidth(),Screen.GetHeight())/hs;
|
Vector2 ss = (Screen.GetWidth(),Screen.GetHeight())/hs;
|
||||||
double ar = Screen.GetAspectRatio();
|
if ( swwm_oldlogo ) Render_OldTitle(e,ss);
|
||||||
tsize = TexMan.GetScaledSize(tex[0]);
|
else Render_NewTitle(e);
|
||||||
double sar = tsize.x/tsize.y;
|
|
||||||
if ( sar > ar ) vsize = (tsize.x,tsize.x/ar);
|
|
||||||
else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y);
|
|
||||||
else vsize = tsize;
|
|
||||||
double alf = clamp(((titletimer+e.FracTic)/GameTicRate)-2,0.,1.);
|
|
||||||
alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-8,0.,1.);
|
|
||||||
Screen.DrawTexture(tex[0],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alf);
|
|
||||||
String str = StringTable.Localize("$SWWM_TITLEPRESENTS");
|
|
||||||
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-10,0.,1.);
|
|
||||||
alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-16,0.,1.);
|
|
||||||
Screen.DrawText(smallfont,Font.CR_WHITE,(ss.x-smallfont.StringWidth(str))/2,(ss.y-smallfont.GetHeight())/2,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf);
|
|
||||||
str = StringTable.Localize("$SWWM_TITLEMODBY");
|
|
||||||
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-18,0.,1.);
|
|
||||||
alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-24,0.,1.);
|
|
||||||
Screen.DrawText(smallfont,Font.CR_WHITE,(ss.x-smallfont.StringWidth(str))/2,(ss.y-smallfont.GetHeight())/2,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf);
|
|
||||||
tsize = TexMan.GetScaledSize(tex[1]);
|
|
||||||
sar = tsize.x/tsize.y;
|
|
||||||
if ( sar > ar ) vsize = (tsize.x,tsize.x/ar);
|
|
||||||
else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y);
|
|
||||||
else vsize = tsize;
|
|
||||||
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-26,0.,2.)*.5;
|
|
||||||
Screen.DrawTexture(tex[1],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alf);
|
|
||||||
if ( (titletimer/GameTicRate) < 30 ) return;
|
if ( (titletimer/GameTicRate) < 30 ) return;
|
||||||
// scrolls
|
// scrolls
|
||||||
if ( (scrolls.Size() <= 0 ) || (lastlang != language) )
|
if ( (scrolls.Size() <= 0 ) || (lastlang != language) || ((sline == 0) && (lastlogo != swwm_oldlogo)) )
|
||||||
{
|
{
|
||||||
scrolls.Clear();
|
scrolls.Clear();
|
||||||
String sstr = StringTable.Localize("$SWWM_TITLESCROLL");
|
int nstr = StringTable.Localize("$SWWM_NTITLESCROLL").ToInt();
|
||||||
sstr.Split(scrolls,"\n");
|
for ( int i=1; i<=nstr; i++ )
|
||||||
|
{
|
||||||
|
if ( (i == 1) && !swwm_oldlogo ) scrolls.Push(StringTable.Localize("$SWWM_TITLESCROLL1_NEW"));
|
||||||
|
else scrolls.Push(StringTable.Localize("$SWWM_TITLESCROLL"..i));
|
||||||
|
}
|
||||||
sbase = (titletimer+e.FracTic)/GameTicRate;
|
sbase = (titletimer+e.FracTic)/GameTicRate;
|
||||||
if ( sline >= scrolls.Size() ) sline = 0;
|
if ( sline >= scrolls.Size() ) sline = 0;
|
||||||
}
|
}
|
||||||
lastlang = language;
|
lastlang = language;
|
||||||
// estimate scrool length
|
lastlogo = swwm_oldlogo;
|
||||||
|
// estimate scroll length
|
||||||
double llen = smallfont.StringWidth(scrolls[sline]);
|
double llen = smallfont.StringWidth(scrolls[sline]);
|
||||||
double soffset = 40*((titletimer+e.FracTic)/GameTicRate-sbase);
|
double soffset = 40*((titletimer+e.FracTic)/GameTicRate-sbase);
|
||||||
if ( soffset > llen+ss.x )
|
if ( soffset > llen+ss.x )
|
||||||
|
|
@ -202,6 +200,7 @@ Class SWWMTitleStuff : EventHandler
|
||||||
}
|
}
|
||||||
double xx = ss.x-soffset;
|
double xx = ss.x-soffset;
|
||||||
int tlen = scrolls[sline].CodePointCount();
|
int tlen = scrolls[sline].CodePointCount();
|
||||||
|
double alf;
|
||||||
for ( int i=0, pos=0; i<tlen; i++ )
|
for ( int i=0, pos=0; i<tlen; i++ )
|
||||||
{
|
{
|
||||||
int ch;
|
int ch;
|
||||||
|
|
@ -210,13 +209,13 @@ Class SWWMTitleStuff : EventHandler
|
||||||
{
|
{
|
||||||
for ( double trl = .1; trl < 1.; trl += .04 )
|
for ( double trl = .1; trl < 1.; trl += .04 )
|
||||||
{
|
{
|
||||||
double yy = (ss.y-40)+10*sin(15*i+160*(titletimer+e.FracTic)/GameTicRate-90.*(1.-trl));
|
double yy = (ss.y-35)+10*sin(15*i+160*(titletimer+e.FracTic)/GameTicRate-90.*(1.-trl));
|
||||||
alf = max(0,1.-abs((ss.x/2)-xx)/(ss.x/2))**.5;
|
alf = max(0,1.-abs((ss.x/2)-xx)/(ss.x/2))**.5;
|
||||||
alf *= .2*trl;
|
alf *= .2*trl;
|
||||||
double xxofs = 5*sin(15*i+120*(titletimer+e.FracTic)/GameTicRate-90.*(1.-trl))-16*(1.-trl);
|
double xxofs = 5*sin(15*i+120*(titletimer+e.FracTic)/GameTicRate-90.*(1.-trl))-16*(1.-trl);
|
||||||
Screen.DrawChar(smallfont,Font.CR_BLUE,xx-xxofs,yy,ch,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf,DTA_LegacyRenderStyle,STYLE_Add);
|
Screen.DrawChar(smallfont,Font.CR_BLUE,xx-xxofs,yy,ch,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf,DTA_LegacyRenderStyle,STYLE_Add);
|
||||||
}
|
}
|
||||||
double yy = (ss.y-40)+10*sin(15*i+160*(titletimer+e.FracTic)/GameTicRate);
|
double yy = (ss.y-35)+10*sin(15*i+160*(titletimer+e.FracTic)/GameTicRate);
|
||||||
alf = max(0,1.-abs((ss.x/2)-xx)/(ss.x/2))**.5;
|
alf = max(0,1.-abs((ss.x/2)-xx)/(ss.x/2))**.5;
|
||||||
double xxofs = 5*sin(15*i+120*(titletimer+e.FracTic)/GameTicRate);
|
double xxofs = 5*sin(15*i+120*(titletimer+e.FracTic)/GameTicRate);
|
||||||
Color c = Color(int(127.5+127.5*sin(10*i+80*(titletimer+e.FracTic)/GameTicRate)),0,0);
|
Color c = Color(int(127.5+127.5*sin(10*i+80*(titletimer+e.FracTic)/GameTicRate)),0,0);
|
||||||
|
|
@ -225,4 +224,204 @@ Class SWWMTitleStuff : EventHandler
|
||||||
xx += smallfont.GetCharWidth(ch)+smallfont.GetDefaultKerning();
|
xx += smallfont.GetCharWidth(ch)+smallfont.GetDefaultKerning();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ui void Render_OldTitle( RenderEvent e, Vector2 ss )
|
||||||
|
{
|
||||||
|
if ( !tex[0] ) tex[0] = TexMan.CheckForTexture("graphics/UnSXLogo.png",TexMan.Type_Any);
|
||||||
|
if ( !tex[1] ) tex[1] = TexMan.CheckForTexture("graphics/SWWMGZLogo.png",TexMan.Type_Any);
|
||||||
|
double ar = Screen.GetAspectRatio();
|
||||||
|
Vector2 tsize = TexMan.GetScaledSize(tex[0]);
|
||||||
|
double sar = tsize.x/tsize.y;
|
||||||
|
Vector2 vsize;
|
||||||
|
if ( sar > ar ) vsize = (tsize.x,tsize.x/ar);
|
||||||
|
else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y);
|
||||||
|
else vsize = tsize;
|
||||||
|
double alf = clamp(((titletimer+e.FracTic)/GameTicRate)-2,0.,1.);
|
||||||
|
alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-8,0.,1.);
|
||||||
|
Screen.DrawTexture(tex[0],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alf);
|
||||||
|
String str = StringTable.Localize("$SWWM_TITLEPRESENTS");
|
||||||
|
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-10,0.,1.);
|
||||||
|
alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-16,0.,1.);
|
||||||
|
Screen.DrawText(smallfont,Font.CR_WHITE,(ss.x-smallfont.StringWidth(str))/2,(ss.y-smallfont.GetHeight())/2,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf);
|
||||||
|
if ( bFadeIn ) Screen.Dim("Black",1.-clamp(((titletimer+e.FracTic)/GameTicRate)-22,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight());
|
||||||
|
else
|
||||||
|
{
|
||||||
|
str = StringTable.Localize("$SWWM_TITLEMODBY");
|
||||||
|
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-18,0.,1.);
|
||||||
|
alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-24,0.,1.);
|
||||||
|
Screen.DrawText(smallfont,Font.CR_WHITE,(ss.x-smallfont.StringWidth(str))/2,(ss.y-smallfont.GetHeight())/2,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf);
|
||||||
|
}
|
||||||
|
tsize = TexMan.GetScaledSize(tex[1]);
|
||||||
|
sar = tsize.x/tsize.y;
|
||||||
|
if ( sar > ar ) vsize = (tsize.x,tsize.x/ar);
|
||||||
|
else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y);
|
||||||
|
else vsize = tsize;
|
||||||
|
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-26,0.,2.)*.5;
|
||||||
|
Screen.DrawTexture(tex[1],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alf);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ui void Render_NewTitle( RenderEvent e )
|
||||||
|
{
|
||||||
|
if ( !tex[4] ) tex[4] = TexMan.CheckForTexture("graphics/NewLogo.png",TexMan.Type_Any);
|
||||||
|
for ( int i=0; i<13; i++ )
|
||||||
|
{
|
||||||
|
if ( !letters[i] ) letters[i] = TexMan.CheckForTexture("graphics/NewLogo_Letter"..i..".png",TexMan.Type_Any);
|
||||||
|
}
|
||||||
|
double alf = clamp(((titletimer+e.FracTic)/GameTicRate)-1,0.,1.);
|
||||||
|
alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-4,0.,1.);
|
||||||
|
String str = StringTable.Localize("$SWWM_TITLEPRESENTSA");
|
||||||
|
Screen.DrawText(smallfont,Font.CR_FIRE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(smallfont.GetHeight()*CleanYFac),str,DTA_CleanNoMove,true,DTA_Alpha,alf);
|
||||||
|
str = StringTable.Localize("$SWWM_TITLEPRESENTSB");
|
||||||
|
Screen.DrawText(smallfont,Font.CR_WHITE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2),str,DTA_CleanNoMove,true,DTA_Alpha,alf);
|
||||||
|
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-5,0.,1.);
|
||||||
|
alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-8,0.,1.);
|
||||||
|
str = StringTable.Localize("$SWWM_TITLEMODBYA");
|
||||||
|
Screen.DrawText(smallfont,Font.CR_WHITE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(smallfont.GetHeight()*CleanYFac),str,DTA_CleanNoMove,true,DTA_Alpha,alf);
|
||||||
|
str = StringTable.Localize("$SWWM_TITLEMODBYB");
|
||||||
|
Screen.DrawText(smallfont,Font.CR_FIRE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2),str,DTA_CleanNoMove,true,DTA_Alpha,alf);
|
||||||
|
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-10,0.,1.);
|
||||||
|
alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-21,0.,1.);
|
||||||
|
str = StringTable.Localize("$SWWM_TITLEINTROA");
|
||||||
|
Screen.DrawText(smallfont,Font.CR_WHITE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(smallfont.GetHeight()*CleanYFac*3)/2,str,DTA_CleanNoMove,true,DTA_Alpha,alf);
|
||||||
|
str = StringTable.Localize("$SWWM_TITLEINTROB");
|
||||||
|
Screen.DrawText(smallfont,Font.CR_WHITE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(smallfont.GetHeight()*CleanYFac)/2,str,DTA_CleanNoMove,true,DTA_Alpha,alf);
|
||||||
|
str = StringTable.Localize("$SWWM_TITLEINTROC");
|
||||||
|
Screen.DrawText(smallfont,Font.CR_WHITE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)+(smallfont.GetHeight()*CleanYFac)/2,str,DTA_CleanNoMove,true,DTA_Alpha,alf);
|
||||||
|
double ar = Screen.GetAspectRatio();
|
||||||
|
Vector2 tsize = TexMan.GetScaledSize(tex[4]);
|
||||||
|
double sar = tsize.x/tsize.y;
|
||||||
|
Vector2 vsize;
|
||||||
|
if ( sar > ar ) vsize = (tsize.x,tsize.x/ar);
|
||||||
|
else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y);
|
||||||
|
else vsize = tsize;
|
||||||
|
if ( (titletimer+e.FracTic)/GameTicRate < 22 ) return;
|
||||||
|
if ( bFadeIn ) Screen.Dim("Black",1.-clamp(((titletimer+e.FracTic)/GameTicRate)-22,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight());
|
||||||
|
if ( (titletimer+e.FracTic)/GameTicRate < 27 )
|
||||||
|
{
|
||||||
|
static const int lofs[] =
|
||||||
|
{
|
||||||
|
153, 311, 489, 690, 844, 946, 1065, 1186, 1319, 1493, 1626, 1754, 1910
|
||||||
|
};
|
||||||
|
// draw letters one by one
|
||||||
|
double alph = 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-26.5,0.,1.);
|
||||||
|
for ( int i=0; i<13; i++ )
|
||||||
|
{
|
||||||
|
if ( ((titletimer+e.FracTic)/GameTicRate) < (23.+i*.2) ) continue;
|
||||||
|
double alf = 1.-clamp((((titletimer+e.FracTic)/GameTicRate)-(23+i*.2))*5.,0.,1.);
|
||||||
|
double zoom = 1.+.2*alf;
|
||||||
|
Screen.DrawTexture(letters[i],false,(vsize.x-tsize.x)/2+lofs[i],(vsize.y-tsize.y)/2+513,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_ScaleX,zoom,DTA_ScaleY,zoom,DTA_ColorOverlay,Color(int(128*(alf**2)),255,255,255),DTA_Alpha,alph);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( (titletimer+e.FracTic)/GameTicRate > 25 )
|
||||||
|
{
|
||||||
|
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-25.5,0.,1.);
|
||||||
|
Screen.DrawTexture(tex[4],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alf);
|
||||||
|
}
|
||||||
|
double scl = Screen.GetHeight()/vsize.y;
|
||||||
|
double tscl1 = max(1./3.,(floor((Screen.GetHeight()*3.)/vsize.y)+4.)/3.);
|
||||||
|
str = "CODENAME";
|
||||||
|
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-22,0.,1.);
|
||||||
|
Screen.DrawText(BigFont,Font.CR_SAPPHIRE,(Screen.GetWidth()-tscl1*BigFont.StringWidth(str))/2,(Screen.GetHeight()-(scl*400+BigFont.GetHeight()*tscl1))/2,str,DTA_ScaleX,tscl1,DTA_ScaleY,tscl1,DTA_Alpha,alf);
|
||||||
|
double tscl2 = max(1./3.,(floor((Screen.GetHeight()*3.)/vsize.y)+1.)/3.);
|
||||||
|
if ( !stitle || (lastlang2 != language) )
|
||||||
|
{
|
||||||
|
Array<String> done;
|
||||||
|
Array<int> candidates;
|
||||||
|
let c = CVar.FindCVar('swwm_titlesubhistory');
|
||||||
|
String cstr = c.GetString();
|
||||||
|
int which = 1;
|
||||||
|
if ( cstr != "" )
|
||||||
|
{
|
||||||
|
cstr.Split(done,";");
|
||||||
|
int nsub = StringTable.Localize("$SWWM_NTITLESUB").ToInt();
|
||||||
|
for ( int i=1; i<=nsub; i++ )
|
||||||
|
{
|
||||||
|
String sn = String.Format("%d",i);
|
||||||
|
if ( done.Find(sn) < done.Size() ) continue;
|
||||||
|
candidates.Push(i);
|
||||||
|
}
|
||||||
|
if ( candidates.Size() == 0 ) c.SetString("1");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
which = candidates[Random[UIStuff](0,candidates.Size()-1)];
|
||||||
|
c.SetString(cstr..";"..which);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else c.SetString("1");
|
||||||
|
if ( stitle ) stitle.Destroy();
|
||||||
|
stitle = BigFont.BreakLines(StringTable.Localize("$SWWM_TITLESUB"..which),int.max);
|
||||||
|
}
|
||||||
|
lastlang2 = language;
|
||||||
|
alf = clamp(((titletimer+e.FracTic)/GameTicRate)-27,0.,1.);
|
||||||
|
double xx;
|
||||||
|
double yy = (Screen.GetHeight()+(scl*360+(1.-alf)*80*tscl2))/2;
|
||||||
|
for ( int i=0; i<stitle.Count(); i++ )
|
||||||
|
{
|
||||||
|
xx = (Screen.GetWidth()-tscl2*BigFont.StringWidth(stitle.StringAt(i)))/2;
|
||||||
|
Screen.DrawText(BigFont,Font.CR_SAPPHIRE,xx,yy,stitle.StringAt(i),DTA_ScaleX,tscl2,DTA_ScaleY,tscl2,DTA_Alpha,alf);
|
||||||
|
yy += tscl2*BigFont.GetHeight();
|
||||||
|
}
|
||||||
|
if ( (((titletimer+e.FracTic)/GameTicRate) >= 23.) && (((titletimer+e.FracTic)/GameTicRate) < 25.6) )
|
||||||
|
{
|
||||||
|
double alf = 1.-SWWMUtility.fract(((titletimer+e.FracTic)/GameTicRate)*5.);
|
||||||
|
Screen.Dim("White",.05*alf,0,0,Screen.GetWidth(),Screen.GetHeight());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const LOGOFADERBASE = 60000.;
|
||||||
|
|
||||||
|
Class LogoFader : Actor
|
||||||
|
{
|
||||||
|
Actor base;
|
||||||
|
SWWMTitleStuff hnd;
|
||||||
|
|
||||||
|
Default
|
||||||
|
{
|
||||||
|
+NOGRAVITY;
|
||||||
|
+NOBLOCKMAP;
|
||||||
|
+NOINTERACTION;
|
||||||
|
+DONTSPLASH;
|
||||||
|
Radius .1;
|
||||||
|
Height 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
override void PostBeginPlay()
|
||||||
|
{
|
||||||
|
SetOrigin((LOGOFADERBASE+32,LOGOFADERBASE,0),false);
|
||||||
|
SetZ(floorz);
|
||||||
|
roll = 180;
|
||||||
|
angle = 180;
|
||||||
|
double halfstretch = (1.+level.pixelstretch)/2.;
|
||||||
|
if ( !base ) base = Spawn("LogoFaderSurface",(LOGOFADERBASE,LOGOFADERBASE-32.,floorz+32.*halfstretch));
|
||||||
|
}
|
||||||
|
override void Tick()
|
||||||
|
{
|
||||||
|
double alf1 = clamp(((double(hnd.titletimer)/GameTicRate)-26.5)*.5,0.,1.);
|
||||||
|
double alf2 = (hnd.titletimer>28*GameTicRate)?clamp((double((hnd.titletimer-GameTicRate*3)%(GameTicRate*5))/GameTicRate),0.,1.):0.;
|
||||||
|
base.SetShade(Color(int(255*alf1),int(255*alf2),0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Class LogoFaderSurface : Actor
|
||||||
|
{
|
||||||
|
Default
|
||||||
|
{
|
||||||
|
Radius .1;
|
||||||
|
Height 0.;
|
||||||
|
RenderRadius 256;
|
||||||
|
+NOBLOCKMAP;
|
||||||
|
+NOGRAVITY;
|
||||||
|
+NOINTERACTION;
|
||||||
|
+DONTSPLASH;
|
||||||
|
+WALLSPRITE;
|
||||||
|
RenderStyle "Stencil";
|
||||||
|
}
|
||||||
|
override void Tick(){}
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
LGFD A -1 Bright;
|
||||||
|
Stop;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||