correct core module with new types

This commit is contained in:
2010-08-23 14:40:52 +03:00
parent 191e5ed1a1
commit 9c8f9fb98c
15 changed files with 146 additions and 103 deletions

View File

@@ -1,6 +1,6 @@
#############################################################################
# Makefile for building: aliendefender
# Generated by qmake (2.01a) (Qt 4.6.2) on: ?? ???. 17 20:37:06 2010
# Generated by qmake (2.01a) (Qt 4.6.2) on: ?? ???. 23 12:02:15 2010
# Project: aliendefender.pro
# Template: app
# Command: /usr/bin/qmake-qt4 -spec /usr/share/qt4/mkspecs/linux-g++ -unix CONFIG+=debug -o Makefile aliendefender.pro
@@ -51,7 +51,6 @@ SOURCES = map.cpp \
splashes.cpp \
adcore.cpp \
player.cpp \
settreader.cpp \
loader.cpp moc_map.cpp \
moc_game_data.cpp \
moc_aliens.cpp \
@@ -69,7 +68,6 @@ OBJECTS = map.o \
splashes.o \
adcore.o \
player.o \
settreader.o \
loader.o \
moc_map.o \
moc_game_data.o \
@@ -190,7 +188,7 @@ qmake: FORCE
dist:
@$(CHK_DIR_EXISTS) .tmp/aliendefender1.0.0 || $(MKDIR) .tmp/aliendefender1.0.0
$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/aliendefender1.0.0/ && $(COPY_FILE) --parents base_types.h map.h game_data.h aliens.h towers.h splashes.h adcore.h player.h settreader.h loader.h .tmp/aliendefender1.0.0/ && $(COPY_FILE) --parents images.qrc .tmp/aliendefender1.0.0/ && $(COPY_FILE) --parents map.cpp game_data.cpp aliens.cpp towers.cpp main.cpp splashes.cpp adcore.cpp player.cpp settreader.cpp loader.cpp .tmp/aliendefender1.0.0/ && (cd `dirname .tmp/aliendefender1.0.0` && $(TAR) aliendefender1.0.0.tar aliendefender1.0.0 && $(COMPRESS) aliendefender1.0.0.tar) && $(MOVE) `dirname .tmp/aliendefender1.0.0`/aliendefender1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/aliendefender1.0.0
$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/aliendefender1.0.0/ && $(COPY_FILE) --parents base_types.h map.h game_data.h aliens.h towers.h splashes.h adcore.h player.h loader.h .tmp/aliendefender1.0.0/ && $(COPY_FILE) --parents images.qrc .tmp/aliendefender1.0.0/ && $(COPY_FILE) --parents map.cpp game_data.cpp aliens.cpp towers.cpp main.cpp splashes.cpp adcore.cpp player.cpp loader.cpp .tmp/aliendefender1.0.0/ && (cd `dirname .tmp/aliendefender1.0.0` && $(TAR) aliendefender1.0.0.tar aliendefender1.0.0 && $(COMPRESS) aliendefender1.0.0.tar) && $(MOVE) `dirname .tmp/aliendefender1.0.0`/aliendefender1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/aliendefender1.0.0
clean:compiler_clean
@@ -213,64 +211,49 @@ compiler_moc_header_make_all: moc_map.cpp moc_game_data.cpp moc_aliens.cpp moc_t
compiler_moc_header_clean:
-$(DEL_FILE) moc_map.cpp moc_game_data.cpp moc_aliens.cpp moc_towers.cpp moc_splashes.cpp moc_adcore.cpp moc_player.cpp moc_loader.cpp
moc_map.cpp: base_types.h \
settreader.h \
map.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) map.h -o moc_map.cpp
moc_game_data.cpp: player.h \
map.h \
base_types.h \
settreader.h \
game_data.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) game_data.h -o moc_game_data.cpp
moc_aliens.cpp: game_data.h \
player.h \
map.h \
base_types.h \
settreader.h \
aliens.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) aliens.h -o moc_aliens.cpp
moc_towers.cpp: game_data.h \
player.h \
map.h \
base_types.h \
settreader.h \
towers.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) towers.h -o moc_towers.cpp
moc_splashes.cpp: game_data.h \
player.h \
map.h \
base_types.h \
settreader.h \
splashes.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) splashes.h -o moc_splashes.cpp
moc_adcore.cpp: aliens.h \
game_data.h \
player.h \
map.h \
base_types.h \
settreader.h \
towers.h \
splashes.h \
loader.h \
adcore.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) adcore.h -o moc_adcore.cpp
moc_player.cpp: map.h \
base_types.h \
settreader.h \
moc_player.cpp: base_types.h \
player.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) player.h -o moc_player.cpp
moc_loader.cpp: game_data.h \
player.h \
map.h \
base_types.h \
settreader.h \
loader.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) loader.h -o moc_loader.cpp
@@ -318,40 +301,31 @@ compiler_clean: compiler_moc_header_clean compiler_rcc_clean
####### Compile
map.o: map.cpp map.h \
base_types.h \
settreader.h
base_types.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map.o map.cpp
game_data.o: game_data.cpp game_data.h \
player.h \
map.h \
base_types.h \
settreader.h
base_types.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o game_data.o game_data.cpp
aliens.o: aliens.cpp aliens.h \
game_data.h \
player.h \
map.h \
base_types.h \
settreader.h
base_types.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o aliens.o aliens.cpp
towers.o: towers.cpp towers.h \
game_data.h \
player.h \
map.h \
base_types.h \
settreader.h
base_types.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o towers.o towers.cpp
main.o: main.cpp adcore.h \
aliens.h \
game_data.h \
player.h \
map.h \
base_types.h \
settreader.h \
towers.h \
splashes.h \
loader.h
@@ -360,38 +334,27 @@ main.o: main.cpp adcore.h \
splashes.o: splashes.cpp splashes.h \
game_data.h \
player.h \
map.h \
base_types.h \
settreader.h
base_types.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o splashes.o splashes.cpp
adcore.o: adcore.cpp adcore.h \
aliens.h \
game_data.h \
player.h \
map.h \
base_types.h \
settreader.h \
towers.h \
splashes.h \
loader.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o adcore.o adcore.cpp
player.o: player.cpp player.h \
map.h \
base_types.h \
settreader.h
base_types.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o player.o player.cpp
settreader.o: settreader.cpp settreader.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o settreader.o settreader.cpp
loader.o: loader.cpp loader.h \
game_data.h \
player.h \
map.h \
base_types.h \
settreader.h
base_types.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o loader.o loader.cpp
moc_map.o: moc_map.cpp

View File

@@ -2,7 +2,6 @@
#define ADCORE_H
#include <QThread>
#include <QObject>
#include "aliens.h"
#include "towers.h"
@@ -14,14 +13,12 @@ class adCore : public QThread
Q_OBJECT
public:
explicit adCore(QObject *parent = 0);
Map *admap;
Game_Data *addata;
Aliens *adaliens;
Towers *adtowers;
Splashes *adsplashes;
Loader * adload;
int step;
Game_Data * addata;
Aliens * adaliens;
Towers * adtowers;
Splashes * adsplashes;
Loader * adloader;
unsigned int step;
signals:
public slots:

View File

@@ -6,7 +6,6 @@ HEADERS += base_types.h \
splashes.h \
adcore.h \
player.h \
settreader.h \
loader.h
SOURCES += map.cpp \
game_data.cpp \
@@ -16,7 +15,6 @@ SOURCES += map.cpp \
splashes.cpp \
adcore.cpp \
player.cpp \
settreader.cpp \
loader.cpp
RESOURCES += images.qrc
OTHER_FILES += map.conf \

View File

@@ -1,12 +1,11 @@
#include "aliens.h"
#include <cmath>
Aliens::Aliens(Game_Data *gd, QObject *parent) :
QObject(parent)
{
gameData = gd;
nextId = 0;
nextId = 1;
}
@@ -63,7 +62,6 @@ void Aliens::update()
//qDebug() << i;
//if (al.health < 0) emit AlienKill();
float tmpdx,tmpdy,angl,arctg = 0;
qDebug() <<"alien"<< i << " path index" << al.pathIndex << " pos" << al.pos;
tmpdx = al.pos.x() - al.path.at(al.pathIndex).x();
tmpdy = al.pos.y() - al.path.at(al.pathIndex).y();
while (std::sqrt(tmpdx*tmpdx +tmpdy*tmpdy) < 2*al.speed)
@@ -104,6 +102,7 @@ void Aliens::update()
-al.speed*std::cos(arctg));
//return true;
gameData->curAliens.insert(al.Id,al);
qDebug() <<"alien"<< i << " path index" << al.pathIndex << " pos" << al.pos;
}
for (int j=0; j<missIndex.size(); j++)
{

View File

@@ -1,8 +1,6 @@
#ifndef ALIENS_H
#define ALIENS_H
#include <QObject>
#include "game_data.h"
@@ -14,7 +12,6 @@ public:
void AddAlien(int srcId);
void nextWave();
void update();
int size() const {return gameData->curAliens.size();}
signals:
public slots:

View File

@@ -2,8 +2,17 @@
#define BASE_TYPES_H
#include <QPointF>
#include <QPoint>
#include <QList>
#include <QVector>
#include <QHash>
#include <QMultiHash>
#include <QDebug>
#include <QString>
#include <QObject>
#include <QSize>
#include <QRect>
#include <QRectF>
struct AlienType
{
@@ -48,6 +57,13 @@ struct TowerType
};
struct TriggerType
{
int src;
unsigned int timer;
};
struct srcTriggerType
{
enum triggerType
@@ -106,6 +122,7 @@ struct SplashType
int life; // in ticks
float angle; // -180 .. 180
QPointF pos;
QList <TriggerType> triggers;
};
@@ -119,4 +136,10 @@ struct WaveType
};
inline uint qHash(const QPoint &pos)
{
return qHash(pos.x()) + (qHash(pos.y()) << 16);
}
#endif // BASE_TYPES_H

View File

@@ -1,10 +1,9 @@
#ifndef GAME_DATA_H
#define GAME_DATA_H
#include <QObject>
#include <QHash>
#include "player.h"
#include "base_types.h"
#include "map.h"
class Game_Data : public QObject
{
@@ -13,8 +12,10 @@ public:
explicit Game_Data(Map * map, QObject *parent = 0);
QList <srcAlienType> srcAliens;
QHash <int,AlienType> curAliens;
QHash <QPoint,TowerType> curTowers;
QList <srcSplashType> srcSplashes;
QList <srcTriggerType> srTriggers;
QHash <int,SplashType> curSplashes;
QHash <QPoint,TowerType> curTowers;
QList <WaveType> waves;
QList <Player *> players;
Map * map;

View File

@@ -1,11 +1,9 @@
#ifndef LOADER_H
#define LOADER_H
#include <QObject>
#include <QDomDocument>
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <QXmlSchema>
#include <QXmlSchemaValidator>
#include "game_data.h"

View File

@@ -1,9 +1,9 @@
#include <QDebug>
#include <QtGui/QApplication>
#include <QTimer>
#include "adcore.h"
int main(int argc, char *argv[])
{
adCore core;

10
map.h
View File

@@ -1,15 +1,7 @@
#ifndef MAP_H
#define MAP_H
#include <QObject>
#include <QSize>
#include <QList>
#include <QPointF>
#include <QRect>
#include <QFile>
#include "base_types.h"
#include "settreader.h"
// Maximum map is 65530 x 65530 because qHash may be repeat and towers has same Id
@@ -44,7 +36,7 @@ public:
void delTowerOnMap(QPoint pos);
void removeAliensPath();
QVector <QPointF> CreatePath(QPoint start, QPoint finish);
// QSize size() const {return mapsize;}
QRect Rect() const {return QRect(QPoint(),mapSize);}
// QString name() const {return mapName;}
QList <QPoint> Starts() const {return starts;}
QList <QPoint> Finishs() const {return finishs;}

View File

@@ -1,9 +1,7 @@
#ifndef PLAYER_H
#define PLAYER_H
#include <QObject>
#include "map.h"
#include "base_types.h"
class Player : public QObject
{

View File

@@ -1,13 +1,102 @@
#include "splashes.h"
#include <cmath>
Splashes::Splashes(Game_Data *gd, QObject *parent) :
QObject(parent)
QObject(parent)
{
gameData = gd;
nextId = 1;
}
bool Splashes::AddSplash(int srcId, QPointF pos)
{
if (srcId < 0 || srcId >= gameData->srcSplashes.size())
{
qCritical("ERROR out of splashes range");
return false;
}
srcSplashType src = gameData->srcSplashes.at(srcId);
SplashType spl;// = gameData->srcAliens.at(srcId);
spl.Id = nextId;
spl.src = srcId;
spl.TowerId = QPoint(-1,-1);
spl.life = 0;
spl.imgType = src.imgType;
if (!gameData->map->Rect().contains(pos.toPoint()))
{
qCritical("ERROR splash out of map size");
return false;
}
spl.pos = pos;
spl.AlienId = -1;
spl.angle = 0;
spl.destination = pos;
TriggerType trig;
for(int i; i<src.triggerIndexes.size(); i++)
{
trig.timer = gameData->srTriggers.at(src.triggerIndexes.at(i)).timer;
trig.src = src.triggerIndexes.at(i);
spl.triggers.push_back(trig);
}
gameData->curSplashes.insert(spl.Id,spl);
nextId++;
return true;
}
void Splashes::AddSplash(srcSplashType src, int index, TowerType tw)
{
SplashType spl;
spl.Id = nextId;
spl.TowerId = tw.pos;
if (!gameData->curAliens.contains(tw.aim))
qFatal("Error finding splash aim! Tower has nvalid aim!");
if (src.autoControl)
spl.AlienId = tw.aim;
else
spl.AlienId = -1;
spl.destination = gameData->curAliens.value(tw.aim).pos;
spl.angle = tw.angle;
spl.pos = tw.pos; // FIXME: pos not in center/left angle of tower
spl.imgType = src.imgType;
spl.life = 0;
spl.src = index;
TriggerType trig;
for(int i; i<src.triggerIndexes.size(); i++)
{
trig.timer = gameData->players.at(tw.PlayerId)->srcTowers.at(tw.src).triggers.at(src.triggerIndexes.at(i));
trig.src = src.triggerIndexes.at(i);
spl.triggers.push_back(trig);
}
gameData->curSplashes.insert(spl.Id,spl);
nextId++;
}
void Splashes::update()
{
for (int i; i<gameData->curSplashes.size(); i++)
{
SplashType spl = gameData->curSplashes.values().at(i);
bool isTowerSplash = false;
srcSplashType src;
TowerType tw;
if (gameData->map->Rect().contains(spl.TowerId))
{
if (gameData->curTowers.contains(spl.TowerId))
{
tw = gameData->curTowers.value(spl.TowerId);
src = gameData->players.at(tw.PlayerId)->srcTowers.at(tw.src).splashes.at(spl.src);
isTowerSplash = true;
} else {
spl.TowerId = QPoint(-1,-1);
}
}
if (!isTowerSplash)
src = gameData->srcSplashes.at(spl.src);
// TODO: calculate new angle and pos....
// TODO: activate trigger and more...
}
}
}

View File

@@ -1,8 +1,6 @@
#ifndef SPLASHES_H
#define SPLASHES_H
#include <QObject>
#include "game_data.h"
class Splashes : public QObject
@@ -10,19 +8,17 @@ class Splashes : public QObject
Q_OBJECT
public:
explicit Splashes(Game_Data * gd, QObject *parent = 0);
void AddSplash(int srcId);
void AddSplash(srcSplashType src,TowerType tw);
void DelSplashById(int Id);
void DelSplash(int index);
bool AddSplash(int srcId, QPointF pos);
void DelSplash(int Id);
void update();
int size() const {return gameData->curSplashes.size();}
signals:
public slots:
void AddSplash(srcSplashType src, int index, TowerType tw);
private:
Game_Data *gameData;
int nextId;
};
#endif // SPLASHES_H

View File

@@ -61,7 +61,7 @@ void Towers::update()
{
tw.reload++;
} else {
emit shot(stw.splashes.at(0),tw);
emit shot(stw.splashes.at(0), 0, tw);
}
}
}

View File

@@ -1,8 +1,6 @@
#ifndef TOWERS_H
#define TOWERS_H
#include <QObject>
#include "game_data.h"
class Towers : public QObject
@@ -13,18 +11,12 @@ public:
bool AddTower(int playerId, int srcId, QPoint pos);
void DelTower(QPoint pos);
void update();
int size() const {return gameData->curTowers.size();}
signals:
void shot(srcSplashType src, TowerType tw);
void shot(srcSplashType src, int index, TowerType tw);
public slots:
private:
Game_Data * gameData;
};
inline uint qHash(const QPoint &pos)
{
return qHash(pos.x()) + (qHash(pos.y()) << 16);
}
#endif // TOWERS_H