Tengo una estrategia basada en mosaicos 2D en las obras. Me pregunto cómo manejar la relación entre el mapa y las unidades en el mapa.
Dada una coordenada de mosaico, tendré que ser capaz de poner la unidad sobre ella, si la hay. Al mismo tiempo, si me dan una unidad, querré poder obtener la coordenada de la unidad.
He visto dos soluciones para esto. La primera solución sería que las unidades almacenen una coordenada y el mapa almacene referencias de unidades en sus mosaicos. Esto crea una dependencia cíclica entre el mapa y las unidades. Necesitaría asegurarme de que el mapa y cualquier unidad se mantengan sincronizados si la unidad se mueve.
La segunda solución sería hacer que las unidades solo rastreen sus coordenadas. Para saber si un mosaico contiene una unidad y para obtener esa unidad, recorro todo el conjunto de unidades de unidad y encuentro una con coordenadas coincidentes. Eso elimina la dependencia cíclica, pero pierde la propiedad O (1) que tenía la primera solución para buscar unidades del mapa. Esto puede sumar, ya que quiero poder escanear el mapa regularmente en busca de cosas como encontrar el camino, determinar el rango de movimiento y encontrar objetivos válidos para una unidad determinada.
Tampoco puedo almacenar las unidades en el mapa (¿o sí?). Las unidades están asociadas con "ejércitos", ya sea jugador o IA. Un ejército debería poder acceder fácilmente e iterar sobre todas sus unidades.
Dado que esto parece ser un problema común en los juegos de estrategia, ¿existen otros patrones además de los dos que describí para administrar las relaciones unidad / mapa?