I can't continue this project on Linux.
This commit is contained in:
parent
4ab4b5ad68
commit
ae6fd7b0c4
5 changed files with 76 additions and 0 deletions
|
@ -11,6 +11,8 @@ lazy val core = (project in file("core")).settings(
|
|||
"io.chrisdavenport" %% "fuuid" % "0.3.0",
|
||||
"tf.bug" %% "fancadescodec" % "0.1.1",
|
||||
"tf.bug" %% "fancadegraph" % "0.1.0",
|
||||
"org.scalameta" %% "munit" % "0.7.9" % Test,
|
||||
),
|
||||
testFrameworks += new TestFramework("munit.Framework"),
|
||||
addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.11.0" cross CrossVersion.full),
|
||||
)
|
||||
|
|
34
core/src/main/scala/tf/bug/fancadetagless/Fancade.scala
Normal file
34
core/src/main/scala/tf/bug/fancadetagless/Fancade.scala
Normal file
|
@ -0,0 +1,34 @@
|
|||
package tf.bug.fancadetagless
|
||||
|
||||
import tf.bug.fancadegraph.Level
|
||||
import tf.bug.fancadegraph.BlockDefinition
|
||||
import tf.bug.fancadegraph.PinDefinition
|
||||
import tf.bug.fancadegraph.Block
|
||||
import tf.bug.fancadescodec.Position
|
||||
import scalax.collection.Graph
|
||||
|
||||
sealed trait Fancade {
|
||||
val pins: Vector[PinDefinition]
|
||||
|
||||
def render: Level
|
||||
}
|
||||
|
||||
object Fancade {
|
||||
|
||||
final case class Capture[T](newBlock: BlockDefinition[T], args: T, pins: Vector[PinDefinition]) extends Fancade {
|
||||
override def render: Level = {
|
||||
Level(
|
||||
Set(
|
||||
Block(
|
||||
Position(0, 0, 0),
|
||||
newBlock,
|
||||
args
|
||||
)
|
||||
),
|
||||
Graph.empty
|
||||
)
|
||||
}
|
||||
}
|
||||
final case class Use(inputs: Vector[Fancade])
|
||||
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package tf.bug.fancadetagless
|
||||
|
||||
import tf.bug.fancadetagless.Fanscript.{Position, ScreenSize}
|
||||
import tf.bug.fancadegraph.BlockDefinition
|
||||
|
||||
trait Fanscript[F[_]] {
|
||||
|
||||
|
@ -70,6 +71,24 @@ trait Fanscript[F[_]] {
|
|||
|
||||
object Fanscript {
|
||||
|
||||
implicit object FanscriptFancade extends Fanscript[FancadeW] {
|
||||
|
||||
override def lift(value: Float): FancadeW[Float] =
|
||||
Fancade.Capture(
|
||||
BlockDefinition.NumberValue,
|
||||
value,
|
||||
BlockDefinition.NumberValue.output
|
||||
)
|
||||
|
||||
override def win(stop: Boolean): FancadeW[Unit] =
|
||||
Fancade.Capture(
|
||||
BlockDefinition.Win,
|
||||
stop,
|
||||
BlockDefinition.Win.after
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
case class ScreenSize(width: Float, height: Float)
|
||||
case class Position(position: Vector3, rotation: Rotation)
|
||||
case class Raycast(hit: Boolean, position: Vector3, obj: Obj)
|
||||
|
|
7
core/src/main/scala/tf/bug/fancadetagless/package.scala
Normal file
7
core/src/main/scala/tf/bug/fancadetagless/package.scala
Normal file
|
@ -0,0 +1,7 @@
|
|||
package tf.bug
|
||||
|
||||
package object fancadetagless {
|
||||
|
||||
type FancadeW[A] = Fancade
|
||||
|
||||
}
|
14
core/src/test/scala/tf/bug/fancadetagless/FancadeSuite.scala
Normal file
14
core/src/test/scala/tf/bug/fancadetagless/FancadeSuite.scala
Normal file
|
@ -0,0 +1,14 @@
|
|||
package tf.bug.fancadetagless
|
||||
|
||||
import tf.bug.fancadegraph.BlockDefinition
|
||||
|
||||
class FancadeSuite extends munit.FunSuite {
|
||||
|
||||
test("A capture creates one block") {
|
||||
val capture = Fancade.Capture[String](BlockDefinition.GetNumber, "hello", Vector(
|
||||
BlockDefinition.GetNumber.output
|
||||
))
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue