DEADSOFTWARE

de75a4e19b6a5bf22d4a5dee05c3cd2f3d53b1bb
[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 final override fun update(mob: Mob, worldAdapter: MobWorldAdapter, delta: Float) {
13 if (mob::class == mobType) {
14 with(mob as MOB) {
15 updateMob(worldAdapter, delta)
16 }
17 } else {
18 throw IllegalArgumentException(
19 "Trying to update mob of type ${mob::class.simpleName} with behavior of ${mobType.simpleName}"
20 )
21 }
22 }
23
24 abstract fun MOB.updateMob(worldAdapter: MobWorldAdapter, delta: Float)
25
26 companion object {
27 private const val TAG = "BaseMobBehavior"
28 }
29 }