Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Dungeon: do not throw exceptions in stream operations (refactoring, S…
…pikeSystem) (#1567) see #1564 (comment) In ```java public void execute() { filteredEntityStream(SpikyComponent.class) .forEach(e -> e.fetch(SpikyComponent.class).orElseThrow().reduceCoolDown()); } ``` wird ein Stream aller Entitäten mit einer `SpikyComponent` vom `System` angefordert. Bei der Iteration über diese Entitäten wird dann (a) die `SpikyComponent` extrahiert, (b) eine Exception geworfen im Nichtvorhandensein-Fall, und (c) auf der Component eine Methode aufgerufen. Dies ist aus zwei Gründen problematisch: Zum werden mehrere Operationen in die `forEach`-Schleife verpackt, und zum anderen sollte man keine Exceptions in einer Stream-Operation werfen. (OK, das dürfte hier in der Realität auch nie passieren, da wir ja vorher exakt nach der Component gefiltert hatten. Dennoch.) Dieser PR führt ein Refactoring durch und erledigt **in jedem Stream-Step eine Sache**. Außerdem wird **keine Exception** mehr in der Stream-Verarbeitung geworfen, sondern Entitäten, die zwischen `System#filteredEntityStream` und dem `forEach` auf geheimnisvolle Weise ihre `SpikyComponent` verloren haben sollten, werden einfach ignoriert. Keine Änderung der API und/oder des Verhaltens.
- Loading branch information