Tai rekisteröidy jo tänään!
GameDev Suomi Pelinkehitys Apuosio
Pilkotun tekstin jatke kirjoittautuu väärin [Ratkaistu]
Sivuja: [1]

Pilkotun tekstin jatke kirjoittautuu väärin [Ratkaistu]

0 jäsentä ja 1 Vieras katselee tätä aihetta.
Aloitusviesti: 04. Helmikuu 2019, 02:54 (muokannut Woffelson 05. Helmikuu 2019, 00:53)Peukku ylös +0Peukku alas -0
Tekstikäyttöliittymässä on sellainen ongelma, että kun pilkon katkelmaa osiin, teksti ei enää kirjoita typewriter tyyliin jälkimmäistä osaa. Yksi katkelma on siis muotoa katkelma[n]="wall of text"; Kun sillä tulee tekstiboxin raja vastaan, se aloittaa kirjoittamisen alusta siitä mihin jäi. Olen soveltanut tätä examplea, lisäämällä esim. tuon checkpoint muuttujan cp. Alla koodi siitä osasta, missä pilkkominen tehdään:

if (characters < message_length)
{ //if current character count is less than the amount in current message
    hold = keyboard_check(vk_enter); //hold is true or false if we hold or not
    if string_height_ext(message_draw,line,hlimit) < vlimit
    {
    characters += increase * (1 + hold*2); //increase speed based on hold
    message_draw = string_copy(message[message_current],cp,characters); //copy string to current character
    }
    else if keyboard_check_pressed(vk_enter)
    {
        cp = characters;
        message_draw = "";
    }
}


Examplesta poiketen piirrän tekstin näin: draw_text_ext(view_xview[0]+64,view_yview[0],message_draw,line,hlimit);

Jos joku haluaa oikeasti ajaa koodin, niin tässä lisäämäni muuttujat ja stepin loppuosa (joka lähes sama kuin examplessa):
Spoiler
hlimit = 128; //horizontal area for text
vlimit = 64; //vertical area
line = 16; //pixels between lines (vertical)
cp = 0;

else
{ //if current character is more than the amount in the current message
    cp = 0;
    if (keyboard_check_pressed(vk_enter))
    {
        if (message_current < message_end)
        { //if there are more messages left to show
            message_current += 1; //increase the message by 1
            message_length = string_length(message[message_current]); //get the new character length for message
            characters = 0; //set the characters back to 0
            message_draw = ""; //clear the drawn text
        }
        else
        { //if our messages are done (we reach end)...
            message_current = 0;
            message_draw = "";
        }
    }
}
Tykkään
#1: 05. Helmikuu 2019, 00:53Peukku ylös +0Peukku alas -0
Koodi-ignon avustuksella ongelma ratkesikin Discordissa. Korjasin myös sen, kun koodi jäi kirjoittelemaan tekstiä pilkotun jatkeen päättymisen jälkeen.

Korjattu versio:
if (characters < message_length)
{ //if current character count is less than the amount in current message
    hold = keyboard_check(vk_enter); //hold is true or false if we hold or not
    if string_height_ext(message_draw,line,hlimit) < vlimit
    {
    characters += increase * (1 + hold*2); //increase speed based on hold
    message_draw = string_copy(message[message_current],cp,characters); //copy string to current character
    }
    else if keyboard_check_pressed(vk_enter)
    {
        message_length -= characters; //shorten text with the already written part
        cp += characters; //set text position to start at the text written so far
        characters = 0; //start writing the new part from beginning
        message_draw = ""; //clear text
    }
}
Tykkään

Sivuja: [1]
GameDev Suomi Pelinkehitys Apuosio
Pilkotun tekstin jatke kirjoittautuu väärin [Ratkaistu]
 

Powered by SMF 2.0.11 | SMF © 2006–2009, Simple Machines LLC