Resumen

En esta página se listan todos los componentes y una pequeña descripción de para que se usan, si los componentes pertenecen a un conjunto específico de funcionalidades se puede agrupar por clases padre (por ejemplo Render Component)


Render Components

RenderSpritesheetComponent

Sirve para renderizar una imagen en base a unas filas y columnas asignadas en la creación del componente. Tiene funcionalidad para cambiar que casilla se renderiza


Logic Component

AnimatorComponent

En base a la información en el struct auxiliar Animation va cambiando la casilla renderizada por el RenderSpritesheetComponent de su entidad. Se puede acceder a las animaciones mediante sdlutils, las animaciones se escriben en resources. Todas las animaciones tienen un tipo que condiciona que ocurre cuando la termina (ver implementación de animation end).


Estados de CaromScene


PhysicsUtils

En este scripts hay métodos estáticos que hacen una conversión entre píxeles en pantalla y unidades físicas de box2d. Como siempre usamos unidades físicas en vez de píxeles, se usa en la mayor parte de los scripts que se necesita instanciar un objeto en la escena.

InputHandler

Singleton. Es un wrapper en el cual se reciben los eventos de SDL, y que el resto de componentes pueden usar si quieren detectar que se ha pulsado una tecla, se ha dado click, o para saber la posición del ratón.


Detección de golpes

WhiteBallScorerComponent

Componente de la bola blanca. Detecta si ha chocado con paredes o con bolas de color, y hace en consecuencia lo escrito en Sistema de puntuación.

ColorBallScorerComponent

Componente de bolas distintas a la bola blanca. Detecta únicamente si ha chocado con bolas de color, y si ocurre, notifican al ColorHitManager del choque con la bola correspondiente.

ColorHitManager

Se encuentra en la escena. Recibe los choques de las bolas de color y filtra los choques iguales (ya que le van a notificar las dos bolas por separado de los mismos choques). Después, con cada choque, añade los puntos escritos en Sistema de puntuación.


CameraComponent

Componente que tiene la entidad de Cámara. Todas las entidades se renderizan en base a la cámara, es decir, dependiendo de la posición de la cámara las entidades se van a renderizan en una posición u otra de la pantalla.

TweenComponent

Componente que habilita poder hacer interpolaciones lineales en atributos de la Entidad. Contiene métodos para poder interpolar su posición, su escala, y su rotación. También contiene uno para cambiar floats por referencia. Se usa principalmente para añadir animaciones a las entidades.

FollowComponent

Componente que copia ciertas propiedades de otra entidad, como la posición, rotación y escala.

ShadowComponent

Componente que actúa como un contenedor de referencias a entidades. Se usa como un wrapper, ya que en el método de addShadow se crea una entidad, se le añade TransformComponent, RenderTextureComponent, y FollowComponent, y se añade al vector de ShadowComponent. Se trata de una abstracción.


Textos

TextComponent

DialogueComponent

Componente que usa el TextComponent para añadir caracteres al texto cada ciertos milisegundos, además de hacer un sonido. Recibe eventos de input con los que se puede pasar a la siguiente frase, ya que tiene un método de ir añadiendo frases

WobblyTextComponent

Hereda de TextComponent, y lo único que hace es sobreescribir el método render para poder renderizar el texto con vértices de SDL. Con esto, se puede simular un shader de movimiento ya que en cada iteración los vértices se van moviendo dando ese efecto de ola.