mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-08-18 09:14:09 +00:00
Add deletion duration and indicators (#2216)
## Description: Adds a timer before self deleting units Adds a loading bar under deleting units Adds a timer in radial menu for clarity purposes  ## 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: Mr.Box --------- Co-authored-by: Evan <evanpelle@gmail.com>
This commit is contained in:
@@ -117,11 +117,18 @@ export class UILayer implements Layer {
|
||||
this.drawHealthBar(unit);
|
||||
break;
|
||||
}
|
||||
case UnitType.City:
|
||||
case UnitType.Factory:
|
||||
case UnitType.DefensePost:
|
||||
case UnitType.Port:
|
||||
case UnitType.MissileSilo:
|
||||
this.createLoadingBar(unit);
|
||||
break;
|
||||
case UnitType.SAMLauncher:
|
||||
this.createLoadingBar(unit);
|
||||
if (
|
||||
unit.markedForDeletion() !== false ||
|
||||
unit.missileReadinesss() < 1
|
||||
) {
|
||||
this.createLoadingBar(unit);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
@@ -329,12 +336,28 @@ export class UILayer implements Layer {
|
||||
}
|
||||
case UnitType.MissileSilo:
|
||||
case UnitType.SAMLauncher:
|
||||
return unit.missileReadinesss();
|
||||
return !unit.markedForDeletion()
|
||||
? unit.missileReadinesss()
|
||||
: this.deletionProgress(this.game, unit);
|
||||
case UnitType.City:
|
||||
case UnitType.Factory:
|
||||
case UnitType.Port:
|
||||
case UnitType.DefensePost:
|
||||
return this.deletionProgress(this.game, unit);
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
private deletionProgress(game: GameView, unit: UnitView): number {
|
||||
const deleteAt = unit.markedForDeletion();
|
||||
if (deleteAt === false) return 1;
|
||||
return Math.max(
|
||||
0,
|
||||
(deleteAt - game.ticks()) / game.config().deletionMarkDuration(),
|
||||
);
|
||||
}
|
||||
|
||||
public createLoadingBar(unit: UnitView) {
|
||||
if (!this.context) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user