Skip to content

Commit

Permalink
Added bonus to building metadata.
Browse files Browse the repository at this point in the history
- Closes #72.
  • Loading branch information
phxql committed Feb 17, 2015
1 parent 5e559b3 commit 06686a4
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package restwars.restapi.dto.metadata;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.google.common.base.Objects;
import com.wordnik.swagger.annotations.ApiModel;
import com.wordnik.swagger.annotations.ApiModelProperty;
import restwars.restapi.dto.ResourcesResponse;

import javax.annotation.Nullable;

@ApiModel(description = "Building metadata")
public class BuildingMetadataResponse {
@ApiModelProperty(value = "Building type", required = true)
Expand All @@ -25,20 +28,40 @@ public class BuildingMetadataResponse {
@ApiModelProperty(value = "Prerequisites", required = true)
private PrerequisitesResponse prerequisites;

@ApiModelProperty(value = "Resources gathered per round", required = true)
@Nullable
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModelProperty(value = "Resources gathered per round", required = false)
private ResourcesResponse resourcesPerRound;

@Nullable
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModelProperty(value = "Building build time speedup in percent", required = false)
private Double buildingBuildTimeSpeedUp;

@Nullable
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModelProperty(value = "Research time speedup in percent", required = false)
private Double researchTimeSpeedUp;

@Nullable
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModelProperty(value = "Ship build time speedup in percent", required = false)
private Double shipBuildTimeSpeedUp;

public BuildingMetadataResponse() {
}

public BuildingMetadataResponse(String type, int level, long buildTime, ResourcesResponse buildCost, String description, PrerequisitesResponse prerequisites, ResourcesResponse resourcesPerRound) {
public BuildingMetadataResponse(String type, int level, long buildTime, ResourcesResponse buildCost, String description, PrerequisitesResponse prerequisites, ResourcesResponse resourcesPerRound, Double buildingBuildTimeSpeedUp, Double researchTimeSpeedUp, Double shipBuildTimeSpeedUp) {
this.type = type;
this.level = level;
this.buildTime = buildTime;
this.buildCost = buildCost;
this.description = description;
this.prerequisites = prerequisites;
this.resourcesPerRound = resourcesPerRound;
this.buildingBuildTimeSpeedUp = buildingBuildTimeSpeedUp;
this.researchTimeSpeedUp = researchTimeSpeedUp;
this.shipBuildTimeSpeedUp = shipBuildTimeSpeedUp;
}

public String getType() {
Expand Down Expand Up @@ -89,14 +112,42 @@ public void setPrerequisites(PrerequisitesResponse prerequisites) {
this.prerequisites = prerequisites;
}

@Nullable
public ResourcesResponse getResourcesPerRound() {
return resourcesPerRound;
}

public void setResourcesPerRound(ResourcesResponse resourcesPerRound) {
public void setResourcesPerRound(@Nullable ResourcesResponse resourcesPerRound) {
this.resourcesPerRound = resourcesPerRound;
}

@Nullable
public Double getBuildingBuildTimeSpeedUp() {
return buildingBuildTimeSpeedUp;
}

public void setBuildingBuildTimeSpeedUp(@Nullable Double buildingBuildTimeSpeedUp) {
this.buildingBuildTimeSpeedUp = buildingBuildTimeSpeedUp;
}

@Nullable
public Double getResearchTimeSpeedUp() {
return researchTimeSpeedUp;
}

public void setResearchTimeSpeedUp(@Nullable Double researchTimeSpeedUp) {
this.researchTimeSpeedUp = researchTimeSpeedUp;
}

@Nullable
public Double getShipBuildTimeSpeedUp() {
return shipBuildTimeSpeedUp;
}

public void setShipBuildTimeSpeedUp(@Nullable Double shipBuildTimeSpeedUp) {
this.shipBuildTimeSpeedUp = shipBuildTimeSpeedUp;
}

@Override
public String toString() {
return Objects.toStringHelper(this)
Expand All @@ -107,6 +158,9 @@ public String toString() {
.add("description", description)
.add("prerequisites", prerequisites)
.add("resourcesPerRound", resourcesPerRound)
.add("buildingBuildTimeSpeedUp", buildingBuildTimeSpeedUp)
.add("researchTimeSpeedUp", researchTimeSpeedUp)
.add("shipBuildTimeSpeedUp", shipBuildTimeSpeedUp)
.toString();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,16 @@
import com.wordnik.swagger.annotations.ApiOperation;
import com.wordnik.swagger.annotations.ApiParam;
import restwars.model.building.BuildingType;
import restwars.model.resource.Resources;
import restwars.rest.mapper.PrerequisitesMapper;
import restwars.rest.mapper.ResourcesMapper;
import restwars.restapi.dto.ResourcesResponse;
import restwars.restapi.dto.metadata.BuildingMetadataResponse;
import restwars.service.building.BuildingService;
import restwars.service.mechanics.BuildingMechanics;
import restwars.service.resource.ResourceService;

import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
Expand Down Expand Up @@ -56,8 +59,47 @@ public List<BuildingMetadataResponse> all(@QueryParam("level") @ApiParam(value =
t.name(), sanitizedLevel, buildingService.calculateBuildTimeWithoutBonuses(t, sanitizedLevel),
ResourcesMapper.fromResources(buildingService.calculateBuildCostWithoutBonuses(t, sanitizedLevel)),
t.getDescription(), PrerequisitesMapper.fromPrerequisites(buildingMechanics.getPrerequisites(t)),
ResourcesMapper.fromResources(resourceService.calculateGatheredResourcesWithoutBonus(t, level))
getResourcesPerRound(t, level), getBuildingBuildTimeSpeedUp(t, level),
getResearchTimeSpeedup(t, level), getShipBuildTimeSpeedUp(t, level)
))
.collect(Collectors.toList());
}

@Nullable
private ResourcesResponse getResourcesPerRound(BuildingType type, int level) {
Resources resources = resourceService.calculateGatheredResourcesWithoutBonus(type, level);

if (resources.isEmpty()) {
return null;
}

return ResourcesMapper.fromResources(resources);
}

@Nullable
private Double getShipBuildTimeSpeedUp(BuildingType type, int level) {
if (type != BuildingType.SHIPYARD) {
return null;
}

return buildingMechanics.calculateShipBuildTimeSpeedup(level) * 100;
}

@Nullable
private Double getResearchTimeSpeedup(BuildingType type, int level) {
if (type != BuildingType.RESEARCH_CENTER) {
return null;
}

return buildingMechanics.calculateResearchTimeSpeedup(level) * 100;
}

@Nullable
private Double getBuildingBuildTimeSpeedUp(BuildingType type, int level) {
if (type != BuildingType.COMMAND_CENTER) {
return null;
}

return buildingMechanics.calculateBuildingBuildTimeSpeedup(level) * 100;
}
}

0 comments on commit 06686a4

Please sign in to comment.