diff --git a/source/exhumed/src/2d.cpp b/source/exhumed/src/2d.cpp index 57b881486..cdca468da 100644 --- a/source/exhumed/src/2d.cpp +++ b/source/exhumed/src/2d.cpp @@ -861,44 +861,25 @@ void TextOverlay::Start(int starttime) lastclock = starttime; } -void TextOverlay::ComputeCinemaText(int nLine) +void TextOverlay::ComputeCinemaText() { - linecount = 0; - - while (1) - { - if (!strcmp(gString[linecount + nLine], "END")) { - break; - } - - int nWidth = SmallFont->StringWidth(gString[linecount + nLine]); - nLeft[linecount] = 160 - nWidth / 2; - - linecount++; + int i = 0; + for (auto &line : screentext) + { + int nWidth = SmallFont->StringWidth(line); + nLeft[i++] = 160 - nWidth / 2; } nCrawlY = 199; - nHeight = linecount * 10; + nHeight = screentext.Size() * 10; } void TextOverlay::ReadyCinemaText(uint16_t nVal) { - line = FindGString("CINEMAS"); - if (line < 0) { - return; - } - - while (nVal) - { - while (strcmp(gString[line], "END")) { - line++; - } - - line++; - nVal--; - } - - ComputeCinemaText(line); + FStringf label("TXT_EX_LASTLEVEL%d", nVal + 1); + label = GStrings(label); + screentext = label.Split("\n"); + ComputeCinemaText(); } void TextOverlay::DisplayText() @@ -906,12 +887,12 @@ void TextOverlay::DisplayText() if (nHeight + nCrawlY > 0) { double y = nCrawlY; - int i = 0; + unsigned int i = 0; - while (i < linecount && y <= 199) + while (i < screentext.Size() && y <= 199) { if (y >= -10) { - DrawText(twod, SmallFont, CR_UNDEFINED, nLeft[i], y, gString[line + i], DTA_FullscreenScale, FSMode_ScaleToFit43, DTA_VirtualWidth, 320, DTA_VirtualHeight, 200, TAG_DONE); + DrawText(twod, SmallFont, CR_UNDEFINED, nLeft[i], y, screentext[i], DTA_FullscreenScale, FSMode_ScaleToFit43, DTA_VirtualWidth, 320, DTA_VirtualHeight, 200, TAG_DONE); } i++; diff --git a/source/exhumed/src/exhumed.cpp b/source/exhumed/src/exhumed.cpp index f47700d0a..1727f23e7 100644 --- a/source/exhumed/src/exhumed.cpp +++ b/source/exhumed/src/exhumed.cpp @@ -64,136 +64,6 @@ bool EndLevel = false; /* these are XORed in the original game executable then XORed back to normal when the game first starts. Here they are normally */ const char *gString[] = { - "CINEMAS", - "THE ANCIENT EGYPTIAN CITY", - "OF KARNAK HAS BEEN SEIZED", - "BY UNKNOWN POWERS, AND GREAT", - "TURMOIL IS SPREADING INTO", - "NEIGHBORING LANDS, POSING", - "A GRAVE THREAT TO PLANET", - "EARTH. MILITANT FORCES FROM", - "ALL PARTS OF THE GLOBE HAVE", - "ENTERED THE KARNAK VALLEY,", - "BUT NONE HAVE RETURNED. THE", - "ONLY KNOWN INFORMATION", - "REGARDING THIS CRISIS CAME", - "FROM A DYING KARNAK VILLAGER", - "WHO MANAGED TO WANDER OUT OF", - "THE VALLEY TO SAFETY.", - "'THEY'VE STOLEN THE GREAT", - "KING'S MUMMY...', MURMURED", - "THE DYING VILLAGER, BUT THE", - "VILLAGER DIED BEFORE HE", - "COULD SAY MORE. WITH NO", - "OTHER OPTIONS, WORLD", - "LEADERS HAVE CHOSEN TO DROP", - "YOU INTO THE VALLEY VIA", - "HELICOPTER IN AN ATTEMPT", - "TO FIND AND DESTROY THE", - "THREATENING FORCES AND", - "RESOLVE THE MYSTERY THAT", - "HAS ENGULFED THIS ONCE", - "PEACEFUL LAND. FLYING AT", - "HIGH ALTITUDE TO AVOID", - "BEING SHOT DOWN LIKE OTHERS", - "BEFORE YOU, YOUR COPTER", - "MYSTERIOUSLY EXPLODES IN THE", - "AIR AS YOU BARELY ESCAPE,", - "WITH NO POSSIBLE CONTACT", - "WITH THE OUTSIDE WORLD.", - "SCARED AS HELL, YOU DESCEND", - "INTO THE HEART OF KARNAK...", - "HOME TO THE CELEBRATED", - "BURIAL CRYPT OF THE GREAT", - "KING RAMSES.", - "END", - "AN EVIL FORCE KNOWN AS THE", - "KILMAAT HAS BESIEGED THE", - "SANCTITY OF MY PALACE AND", - "IS PULLING AT THE VERY", - "TENDRILS OF MY EXISTENCE.", - "THESE FORCES INTEND TO", - "ENSLAVE ME BY REANIMATING", - "MY PRESERVED CORPSE. I HAVE", - "PROTECTED MY CORPSE WITH A", - "GENETIC KEY. IF YOU ARE", - "UNSUCCESSFUL I CANNOT", - "PROTECT CIVILIZATION, AND", - "CHAOS WILL PREVAIL. I AM", - "BEING TORN BETWEEN WORLDS", - "AND THIS INSIDIOUS", - "EXPERIMENT MUST BE STOPPED.", - "END", - "I HAVE HIDDEN A MYSTICAL", - "GAUNTLET AT EL KAB THAT WILL", - "CHANNEL MY ENERGY THROUGH", - "YOUR HANDS. FIND THE", - "GAUNTLET AND CROSS THE ASWAN", - "HIGH DAM TO DEFEAT THE EVIL", - "BEAST SET.", - "END", - "SET WAS A FORMIDABLE FOE.", - "NO MORTAL HAS EVEN CONQUERED", - "THEIR OWN FEAR, MUCH LESS", - "ENTERED MORTAL BATTLE AND", - "TAKEN HIS LIFE.", - "END", - "YOU'VE MADE IT HALFWAY TOWARD", - "FULLFILLING YOUR DESTINY.", - "THE KILMAAT ARE GROWING", - "RESTLESS WITH YOUR PROGRESS.", - "SEEK OUT A TEMPLE IN THIS", - "CITADEL WHERE I WILL PROVIDE", - "MORE INFORMATION", - "END", - "THE KILMAAT RACE HAS", - "CONTINUED THEIR MONSTEROUS", - "ANIMAL-HUMAN EXPERIMENTS IN", - "AN EFFORT TO SOLVE THE KEY OF", - "ANIMATING MY CORPSE. THE", - "VICTORY DEFEATING SET DIDN'T", - "SLOW YOU DOWN AS MUCH AS", - "THEY HAD PLANNED. THEY ARE", - "ACTIVELY ROBBING A SLAVE", - "GIRL OF HER LIFE TO CREATE", - "ANOTHER MONSTEROUS", - "ABOMINATION, COMBINING HUMAN", - "AND INSECT INTENT ON SLAYING", - "YOU. PREPARE YOURSELF FOR", - "BATTLE AS SHE WILL BE WAITING", - "FOR YOU AT THE LUXOR TEMPLE. ", - "END", - "YOU'VE DONE WELL TO DEFEAT", - "SELKIS. YOU HAVE DISTRACTED", - "THE KILMAAT WITH YOUR", - "PRESENCE AND THEY HAVE", - "TEMPORARILY ABANDONED", - "ANIMATION OF MY CORPSE.", - "THE ALIEN QUEEN KILMAATIKHAN", - "HAS A PERSONAL VENDETTA", - "AGAINST YOU. ARROGANCE IS", - "HER WEAKNESS, AND IF YOU CAN", - "DEFEAT KILMAATIKHAN, THE", - "BATTLE WILL BE WON.", - "END", - "THE KILMAAT HAVE BEEN", - "DESTROYED. UNFORTUNATELY,", - "YOUR RECKLESSNESS HAS", - "DESTROYED THE EARTH AND ALL", - "OF ITS INHABITANTS. ALL THAT", - "REMAINS IS A SMOLDERING HUNK", - "OF ROCK.", - "END", - "THE KILMAAT HAVE BEEN", - "DEFEATED AND YOU SINGLE", - "HANDEDLY SAVED THE EARTH", - "FROM DESTRUCTION.", - " ", - " ", - " ", - "YOUR BRAVERY AND HEROISM", - "ARE LEGENDARY.", - "END", "ITEMS", "LIFE BLOOD", "LIFE", diff --git a/source/exhumed/src/exhumed.h b/source/exhumed/src/exhumed.h index 5503c5b2e..fd7201459 100644 --- a/source/exhumed/src/exhumed.h +++ b/source/exhumed/src/exhumed.h @@ -265,14 +265,14 @@ class TextOverlay double nCrawlY; short nLeft[50]; int nHeight; - int linecount; - int line; int lastclock; + TArray screentext; + public: void Start(int starttime); - void ComputeCinemaText(int nLine); + void ComputeCinemaText(); void ReadyCinemaText(uint16_t nVal); void DisplayText(); bool AdvanceCinemaText(int totalclock); diff --git a/wadsrc/static/language.csv b/wadsrc/static/language.csv index ebed5f892..b635fe6d1 100644 --- a/wadsrc/static/language.csv +++ b/wadsrc/static/language.csv @@ -2157,4 +2157,133 @@ take out the control panels and the central power source. This is the big one buddy, best of luck... For all of us. -",TXT_EX_LASTLEVEL3,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file +",TXT_EX_LASTLEVEL3,,,,,,,,,,,,,,,,,,,,,, +"The ancient Egyptian city +of Karnak has been seized +by unknown powers, and great +turmoil is spreading into +neighboring lands, posing +a grave threat to planet +earth. Militant forces from +all parts of the globe have +entered the Karnak valley, +but none have returned. The +only known information +regarding this crisis came +from a dying karnak villager +who managed to wander out of +the valley to safety. +'They've stolen the great +King's mummy...', Murmured +the dying villager, but the +villager died before he +could say more. With no +other options, world +leaders have chosen to drop +you into the valley via +helicopter in an attempt +to find and destroy the +threatening forces and +resolve the mystery that +has engulfed this once +peaceful land. Flying at +high altitude to avoid +being shot down like others +before you, your copter +mysteriously explodes in the +air as you barely escape, +with no possible contact +with the outside world. +Scared as hell, you descend +into the heart of karnak... +Home to the celebrated +burial crypt of the great +King Ramses. +",TXT_EX_CINEMA1,,,,,,,,,,,,,,,,,,,,,, +"An evil force known as the +Kilmaat has besieged the +sanctity of my palace and +is pulling at the very +tendrils of my existence. +These forces intend to +enslave me by reanimating +my preserved corpse. I have +protected my corpse with a +genetic key. If you are +unsuccessful I cannot +protect civilization, and +chaos will prevail. I am +being torn between worlds +and this insidious +experiment must be stopped. +",TXT_EX_CINEMA1,,,,,,,,,,,,,,,,,,,,,, +"I have hidden a mystical +gauntlet at el kab that will +channel my energy through +your hands. Find the +gauntlet and cross the aswan +high dam to defeat the evil +beast set. +",TXT_EX_CINEMA2,,,,,,,,,,,,,,,,,,,,,, +"Set was a formidable foe. +No mortal has even conquered +their own fear, much less +entered mortal battle and +taken his life. +",TXT_EX_CINEMA3,,,,,,,,,,,,,,,,,,,,,, +"You've made it halfway toward +fullfilling your destiny. +The Kilmaat are growing +restless with your progress. +Seek out a temple in this +citadel where I will provide +more information. +",TXT_EX_CINEMA4,,,,,,,,,,,,,,,,,,,,,, +"the Kilmaat race has +continued their monsterous +animal-human experiments in +an effort to solve the key of +animating my corpse. The +victory defeating set didn't +slow you down as much as +they had planned. They are +actively robbing a slave +girl of her life to create +another monsterous +abomination, combining human +and insect intent on slaying +you. Prepare yourself for +battle as she will be waiting +for you at the Luxor temple. +",TXT_EX_CINEMA5,,,,,,,,,,,,,,,,,,,,,, +"You've done well to defeat +Selkis. You have distracted +the Kilmaat with your +presence and they have +temporarily abandoned +animation of my corpse. +The alien queen Kilmaatikhan +has a personal vendetta +against you. Arrogance is +her weakness, and if you can +defeat Kilmaatikhan, the +battle will be won. +",TXT_EX_CINEMA6,,,,,,,,,,,,,,,,,,,,,, +"The Kilmaat have been +destroyed. Unfortunately, +your recklessness has +destroyed the Earth and all +of its inhabitants. All that +remains is a smoldering hunk +of rock. +",TXT_EX_CINEMA7,,,,,,,,,,,,,,,,,,,,,, +"The Kilmaat have been +defeated and you single +handedly saved the Earth +from destruction. + + + +Your bravery and heroism +are legendary. +",TXT_EX_CINEMA8,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file