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.

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