Suporte ao desenvolvimento de jogos!


    Quebra de texto do Chat desenhado na tela

    Compartilhe
    avatar
    Valentine
    Administrador
    Administrador

    Medalhas :
    Mensagens : 5001
    Créditos : 1061

    Quebra de texto do Chat desenhado na tela

    Mensagem por Valentine em Sex Jan 27, 2012 12:50 am

    Tópico Original
    http://www.touchofdeathforums.com/smf/index.php/topic,75564.0.html

    Ryoku Hasu: Incomoda-me que o texto desenhado na tela se apaga com bastante facilidade, quando o texto é muito longo e maior que a tela. então eu me sentei aqui por seis horas para conseguir finalizar. E desde que eu estou postando isso, eu acho que eu tenho que trabalhar.

    Eu o editei para fazer a quebra de texto, em vez de caracteres embrulho! Woot!

    Isso exibe oito mensagens, NÃO 8 linhas.

    'Corrigido por Rob Janes (não inteiramente certo porque lol)


    ** Para alterar o comprimento da quebra automática de texto, altere todos os "60" no código abaixo

    Lado do cliente

    em modText

    Enconte "Public Sub DrawChat()" e substitua por
    Código:
    'Evilbunnie's DrawnChat system, Word wrapping by RyokuPublic , lammer by Rob Janes
    Sub DrawChat()
    Dim i As Integer
    Dim x As Integer
    Dim y As Integer
    Dim wrap As Integer
    Dim text As String
    Dim SubString As String
    Dim ChatArray() as String

    x = 0
       For i = 1 To 8   
          text = Chat(i).text   
          y = 1   
          ChatArray = Split(text," ")

          Do While Len(text) > 60       
             If y = 1 Then           
                wrap = Len(text) Mod 60       
             Else           
                wrap = 60       
             End If
                       
             'Our Array has more than 1 Word!
             If UBound(ChatArray) > 0 Then
                Do Until Asc(Mid$(text, Len(text) - wrap, 1)) = 32 'break line on spaces only.           
                   wrap = wrap + 1       
                Loop 
             'Our Array only has 1 Word!
             ElseIf UBound(ChatArray) <= 0 Then
                     Exit Do
                      wrap = 1
                 End If
                 
             SubString = Right$(text, wrap)
         
             Call DrawText(TexthDC, Camera.Left + 10, (Camera.Bottom - 20) - ((i + x) * 20), SubString, Chat(i).Colour)                   
             text = Left$(text, Len(text) - wrap)
                   
             x = x + 1       
             y = y + 1   
          Loop
         
          Call DrawText(TexthDC, Camera.Left + 10, (Camera.Bottom - 20) - ((i + x) * 20), text, Chat(i).Colour)   
       Next I
    End Sub

    Créditos:
    Ryoku Hasu (Por criar o tutorial original no TouchofDeath)
    Valentine (Por traduzir, simplificar a explicação e postar aqui na Aldeia RPG)


    _________________

      Data/hora atual: Sab Dez 15, 2018 7:34 pm