Testing out JmonkeyEngine to make a game in Scala with Akka Actors within a pure FP layer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
5.7 KiB

4 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
  1. scalaVersion := "2.13.3"
  2. resolvers += "Jcenter" at "https://jcenter.bintray.com/"
  3. resolvers += "JME Bintray" at "https://bintray.com/jmonkeyengine/com.jme3"
  4. resolvers += "Jitpack" at "https://jitpack.io"
  5. resolvers += Resolver.mavenLocal
  6. resolvers += Resolver.sonatypeRepo("snapshots")
  7. lazy val jmeVersion = "3.3.2-stable"
  8. lazy val osName = System.getProperty("os.name") match {
  9. case n if n.startsWith("Linux") => "linux"
  10. case n if n.startsWith("Mac") => "mac"
  11. case n if n.startsWith("Windows") => "win"
  12. case _ => throw new Exception("Unknown platform!")
  13. }
  14. lazy val javaFXModules =
  15. Seq("base", "controls", "fxml", "graphics", "media", "swing", "web")
  16. lazy val root = (project in file(".")).settings(
  17. name := "mygame",
  18. organization := "wow.doge",
  19. version := "1.0-SNAPSHOT",
  20. libraryDependencies ++= Seq(
  21. "org.jmonkeyengine" % "jme3-core" % jmeVersion,
  22. "org.jmonkeyengine" % "jme3-desktop" % jmeVersion,
  23. "org.jmonkeyengine" % "jme3-lwjgl3" % jmeVersion,
  24. "org.jmonkeyengine" % "jme3-effects" % jmeVersion,
  25. "org.jmonkeyengine" % "jme3-plugins" % jmeVersion,
  26. "org.jmonkeyengine" % "jme3-blender" % jmeVersion,
  27. "com.github.stephengold" % "Minie" % "3.0.0",
  28. "com.simsilica" % "zay-es" % "1.2.1",
  29. "org.typelevel" %% "cats-core" % "2.3.0",
  30. "com.lihaoyi" % "ammonite" % "2.2.0" cross CrossVersion.full,
  31. "org.jetbrains.kotlin" % "kotlin-main-kts" % "1.4.10",
  32. "org.jetbrains.kotlin" % "kotlin-scripting-jsr223" % "1.4.10",
  33. "org.codehaus.groovy" % "groovy-all" % "3.0.6" pomOnly (),
  34. "org.scalafx" %% "scalafx" % "14-R19",
  35. "com.typesafe.akka" %% "akka-actor-typed" % "2.6.10",
  36. "org.typelevel" %% "cats-core" % "2.3.0",
  37. "org.typelevel" %% "cats-effect" % "2.3.0",
  38. "io.monix" %% "monix" % "3.2.2",
  39. "io.monix" %% "monix-bio" % "1.1.0",
  40. "io.circe" %% "circe-core" % "0.13.0",
  41. "io.circe" %% "circe-generic" % "0.13.0",
  42. "com.softwaremill.sttp.client3" %% "core" % "3.0.0",
  43. "com.softwaremill.sttp.client3" %% "monix" % "3.0.0",
  44. "com.softwaremill.sttp.client3" %% "circe" % "3.0.0",
  45. "com.softwaremill.sttp.client3" %% "async-http-client-backend-monix" % "3.0.0",
  46. "com.softwaremill.sttp.client3" %% "httpclient-backend-monix" % "3.0.0",
  47. "com.github.valskalla" %% "odin-monix" % "0.8.1",
  48. "com.github.valskalla" %% "odin-json" % "0.9.1",
  49. "com.softwaremill.macwire" %% "util" % "2.3.7",
  50. "com.softwaremill.macwire" %% "macros" % "2.3.7" % "provided",
  51. "com.github.valskalla" %% "odin-slf4j" % "0.8.1",
  52. "com.softwaremill.quicklens" %% "quicklens" % "1.6.1",
  53. "org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.0-RC1",
  54. "com.typesafe.scala-logging" %% "scala-logging" % "3.9.2",
  55. "io.circe" %% "circe-config" % "0.8.0",
  56. "com.beachape" %% "enumeratum-circe" % "1.6.1",
  57. "com.lihaoyi" %% "os-lib" % "0.7.1",
  58. "com.badlogicgames.gdx" % "gdx-ai" % "1.8.2",
  59. "org.recast4j" % "recast" % "1.2.5",
  60. "org.recast4j" % "detour" % "1.2.5",
  61. "com.lihaoyi" %% "pprint" % "0.6.0",
  62. "org.scalatest" %% "scalatest" % "3.2.2" % "test",
  63. "org.typelevel" %% "cats-mtl" % "1.1.1",
  64. "io.estatico" %% "newtype" % "0.4.4"
  65. ),
  66. // Determine OS version of JavaFX binaries
  67. // Add JavaFX dependencies
  68. libraryDependencies ++= javaFXModules.map(m =>
  69. "org.openjfx" % s"javafx-$m" % "14.0.1" classifier osName
  70. ),
  71. scalacOptions ++= Seq(
  72. "-encoding",
  73. "UTF-8",
  74. "-deprecation",
  75. "-feature",
  76. "-language:existentials",
  77. "-language:experimental.macros",
  78. "-language:higherKinds",
  79. "-language:implicitConversions",
  80. "-unchecked",
  81. "-Xlint",
  82. "-Ywarn-numeric-widen",
  83. "-Ymacro-annotations",
  84. //silence warnings for by-name implicits
  85. "-Wconf:cat=lint-byname-implicit:s",
  86. //give errors on non exhaustive matches
  87. "-Wconf:msg=match may not be exhaustive:e",
  88. "-explaintypes" // Explain type errors in more detail.
  89. ),
  90. javacOptions ++= Seq("-source", "11", "-target", "11"),
  91. javaOptions ++= Seq("-Xmx2G", "-Xms2G"),
  92. fork := true,
  93. assemblyMergeStrategy in assembly := {
  94. case PathList("javax", "servlet", xs @ _*) => MergeStrategy.first
  95. case PathList(ps @ _*) if ps.last endsWith ".html" => MergeStrategy.first
  96. case "application.conf" => MergeStrategy.concat
  97. case "unwanted.txt" => MergeStrategy.discard
  98. case x if Assembly.isConfigFile(x) =>
  99. MergeStrategy.concat
  100. case PathList("META-INF", xs @ _*) =>
  101. (xs map { _.toLowerCase }) match {
  102. case ("manifest.mf" :: Nil) | ("index.list" :: Nil) |
  103. ("dependencies" :: Nil) =>
  104. MergeStrategy.discard
  105. case ps @ (x :: xs)
  106. if ps.last.endsWith(".sf") || ps.last.endsWith(".dsa") =>
  107. MergeStrategy.discard
  108. case "plexus" :: xs =>
  109. MergeStrategy.discard
  110. case "services" :: xs =>
  111. MergeStrategy.filterDistinctLines
  112. case ("spring.schemas" :: Nil) | ("spring.handlers" :: Nil) =>
  113. MergeStrategy.filterDistinctLines
  114. case _ => MergeStrategy.first // Changed deduplicate to first
  115. }
  116. case PathList(_*) => MergeStrategy.first
  117. // case x =>
  118. // val oldStrategy = (assemblyMergeStrategy in assembly).value
  119. // oldStrategy(x)
  120. }
  121. )
  122. initialCommands in (console) := """ammonite.Main.main(Array.empty)"""
  123. addCompilerPlugin("com.olegpy" %% "better-monadic-for" % "0.3.1")
  124. addCompilerPlugin(
  125. "org.typelevel" %% "kind-projector" % "0.11.1" cross CrossVersion.full
  126. )
  127. inThisBuild(
  128. List(
  129. scalaVersion := scalaVersion.value, // 2.11.12, or 2.13.3
  130. semanticdbEnabled := true, // enable SemanticDB
  131. semanticdbVersion := "4.3.24" // use Scalafix compatible version
  132. )
  133. )
  134. ThisBuild / scalafixDependencies += "com.github.liancheng" %% "organize-imports" % "0.4.3"