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 'idea'
 | 
			
		||||
    id "org.sonarqube" version "3.2.0"
 | 
			
		||||
    id 'jacoco'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
repositories {
 | 
			
		||||
@ -17,6 +18,28 @@ test {
 | 
			
		||||
    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 {
 | 
			
		||||
    implementation 'com.fasterxml.jackson.core:jackson-core:2.12.4'
 | 
			
		||||
    implementation 'com.fasterxml.jackson.core:jackson-annotations:2.12.4'
 | 
			
		||||
 | 
			
		||||
@ -452,6 +452,15 @@ public class GameLogic {
 | 
			
		||||
                                    .withOriginField(data.originField)
 | 
			
		||||
                                    .withTargetField(data.targetField)
 | 
			
		||||
                                    .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 -> {
 | 
			
		||||
                            EntityType target = data.originEntity.type == EntityType.P1 ? EntityType.P2 : EntityType.P1;
 | 
			
		||||
@ -490,11 +499,15 @@ public class GameLogic {
 | 
			
		||||
                        case PowerStone -> {
 | 
			
		||||
                            Character origin = (Character)state.entities.findEntity(data.originEntity);
 | 
			
		||||
                            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)
 | 
			
		||||
                                        .withTargetEntity(data.originEntity)
 | 
			
		||||
                                        .withTargetField(data.originField)
 | 
			
		||||
                                        .withAmount(dmg)
 | 
			
		||||
                                        .withAmount(actualDmg)
 | 
			
		||||
                                        .buildEntityEvent());
 | 
			
		||||
                            }
 | 
			
		||||
                            result.add(new EventBuilder(EventType.TakenDamageEvent)
 | 
			
		||||
 | 
			
		||||
@ -120,15 +120,27 @@ class MessageValidationUtilityTest {
 | 
			
		||||
        var characterConfig = new CharacterConfig();
 | 
			
		||||
 | 
			
		||||
        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};
 | 
			
		||||
 | 
			
		||||
        assertThat(ValidationUtility.validate(characterConfig).get())
 | 
			
		||||
                .contains("characters has less than 24 characters",
 | 
			
		||||
                        "characters[4].rangedDamage must be greater than 0",
 | 
			
		||||
                        "characters[4].name must not be empty",
 | 
			
		||||
                        "characters[4].meleeDamage must be greater than 0");
 | 
			
		||||
        var results = ValidationUtility.validate(characterConfig).get();
 | 
			
		||||
        assertThat(results.contains("characters has less than 24 characters") ||
 | 
			
		||||
                results.contains("characters hat weniger als 24 characters"))
 | 
			
		||||
                .isTrue();
 | 
			
		||||
 | 
			
		||||
        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();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user