Refactor, add more checks

This commit is contained in:
yvt 2017-01-05 04:11:42 +09:00
parent 88f03f01e9
commit 2554eaad57
7 changed files with 6 additions and 19 deletions

View File

@ -979,20 +979,12 @@ namespace spades {
SPADES_MARK_FUNCTION();
Player *p = player;
IRenderer *renderer = client->GetRenderer();
const SceneDefinition &lastSceneDef = client->GetLastSceneDef();
if (p->GetTeamId() >= 2) {
// spectator, or dummy player
return;
}
// debug
if (false) {
Handle<IImage> img = renderer->RegisterImage("Gfx/Ball.png");
renderer->SetColorAlphaPremultiplied(MakeVector4(1, 0, 0, 0));
renderer->AddLongSprite(img, lastSceneDef.viewOrigin + MakeVector3(0, 0, 1),
p->GetOrigin(), 0.5f);
}
float distancePowered = (p->GetOrigin() - lastSceneDef.viewOrigin).GetPoweredLength();
if (distancePowered > 140.f * 140.f) {

View File

@ -34,7 +34,7 @@
namespace spades {
namespace client {
GameMap::GameMap() : listener(NULL) {
GameMap::GameMap() {
SPADES_MARK_FUNCTION();
for (int x = 0; x < DefaultWidth; x++)

View File

@ -118,8 +118,6 @@ namespace spades {
}
if (!unsafe) {
if (changed) {
if (listener)
listener->GameMapChanged(x, y, z, this);
{
AutoLocker guard(&listenersMutex);
for (auto *l : listeners) {
@ -130,8 +128,6 @@ namespace spades {
}
}
void SetListener(IGameMapListener *l) { listener = l; }
IGameMapListener *GetListener() { return listener; }
void AddListener(IGameMapListener *);
void RemoveListener(IGameMapListener *);
@ -157,7 +153,6 @@ namespace spades {
private:
uint64_t solidMap[DefaultWidth][DefaultHeight];
uint32_t colorMap[DefaultWidth][DefaultHeight][DefaultDepth];
IGameMapListener *listener;
std::list<IGameMapListener *> listeners;
Mutex listenersMutex;

View File

@ -148,10 +148,8 @@ namespace spades {
def.zFar = 200.f;
// start rendering
IGameMapListener *oldListener = nullptr;
GameMap *map = world->GetMap();
if (!def.skipWorld) {
oldListener = map->GetListener();
renderer->SetGameMap(map);
}
renderer->StartScene(def);

View File

@ -765,6 +765,9 @@ namespace spades {
if (GetWorld()->GetLocalPlayer() == p) {
// handle "/fly" jump
if (inp.jump) {
if (!p) {
SPRaise("Local player is null");
}
p->ForceJump();
}
break;
@ -1371,7 +1374,7 @@ namespace spades {
else {
int clip = reader.ReadByte();
int reserve = reader.ReadByte();
if (clip < 255 && reserve < 255) {
if (clip < 255 && reserve < 255 && p) {
p->ReloadDone(clip, reserve);
}
}

View File

@ -1148,7 +1148,6 @@ namespace spades {
velocity.y *= .5f;
if (f2 > FALL_DAMAGE_VELOCITY) {
f2 -= FALL_DAMAGE_VELOCITY;
if (world->GetListener()) {
world->GetListener()->PlayerLanded(this, true);
}

View File

@ -101,4 +101,4 @@ namespace spades {
}
operator bool() { return ptr != NULL; }
};
}
}