Compare commits
4 Commits
adb0a49711
...
d69376c110
Author | SHA1 | Date | |
---|---|---|---|
d69376c110 | |||
315c7d2891 | |||
|
57d384e98c | ||
df8acbeefa |
23
build.gradle
23
build.gradle
@ -2,6 +2,7 @@ plugins {
|
|||||||
id 'java'
|
id 'java'
|
||||||
id 'idea'
|
id 'idea'
|
||||||
id "org.sonarqube" version "3.2.0"
|
id "org.sonarqube" version "3.2.0"
|
||||||
|
id 'jacoco'
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
@ -17,6 +18,28 @@ test {
|
|||||||
maxParallelForks = 1
|
maxParallelForks = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
jacocoTestReport {
|
||||||
|
reports {
|
||||||
|
html.enabled true
|
||||||
|
xml.enabled true
|
||||||
|
xml.destination file("${buildDir}/reports/jacoco.xml")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins.withType(JacocoPlugin) {
|
||||||
|
tasks["test"].finalizedBy 'jacocoTestReport'
|
||||||
|
}
|
||||||
|
|
||||||
|
sonarqube {
|
||||||
|
properties {
|
||||||
|
property "sonar.java.coveragePlugin", "jacoco"
|
||||||
|
property "sonar.host.url", "https://sonarqube.yandrik.dev"
|
||||||
|
property "sonar.coverage.jacoco.xmlReportPath", "${buildDir}/reports/jacoco.xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.fasterxml.jackson.core:jackson-core:2.12.4'
|
implementation 'com.fasterxml.jackson.core:jackson-core:2.12.4'
|
||||||
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.12.4'
|
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.12.4'
|
||||||
|
@ -452,6 +452,15 @@ public class GameLogic {
|
|||||||
.withOriginField(data.originField)
|
.withOriginField(data.originField)
|
||||||
.withTargetField(data.targetField)
|
.withTargetField(data.targetField)
|
||||||
.buildCharacterEvent());
|
.buildCharacterEvent());
|
||||||
|
for(Entity entity: state.entities.findByPosition(data.targetField)) {
|
||||||
|
if(entity instanceof InfinityStone) {
|
||||||
|
result.add(new EventBuilder(EventType.DestroyedEntityEvent)
|
||||||
|
.withTargetField(data.targetField)
|
||||||
|
.withTargetEntity(entity.id)
|
||||||
|
.buildEntityEvent());
|
||||||
|
break; //we should only have one entity per field anyways
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case MindStone -> {
|
case MindStone -> {
|
||||||
EntityType target = data.originEntity.type == EntityType.P1 ? EntityType.P2 : EntityType.P1;
|
EntityType target = data.originEntity.type == EntityType.P1 ? EntityType.P2 : EntityType.P1;
|
||||||
@ -490,11 +499,15 @@ public class GameLogic {
|
|||||||
case PowerStone -> {
|
case PowerStone -> {
|
||||||
Character origin = (Character)state.entities.findEntity(data.originEntity);
|
Character origin = (Character)state.entities.findEntity(data.originEntity);
|
||||||
int dmg = (int)Math.round(origin.hp.getMax() * 0.1);
|
int dmg = (int)Math.round(origin.hp.getMax() * 0.1);
|
||||||
if(origin.hp.getValue() != 1 && dmg > 0) {
|
//this is ugly ... but also easy to understand
|
||||||
|
int hp1 = origin.hp.getValue();
|
||||||
|
int hp2 = Math.max(1, origin.hp.getValue() - dmg);
|
||||||
|
int actualDmg = hp1 - hp2;
|
||||||
|
if(actualDmg > 0) {
|
||||||
result.add(new EventBuilder(EventType.TakenDamageEvent)
|
result.add(new EventBuilder(EventType.TakenDamageEvent)
|
||||||
.withTargetEntity(data.originEntity)
|
.withTargetEntity(data.originEntity)
|
||||||
.withTargetField(data.originField)
|
.withTargetField(data.originField)
|
||||||
.withAmount(dmg)
|
.withAmount(actualDmg)
|
||||||
.buildEntityEvent());
|
.buildEntityEvent());
|
||||||
}
|
}
|
||||||
result.add(new EventBuilder(EventType.TakenDamageEvent)
|
result.add(new EventBuilder(EventType.TakenDamageEvent)
|
||||||
|
@ -120,15 +120,27 @@ class MessageValidationUtilityTest {
|
|||||||
var characterConfig = new CharacterConfig();
|
var characterConfig = new CharacterConfig();
|
||||||
|
|
||||||
assertThat(ValidationUtility.validate(characterConfig).get())
|
assertThat(ValidationUtility.validate(characterConfig).get())
|
||||||
.isEqualTo("characters must not be empty");
|
.isIn("characters mus not be empty", "characters darf nicht leer sein");
|
||||||
|
// .isEqualTo("characters must not be empty");
|
||||||
|
|
||||||
characterConfig.characters = new CharacterProperties[] {racoon, quicksilver, hulk, loki, silversurfer};
|
characterConfig.characters = new CharacterProperties[] {racoon, quicksilver, hulk, loki, silversurfer};
|
||||||
|
|
||||||
assertThat(ValidationUtility.validate(characterConfig).get())
|
var results = ValidationUtility.validate(characterConfig).get();
|
||||||
.contains("characters has less than 24 characters",
|
assertThat(results.contains("characters has less than 24 characters") ||
|
||||||
"characters[4].rangedDamage must be greater than 0",
|
results.contains("characters hat weniger als 24 characters"))
|
||||||
"characters[4].name must not be empty",
|
.isTrue();
|
||||||
"characters[4].meleeDamage must be greater than 0");
|
|
||||||
|
assertThat(results.contains("characters[4].rangedDamage must be greater than 0") ||
|
||||||
|
results.contains("characters[4].rangedDamage muss größer als 0 sein"))
|
||||||
|
.isTrue();
|
||||||
|
|
||||||
|
assertThat(results.contains("characters[4].name must not be empty") ||
|
||||||
|
results.contains("characters[4].name darf nicht leer sein"))
|
||||||
|
.isTrue();
|
||||||
|
|
||||||
|
assertThat(results.contains("characters[4].meleeDamage must be greater than 0") ||
|
||||||
|
results.contains("characters[4].meleeDamage muss größer als 0 sein"))
|
||||||
|
.isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user