52 lines
1.3 KiB
Dart
52 lines
1.3 KiB
Dart
import 'package:wolf_dart/features/difficulty/difficulty.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,
|
|
Difficulty _,
|
|
) {
|
|
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;
|
|
}
|
|
}
|