Fight rework premature merge #22

Merged
Jonathan merged 16 commits from feature/fight_rework into develop 2025-11-04 10:25:14 +01:00
Owner

A working but not finished version of the new fight system.

Includes:

  • The entire fight logic is based on a state machine outlined on Miro
  • Procedurally generated fight world. Currently only generating two rooms next to each other.
  • Basic fight attack

Known bugs:

  • Dead enemies still attack
  • No background in fight
  • Buttons other than attack do not work
  • Enemy groups do not disappear when beaten
  • probably more...
A working but not finished version of the new fight system. Includes: - The entire fight logic is based on a state machine outlined on [Miro](https://miro.com/app/board/uXjVK8YEprM=/?moveToWidget=3458764640805655262&cot=14) - Procedurally generated fight world. Currently only generating two rooms next to each other. - Basic fight attack Known bugs: - Dead enemies still attack - No background in fight - Buttons other than attack do not work - Enemy groups do not disappear when beaten - probably more...
Jonathan added 14 commits 2025-10-29 05:39:15 +01:00
Jonathan marked the pull request as work in progress 2025-10-29 05:39:29 +01:00
Jonathan marked the pull request as ready for review 2025-10-29 05:39:46 +01:00
Jonathan requested review from kziolkowski 2025-10-29 05:39:53 +01:00
kziolkowski was assigned by Jonathan 2025-10-29 05:39:59 +01:00
kziolkowski reviewed 2025-10-30 22:45:34 +01:00
@@ -13,2 +15,2 @@
[Export] private bool _useSprite = true;
[Export] private CanvasItem _spriteToOutline;
//[Export] private bool _useSprite = true;
[Export(PropertyHint.ArrayType)] private CanvasItem[] _spriteToOutline = [];
Owner

Bitte in Plural umbenennen.

Bitte in Plural umbenennen.
Jonathan marked this conversation as resolved
kziolkowski reviewed 2025-10-30 22:47:01 +01:00
@@ -0,0 +10,4 @@
#endregion
[Export] private AllFightersVisual _allFightersVisual = null!;
Owner

Nur aus Neugier, weil ich das noch nie gesehen hab: Was macht diese "null!" Zuweisung hier?

Nur aus Neugier, weil ich das noch nie gesehen hab: Was macht diese "null!" Zuweisung hier?
Jonathan marked this conversation as resolved
kziolkowski reviewed 2025-10-30 22:48:25 +01:00
@@ -0,0 +1,26 @@
using System.Collections.Generic;
Owner

Ich weiß nicht, was es mit diesem Unicode-Character hier auf sich hat, aber ich gehe einfach mal davon aus, dass er uns keine Ärger machen wird 👀

Ich weiß nicht, was es mit diesem Unicode-Character hier auf sich hat, aber ich gehe einfach mal davon aus, dass er uns keine Ärger machen wird 👀
Jonathan marked this conversation as resolved
kziolkowski reviewed 2025-10-30 22:49:12 +01:00
@@ -0,0 +1,26 @@
using System.Collections.Generic;
namespace Babushka.scripts.CSharp.Common.Fight.ActionDetails;
Owner

Vielleicht macht es Sinn, das Fightsystem in einen eigenen Namespace-Bereich auszulagern und nicht einfach mit unter "Common" abzulegen?

Vielleicht macht es Sinn, das Fightsystem in einen eigenen Namespace-Bereich auszulagern und nicht einfach mit unter "Common" abzulegen?
Jonathan marked this conversation as resolved
kziolkowski reviewed 2025-10-30 22:49:24 +01:00
@@ -0,0 +4,4 @@
public class MinigameActionDetail : FighterAction.FighterActionDetail
{
// settings
Owner

brauchen wir den Kommentar noch?

brauchen wir den Kommentar noch?
Jonathan marked this conversation as resolved
kziolkowski reviewed 2025-10-30 22:50:59 +01:00
@@ -0,0 +6,4 @@
{
public enum VisualRange
{
Single
Owner

Ein Enum mit nur einem Eintrag? Was soll da voraussichtlich noch kommen? Vielleicht

  • Single und Multiple oder vielleicht
  • Single, Double, Triple usw.?
Ein Enum mit nur einem Eintrag? Was soll da voraussichtlich noch kommen? Vielleicht - Single und Multiple oder vielleicht - Single, Double, Triple usw.?
Jonathan marked this conversation as resolved
kziolkowski reviewed 2025-10-30 22:53:29 +01:00
@@ -0,0 +34,4 @@
public FightWorld.Fighter GetTarget()
{
return target ?? throw new InvalidOperationException("No target selected");
Owner

Muss das immer ne Exception werfen? Also kann es keinen Fall geben, wo es keine Selection gibt? ISt es dann für die Praxis nicht vielleicht nicer, wenn man nen Default definiert? Oder passiert das auf den höheren Detailebenen?

Muss das immer ne Exception werfen? Also kann es keinen Fall geben, wo es keine Selection gibt? ISt es dann für die Praxis nicht vielleicht nicer, wenn man nen Default definiert? Oder passiert das auf den höheren Detailebenen?
Author
Owner

GetTarget sollte nur im ActionExecute und ActionAnimate state aufgerufen werden. Die states werden nur erreicht, nach dem alle action details completed sind. Das heißt es muss ein target gesetzt worden sein.

GetTarget sollte nur im ActionExecute und ActionAnimate state aufgerufen werden. Die states werden nur erreicht, nach dem alle action details completed sind. Das heißt es muss ein target gesetzt worden sein.
Jonathan marked this conversation as resolved
kziolkowski reviewed 2025-10-30 22:58:18 +01:00
@@ -0,0 +4,4 @@
namespace Babushka.scripts.CSharp.Common.Fight.Actions;
public class BlobAttackAction : FighterAction
Owner

Verstehe ich das richtig, dass wir für jeden Gegner(typ) ne neue Klasse anlegen müssen? Falls ja: Wäre es vielleicht auch möglich, das über Config-Ressourcen ganz oder teilwese konfigurierbar zu machen?

Verstehe ich das richtig, dass wir für jeden Gegner(typ) ne neue Klasse anlegen müssen? Falls ja: Wäre es vielleicht auch möglich, das über Config-Ressourcen ganz oder teilwese konfigurierbar zu machen?
Author
Owner

Es braucht nicht jeder gegner type eine klasse, sondern jede action. Es können auch mehrere gegner typen die gleiche action haben.

Das irgendwie cool konfigurierbar zu machen fänd ich auch sinnvoll, aber erst später und nicht für den prototypen

Es braucht nicht jeder gegner type eine klasse, sondern jede action. Es können auch mehrere gegner typen die gleiche action haben. Das irgendwie cool konfigurierbar zu machen fänd ich auch sinnvoll, aber erst später und nicht für den prototypen
Jonathan marked this conversation as resolved
kziolkowski reviewed 2025-10-30 23:01:50 +01:00
@@ -0,0 +7,4 @@
namespace Babushka.scripts.CSharp.Common.Fight;
public partial class AllFightersVisual : Node
Owner

Diese Klasse managed das Layout der Kampfszene, oder? Das Naming hatte mich etwas verwirrt.

Diese Klasse managed das Layout der Kampfszene, oder? Das Naming hatte mich etwas verwirrt.
Jonathan marked this conversation as resolved
kziolkowski approved these changes 2025-11-03 20:20:28 +01:00
kziolkowski left a comment
Owner

please see comments and resolve merge conflicts.

please see comments and resolve merge conflicts.
Jonathan added 1 commit 2025-11-04 05:22:27 +01:00
Jonathan force-pushed feature/fight_rework from 1edbe7aeb7 to f27f69c15f 2025-11-04 10:07:58 +01:00 Compare
Jonathan merged commit e864c62a3a into develop 2025-11-04 10:25:14 +01:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Jonathan/Babushka#22