public void OnEvent(EventData photonEvent)
    {
        switch (photonEvent.Code)
        {
        case EventCodes.StartGame:
            if (characterSpawner != null)
            {
                characterSpawner.DestroyCharacter();
            }
            break;

        case EventCodes.AssignPlayerTypeAndSpawnPoint:
            // Deconstruct event
            int actorNumber = (int)EventCodes.GetEventContentAtPosition(photonEvent, 0);
            if (actorNumber == PhotonNetwork.LocalPlayer.ActorNumber)
            {
                CharacterType assignedCharacterType = (CharacterType)EventCodes.GetEventContentAtPosition(photonEvent, 1);
                Vector3       spawnPoint            = (Vector2)EventCodes.GetEventContentAtPosition(photonEvent, 2);
                characterSpawner = new CharacterSpawner();
                // Spawn Character of type `assignedCharacterType` across clients
                Character character = characterSpawner.SpawnPlayerCharacter(
                    assignedCharacterType,
                    spawnPoint,
                    Vector2.zero,
                    true,
                    true,
                    null,
                    false,
                    PhotonNetwork.LocalPlayer.NickName);
                character.gameObject.AddComponent <AudioListener>();
                UiManager.Instance.minimap.SetTarget(character.transform);
                UiManager.Instance.minimap.Activate();
            }
            break;

        case EventCodes.Mutation:
            if (characterSpawner != null)
            {
                // CharacterSpawner may be null if we're currently in a tutorial
                characterSpawner.OnMutation();
            }
            break;
        }
    }