Então, a algum tempo tento fazer um sistema de foreach parecido com do Y_less.
Infelizmente nem sempre dava certo, ou as vezes ficava lento demais, (a versão mais próxima foi FoReX, que chegava a sere 2 vezes mais lentos e não funcionava com outras arrays, apenas para jogadores) então hoje pensando sobre alguma lógica correta e veloz, depois de tantas falhas, consegui criar algo bem próximo, talvez até melhorado do outro foreach.
Criei o sistema muito a base do foreach dele, até mesmo sendo a mesma velocidade nos testes de execução.
Porém tem um detalhe.
As funções deste foreach foram criadas de forma mais leve e rápida, atualmente não tenho testes complexos, mas parece estar funcional e muitos superiores na velocidade de execução das funções perante ao foreach criado por Y_less (itteradd e itterremove)
Atualmente estou utilizando como ponto de referência o -1, logo partes da array com -1 não funcionaram (mas isto pode ser mudado, assim como o outro foreach)
Deixei o mais genérico possível, segundo a dica de Toríbio que sempre falava nestas coisas (ao menos, este funciona com outras arrays, \i/)
Basicamente existem 2 funções principais, que adicionam e removem iteratores, também uma que percorre o array.
Exemplo:
Aqui um exemplo da utilização de foreach:
new newItterArray:NOME_VAR; addItterArray:NOME_VAR<255>; addItterArray:NOME_VAR<455>; delItterArray:NOME_VAR<255> foreach(NOME_VAR, i) { printf("Achei o %d", i); }Utilização bem simples
Assim como foreach de Y_less, coloquei um já adaptado para pegar os jogadores onlines, basta usar:
foreach(Player, ii)
{
printf("O Jogador %d está online", ii);
}
Ainda está na primeira versão, pode haver bugs assim como falta de funções, no entanto estarei disposto para ajudar.
Créditos
Bruno da Silva (criador geral)
Y_less (peguei a ideia a partir do foreach dele)
Código:
-> http://pastebin.com/t7bMwWFV
Salve em i_foreach.inc por favor.
NÃO PERMITIDO POSTAR EM OUTROS WEBSITES SEM AUTORIZAÇÃO DA EQUIPE
Nenhum comentário:
Postar um comentário