#pragma once #include "Mob.h" class Player; class Level; class MobSpawner { private: static const int MIN_SPAWN_DISTANCE; protected: static TilePos getRandomPosWithin(Level *level, int cx, int cz); private: static unordered_map chunksToPoll; public: static const int tick(ServerLevel *level, bool spawnEnemies, bool spawnFriendlies); static bool isSpawnPositionOk(MobCategory *category, Level *level, int x, int y, int z); private: static void finalizeMobSettings(shared_ptr mob, Level *level, float xx, float yy, float zz); protected: // 4J Stu TODO This was an array of Class type. I haven't made a base Class type yet, but don't need to // as this can be an array of Mob type? static const int bedEnemyCount = 3; static eINSTANCEOF bedEnemies[bedEnemyCount]; public: static bool attackSleepingPlayers(Level *level, vector > *players); static void postProcessSpawnMobs(Level *level, Biome *biome, int xo, int zo, int cellWidth, int cellHeight, Random *random); };