1 package ru.fredboy.cavedroid.game.controller.mob.behavior
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
8 abstract class BaseMobBehavior<MOB : Mob>(
9 val mobType: KClass<MOB>,
12 final override fun update(mob: Mob, worldAdapter: MobWorldAdapter, delta: Float) {
13 if (mob::class == mobType) {
15 updateMob(worldAdapter, delta)
18 throw IllegalArgumentException(
19 "Trying to update mob of type ${mob::class.simpleName} with behavior of ${mobType.simpleName}"
24 abstract fun MOB.updateMob(worldAdapter: MobWorldAdapter, delta: Float)
27 private const val TAG = "BaseMobBehavior"