Taskin kuvaus
Otetaan käyttöön uusi "data handle" design pattern, jonka avulla voi käsitellä entitejä ja muita kokonaisuuksia pelissä.
Pääidea on, että kokonaisuuksilla on yksi handle, joka on helppo hakea, ja joka antaa helposti käsitellä koko kokonaisuutta.
Toteutus
Entiteille tai muille kokonaisuuksille voi määrittää handle structin, joka luodaan tarvittaessa ja joka pitää tietoa kokonaisuudesta.
Handle structit voivat elää vain yhden quantum framen ajan, jotta ei rikota quantumin rakennetta.
struct (name)Handle
{
// sisältää yhden tai useamman staattisen Create metodin
//{
// yksinkertainen create
public static (name)EntityHandle Create(EntityRef entityRef)
// määritetään kun handleä käytetään yhtä entityä varten,
// jossa tapauksessa luomisvaiheessa haetaan entityyn liittyviin komponentteihin pointterit.
// linkattu create
public static (name)EntityHandle Create(EntityRef entityRef)
// määritetään kun handleä käytetään kokonaisuudessa, johon kuuluu monta entityä,
// jossa tapauksessa luomisvaiheessa haetaan LinkQComponent, joka sisältää identifierin,
// jonka avulla voidaan hakea referenssejä kokonaisuuteen liittyvään dataan
// ja/tai asetetaan kokonaisuuteen liittyviä arvoja.
// muu create
public static (name)EntityHandle Create((type) (other identifier))
// sets properties based on provided identifier
// määritetään kun handleä käytetään kokonaisuuteen, joka ei liity entityyn,
// jossa tapauksessa luomisvaiheessa käytetään muuta annettua identifieria,
// jonka avulla haetaan referenssejä kokonaisuuteen liittyvään dataan ja/tai asetetaan kokonaisuuteen liittyviä arvoja.
//}
// antaa pääsyn komponentteihin, referensseihin ja muuhun dataan
// {
public EntityRef ERef { get; private set }
public (Qcomponent) (component 1) { get; private set }
public (Qcomponent) (component 2) { get; private set }
...
public (type) (other property 1) { get; private set }
public (type) (other property 2) { get; private set }
...
// }
}
Tarvittaessa määritetään LinkQComponent, joka lisätään kokonaisuuteen liittyviin entiteihin.
Sisältää tarvittavat identifierit, joiden avulla voidaan luoda handle structi.
Voi sisältää myös enumin, joka merkkaa missä osassa kokonaisuutta komponentti on kiinni.
component (name)LinkQcomponent
{
(name)EntityType
EntityRef ERef
(type) (other identifier)
}
enum (name)EntityType
{
...
}
Yhdessä kokonaisuudessa voi olla samaan aikaan osia, jotka liittyvät ja eivät liity entiteihin.
Kokonaisuudet voivat olla päällekkäisiä.
Se miten "data handle" pattern implementoidaan vaihtelee kokonaisuuden mukaan
Taskin kuvaus
Otetaan käyttöön uusi "data handle" design pattern, jonka avulla voi käsitellä entitejä ja muita kokonaisuuksia pelissä.
Pääidea on, että kokonaisuuksilla on yksi handle, joka on helppo hakea, ja joka antaa helposti käsitellä koko kokonaisuutta.
Toteutus
Entiteille tai muille kokonaisuuksille voi määrittää handle structin, joka luodaan tarvittaessa ja joka pitää tietoa kokonaisuudesta.
Handle structit voivat elää vain yhden quantum framen ajan, jotta ei rikota quantumin rakennetta.
Tarvittaessa määritetään LinkQComponent, joka lisätään kokonaisuuteen liittyviin entiteihin.
Sisältää tarvittavat identifierit, joiden avulla voidaan luoda handle structi.
Voi sisältää myös enumin, joka merkkaa missä osassa kokonaisuutta komponentti on kiinni.
Yhdessä kokonaisuudessa voi olla samaan aikaan osia, jotka liittyvät ja eivät liity entiteihin.
Kokonaisuudet voivat olla päällekkäisiä.
Se miten "data handle" pattern implementoidaan vaihtelee kokonaisuuden mukaan