DEADSOFTWARE

1f1f15b77c03213234be2a8da33d985c7a35a827
[cavedroid.git] /
1 package ru.fredboy.cavedroid.game.controller.mob.behavior
2
3 import ru.fredboy.cavedroid.entity.mob.model.Mob
4 import ru.fredboy.cavedroid.entity.mob.abstraction.MobBehavior
5 import ru.fredboy.cavedroid.entity.mob.abstraction.MobWorldAdapter
6 import kotlin.reflect.KClass
7
8 abstract class BaseMobBehavior<MOB : Mob>(
9 val mobType: KClass<MOB>,
10 ) : MobBehavior {
11
12 @Suppress("UNCHECKED_CAST")
13 final override fun update(mob: Mob, worldAdapter: MobWorldAdapter, delta: Float) {
14 if (mob::class == mobType) {
15 with(mob as MOB) {
16 updateMob(worldAdapter, delta)
17 }
18 } else {
19 throw IllegalArgumentException(
20 "Trying to update mob of type ${mob::class.simpleName} with behavior of ${mobType.simpleName}"
21 )
22 }
23 }
24
25 abstract fun MOB.updateMob(worldAdapter: MobWorldAdapter, delta: Float)
26
27 companion object {
28 private const val TAG = "BaseMobBehavior"
29 }
30 }