- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# C:/Documents and Settings/jegan/Desktop/projectX/EventPoint.cpp

Go to the documentation of this file.

    00001 #include "EventPoint.h"
    00002 #include "CommandManager.h"
    00003 #include "List.h"
    00004 #include "Parser.h"
    00005 #include "Sprite.h"
    00006 #include <iostream>
    00007
    00008 using namespace std;
    00009
    00010 EventPoint::EventPoint(List* info, int x, int y)
    00011 :Object(info,x,y),_active(true),_collideEvent(false),_hasSprite(false),_collideList(NULL)
    00012 {
    00013         _collidable = true;
    00014         _solid = false;
    00015         _type = EVENTPOINT;
    00016
    00017         //FIXME make me load this in
    00018         //_box.h = 32;
    00019         //_box.w = 32;
    00020
    00021         load(info);
    00022 }
    00023
    00024 EventPoint::~EventPoint()
    00025 {
    00026         delete _collideList;
    00027 }
    00028
    00029 Object *EventPoint::copy()
    00030 {
    00031         EventPoint* copy = new EventPoint(*this);
    00032         copy->_collideList = new List(_collideList);
    00033         return copy;
    00034 }
    00035
    00036 void EventPoint::load(List *info, bool fromConstructor)
    00037 {
    00038         if(!fromConstructor)
    00039                 Object::load(info,fromConstructor);
    00040
    00041         while(!info->empty()) {
    00042                 List *current = info->firstList();
    00043
    00044                 if(current->firstString() == "collideScript") {
    00045                         if(current->rest()->first()->atomic()) {
    00046                                 string collideFile = current->rest()->firstString();
    00047                                 _collideList = Parser::parse(collideFile);
    00048                         }
    00049                         else {
    00050                                 _collideList = new List(current->rest()->firstList());
    00051                         }
    00052                         _collideEvent = true;
    00053                 }
    00054                 else if(current->firstString() == "sprite") {
    00055                         _sprite = Sprite::loadSprite(current->rest()->firstString());
    00056                         _hasSprite = true;
    00057                         _box.h = _sprite->height();
    00058                         _box.w = _sprite->width();
    00059                 }
    00060                 else if(current->firstString() == "replace") {
    00061                         findAndReplace(current->rest()->firstString(), current->rest()->rest()->firstString());
    00062                 }
    00063
    00064                 info = info->rest();
    00065         }
    00066
    00067 }
    00068
    00069 void EventPoint::collide(Object *o)
    00070 {
    00071         if(o->getType() == PLAYER && _active && _collideEvent) {
    00072                 CommandManager::instance()->startPlaying(_collideList);
    00073                 _active = false;
    00074         }
    00075 }
    00076
    00077 void EventPoint::findAndReplace(std::string find, std::string replace)
    00078 {
    00079         if(_collideEvent) {
    00080                 _collideList->findAndReplace(find,replace);
    00081         }
    00082 }
    00083
    00084 void EventPoint::draw()
    00085 {
    00086         if(_hasSprite && _active)
    00087                 _sprite->draw(_box.x,_box.y);
    00088 }