As vezes o C++ cria alguns problemas chatos. A idéia de uma linguagem com orientação a objetos é que cade peçado (classe/objeto) é uma entidade independente, mas que pode conter outras entidades. O problema começa quando você tem dois tipos de entidades diferentes, como NPCs e Players,q eu tem que fazer cálculos levando em conta a outra entidade, que ela no conhece. No caso do Rockbot, a classe game, possui duas listas, uma de players e outra de npcs, e cada uma destas, contém uma lista de projéteis, o problema é que cada elemento da lista precisa acessar a lista do outro tipo de elemento, para fazer verificações de colisão e proximidade. Vou ter que pensar muito bem em uma solução.
Sugestão: cria uma classe Character que tem a lista de projéteis, e deriva Player e NPC dela.
É, eu fiz isso. E refiz várias partes da lógica para usar decentements vectors e lists, ficou BEM melhor que o velho código C-ANSI. Ainda tenho uns problemas aqui e ali ao deletar um item que parece lixo de memória (não descobri ainda como eles acabam aparecendo dentro da lista), mas, no geral, o C++ está sendo super-útil para o projeto. Eu devia tê-lo feito em C++ desde o começo…
No ifnal, foi exatamente o que eu fiz