the whole game

This commit is contained in:
2026-03-02 22:04:18 +03:00
parent 816e9060b4
commit f0617a5d22
2069 changed files with 581500 additions and 0 deletions

90
src/world/entity/MobFactory.h Executable file
View File

@@ -0,0 +1,90 @@
#ifndef NET_MINECRAFT_WORLD_ENTITY__MobFactory_H__
#define NET_MINECRAFT_WORLD_ENTITY__MobFactory_H__
#include "EntityTypes.h"
#include "animal/AnimalInclude.h"
#include "monster/MonsterInclude.h"
class MobFactory {
public:
static Mob* CreateMob(int mobType, Level* level) {
//LOGI("Trying to create a mob with type: %d!\n", mobType);
Mob* mob = NULL;
switch(mobType) {
// Animals
case MobTypes::Chicken:
mob = new Chicken(level);
break;
case MobTypes::Cow:
mob = new Cow(level);
break;
case MobTypes::Pig:
mob = new Pig(level);
break;
case MobTypes::Sheep:
mob = new Sheep(level);
break;
// Monsters
case MobTypes::Creeper:
mob = new Creeper(level);
break;
case MobTypes::Zombie:
mob = new Zombie(level);
break;
case MobTypes::Skeleton:
mob = new Skeleton(level);
break;
case MobTypes::Spider:
mob = new Spider(level);
break;
case MobTypes::PigZombie:
mob = new PigZombie(level);
break;
default:
LOGE("Unknown mob type requested: %d\n", mobType);
break;
}
if (mob) {
mob->health = mob->getMaxHealth();
}
return mob;
}
static void clearStaticTestMobs() {
getStaticTestMob(0, NULL);
}
// @huge @attn: Those needs to be cleared for every new level
static Mob* getStaticTestMob(int mobType, Level* level) {
static std::map<int, Mob*> _mobs;
static Level* lastLevel = NULL;
bool wantClear = (mobType == 0) && (level == NULL);
bool newLevel = (level != lastLevel);
lastLevel = level;
// We either want to clear all mobs, or a new level is created
if (wantClear || newLevel) {
for (std::map<int, Mob*>::iterator it = _mobs.begin(); it != _mobs.end(); ++it)
delete it->second;
_mobs.clear();
if (wantClear) return NULL;
}
std::map<int, Mob*>::iterator it = _mobs.find(mobType);
if (it != _mobs.end())
return it->second;
// Didn't exist, add it
Mob* mob = CreateMob(mobType, level);
_mobs.insert(std::make_pair(mobType, mob));
return mob;
}
};
#endif /*NET_MINECRAFT_WORLD_ENTITY__MobFactory_H__*/