sealed class DifficultyLevel(
val columnCount: Int,
val rowCount: Int,
val flagsCount: Int,
val minesCount: Int) : Parcelable {
class Easy() : DifficultyLevel(10, 10, 10, 10) {
constructor(parcel: Parcel) : this()
override fun writeToParcel(parcel: Parcel, flags: Int) {
super.writeToParcel(parcel, flags)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Easy> {
override fun createFromParcel(parcel: Parcel): Easy {
return Easy(parcel)
}
override fun newArray(size: Int): Array<Easy?> {
return arrayOfNulls(size)
}
}
}
class Medium() : DifficultyLevel(13, 13, 23, 23) {
constructor(parcel: Parcel) : this() {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
super.writeToParcel(parcel, flags)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Medium> {
override fun createFromParcel(parcel: Parcel): Medium {
return Medium(parcel)
}
override fun newArray(size: Int): Array<Medium?> {
return arrayOfNulls(size)
}
}
}
class Hard() : DifficultyLevel(16, 16, 69, 69) {
constructor(parcel: Parcel) : this() {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
super.writeToParcel(parcel, flags)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Hard> {
override fun createFromParcel(parcel: Parcel): Hard {
return Hard(parcel)
}
override fun newArray(size: Int): Array<Hard?> {
return arrayOfNulls(size)
}
}
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeInt(columnCount)
parcel.writeInt(rowCount)
parcel.writeInt(flagsCount)
parcel.writeInt(minesCount)
}
}