BaseAnalyzer/src/main/scala/org/danielholmes/coc/baseanalyser/Services.scala
2025-10-10 15:32:29 +02:00

69 lines
2.6 KiB
Scala

package org.danielholmes.coc.baseanalyser
import com.github.mustachejava.DefaultMustacheFactory
import com.twitter.mustache.ScalaObjectHandler
import org.danielholmes.coc.baseanalyser.analysis._
import org.danielholmes.coc.baseanalyser.gameconnection.{ClanSeekerGameConnection, StubGameConnection}
import org.danielholmes.coc.baseanalyser.baseparser.{HardCodedElementFactory, VillageJsonParser}
import org.danielholmes.coc.baseanalyser.stringdisplay.{StringDisplayer, StringTroopDropDisplayer}
import org.danielholmes.coc.baseanalyser.web.{MustacheRenderer, PermittedClan, ViewModelMapper}
import org.scalactic.anyvals.PosInt
trait Services {
import com.softwaremill.macwire._
//lazy val gameConnection = wire[ClanSeekerGameConnection]
lazy val gameConnection = wire[StubGameConnection]; println("WARNING: Test stubbed game connection enabled")
private lazy val elementFactory = wire[HardCodedElementFactory]
lazy val villageJsonParser = wire[VillageJsonParser]
private lazy val th8Rules: Set[Rule] = Set(
wire[HogCCLureRule],
wire[HighHPUnderAirDefRule],
wire[ArcherAnchorRule],
wire[AirSnipedDefenseRule],
wire[MinimumCompartmentsRule],
wire[BKSwappableRule],
wire[EnoughPossibleTrapLocationsRule]
)
private lazy val th9Rules: Set[Rule] = Set(
wire[HogCCLureRule],
wire[AirSnipedDefenseRule],
wire[WizardTowersOutOfHoundPositionsRule],
wire[QueenWalkedAirDefenseRule],
wire[QueenWontLeaveCompartmentRule],
wire[EnoughPossibleTrapLocationsRule]
)
private lazy val th10Rules: Set[Rule] = Set(
wire[HogCCLureRule],
wire[AirSnipedDefenseRule],
wire[WizardTowersOutOfHoundPositionsRule],
wire[QueenWalkedAirDefenseRule]
)
private lazy val th11Rules: Set[Rule] = th10Rules
private lazy val rulesByThLevel = Map(
PosInt(8) -> th8Rules,
PosInt(9) -> th9Rules,
PosInt(10) -> th10Rules,
PosInt(11) -> th11Rules
)
private def mustacheFactory = {
val mf = new DefaultMustacheFactory()
mf.setObjectHandler(new ScalaObjectHandler())
mf
}
lazy val mustacheRenderer = wire[MustacheRenderer]
lazy val permittedClans = Set[PermittedClan](
PermittedClan("alpha", "OneHive Alpha", 154621406673L),
PermittedClan("genesis", "OneHive Genesis", 128850679685L),
PermittedClan("uncool", "Uncool", 103079424453L),
PermittedClan("aerial", "Aerial Assault", 227634713283L)
)
lazy val villageAnalyser = wire[VillageAnalyser]
lazy val stringDisplayer = wire[StringDisplayer]
lazy val stringTroopDropDisplayer = wire[StringTroopDropDisplayer]
lazy val viewModelMapper = wire[ViewModelMapper]
lazy val facades = wire[Facades]
}