Conectar-se
Quem está conectado
35 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 34 Visitantes

CRP-Max

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1
Ver perfil do usuário

Engine de Texto com sprites para GM LITE

em Qua 27 Jul 2011, 20:27
Reputação da mensagem: 100% (1 votos)
Decidi postar esta Engine que estou desenvolvendo para o meu jogo afim de otimizá-la e ajudar um pouco aqueles que não tem GM8 PRO, e que, portanto, não podem criar uma fonte personalizada utilizando sprites com a função font_add_sprite.

Foi necessário o seguinte:

1 sample de fonte de KoF (retirada de um add-on de MUGEN), em que todos os char. tem tamanhos iguais (nxn ou nxm, sendo n & m tamanhos fixos em pixels);
1 sprite com uma subimagem pra cada caractere do sample da fonte a ser utilizada;
Tabela ASCII.

*Desenvolvimento e codificação da engine:

~ Create:

Código:
global.Text = "";      // Text to be drawn
global.Draw = false;    // Determines if the text will be draw or not
global.Pos_x = 0;      // Position X of the text
global.Pos_y = 0;      // Position Y of the Text

Todas as variáveis são globais pois você pode precisar delas em qualquer parte do jogo, isso torna tudo mais conveniente, mas pode ser um pouco mais trabalhoso de mexer.

Text = Texto que será escrito.
Draw = Se o texto será desenhado na tela.
Pos_x = Posição inicial X em que o texto será desenhado.
Pos_y = Posição inicial Y em que o texto será desenhado.

~ Draw:

Código:
if global.Draw == true{

    Initial_x = global.Pos_x;

    for (i=0; i<string_length(global.Text); i+=1){
   
        if ord(string_char_at(global.Text,i+1)) == ord("#"){
            global.Pos_y += 8;
            global.Pos_x = Initial_x;
        }
       
        else {
            draw_sprite(Game_Font, ord(string_char_at(global.Text,i+1))-32, global.Pos_x, global.Pos_y);
            global.Pos_x += 8;
        }
   
    }

}

Se Draw == true (Se for desenhado), uma variável (initial_x) pega a posição inicial de X (Pos_x), para todos os caracteres da string (texto) a ser desenhada, verifica se é '#' (No GM, # é quebra de linha), se for, Pos_x = seu valor inicial e Pos_y é acrescido de m. Do contrário, a sprite com o caractere é desenhado e Pos_x é acrescido de n.

Game_Fonte é a sprite com os caracteres.
Os sprites foram organizados do seguinte modo:



Organizando deste modo, a fonte obedece a ordem estabelecida pela tabela ASCII (clique aqui), o que facilita, e muito a programação do código. Pois usa-se muito a função ord que pega um char ou uma string com um único char e retorna seu valor numérico.

*Uso desta engine:

Para usar desta engine é só ter um objeto que declare os dados (Text, Draw, Pos_x e Pos_y), o resto é feito pelo objeto que contém a engine (Eu o nomeei de "Texter").

*Outros detalhes e mais:

Esta engine funciona bem para mostrar textos, entretanto, ainda não codifiquei como destruir um texto caso ele não seja mais desejado (tenho tido problemas com isso). A engine está aberta a qualquer outra modificação.

Quem quiser testar/modificar, aqui tem um link para um exemplinho que eu fiz.

Peço apenas o favor de notificarem qualquer melhoria que puderem fazer na minha engine, ficaria grato! cheers Apenas lembrem-se de que esta engine foi feita para aqueles que não possuem GM PRO, e portanto deve ser modificada pensando nestes e em mim também ;_;

o/
avatar
Data de inscrição : 13/09/2011
Número de Mensagens : 10
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Engine de Texto com sprites para GM LITE

em Qui 06 Out 2011, 14:51
muito obrigado por postar vai ser muito útil Cool

Não ressussite tópicos antigos a não ser que seja para tirar uma dúvida.
Trancado.
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum