Work on attack stuff
This commit is contained in:
parent
45a529c958
commit
087a6a56bd
2 changed files with 21 additions and 0 deletions
|
@ -2,6 +2,7 @@ package group.ouroboros.potrogue.entity.messages
|
||||||
|
|
||||||
import group.ouroboros.potrogue.extensions.GameEntity
|
import group.ouroboros.potrogue.extensions.GameEntity
|
||||||
import group.ouroboros.potrogue.extensions.GameMessage
|
import group.ouroboros.potrogue.extensions.GameMessage
|
||||||
|
import group.ouroboros.potrogue.world.GameContext
|
||||||
import org.hexworks.amethyst.api.entity.EntityType
|
import org.hexworks.amethyst.api.entity.EntityType
|
||||||
|
|
||||||
// Our EntityAction is different from a regular GameMessage in a way that it also has a target.
|
// Our EntityAction is different from a regular GameMessage in a way that it also has a target.
|
||||||
|
@ -24,4 +25,10 @@ interface EntityAction <S : EntityType, T : EntityType> : GameMessage {
|
||||||
operator fun component1() = context
|
operator fun component1() = context
|
||||||
operator fun component2() = source
|
operator fun component2() = source
|
||||||
operator fun component3() = target
|
operator fun component3() = target
|
||||||
|
|
||||||
|
data class Attack(
|
||||||
|
override val context: GameContext,
|
||||||
|
override val source: GameEntity<EntityType>,
|
||||||
|
override val target: GameEntity<EntityType>
|
||||||
|
) : EntityAction<EntityType, EntityType>
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package group.ouroboros.potrogue.entity.systems
|
||||||
|
|
||||||
|
import group.ouroboros.potrogue.entity.messages.EntityAction
|
||||||
|
import group.ouroboros.potrogue.world.GameContext
|
||||||
|
import org.hexworks.amethyst.api.Consumed
|
||||||
|
import org.hexworks.amethyst.api.Response
|
||||||
|
import org.hexworks.amethyst.api.base.BaseFacet
|
||||||
|
object Attackable : BaseFacet<GameContext, EntityAction.Attack>(EntityAction.Attack::class) {
|
||||||
|
override suspend fun receive(message: EntityAction.Attack): Response {
|
||||||
|
val (context, _, target) = message
|
||||||
|
context.world.removeEntity(target)
|
||||||
|
return Consumed
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue