Engine de Texto com sprites para GM LITE

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Idéia Engine de Texto com sprites para GM LITE

Mensagem por FishyHatGuy em Qua 27 Jul 2011, 20:27

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/

FishyHatGuy

Número de Mensagens : 18
Data de inscrição : 30/04/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Idéia Re: Engine de Texto com sprites para GM LITE

Mensagem por game over 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.

game over

Número de Mensagens : 10
Idade : 46
Data de inscrição : 13/09/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum