private void SpawnHouses()
    {
        DestroyHousesInstances();

        for (int i = 0; i < house_spawn_positions.Length; ++i)
        {
            if (house_spawn_positions[i] != null)
            {
                SpawnHouseInstance(house_spawn_positions[i].transform.position);
            }
        }

        EventHousesSpawned ev = new EventHousesSpawned(houses);

        EventManager.Instance.SendEvent(ev);
    }
    private void OnEvent(GameEvent ev)
    {
        switch (ev.Type())
        {
        case GameEventType.EVENT_GAMEPAD_ADDED:
        {
            EventGamepadAdded c_ev = (EventGamepadAdded)ev;

            Player pl = GetPlayerByIndex(c_ev.gamepad.GetGamepadIndex());

            if (pl != null)
            {
                pl.SetAssignedGamepad(c_ev.gamepad);
            }

            break;
        }

        case GameEventType.EVENT_GAMEPAD_REMOVED:
        {
            EventGamepadRemoved c_ev = (EventGamepadRemoved)ev;

            Player pl = GetPlayerByIndex(c_ev.gamepad.GetGamepadIndex());

            if (pl != null)
            {
                pl.SetAssignedGamepad(null);
            }

            break;
        }

        case GameEventType.EVENT_HOUSES_SPAWNED:
        {
            EventHousesSpawned c_ev = (EventHousesSpawned)ev;

            SpawnPlayersOnHousePositions(c_ev.houses);

            break;
        }

        case GameEventType.EVENT_MATCH_FINISH:
        {
            break;
        }
        }
    }