Prawdopodobnie w każdej grze deweloper musi jakoś poradzić sobie z wprowadzaniem danych, może to być proste zdarzenia z klawiatury i myszy, zdarzenia dotykowe lub coś takiego jak wprowadzanie danych z akcelerometru. Ten wkład bezpośrednio pośrednio wpływa na obiekty w grze. Czasami to samo wejście może wpływać na różne obiekty. Teraz zastanawiałem się, jak to wymodelować. Moim zdaniem istnieją dwa różne podejścia.
Pozwól, aby sam obiekt gry sobie z tym poradził, zasubskrybuj zdarzenia i wywołaj własne metody. Ma to tę zaletę, że same obiekty gry decydują, które dane wejściowe powodują, które działanie. Wadą wydaje się być to, że kod wejściowy zostaje zniekształcony przez „podstawowy” kod obiektu gry. Również obiekty gry nie są świadome stanu reszty gry i czasami mogą nie działać na podstawie zdarzeń wejściowych. To nie wydaje się właściwe.
Poproś ogólnego kontrolera wejściowego, aby zajął się wszystkimi danymi wejściowymi i podejmował decyzje o tym, kto może obsłużyć dane zdarzenie. Wydaje się, że lepiej oddziela to obawy, ale ściśle łączy klasę kontrolera wejściowego z obiektami gry. W jakiś sposób musi wiedzieć, kto chce otrzymać dane wydarzenie i w jakim stanie. To też nie wydaje się właściwe.
Jakich strategii używasz do tego?