From ae6fd7b0c45be21444467d167a3884d3a42673d1 Mon Sep 17 00:00:00 2001 From: Soren Date: Wed, 1 Jul 2020 17:52:22 -0700 Subject: [PATCH] I can't continue this project on Linux. --- build.sbt | 2 ++ .../scala/tf/bug/fancadetagless/Fancade.scala | 34 +++++++++++++++++++ .../tf/bug/fancadetagless/Fanscript.scala | 19 +++++++++++ .../scala/tf/bug/fancadetagless/package.scala | 7 ++++ .../tf/bug/fancadetagless/FancadeSuite.scala | 14 ++++++++ 5 files changed, 76 insertions(+) create mode 100644 core/src/main/scala/tf/bug/fancadetagless/Fancade.scala create mode 100644 core/src/main/scala/tf/bug/fancadetagless/package.scala create mode 100644 core/src/test/scala/tf/bug/fancadetagless/FancadeSuite.scala diff --git a/build.sbt b/build.sbt index bd0f122..54e74a2 100644 --- a/build.sbt +++ b/build.sbt @@ -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), ) diff --git a/core/src/main/scala/tf/bug/fancadetagless/Fancade.scala b/core/src/main/scala/tf/bug/fancadetagless/Fancade.scala new file mode 100644 index 0000000..653da09 --- /dev/null +++ b/core/src/main/scala/tf/bug/fancadetagless/Fancade.scala @@ -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]) + +} diff --git a/core/src/main/scala/tf/bug/fancadetagless/Fanscript.scala b/core/src/main/scala/tf/bug/fancadetagless/Fanscript.scala index 8a26a2f..23a99f5 100644 --- a/core/src/main/scala/tf/bug/fancadetagless/Fanscript.scala +++ b/core/src/main/scala/tf/bug/fancadetagless/Fanscript.scala @@ -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) diff --git a/core/src/main/scala/tf/bug/fancadetagless/package.scala b/core/src/main/scala/tf/bug/fancadetagless/package.scala new file mode 100644 index 0000000..63efb49 --- /dev/null +++ b/core/src/main/scala/tf/bug/fancadetagless/package.scala @@ -0,0 +1,7 @@ +package tf.bug + +package object fancadetagless { + + type FancadeW[A] = Fancade + +} diff --git a/core/src/test/scala/tf/bug/fancadetagless/FancadeSuite.scala b/core/src/test/scala/tf/bug/fancadetagless/FancadeSuite.scala new file mode 100644 index 0000000..df9c4b9 --- /dev/null +++ b/core/src/test/scala/tf/bug/fancadetagless/FancadeSuite.scala @@ -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 + )) + + } + +}