package ru.dbotthepony.kstarbound.world.entities

import ru.dbotthepony.kstarbound.defs.Drawable
import ru.dbotthepony.kstarbound.json.builder.IStringSerializable

/**
 * Monsters, NPCs, Players
 */
abstract class ActorEntity() : DynamicEntity() {
	final override val movement: ActorMovementController = ActorMovementController()
	abstract val statusController: StatusController

	enum class DamageBarType {
		DEFAULT, NONE, SPECIAL
	}

	abstract val health: Double
	abstract val maxHealth: Double
	abstract val damageBarType: DamageBarType

	abstract val name: String

	enum class PortraitMode(override val jsonName: String) : IStringSerializable {
		HEAD("head"),
		BUST("bust"),
		FULL("full"),
		FULL_NEUTRAL("fullneutral"),
		FULL_NUDE("fullnude"),
		FULL_NEUTRAL_NUDE("fullneutralnude");
	}

	open fun portrait(mode: PortraitMode): List<Drawable> {
		return emptyList()
	}
}
