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.

141 lines
5.8 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 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. "io.methvin" %% "directory-watcher-better-files" % "0.14.0"
  66. ),
  67. // Determine OS version of JavaFX binaries
  68. // Add JavaFX dependencies
  69. libraryDependencies ++= javaFXModules.map(m =>
  70. "org.openjfx" % s"javafx-$m" % "14.0.1" classifier osName
  71. ),
  72. scalacOptions ++= Seq(
  73. "-encoding",
  74. "UTF-8",
  75. "-deprecation",
  76. "-feature",
  77. "-language:existentials",
  78. "-language:experimental.macros",
  79. "-language:higherKinds",
  80. "-language:implicitConversions",
  81. "-unchecked",
  82. "-Xlint",
  83. "-Ywarn-numeric-widen",
  84. "-Ymacro-annotations",
  85. //silence warnings for by-name implicits
  86. "-Wconf:cat=lint-byname-implicit:s",
  87. //give errors on non exhaustive matches
  88. "-Wconf:msg=match may not be exhaustive:e",
  89. "-explaintypes" // Explain type errors in more detail.
  90. ),
  91. javacOptions ++= Seq("-source", "11", "-target", "11"),
  92. javaOptions ++= Seq("-Xmx2G", "-Xms2G"),
  93. fork := true,
  94. assemblyMergeStrategy in assembly := {
  95. case PathList("javax", "servlet", xs @ _*) => MergeStrategy.first
  96. case PathList(ps @ _*) if ps.last endsWith ".html" => MergeStrategy.first
  97. case "application.conf" => MergeStrategy.concat
  98. case "unwanted.txt" => MergeStrategy.discard
  99. case x if Assembly.isConfigFile(x) =>
  100. MergeStrategy.concat
  101. case PathList("META-INF", xs @ _*) =>
  102. (xs map { _.toLowerCase }) match {
  103. case ("manifest.mf" :: Nil) | ("index.list" :: Nil) |
  104. ("dependencies" :: Nil) =>
  105. MergeStrategy.discard
  106. case ps @ (x :: xs)
  107. if ps.last.endsWith(".sf") || ps.last.endsWith(".dsa") =>
  108. MergeStrategy.discard
  109. case "plexus" :: xs =>
  110. MergeStrategy.discard
  111. case "services" :: xs =>
  112. MergeStrategy.filterDistinctLines
  113. case ("spring.schemas" :: Nil) | ("spring.handlers" :: Nil) =>
  114. MergeStrategy.filterDistinctLines
  115. case _ => MergeStrategy.first // Changed deduplicate to first
  116. }
  117. case PathList(_*) => MergeStrategy.first
  118. // case x =>
  119. // val oldStrategy = (assemblyMergeStrategy in assembly).value
  120. // oldStrategy(x)
  121. }
  122. )
  123. initialCommands in (console) := """ammonite.Main.main(Array.empty)"""
  124. addCompilerPlugin("com.olegpy" %% "better-monadic-for" % "0.3.1")
  125. addCompilerPlugin(
  126. "org.typelevel" %% "kind-projector" % "0.11.1" cross CrossVersion.full
  127. )
  128. inThisBuild(
  129. List(
  130. scalaVersion := scalaVersion.value, // 2.11.12, or 2.13.3
  131. semanticdbEnabled := true, // enable SemanticDB
  132. semanticdbVersion := "4.3.24" // use Scalafix compatible version
  133. )
  134. )
  135. ThisBuild / scalafixDependencies += "com.github.liancheng" %% "organize-imports" % "0.4.3"