Add red warning circle when nuke would break alliance (#2728)

## Description:

When placing a nuke (Atom Bomb or Hydrogen Bomb), the range circle now
turns red to warn players when the attack would break an alliance.

<img width="456" height="333" alt="Screenshot 2025-12-28 211927"
src="https://github.com/user-attachments/assets/dfe6f874-3f8b-4662-8877-0af30aa20139"
/>


## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

## Please put your Discord username so you can be contacted if a bug or
regression is found:

abodcraft1

---------

Co-authored-by: iamlewis <lewismmmm@gmail.com>
This commit is contained in:
Abdallah Bahrawi
2025-12-30 17:55:15 +00:00
committed by GitHub
co-authored by iamlewis
parent 4f3d9df46a
commit 09a1cf885f
4 changed files with 142 additions and 41 deletions
@@ -454,6 +454,7 @@ export class SpriteFactory {
stage: PIXI.Container,
pos: { x: number; y: number },
level?: number,
targetingAlly: boolean = false,
): PIXI.Container | null {
if (stage === undefined) throw new Error("Not initialized");
const parentContainer = new PIXI.Container();
@@ -478,10 +479,18 @@ export class SpriteFactory {
default:
return null;
}
// Add warning colors (red/orange) when targeting an ally to indicate alliance will break
const isNuke = type === UnitType.AtomBomb || type === UnitType.HydrogenBomb;
const fillColor = targetingAlly && isNuke ? 0xff6b35 : 0xffffff;
const fillAlpha = targetingAlly && isNuke ? 0.35 : 0.2;
const strokeColor = targetingAlly && isNuke ? 0xff4444 : 0xffffff;
const strokeAlpha = targetingAlly && isNuke ? 0.8 : 0.5;
const strokeWidth = targetingAlly && isNuke ? 2 : 1;
circle
.circle(0, 0, radius)
.fill({ color: 0xffffff, alpha: 0.2 })
.stroke({ width: 1, color: 0xffffff, alpha: 0.5 });
.fill({ color: fillColor, alpha: fillAlpha })
.stroke({ width: strokeWidth, color: strokeColor, alpha: strokeAlpha });
parentContainer.addChild(circle);
parentContainer.position.set(pos.x, pos.y);
parentContainer.scale.set(this.transformHandler.scale);