Files
wolf_dart/lib/features/entities/decorative.dart
2026-03-13 20:27:38 +01:00

51 lines
1.2 KiB
Dart

import 'package:wolf_dart/features/entities/entity.dart';
class Decorative extends Entity {
Decorative({
required super.x,
required super.y,
required super.spriteIndex,
required super.mapId,
super.state = EntityState.staticObj, // Defaults to static
});
// Checks if the Map ID belongs to a standard decoration
static bool isDecoration(int objId) {
if (objId == 124) return true; // Dead guard
if (objId >= 23 && objId <= 70) {
// Exclude the collectibles!
if ((objId >= 43 && objId <= 44) || (objId >= 47 && objId <= 56)) {
return false;
}
return true;
}
return false;
}
// Safely calculates the VSWAP sprite index for standard decorations
static int getSpriteIndex(int objId) {
if (objId == 124) return 95; // Dead guard
return objId - 21;
}
static Decorative? trySpawn(
int objId,
double x,
double y,
int difficultyLevel,
) {
if (isDecoration(objId)) {
return Decorative(
x: x,
y: y,
spriteIndex: getSpriteIndex(objId),
mapId: objId,
state: objId == 124 ? EntityState.dead : EntityState.staticObj,
);
}
// Not a decoration!
return null;
}
}