Author Topic: MODULE: TypedText 0.7.0  (Read 2497 times)  Share 

Cassiebsg

  • Cavefish
  • Fleeing the Cylon tyrrany...
Re: cancelled: TypedText 0.7.0
« Reply #20 on: 10 Mar 2017, 05:19 »
Oh. :~(
And I was enjoying seeing the text printed there... (roll)

Hope you can fix it soon, and sorry for being a pain.
There are those who believe that life here began out there...

Crimson Wizard

  • AGS Project Tracker Admins
    • Best Innovation Award Winner 2013, for spearheading the AGS 3.3.0 project
    •  
    • Lifetime Achievement Award Winner
    •  
Re: cancelled: TypedText 0.7.0
« Reply #21 on: 10 Mar 2017, 08:10 »
Sorry, I think it did not work for you because you do not set tt_draw.TextColor, it is black by default, and if your room background is black, that would explain why you do not see anything.

Cassiebsg

  • Cavefish
  • Fleeing the Cylon tyrrany...
Re: Temporary cancelled: TypedText 0.7.0
« Reply #22 on: 10 Mar 2017, 08:44 »
Okay, I figured out why it's not working... seems like it can't render over my BG video?
I "removed" the code for the D3D pluging BG video, and now it's working. (nod) Looks really nice too!
Also thanks for the heads up with the TextColor code. :)
Do you think it's possible to render it over the video, like the speech is? If it's not it's okay, I'll just have to work something else out. Or add the text to the rendered video.

EDIT: Also, think you canceled the module too quick, seems to be working just fine, and that it's just my ineptitude to understand the complex code plus my other messy code that was on the way. ;)
Only real needed change, seem to be in your example code, where you typed string s instead of String s. ;)
« Last Edit: 10 Mar 2017, 08:57 by Cassiebsg »
There are those who believe that life here began out there...

Crimson Wizard

  • AGS Project Tracker Admins
    • Best Innovation Award Winner 2013, for spearheading the AGS 3.3.0 project
    •  
    • Lifetime Achievement Award Winner
    •  
Re: Temporary cancelled: TypedText 0.7.0
« Reply #23 on: 10 Mar 2017, 09:11 »
Okay, I figured out why it's not working... seems like it can't render over my BG video?

I don't know; that depends on how this video is rendered, which I never tried out myself. Maybe video gets drawn above text?
If video plugin can somehow return drawing surface of its own, you may draw upon it instead.

You may try using TypedTextOverlay or TypedTextLabel instead of TypedTextDrawing, if you have a possibility to use overlay/GUI in your room.


I will repost the module after I fix some errors and write easier explanation on how to use it.
« Last Edit: 10 Mar 2017, 09:21 by Crimson Wizard »

Cassiebsg

  • Cavefish
  • Fleeing the Cylon tyrrany...
Re: Temporary cancelled: TypedText 0.7.0
« Reply #24 on: 10 Mar 2017, 10:04 »
I'll give it a try, can it be a transparent GUI/overlay?

I'm using the D3D plugin by AJA for the video rendering found here: http://www.adventuregamestudio.co.uk/forums/index.php?topic=45348.0
You can probably easily test it your self, if you like, by copy pasting my code into a new game's room, and just replace the video filename with any other ogv movie you might have laying around.

EDIT: No, text gets drawn over the video. At least the speech text does. Had no problem rendering the TextSay over it.

EDIT2: Okay, tried it with a GUI, I imported the footline code from your demo to test, and edited the lines relating to sounds out.
I got it to sorta work. It seems it can render over the video. (nod) Only it doesn't run while the speech is running. (wrong) So, I only get the first line rendered once I hit the start button on the main menu, and my second video starts. ??? Then the next comes first after the game has started (controling the character in a non-blocking way). So my guess right now is, the GUI lbl won't uptade if it's blocked.

Haven't tried overlay yet, since I have never used overlays before, meaning that it's even a bigger mystery for me. (roll)

EDIT3: Now I'm even more confuse... works even in blocked mode, but still not over my first video. This is weird, since the code is the same for both videos, is it not? ??? (EDIT4: And now I'm at a loss... put my 1st video on the cutscene_start and then I get the text typed... with the cutscene_Intro it doesn't run... what is different? ??? )

EDIT5: Okay, got it working with a GUI! :-D :-D :-D Now I just need to change the lines to display my text and fine tune it! (nod)
Thanks, and sorry for being a noob. ;)
And oh, am not sure what was wrong before, I changed 2 things, I moved the NextFootline(); to room_load() and added a variable to fire up my code in rep_exe... which ever of the two "fixes" was, it's working! :-D

EDIT 6: Am I over doing this? Sorry.
Now I'm trying to complicate a simple thing... I am here trying to keep 2 lines on screen, instead of writing one line, clear, and then write a second line. I realized that I can just use the [ to break a line into 2, and I would do that, if I didn't want to use a smaller font on the 1st line and a bigger on the second. (roll)
I've managed to do it, by writing 2 lines simultaneous (though I would prefer to write one at a time), but the first line is still removed before the second. Is there a simple setting I can change, or this is not possible without some complicated rewrite?
« Last Edit: 10 Mar 2017, 20:59 by Cassiebsg »
There are those who believe that life here began out there...

Crimson Wizard

  • AGS Project Tracker Admins
    • Best Innovation Award Winner 2013, for spearheading the AGS 3.3.0 project
    •  
    • Lifetime Achievement Award Winner
    •  
Re: MODULE: TypedText 0.7.0
« Reply #25 on: 11 Mar 2017, 12:40 »
EDIT 6: Am I over doing this? Sorry.
Now I'm trying to complicate a simple thing... I am here trying to keep 2 lines on screen, instead of writing one line, clear, and then write a second line. I realized that I can just use the [ to break a line into 2, and I would do that, if I didn't want to use a smaller font on the 1st line and a bigger on the second. (roll)
I've managed to do it, by writing 2 lines simultaneous (though I would prefer to write one at a time), but the first line is still removed before the second. Is there a simple setting I can change, or this is not possible without some complicated rewrite?


If you want to have 2 different fonts then you will have to use 2 different objects, because right now TypedTextDrawing does not support changing font when typing, and Labels, Buttons and Overlays do not support multiple fonts on their own (and my module cannot make them do). So yes, you will need 2 Labels and TypewriterLabel objects, linked to each other. You actually did that, if I understand right?

If you want first line to stay you need to tell it not to clear text at all, or keep it for a long time. That depends on what function you use to run it.

If you are manually managing TypewriterLabel, then simply do not call "Clear" function for it.

If you are using Label.Typewriter extender function, then I realized that I did not provide option to keep it forever until you say to remove it, but there is a trick you can use: when you set up its properties with TypewriterPreset.SetGeneral, last parameter is "reading time". Simply set that reading time to some very big number (you may actually do same if you are using TypewriterLabel object yourself).
« Last Edit: 11 Mar 2017, 12:42 by Crimson Wizard »

Cassiebsg

  • Cavefish
  • Fleeing the Cylon tyrrany...
Re: MODULE: TypedText 0.7.0
« Reply #26 on: 11 Mar 2017, 12:56 »
Yes, I'm actually using 6 labels in the GUI, because I wanted the text to be displayed in different places on screen, and thought it would be easier to print each line to a new label... (roll)
I'm pretty happy the way it's working now, except for the top label with the smaller font and the bottom label with the bigger font are printed at the same time.
I would love it to print the fist line, not clear the line, then type the second line, and then clear the two lines simultanoues when I move to print line 3 and 4.

I tried to figure where the clear was in the code, but failed to see it. :-[

Here's the code I'm currently using:
Code: Adventure Game Studio
  1. #define footline_TYPEWRITER_PRESET 1
  2.  
  3. String footlines[];
  4. int footline_count;
  5. int footline_index;
  6. int footline_tw;
  7.  
  8. function game_start()
  9. {
  10.   footline_count = 7;
  11.   footlines = new String[footline_count];
  12.   footlines[0] = "A fan game by     [";
  13.   footlines[1] = "Sandra T. Almeida [";
  14.   footlines[2] = "Made with             [";
  15.   footlines[3] = "Adventure Game Studio [";
  16.   footlines[4] = "based on the original TV show: [";
  17.   footlines[5] = "Battlestar Galactica           [";
  18.   footlines[6] = " ";
  19.   footline_index = 0;
  20.   footline_tw = NO_TYPEWRITER;
  21.  
  22.   //lblTypedText1.TextColor = 64960;
  23.   //lblFootline.Font = eFontGalactican;
  24.   lblTypedText1.Text = "";
  25.   lblTypedText1t.Text = "";
  26.   lblTypedText2.Text = "";
  27.   lblTypedText2t.Text = "";
  28.   lblTypedText3.Text = "";
  29.   lblTypedText3t.Text = "";
  30.  
  31.   TypewriterPreset.SetGeneral(footline_TYPEWRITER_PRESET, 2, 4, eTypedDelay_LongSpace, 10);
  32.   //TypewriterPreset.SetCaret(footline_TYPEWRITER_PRESET, 2, 4, eTypedCaret_Explicit, " ");
  33.   //AudioClip *type_clips[] = new AudioClip[3];
  34.   // type_clips[0] = aKeyboard;
  35.   //type_clips[1] = aKeyboard2;
  36.  // type_clips[2] = aKeyboard3;
  37.  // TypewriterPreset.SetSoundArray(footline_TYPEWRITER_PRESET, type_clips, 3, null, aKeyboard_beep);
  38. }
  39.  
  40. void NextFootline()
  41. {
  42.   if (!playingCredits)
  43.   {
  44.     if (footline_tw != NO_TYPEWRITER)
  45.     {
  46.       TypewriterRunners.Cancel(footline_tw);
  47.     }
  48.   }
  49. }
  50.  
  51. function repeatedly_execute_always()
  52. {
  53.   if (!playingCredits)
  54.   {
  55.     if (footline_tw != NO_TYPEWRITER)
  56.     {
  57.       if (!TypewriterRunners.IsActive[footline_tw])
  58.         footline_tw = NO_TYPEWRITER;
  59.     }
  60.     if (footline_tw == NO_TYPEWRITER)
  61.     {
  62.       if (Game.DoOnceOnly("1st intro line"))
  63.       {
  64.         lblTypedText1t.Font = eFontOptimus;
  65.         footline_tw = lblTypedText1t.Typewriter(footlines[footline_index], eNoBlock, footline_TYPEWRITER_PRESET);
  66.         //lblTypedText1="";
  67.         footline_index++;
  68.         footline_tw = lblTypedText1.Typewriter(footlines[footline_index], eNoBlock, footline_TYPEWRITER_PRESET);
  69.       }
  70.       else if (Game.DoOnceOnly("2nd intro line"))
  71.       {
  72.         lblTypedText1t.Text="";
  73.         footline_tw = lblTypedText2t.Typewriter(footlines[footline_index], eNoBlock, footline_TYPEWRITER_PRESET);
  74.         footline_index++;
  75.         footline_tw = lblTypedText2.Typewriter(footlines[footline_index], eNoBlock, footline_TYPEWRITER_PRESET);
  76.       }
  77.         else if (Game.DoOnceOnly("3rd intro line"))
  78.       {
  79.         lblTypedText2t.Text="";
  80.         footline_tw = lblTypedText3t.Typewriter(footlines[footline_index], eNoBlock, footline_TYPEWRITER_PRESET);
  81.         footline_index++;
  82.         footline_tw = lblTypedText3.Typewriter(footlines[footline_index], eNoBlock, footline_TYPEWRITER_PRESET);
  83.       }
  84.       footline_index++;
  85.       if (footline_index == footline_count || footlines[footline_index] == null)
  86.       {
  87.         lblTypedText3.Text="";
  88.         footline_index = 6;
  89.       }
  90.     }
  91.   }
  92. }
  93.  

The label ending in t is the top line with the smaller font.

But don't go out of your way if making it work slightly different is too much of a pain. It's just a little fine tune to make it 1% better (in my eyes, that is). (laugh)

EDIT: Fixed the indent... seems like the forum doesn't like my copy/pastes from the editor (I'm using tab for indent there...)
« Last Edit: 11 Mar 2017, 13:07 by Cassiebsg »
There are those who believe that life here began out there...

Crimson Wizard

  • AGS Project Tracker Admins
    • Best Innovation Award Winner 2013, for spearheading the AGS 3.3.0 project
    •  
    • Lifetime Achievement Award Winner
    •  
Re: MODULE: TypedText 0.7.0
« Reply #27 on: 11 Mar 2017, 13:47 »
The first error in this script is that you are remembering all typewriter indexes in same variable, and since some of them run simultaneously or have to stay on screen for some time, it gets overwritten every time and you loose control over previous ones.
Also, you are starting two lines at the same time, that's why... they are typing at same time.

Instead of "int footline_tw" you need "int footline_tw[N]", where N is the number of labels you have, or at least the number of simultaneous typewriters, whichever is more convenient.

As I mentioned earlier, you need to set read time to some big number to prevent automatic removal of a text.

Code: Adventure Game Studio
  1. TypewriterPreset.SetGeneral(footline_TYPEWRITER_PRESET, 2, 4, eTypedDelay_LongSpace, 1000); // notice 1000
  2.  

The code may look something like:
Code: Adventure Game Studio
  1. function repeatedly_execute_always()
  2. {
  3.   if (footline_tw[0] == NO_TYPEWRITER) // first typewriter was not started yet
  4.   {
  5.     if (Game.DoOnceOnly("1st intro line SMALL FONT"))
  6.     {
  7.       // start first line
  8.       footline_tw = lblTypedText1t.Typewriter(footlines[footline_index], eNoBlock, footline_TYPEWRITER_PRESET);
  9.       footline_index++;
  10.     }
  11.   }
  12.   if (footline_tw[0] != NO_TYPEWRITER && !TypewriterRunners.IsActive[footline_tw[0]]) // first typewriter has started and finished typing
  13.   {
  14.     if (Game.DoOnceOnly("1st intro line BIG FONT"))
  15.     {
  16.       // start second line
  17.       footline_tw[1] = lblTypedText1.Typewriter(footlines[footline_index], eNoBlock, footline_TYPEWRITER_PRESET);
  18.       footline_index++;
  19.     }
  20.   }
  21.   if (footline_tw[1] != NO_TYPEWRITER && !TypewriterRunners.IsActive[footline_tw[1]]) // second typewriter has started and finished typing
  22.   {
  23.     if (Game.DoOnceOnly("2nd intro line SMALL FONT"))
  24.     {
  25.       // Remove first two lines
  26.       TypewriterRunners.Cancel(footline_tw[0]);
  27.       TypewriterRunners.Cancel(footline_tw[1]);
  28.       // Start third line
  29.       footline_tw[2] = lblTypedText2t.Typewriter(footlines[footline_index], eNoBlock, footline_TYPEWRITER_PRESET);
  30.       footline_index++;
  31.     }
  32.   }
  33.   if (footline_tw[2] != NO_TYPEWRITER && !TypewriterRunners.IsActive[footline_tw[2]]) // third typewriter has started and finished typing
  34.   {
  35.     if (Game.DoOnceOnly("2nd intro line BIG FONT"))
  36.     {
  37.       // start fourth line
  38.       footline_tw[3] = lblTypedText3.Typewriter(footlines[footline_index], eNoBlock, footline_TYPEWRITER_PRESET);
  39.       footline_index++;
  40.     }
  41.   }
  42.  
  43.   // and so on...
  44. }
  45.  

There should be more optimal way to do this, but my brain is not working well right now.
« Last Edit: 11 Mar 2017, 13:51 by Crimson Wizard »

Cassiebsg

  • Cavefish
  • Fleeing the Cylon tyrrany...
Re: MODULE: TypedText 0.7.0
« Reply #28 on: 11 Mar 2017, 14:06 »
Yes, I knew why they were writing simultaneous, just not how to stop the first line from being removed. ;)
I'll give a try, and thanks bunch for the help and the module! (nod)


EDIT: Been trying this but now the second line (or any other after the 1st) never starts... :( Not sure what I did wrong, probably the arrays?
« Last Edit: 13 Mar 2017, 21:43 by Cassiebsg »
There are those who believe that life here began out there...

Crimson Wizard

  • AGS Project Tracker Admins
    • Best Innovation Award Winner 2013, for spearheading the AGS 3.3.0 project
    •  
    • Lifetime Achievement Award Winner
    •  
Re: MODULE: TypedText 0.7.0
« Reply #29 on: 17 Mar 2017, 12:29 »
EDIT: Been trying this but now the second line (or any other after the 1st) never starts... :( Not sure what I did wrong, probably the arrays?

Can you post your current code again?

Cassiebsg

  • Cavefish
  • Fleeing the Cylon tyrrany...
Re: MODULE: TypedText 0.7.0
« Reply #30 on: 17 Mar 2017, 14:49 »
Sure, though it's quiet a mess atm, since I started testing other ways in the hopes to figure this out.

Code: Adventure Game Studio
  1.  
  2. #define introline_TYPEWRITER_PRESET 2
  3.  
  4. String introlines_Small[];
  5. String introlines_Big[];
  6. int introline_Small_count;
  7. int introline_Small_index;
  8. int introline_Big_count;
  9. int introline_Big_index;
  10. int introline_Big_tw[1]; // Number of typewriters
  11. int introline_Small_tw[1]; // Number of typewriters
  12.  
  13. function game_start()
  14. {
  15.   introline_Big_count = 4;
  16.   introlines_Big = new String[introline_Big_count];
  17.   introlines_Big[0] = "Sandra T. Almeida [";
  18.   introlines_Big[1] = "Adventure Game Studio [";
  19.   introlines_Big[2] = "Battlestar Galactica           [";
  20.   introlines_Big[3] = " ";
  21.   introline_Big_index = 0;
  22.        
  23.        
  24.   introline_Small_count = 4;
  25.   introlines_Small = new String[introline_Small_count];
  26.   introlines_Small[0] = "A fan game by     [";
  27.   introlines_Small[1] = "Made with             [";
  28.   introlines_Small[2] = "based on the original TV show: [";
  29.   introlines_Small[3] = " ";
  30.   introline_Small_index = 0;
  31.        
  32.   introline_Big_tw[0] = NO_TYPEWRITER;
  33.   introline_Small_tw[0] = NO_TYPEWRITER;
  34.  
  35.   //lblTypedText1.TextColor = 64960;
  36.   //lblintroline.Font = eFontGalactican;
  37.   lblTypedText1.Text = "";
  38.   lblTypedText1t.Text = "";
  39.   lblTypedText2.Text = "";
  40.   lblTypedText2t.Text = "";
  41.   lblTypedText3.Text = "";
  42.   lblTypedText3t.Text = "";
  43.  
  44.   TypewriterPreset.SetGeneral(introline_TYPEWRITER_PRESET, 2, 4, eTypedDelay_Mixed, 200); // long reading time so it stays on screen
  45.   //TypewriterPreset.SetGeneral(introline_TYPEWRITER_PRESET, eTypedDelay_Mixed, 20); // long reading time so it stays on screen
  46.   //TypewriterPreset.SetCaret(introline_TYPEWRITER_PRESET, 2, 4, eTypedCaret_Explicit, " ");
  47.   //AudioClip *type_clips[] = new AudioClip[3];
  48.  // type_clips[0] = aKeyboard;
  49.   //type_clips[1] = aKeyboard2;
  50.  // type_clips[2] = aKeyboard3;
  51.  // TypewriterPreset.SetSoundArray(introline_TYPEWRITER_PRESET, type_clips, 3, null, aKeyboard_beep);
  52. }
  53.  
  54. void NextIntroline()
  55. {
  56.         /*if (!playingCredits)
  57.         {
  58.                 if (introline_tw[0] != NO_TYPEWRITER)
  59.                 {
  60.                         TypewriterRunners.Cancel(introline_tw[introline_index]);
  61.                 }
  62.                 if (introline_tw[1] != NO_TYPEWRITER)
  63.                 {
  64.                         TypewriterRunners.Cancel(introline_tw[introline_index]);
  65.                 }
  66.         }*/
  67. }
  68.  
  69. function repeatedly_execute_always()
  70. {
  71.         if (!playingCredits)
  72.         {
  73.     /*if (introline_tw[0] != NO_TYPEWRITER)
  74.     {
  75.       if (!TypewriterRunners.IsActive[introline_tw[0]])  
  76.                         {
  77.                                 introline_tw[0] = NO_TYPEWRITER;
  78.                         }
  79.     }
  80.     else if (introline_tw[1] != NO_TYPEWRITER)
  81.                 {
  82.       if (!TypewriterRunners.IsActive[introline_tw[1]])  introline_tw[1] = NO_TYPEWRITER;
  83.     }*/
  84.                 //if (introline_tw[0] != NO_TYPEWRITER && !TypewriterRunners.IsActive[0]) gHelp.Visible=true;
  85.                
  86.                 if (introline_Small_tw[0] == NO_TYPEWRITER) // first typewriter was not started yet
  87.                 {
  88.                         player.SayBackground("test");
  89.                         if (Game.DoOnceOnly("1st intro line SMALL FONT"))
  90.                         {
  91.                                 // start first line
  92.                                 introline_Small_tw[0] = lblTypedText1t.Typewriter(introlines_Small[introline_Small_index], eNoBlock, introline_TYPEWRITER_PRESET);
  93.                                 introline_Small_index++;
  94.                         }
  95.                 }
  96.                 if (introline_Small_tw[0] != NO_TYPEWRITER && !TypewriterRunners.IsActive[0]) // first typewriter has started and finished typing
  97.                 {
  98.                         if (Game.DoOnceOnly("1st intro line BIG FONT"))
  99.                         {
  100.                                 // start second line
  101.                                 introline_Big_tw[0] = lblTypedText1.Typewriter(introlines_Big[introline_Big_index], eNoBlock, introline_TYPEWRITER_PRESET);
  102.                                 introline_Big_index++;
  103.                         }
  104.                 }
  105.                 /*if (introline_tw[1] != NO_TYPEWRITER && !TypewriterRunners.IsActive[introline_tw[1]]) // second typewriter has started and finished typing
  106.                 {
  107.                         if (Game.DoOnceOnly("2nd intro line SMALL FONT"))
  108.                         {
  109.                                 // Remove first two lines
  110.                                 TypewriterRunners.Cancel(introline_tw[0]);
  111.                                 TypewriterRunners.Cancel(introline_tw[1]);
  112.                                 // Start third line
  113.                                 introline_tw[2] = lblTypedText2t.Typewriter(introlines[introline_index], eNoBlock, introline_TYPEWRITER_PRESET);
  114.                                 introline_index++;
  115.                         }
  116.                 }
  117.                 if (introline_tw[2] != NO_TYPEWRITER && !TypewriterRunners.IsActive[introline_tw[2]]) // third typewriter has started and finished typing
  118.                 {
  119.                         if (Game.DoOnceOnly("2nd intro line BIG FONT"))
  120.                         {
  121.                                 // start fourth line
  122.                                 introline_tw[3] = lblTypedText3.Typewriter(introlines[introline_index], eNoBlock, introline_TYPEWRITER_PRESET);
  123.                                 introline_index++;
  124.                         }
  125.                 }*/
  126.                 if (introline_Big_index == introline_Big_count || introlines_Big[introline_Big_index] == null)
  127.                 {
  128.                         lblTypedText3.Text="END";
  129.                         introline_Big_index = 4;
  130.                 }
  131.         }
  132. }
  133.  

Even tried to test that the code was detecting the introline_tw[0] != NO_TYPEWRITER && !TypewriterRunners.IsActive[0] by opening a GUI, but instead of opening the GUI after it finished typing, it opened it immediately after the 1st letter was written. ???
Also tried to separate the lines into Small and Big, but didn't helped either.

If I put 1000 in the reading delay, it'll hang forever in the 1st line and never start the second, as it is now, it's still writing both lines at the same time.

EDIT: Any help here? I've also tried now to create 2 different typewriters (but module seems to ignore this, and use the last line as setting for both lines), by separating the #Define, made one for the small and one for the big, created 2 lines of TypeWriterPreset, one for the small and one for the big... yet I still only get the same result.  ???
It's like it doesn't really detect when the first line is done writing, and thus only starts writing the next once the first is removed from screen. Wich results if I put 10 in the reading speed it types the first, removes it and then writes the second line. If I put 1000, like you suggest, it writes the 1st line and will never write the second line before the sequence is over.  8-0

Also tried variants on the second if condition and still all I get is either both at the same time, or the 2nd after the 1st got removed.  :~(
« Last Edit: 25 Mar 2017, 21:14 by Cassiebsg »
There are those who believe that life here began out there...

Crimson Wizard

  • AGS Project Tracker Admins
    • Best Innovation Award Winner 2013, for spearheading the AGS 3.3.0 project
    •  
    • Lifetime Achievement Award Winner
    •  
Re: MODULE: TypedText 0.7.0
« Reply #31 on: 26 Mar 2017, 18:39 »
My suggestion does not work because IsActive returns true until automatic typewriter clears text, and you do not need the text to be cleared until some other time.
You could use timer instead to know when start next typewriter.

But I think best way for now is to use one manual typewriter and just switch label it prints on. This will leave text on previous label until you explicitly tell it to clear.

Code: Adventure Game Studio
  1.  
  2. String introlines[];
  3. int introline_index;
  4. int introline_count;
  5. bool playingCredits;
  6.  
  7. TypewriterLabel twl;
  8.  
  9. function game_start()
  10. {
  11.   introline_count = 7;
  12.   introlines = new String[introline_count];
  13.   introlines[0] = "A fan game by     [";
  14.   introlines[1] = "Sandra T. Almeida [";
  15.   introlines[2] = "Made with             [";
  16.   introlines[3] = "Adventure Game Studio [";
  17.   introlines[4] = "based on the original TV show: [";
  18.   introlines[5] = "Battlestar Galactica           [";
  19.   introlines[6] = " ";
  20.   introline_index = 0;
  21.  
  22.   lblTypedText1.Text = "";
  23.   lblTypedText1t.Text = "";
  24.   lblTypedText2.Text = "";
  25.   lblTypedText2t.Text = "";
  26.   lblTypedText3.Text = "";
  27.   lblTypedText3t.Text = "";
  28.  
  29.   twl.TypeDelayMin = 2;
  30.   twl.TypeDelayMax = 4;
  31.   twl.TypeDelayStyle = eTypedDelay_Mixed;
  32.   twl.TextReadTime = 5;
  33. }
  34.  
  35. function repeatedly_execute_always()
  36. {
  37.         if (!playingCredits)
  38.         {
  39.                 if (twl.IsActive)
  40.                   twl.Tick();
  41.          
  42.                 if (introline_index == 0) // typewriter has not start to type the first line yet
  43.                 {
  44.                         // start first line
  45.                         twl.TypeOnLabel = lblTypedText1t;
  46.                         twl.Start(introlines[introline_index]);
  47.                         introline_index++;
  48.                 }
  49.                 else if (introline_index == 1 && twl.IsIdle) // typewriter finished typing first line
  50.                 {
  51.                         // start second line
  52.                         twl.TypeOnLabel = lblTypedText1;
  53.                         twl.Start(introlines[introline_index]);
  54.                         introline_index++;
  55.                 }
  56.                 else if (introline_index == 2 && twl.IsIdle) // typewriter finished typing second line
  57.                 {
  58.                         // clear previous
  59.                         lblTypedText1.Text = "";
  60.                         lblTypedText1t.Text = "";
  61.                         // start third line
  62.                         twl.TypeOnLabel = lblTypedText2t;
  63.                         twl.Start(introlines[introline_index]);
  64.                         introline_index++;
  65.                 }
  66.                 else if (introline_index == 3 && twl.IsIdle) // typewriter finished typing 3rd line
  67.                 {
  68.                         twl.TypeOnLabel = lblTypedText2;
  69.                         twl.Start(introlines[introline_index]);
  70.                         introline_index++;
  71.                 }
  72.                 else if (introline_index == 4 && twl.IsIdle) // typewriter finished typing 4th line
  73.                 {
  74.                         // clear previous
  75.                         lblTypedText2.Text = "";
  76.                         lblTypedText2t.Text = "";
  77.                         twl.TypeOnLabel = lblTypedText3t;
  78.                         twl.Start(introlines[introline_index]);
  79.                         introline_index++;
  80.                 }
  81.                 else if (introline_index == 5 && twl.IsIdle) // typewriter finished typing 5th line
  82.                 {
  83.                         twl.TypeOnLabel = lblTypedText3;
  84.                         twl.Start(introlines[introline_index]);
  85.                         introline_index++;
  86.                 }
  87.                 else if (introline_index == 6 && twl.IsIdle) // typewriter finished typing 5th line
  88.                 {
  89.                         // clear previous
  90.                         lblTypedText3.Text = "";
  91.                         lblTypedText3t.Text = "";
  92.                         twl.TypeOnLabel = null;
  93.                         twl.Clear();
  94.                 }
  95.         }
  96. }
  97.  
  98.  
« Last Edit: 26 Mar 2017, 18:44 by Crimson Wizard »

Cassiebsg

  • Cavefish
  • Fleeing the Cylon tyrrany...
Re: MODULE: TypedText 0.7.0
« Reply #32 on: 26 Mar 2017, 19:10 »
Oh, cool! Thanks for the reply!  (nod)

I'll go ahead and test it right now! If it works I can finally start writing all the credits text.  :-D

EDIT: Cool! It's working!  :-D  :-D  :-D
Gave me an error though on another part of the code, so I'll have to figure it out, and hopefully I can figure it out without having to bother you again.  (nod)

EDIT2: Okay, I managed to solve it, but had to remove this last line at the end twl.Clear();, as it was causing a null pointer reference.
Though, seems to be working just fine without the line.  (nod)

EDIT3 : I moved on to make a credits section (new script, with all introline changed to creditline, and the typewriter is now called twlC, only I can only run the credits once.  8-0 If I put the twl.Clear(); I get the null pointer reference at the end, if I remove it I get the null pointer reference at the start or the second run of credits.  8-0
Think I'll try and see if I can put the line someplace else, outside rep_exe_always and see if that helps.  (roll)

EDIT4: I noticed, after doing a search for the function, that IniFile also had a void Clear()... I changed the name of it, and that solved the problem of the null pointer reference.  :-D
« Last Edit: 26 Mar 2017, 22:10 by Cassiebsg »
There are those who believe that life here began out there...

Crimson Wizard

  • AGS Project Tracker Admins
    • Best Innovation Award Winner 2013, for spearheading the AGS 3.3.0 project
    •  
    • Lifetime Achievement Award Winner
    •  
Re: MODULE: TypedText 0.7.0
« Reply #33 on: 30 Mar 2017, 12:24 »
EDIT3 : I moved on to make a credits section (new script, with all introline changed to creditline, and the typewriter is now called twlC, only I can only run the credits once.  8-0 If I put the twl.Clear(); I get the null pointer reference at the end, if I remove it I get the null pointer reference at the start or the second run of credits.  8-0
Think I'll try and see if I can put the line someplace else, outside rep_exe_always and see if that helps.  (roll)

EDIT4: I noticed, after doing a search for the function, that IniFile also had a void Clear()... I changed the name of it, and that solved the problem of the null pointer reference.  :-D

Wait wait... what? Are you saying there is a bug that having two same functions in two types of objects may lead to error when calling it?

TBH I was sure twl.Clear() was causing errors because I did "twl.TypeOnLabel = null;" just before that, and Clear uses TypeOnLabel reference without checking if its null.

Cassiebsg

  • Cavefish
  • Fleeing the Cylon tyrrany...
Re: MODULE: TypedText 0.7.0
« Reply #34 on: 30 Mar 2017, 18:06 »
Guess that's what I'm saying?
At least after I changed the name, the error stopped and all is running just fine.

I was a little more surprised that the AGS allows two void/function be called the same in game. I thought it would complain if the name had already been used.

EDIT:

Ermmm... it's me again...
Is it possible to type more than one line in the same label? First I tried to do something like:

Code: Adventure Game Studio
  1.   introlines[4] = "based on the original TV show: [
  2.                           Battlestar Galactica           [";
  3.  

But it complains with a : undefined symbol 'Battlestar' ...  8-0
I thought that as long as the " was open, it would not complain with such a thing.  :-\ Putting it all into one long line, works up to the point when there's no more space and AGS breaks the line, and then I'm back to the above problem...
Is there maybe an append command? so that the next line starts typing after the previous? Right now if I do

Code: Adventure Game Studio
  1.                 else if (introline_index == 4 && twl.IsIdle) // typewriter finished typing 4th line
  2.                 {
  3.                         // clear previous
  4.                         lblTypedText2.Text = "";
  5.                         lblTypedText2t.Text = "";
  6.                         twl.TypeOnLabel = lblTypedText3t;
  7.                         twl.Start(introlines[introline_index]);
  8.                         introline_index++;
  9.                 }
  10.                 else if (introline_index == 5 && twl.IsIdle) // typewriter finished typing 5th line
  11.                 {
  12.                         twl.TypeOnLabel = lblTypedText3;
  13.                         twl.Start(introlines[introline_index]);
  14.                         introline_index++;
  15.                 }
  16.                 else if (introline_index == 6 && twl.IsIdle) // typewriter finished typing 6
  17.                 {
  18.                         twl.TypeOnLabel = lblTypedText3;
  19.                         twl.Start(introlines[introline_index]);
  20.                         introline_index++;
  21.                 }
  22.  
  23.  

It will type the text on label 3, and then clear it and type the next text on the label.

So right now, I'm thinking that the only option is to make a label for each line?  8-0 ??? Sounds a bit over kill though.  :-\
« Last Edit: 11 Apr 2017, 21:32 by Cassiebsg »
There are those who believe that life here began out there...

Crimson Wizard

  • AGS Project Tracker Admins
    • Best Innovation Award Winner 2013, for spearheading the AGS 3.3.0 project
    •  
    • Lifetime Achievement Award Winner
    •  
Re: MODULE: TypedText 0.7.0
« Reply #35 on: 15 Apr 2017, 13:13 »
Cassie, you keep adding updates to the same post after WEEKS, and I do not notice them in time: the main forum page does not display "new posts" icon in this case, so I don't check the thread.

I went here just by luck, because there was a new post in another module topic.


Regarding your question, for some reason AGS script editor does not support multiline strings. You do this instead:
Code: Adventure Game Studio
  1. String s = "Some string";
  2. s = s.Append("Longer string");
  3. s = s.Append("Even more longer string");
  4.  
« Last Edit: 15 Apr 2017, 13:20 by Crimson Wizard »

Cassiebsg

  • Cavefish
  • Fleeing the Cylon tyrrany...
Re: MODULE: TypedText 0.7.0
« Reply #36 on: 15 Apr 2017, 13:40 »
Okay, thanks for the help.  (nod)

Sorry about the editing thing... just not that easy to figure out when it's okay to double post and when it's not.  :-[
And since I found out that it does indeed show "new" in the post topic after an editing, I thought that should then be good enough.
I too would love these "edit new" to show up in the "Show unread posts since last visit." As I often also miss edited posts.

But don't worry, I wasn't getting desperate or anything. Had decided that I could probably solve this by adding a couple more labels, and just add as much in one line as possible.

EDIT: Just saying it works!  (nod) Thanks bunch. Now I just need to format the text so it looks nice.  ;)
« Last Edit: 16 Apr 2017, 21:09 by Cassiebsg »
There are those who believe that life here began out there...