Search code examples
javakotlinooplibgdx

In kotlin how can I access this function from enum class in another class?


To facilitate navigation between screens in my game I created this class

enum class ScreenEnum {
    MAIN_MENU {
        fun getScreen(): BaseScreen {
            return MenuScreen()
        }
    },
    GAME {
        fun getScreen(): BaseScreen {
            return GameScreen()
        }
    }
}

But I don't know how I can access these methods from another class in kotlin, did I do something wrong when creating the enum class? Thanks in advance if you can help me.

class Game() : BaseGame() {
    override fun create() {
       super.create()
       // -> Here is where I am trying to access the getScreen method
       // ScreenEnum.MAIN_MENU
    }
}

I tried to access from a java class but without success


Solution

  • Make it a shared abstract method:

    enum class ScreenEnum {
        MAIN_MENU {
            override fun getScreen(): BaseScreen {
                return MenuScreen()
            }
        },
        GAME {
            override fun getScreen(): BaseScreen {
                return GameScreen()
            }
        };
    
        abstract fun getScreen(): BaseScreen
    }