Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Game Engine] Graphic Engine COMPLETE #109

Merged
merged 89 commits into from
Jun 3, 2024
Merged

[Game Engine] Graphic Engine COMPLETE #109

merged 89 commits into from
Jun 3, 2024

Conversation

maxogod
Copy link
Collaborator

@maxogod maxogod commented Jun 3, 2024

Summary of changes

Graphics engine para graficar cosas en el juego que se quiera crear utilizando esta libreria, esto incluye:

Basic game_engine/gui/basic/:

  • Window
  • ResourcePool
  • AssetManager
  • Font
  • Texture

Widgets game_engine/gui/widgets/:

  • CanvasObject -> abstract
  • Sprite
  • AnimatedSprite
  • Button
  • Label
  • ColorRect

Controllers game_engine/controllers/:

  • Controller -> abstract
  • Mouse
  • Keyboard

Exeptions game_engine/errors.h:

  • BadParams
  • FileNotFound
  • SDLError

Todo bajo el namespace engine, asi que se debe usar por ejemplo engine::Texture.

Test additions / changes

  • Hay pruebas de uso basicas en tests/graphics/.
  • Hay pruebas de memory leaks por culpa de SDL en tests/graphics/valgrind_false_positives/.

Checklist

  • Tested the changes locally.
  • Use tests added.
  • This change requires new documentation.
    • Documentation has been added/updated.

maxogod and others added 30 commits May 25, 2024 00:51
	- hice que incluya tambien los archivos que estan en subcarpetas anidadas de game_engine
	- tiene un cursor publico que es un punto sdl
	- una funcion update, que toma un evento sdl
	- usa un broadcast de signals on click

TODO:
	- controlador abstracto, para mouse y teclado
	- clase de signals
	- los canvas object tendran un metodo draw que toma renderer de sdl
	- el button es uno generico que tiene metodo adicional update ya que tiene logica que depende de ser hovereado por el mouse

TODO:
	- Agregar texto para button
	- metodo virtual de on_click_handler a ser connectado con la signal del mouse
	- cambio linea de apt install para los requisitos
	- agrego pre-commit como requisito para devs

TODO:
	- agregar el resto a medida que se vayan utilizando
	- Controller ahora tiene un default destructor
	- Mouse ahora tiene una lista de CanvasObjects donde cuando clickea llama a on_click
	- on_click metodo
	- is_intersecting con un punto o rect de sdl
	- implemento sus metodos por ser canvas
	- los botones saben cuando son apretados y pueden hacer lo que se quiera

TODO:
	mas virtualizacion para hacer cosas utililes con onclick
[Game engine] [Feature] CanvasObject, Buttons, Labels y Mouse controller
	- saco algo de physics que tenia y no compilaba, esto va a probocar conflictos pero bueno
	- este es el primer commit post problema de eliminacion de codigo de labels y controllers
	- una es la seleccionada por el equipo
	- otra es una random para probar
	- vuelvo a rehacer parte del mouse controller que se borro
	- mouse llama on_click y is_hovered de CanvasObject
	- agrego metodos virtuales on_click, is_hovered, on_key_down
	- revivo los cambios perdidos por el merge de mierduki
	- tiene label como componente y llama a sus metodos on_click y is_hovered
	- para agregar texto a la pantalla
	- recupero de la borrada masiva fea
	- necesita un rectangulo para posicionarse y color y font
	- recupero lo borrado
	- prueba para ver como funciona
	- format
	- un cppcheck -> no estaba inicializando un member en la list
Restore de cambios perdidos - labels, button, mouse
	- incluto nueva prueba de keyboard controller
	- SDL_KeyCode -> SDL_Keycode
	- abstrae el manejo de SDL events
	- llama al on_key_down method de la clase CanvasObject -> aplica polimorfismo
	- esto es para tener en cuenta casos especiales como cuando se deja de apretar shift
	- ahora cuando es una tecla especial no solo avisa al objeto que fue presionada sino tambien cuando es soltada
	- esto sirve para una mecanica de sprint por ejemplo donde mantenes shift mientras te moves y depuse soltas
maxogod and others added 11 commits June 2, 2024 20:22
	- modifico build.sh para copiar /assets a la bin folder
	- este maneja los assets para poder contruir los paths a partir del working dir
	- las fonts estaban en la game engine lo cual esta mal
	- ahora estan en `assets/fonts/`
	- Ahora usan la clase RAII window
	- para los assets usan AssetManager que tambien es RAII
	- arreglo lo que piden los errores de pre-commit
	- como estoy en otra compu no me di cuenta y no lo tenia instalado
[Game engine] [Refactor] SDL wrappers
	- comparticion del mismo recurso en 2 sprites diferentes.
	- tambien rename color_rect_test
	- clase para hacer pre-load de los recursos
	- para usarlos compartidos entre widgets
[Game Engine] [Feature] Resource pool
	- toda la graphics engine ahora esta bajo ese namespace
	- engine::Texture, engine::Sprite, etc
@maxogod maxogod added the enhancement New feature or request label Jun 3, 2024
@maxogod maxogod self-assigned this Jun 3, 2024
maxogod added 9 commits June 3, 2024 19:02
	- en tests-events.yaml
	- Cambio -DEVENT por -DTESTS
	- agrego -y en apt install
	- le pongo tests_bin/ en vez de build/
	- event tests no necesitan de GAME ENGINE asi q no la incluyo
@agustinbarbalase agustinbarbalase merged commit 64ba16d into dev Jun 3, 2024
2 checks passed
@agustinbarbalase agustinbarbalase deleted the dev_graphics branch June 3, 2024 22:47
Copy link
Collaborator

@nrsanchezfiuba nrsanchezfiuba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

aprobado por chayanne

@maxogod maxogod added this to the Graphics Engine milestone Jun 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants