Entity Ball, EmptyPlace a ich komponenty

Ciele
  1. Vytvorenie nových entít Ball a EmptyPlace
  2. Pridanie komponentov
  3. Implementovanie hernej slučky
Úvod
    V tomto cvičení vytvoríme nové entity a pridáme im komponenty
Postup
  1. Úloha: Vytvorte Entitu Ball a EmptyPlace v balíku entities
    Poznámka: Entity nech implementujú rozhranie IEntity a rozširujú triedu GdxActor Entita EmptyPlace nech implementuje aj rozhranie ApplicationContextAware, vďaka ktorému získame prístup ku kontextu
    Úloha: Vytvorte beany pre tieto Entity podobne ako sme vytvorili bean pre PlayScreen
    Poznámka: pridajte atribút scope pre tieto beany a nastavte ho na hodnotu "prototype" - to nám zabezpečí vytvorenie novej inštancie týchto objektov
  2. Úloha: Do balíka components pridajte komponenty pre vykresľovanie - triedy BallRenderComponent a EmptyPlaceRenderComponent pribalené v archíve
    Poznámka: implementujte metódy ktoré volajú tieto komponenty nad Entitami
    Úloha: Použitím anotácie @Autowired nastavte entitám ich závislostí
    Poznámka: V inicializačných metódach zabezpečte cyklické závislosti ak to komponenty vyžadujú
    Úloha: V entitách prepíšte metódu drawComponent() z triedy GdxActor a volajte v nej metódu draw() nad render komponentom danej entity
  3. Úloha: Implementujte metódu render() v kontajneri PlayScreen
    Poznámka: V metóde volajte act() a draw() nad Stage-om Stage nastavte v metóde show() ako input procesor
    Poznámka: prejdite všetkymi entitami a volajte nad nimi metódu update() POZOR !!! v tele tejto metódy v komponente akcií môže dôjsť ku odstráneniu entít a cyklus môže skončiť s výnimkou. Inšpirujte sa npríklad nasledujúcim kódom:
    
                    
                    for(.......){
                    
                        ((GdxActor) e).update();
                        if (boardModified) {
                            break;
                        }   
                    
                    }  
                    
                    if (generate) {
                        generateRandomBalls(3);
                        generate = false;
                    }     
                
comments powered by Disqus