Re: [GAME] Soldier
Posted: Tue Feb 21, 2012 4:03 pm
Ya he hecho el punto 3 aunque me temo que es algo lento, dejo captura y descarga. Este ejemplo pinta el polígono con lineas, habría que hacerse una rutina de relleno de polígonos, pero bueno es un problema un poco aparte, lo mas difícil supongo que era esto.

Uso:
Se pone al empezar cos_initialize y al acabar cos_quit ya que esto usa memoria dinámica y punteros y tiene que liberar, etc.
- cos_initialize(int radius_x, int radius_y, int increment_angle)
Esta función precalcula los puntos de todo el circulo de visión alrededor del sujeto, así nos ahorramos hacerlo después a cada momento.
---- radius_x y radius_y indican los radios del circulo de visión alrededor del sujeto. Para vista top-down normalmente deberían ser iguales (haciendo un circulo), pero se puede poner por ejemplo que radius_y sea la mitad de radius_x para simular un circulo en isométrico, u otros radios a gusto de cada uno.
---- increment_angle indica cada cuantos grados de quiere poner un punto precalculado, a menos grados más puntos habrá, por lo tanto más precisión pero menos rapidez de calculo.
- cos_quit
Esta función libera recursos. Si se quiere volver a usar los métodos despues de llamar a esta función hay que volver a usar cos_initialize.
- cos_generate_full_cone(cos_polygon * polygon, int sight_angle, int sight_range)
Esta función genera el cono sin tener en cuenta las durezas. Rellena la estructura cos_polygon pasada como parametro con los puntos necesarios. El procedimiento es simple:
---- Se crea un triangulo (se meten 3 vértices al polígono uno es dd esta el sujeto y 2 más del lado opuesto del cono). Esto se hace teniendo en cuenta 'sight_angle' que indica a que ángulo está mirando el sujeto, y 'sight_range' que indica que apertura tiene el campo de visión.
---- Luego entre los 2 puntos alejados del punto del sujeto se insertan los puntos precalculados pertinentes.
- cos_correct_full_cone(cos_polygon * polygon, int fpg_handle, map_handle, int cx, int cy, int color)
Coge un polígono que normalmente debería estar formado con la función anterior 'cos_generate_full_cone' y modifica sus puntos según las durezas del mapa indicado y su color. Hay que indicar también las coordenadas donde estaría el sujeto dentro del mapa.
El resultado es el polígono modificado por las durezas, la precisión viene dada por la función 'cos_initialize'
- cos_draw_polygon(cos_polygon * polygon, int cx, int cy, int color)
Función helper a modo de ejemplo que pinta una estructura de tipo 'cos_polygon' a pantalla uniendo sus puntos con lineas.

Uso:
Se pone al empezar cos_initialize y al acabar cos_quit ya que esto usa memoria dinámica y punteros y tiene que liberar, etc.
- cos_initialize(int radius_x, int radius_y, int increment_angle)
Esta función precalcula los puntos de todo el circulo de visión alrededor del sujeto, así nos ahorramos hacerlo después a cada momento.
---- radius_x y radius_y indican los radios del circulo de visión alrededor del sujeto. Para vista top-down normalmente deberían ser iguales (haciendo un circulo), pero se puede poner por ejemplo que radius_y sea la mitad de radius_x para simular un circulo en isométrico, u otros radios a gusto de cada uno.
---- increment_angle indica cada cuantos grados de quiere poner un punto precalculado, a menos grados más puntos habrá, por lo tanto más precisión pero menos rapidez de calculo.
- cos_quit
Esta función libera recursos. Si se quiere volver a usar los métodos despues de llamar a esta función hay que volver a usar cos_initialize.
- cos_generate_full_cone(cos_polygon * polygon, int sight_angle, int sight_range)
Esta función genera el cono sin tener en cuenta las durezas. Rellena la estructura cos_polygon pasada como parametro con los puntos necesarios. El procedimiento es simple:
---- Se crea un triangulo (se meten 3 vértices al polígono uno es dd esta el sujeto y 2 más del lado opuesto del cono). Esto se hace teniendo en cuenta 'sight_angle' que indica a que ángulo está mirando el sujeto, y 'sight_range' que indica que apertura tiene el campo de visión.
---- Luego entre los 2 puntos alejados del punto del sujeto se insertan los puntos precalculados pertinentes.
- cos_correct_full_cone(cos_polygon * polygon, int fpg_handle, map_handle, int cx, int cy, int color)
Coge un polígono que normalmente debería estar formado con la función anterior 'cos_generate_full_cone' y modifica sus puntos según las durezas del mapa indicado y su color. Hay que indicar también las coordenadas donde estaría el sujeto dentro del mapa.
El resultado es el polígono modificado por las durezas, la precisión viene dada por la función 'cos_initialize'
- cos_draw_polygon(cos_polygon * polygon, int cx, int cy, int color)
Función helper a modo de ejemplo que pinta una estructura de tipo 'cos_polygon' a pantalla uniendo sus puntos con lineas.
