summaryrefslogtreecommitdiff
path: root/composeApp/src/commonMain/kotlin/coffee/liz/ecs/animation/AnimationComponents.kt
diff options
context:
space:
mode:
Diffstat (limited to 'composeApp/src/commonMain/kotlin/coffee/liz/ecs/animation/AnimationComponents.kt')
-rw-r--r--composeApp/src/commonMain/kotlin/coffee/liz/ecs/animation/AnimationComponents.kt35
1 files changed, 24 insertions, 11 deletions
diff --git a/composeApp/src/commonMain/kotlin/coffee/liz/ecs/animation/AnimationComponents.kt b/composeApp/src/commonMain/kotlin/coffee/liz/ecs/animation/AnimationComponents.kt
index cb3708f..5a846fb 100644
--- a/composeApp/src/commonMain/kotlin/coffee/liz/ecs/animation/AnimationComponents.kt
+++ b/composeApp/src/commonMain/kotlin/coffee/liz/ecs/animation/AnimationComponents.kt
@@ -10,24 +10,29 @@ import kotlin.jvm.JvmInline
enum class LoopMode {
/** Play once **/
ONCE,
+
/** Repeat **/
LOOP,
+
/** Play forward, then backward, repeat **/
- PING_PONG
+ PING_PONG,
}
/**
* Name of an animation clip.
*/
@JvmInline
-value class AnimationName(val value: String)
+value class AnimationName(
+ val value: String,
+)
/**
* Name of a frame.
*/
@JvmInline
-value class FrameName(val value: String)
-
+value class FrameName(
+ val value: String,
+)
/**
* Animation Clip details.
@@ -35,7 +40,7 @@ value class FrameName(val value: String)
data class AnimationClip(
val frameNames: List<FrameName>,
val frameTicks: Int,
- val loopMode: LoopMode = LoopMode.LOOP
+ val loopMode: LoopMode = LoopMode.LOOP,
)
/**
@@ -43,15 +48,19 @@ data class AnimationClip(
*/
data class SpriteSheet(
val imagePath: String,
- val frames: Map<FrameName, Rect>
+ val frames: Map<FrameName, Rect>,
) : Component
-enum class AnimationDirection(val step: Int) {
+enum class AnimationDirection(
+ val step: Int,
+) {
/** Play in forward direction **/
FORWARD(step = 1),
+
/** Play in reverse direction **/
- BACKWARD(step = -1);
+ BACKWARD(step = -1),
}
+
/**
* Current state of an animation.
*/
@@ -61,13 +70,17 @@ data class Animator(
var frameIndex: Int = 0,
var elapsedTicks: Int = 0,
var playing: Boolean = true,
- var direction: AnimationDirection = AnimationDirection.FORWARD
+ var direction: AnimationDirection = AnimationDirection.FORWARD,
) : Component {
/**
* Play a specific animation clip by name.
*/
- fun play(clipName: AnimationName, restart: Boolean = true) {
- clipName.takeIf { currentClip != it || restart }
+ fun play(
+ clipName: AnimationName,
+ restart: Boolean = true,
+ ) {
+ clipName
+ .takeIf { currentClip != it || restart }
.run {
currentClip = clipName
reset()