Wednesday 27 March 2013

Código de la semana


"Porno" en C#

Dentro de la siguiente clase del core del juego:
namespace Core
{
public class Attack : CharacterAction
{
[...]
}
}
nos encontraremos con este método:
El que sepa decirme qué hace le doy un premio (yo lo sé puesto que el código es mío)... ¿Nadie?


Bueno, pues la susodicha guarrada lo que hace es pillar de la clase "ataque", que es una acción de personaje, la referencia al personaje y a continuación:
  1. Pilla el tipo de weapon en tiempo de ejecución (¿quién necesita dynamic_cast como en C++?) sin importarle lo más mínimo que clase de weapon es y...
  2. Enlaza directamente con el método de abrir fuego (fire) de la clase concreta...
  3. Para después llamar al método en cuestión sobre la instancia de weapon y...
  4. Cómo no se tiene ni idea de los parámetros a priori con el "Invoke" le pasamos los argumentos así a lo bestia (nosotros sabemos que son correctos gracias a Dios) en un array de built-in objects.
Da miedito eh... Pues sabed que si toda la información está bien puesta el método se llamará de forma correcta. Para finalizar, "Invoke" retornará un maravilloso "object" que sólo nosotros sabremos a qué castear (en este caso un boolean).

PD: En este blog quedan terminantemente prohibidos los "brain explode" si estos no son grabados en vídeo y entregados a los admin de este blog.

No comments:

Post a Comment