Skip to content

Commit

Permalink
Added controller method to accept sending of shipyard of an user, closes
Browse files Browse the repository at this point in the history
 #16.
  • Loading branch information
skiwi2 committed Jan 8, 2016
1 parent 5eb6c30 commit af209b7
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ class UserscriptController {
resourceBuildings: "POST",
facilityBuildings: "POST",
defences: "POST",
fleet: "POST"
fleet: "POST",
shipyard: "POST"
]

def keys() {
Expand Down Expand Up @@ -208,4 +209,33 @@ class UserscriptController {
result(success: true)
}
}

def shipyard() {
def json = request.JSON

def serverGroupCountryCode = json.serverGroup
def universeId = json.universe.toInteger()
def universe = universeService.getUniverse(serverGroupCountryCode, universeId)

def playerId = json.playerId.toInteger()
def playerName = json.playerName
def player = playerService.findPlayer(universe, playerId) ?: playerService.createPlayer(universe, playerId, playerName)

def planetId = json.planetId.toInteger()
def planetName = json.planetName
def planetGalaxy = json.planetGalaxy.toInteger()
def planetSolarSystem = json.planetSolarSystem.toInteger()
def planetPosition = json.planetPosition.toInteger()
def planet = planetService.findPlanet(universe, planetId) ?: planetService.createPlanet(player, planetId, planetGalaxy, planetSolarSystem, planetPosition, planetName)

def shipyardMap = json.shipyard.collectEntries { [it.id.toInteger(), it.level.toInteger()] }
def shipyardNumbers = [204, 205, 206, 207, 202, 203, 208, 215, 211, 213, 214, 209, 210].collect { shipyardMap[it] }
def solarSatellites = shipyardMap[212]
fleetService.updatePlanetFleet(planet, *shipyardNumbers)
buildingsService.updatePlanetSolarSatellite(planet, solarSatellites)

render(contentType: "application/json") {
result(success: true)
}
}
}
53 changes: 53 additions & 0 deletions src/test/groovy/com/ognext/api/UserscriptControllerSpec.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,59 @@ class UserscriptControllerSpec extends Specification {
planet.fleet.espionageProbe == 12
}

void "post shipyard"() {
when: "post shipyard request has been made"
request.json = [
serverGroup: "en",
universe: "136",
playerId: "100153",
playerName: "skiwi",
planetId: "33623391",
planetName: "Homeworld",
planetGalaxy: "1",
planetSolarSystem: "204",
planetPosition: "8",
shipyard: [
[id: "204", level: "0"],
[id: "205", level: "0"],
[id: "206", level: "106"],
[id: "207", level: "20"],
[id: "202", level: "63"],
[id: "203", level: "25"],
[id: "208", level: "0"],
[id: "215", level: "0"],
[id: "211", level: "5"],
[id: "213", level: "0"],
[id: "214", level: "0"],
[id: "209", level: "35"],
[id: "210", level: "12"],
[id: "212", level: "5"]
]
] as JSON
request.method = "POST"
request.contentType = "text/json"
controller.shipyard()

then: "shipyard should be persisted"
response.json.result.success == true
def universe = universeService.getUniverse("en", 136)
def planet = planetService.findPlanet(universe, 33623391)
planet.fleet.lightFighter == 0
planet.fleet.heavyFighter == 0
planet.fleet.cruiser == 106
planet.fleet.battleship == 20
planet.fleet.smallCargo == 63
planet.fleet.largeCargo == 25
planet.fleet.colonyShip == 0
planet.fleet.battlecruiser == 0
planet.fleet.bomber == 5
planet.fleet.destroyer == 0
planet.fleet.deathstar == 0
planet.fleet.recycler == 35
planet.fleet.espionageProbe == 12
planet.buildings.solarSatellite == 5
}

void planetMatches(Player player, Integer planetId, String name, int galaxy, int solarSystem, int position) {
def planet = Planet.findByPlayerAndPlanetId(player, planetId)
def now = Instant.now()
Expand Down

0 comments on commit af209b7

Please sign in to comment.