Ohjainten ryhmittely¶
Jos pelissä on esimerkiksi useita pelaajia tai pelitilanteita, voi olla järkevää jaotella ohjaimia omiin ryhmiinsä. Ryhmiteltyjä ohjaimia voidaan ottaa käyttöön ja poistaa käytöstä (tai kokonaan pelistä) yhdellä koodirivillä.
Ohjainryhmä (ListenContext) ja sen luominen¶
Ohjainryhmä on tyypiltään ListenContext. Yleensä ryhmä on hyvä asettaa peliin attribuutiksi (class-sanan ja aaltosulun jälkeen), jotta siihen pääsee kiinni kaikista aliohjelmista.
Ryhmä voidaan alustaa ennen ohjainten kuuntelua (aliohjelman sisällä!) seuraavasti
Sen jälkeen ohjaimet voidaan lisätä kirjoittamalla kuuntelurivin perään .InContext ja sille parametriksi luodun ryhmän nimi. Esimerkiksi
pelaajan1Kontrollit = this.ControlContext.CreateSubcontext();
Keyboard.Listen(...).InContext(pelaajan1Kontrollit);
Keyboard.Listen(...).InContext(pelaajan1Kontrollit);
Mouse.Listen(...).InContext(pelaajan1Kontrollit);
Ohjainten poistaminen käytöstä¶
Ohjainryhmän voi poistaa väliaikaisesti käytöstä sen Disable-metodilla.
Kontrollit saa vastaavasti takaisin käyttöön Enable-metodilla.
Jos kontrollit halutaan poistaa kokonaan (esimerkiksi jos ne halutaan luoda uudelleen), voidaan sanoa
Huomaa, että tuhottua kontekstia (ryhmää) ei voi enää käyttää uudelleen, ennen kuin se on alustettu uudelleen (CreateSubcontext)!
Aliryhmien luominen¶
Kontrolliryhmiä on myös mahdollista luoda toistensa sisälle.
pelaajienKontrollit = ControlContext.CreateSubcontext();
pelaajan1Kontrollit = pelaajienKontrollit.CreateSubcontext();
pelaajan2Kontrollit = pelaajienKontrollit.CreateSubcontext();
pelaajan1Ampuminen = pelaajan1Kontrollit.CreateSubcontext();
pelaajan2Ampuminen = pelaajan2Kontrollit.CreateSubcontext();
Jos ryhmät piirrettäisiin nyt puurakenteeksi (hierarkia), se näyttäisi tältä:

Huomaa, että ControlContext on aina hierarkiassa ylimpänä. Se on pelin ns. pääkonteksti. Metodit vaikuttavat aina alaspäin puussa, eli esimerkiksi
poistaa käytöstä myös ryhmän pelaajan1Ampuminen.
Ikkunoihin liittyvät ohjainryhmät¶
Jokaisella ikkunalla on myös ControlContext niin kuin pelilläkin. Näin vain päällimmäisellä ikkunalla on ns. fokus eli sen alla olevien ikkunoiden (tai pelin) ohjaimet eivät toimi, ennen kuin ikkuna on suljettu.
Ikkunalle voi lisätä vastaavasti ohjaimia joko yksitellen
tai uutena ryhmänä