peepmagnetclient.cpp from FreePop at Krugle
Show peepmagnetclient.cpp syntax highlighted
/***************************************************************************
firecolumnclient.cpp
-------------------
begin : Mon Jun 14 2004
copyright : (C) 2004 by Brendon Higgins
email : freepop-devel@lists.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <peepmagnetclient.h>
#include <client.h>
#include <clientmisc.h>
#include <identity.h>
#include <worldpos.h>
#include <maptilepos.h>
#include <playerclient.h>
#include <oversprite.h>
#include <rotation.h>
#include <worldclient.h>
OverSprite* PeepMagnetClient::spriteDir0Cache = 0;
OverSprite* PeepMagnetClient::spriteDir1Cache = 0;
OverSprite* PeepMagnetClient::spriteMiniCache = 0;
PeepMagnetClient::PeepMagnetClient(WorldClient* w, const Identity& ident,
CL_NetPacket &p, int reason):
EntityClient(ident),
pos(WorldPos::extract(p.input)),
ownerSlot(p.input.read_int32()),
sprite(0) {
if (w->getDisplayRotation().getClock() % 2 == 0) {
sprite = new OverSprite("entities/peepmagnets/1/dir0",
app.getResources(), intToCL_Color(
w->findPlayer(ownerSlot)->getColour()));
} else {
sprite = new OverSprite("entities/peepmagnets/1/dir1",
app.getResources(), intToCL_Color(
w->findPlayer(ownerSlot)->getColour()));
}
}
PeepMagnetClient::~PeepMagnetClient() {
delete sprite;
}
WorldPos PeepMagnetClient::getPos() const {
return pos;
}
void PeepMagnetClient::onFullUpdate(WorldClient* w, CL_NetPacket& p) {
pos = WorldPos::extract(p.input);
ownerSlot = p.input.read_int32();
sprite->set_color(intToCL_Color(w->findPlayer(ownerSlot)->getColour()));
}
void PeepMagnetClient::predict(const WorldClient* w, unsigned int d) {
}
bool PeepMagnetClient::drawUpdate(const WorldClient* w, unsigned int d) {
sprite->update(d / 1000.0f);
return true;
}
void PeepMagnetClient::draw(const WorldClient* w) const {
CL_Point gp = w->getMap()->findPos(pos);
sprite->draw(gp.x, gp.y);
}
void PeepMagnetClient::playerColourChange(WorldClient* w) {
sprite->set_color(intToCL_Color(w->findPlayer(ownerSlot)->getColour()));
}
void PeepMagnetClient::displayRotationChange(WorldClient* w, const Rotation& r) {
delete sprite;
if (r.getClock() % 2 == 0) {
sprite = new OverSprite(*spriteDir0Cache,
intToCL_Color(w->findPlayer(ownerSlot)->getColour()));
} else {
sprite = new OverSprite(*spriteDir1Cache,
intToCL_Color(w->findPlayer(ownerSlot)->getColour()));
}
}
void PeepMagnetClient::loadSprites() {
spriteDir0Cache = new OverSprite("entities/peepmagnets/1/dir0",
app.getResources());
spriteDir1Cache = new OverSprite("entities/peepmagnets/1/dir1",
app.getResources());
spriteMiniCache = new OverSprite("entities/peepmagnets/1/mini",
app.getResources());
}
void PeepMagnetClient::freeSprites() {
delete spriteDir0Cache;
delete spriteDir1Cache;
delete spriteMiniCache;
}
See more files for this project here