Add GameMode enum and PlayerGameModeChangeEvent

has*