diff --git a/ad_graphics.cpp b/ad_graphics.cpp
index e5633d1..a3f91f0 100644
--- a/ad_graphics.cpp
+++ b/ad_graphics.cpp
@@ -11,7 +11,7 @@ AD_Graphics::AD_Graphics(AD_Core *adcore, QWidget *parent) : QGraphicsView(paren
setAlignment(Qt::AlignLeft | Qt::AlignTop);
scene = new QGraphicsScene();
setScene(scene);
- //setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
+ setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
//setDragMode(RubberBandDrag);
//gsw = new QGraphicsWidget();
@@ -56,14 +56,14 @@ void AD_Graphics::drawBackground(QPainter * p, const QRectF & )
pen.setColor(Qt::black);
brush.setColor(Qt::black);
}
-// if (cel <= Map::PlayerTower && cel !=Map::Wall) {
-// pen.setColor(QColor(cel%255,(cel*100)%255,(cel+100)%255));
-// brush.setColor(QColor(cel%255,(cel*100)%255,(cel+100)%255));
-// }
-// if (cel >= Map::PlayerAlien) {
-// pen.setColor(Qt::yellow);
-// brush.setColor(Qt::yellow);
-// }
+ // if (cel <= Map::PlayerTower && cel !=Map::Wall) {
+ // pen.setColor(QColor(cel%255,(cel*100)%255,(cel+100)%255));
+ // brush.setColor(QColor(cel%255,(cel*100)%255,(cel+100)%255));
+ // }
+ // if (cel >= Map::PlayerAlien) {
+ // pen.setColor(Qt::yellow);
+ // brush.setColor(Qt::yellow);
+ // }
if (cel >= Map::Player || (cel <= Map::PlayerTower && cel !=Map::Wall))
{
pen.setColor(QColor(qAbs(cel)%255,(qAbs(cel)*100)%255,(qAbs(cel)+100)%255,50));
@@ -83,15 +83,21 @@ void AD_Graphics::drawBackground(QPainter * p, const QRectF & )
//p->translate(rec.width()/2, rec.height()/2);
//p->rotate(-90);
//p->translate(-rec.height()/2, -rec.width()/2);
- //QBrush brush;
- //brush.setColor(Qt::darkRed);
- //brush.setStyle(Qt::DiagCrossPattern);
p->translate((*i).pos * cellSize+QPointF(20,20));
p->rotate((*i).angle);
//p->setPen(QColor(0,0,0,0));
//p->setBrush(brush);
//p->drawRect(QRect(-10,-10,20,20));
- p->drawImage(QRect(-20,-20,40,40), images[itTowers][0]->at(0));
+ if ((*i).build < data->players.at((*i).PlayerId)->srcTowers.at((*i).src).buildTime)
+ {
+ QBrush brush;
+ brush.setColor(Qt::darkRed);
+ brush.setStyle(Qt::DiagCrossPattern);
+ p->setBrush(brush);
+ p->drawRect(-20,-20,40,40);
+ } else {
+ p->drawImage(QRect(-20,-20,40,40), images[itTowers][(*i).imgType]->at(0));
+ }
p->resetTransform();
}
//qDebug() << "a:" << data->curAliens.size();
@@ -120,12 +126,12 @@ void AD_Graphics::drawBackground(QPainter * p, const QRectF & )
//QBrush brush;
//brush.setColor(Qt::red);
//brush.setStyle(Qt::SolidPattern);
- p->translate((*i).pos * cellSize+QPointF(10,10));
+ p->translate((*i).pos * cellSize);
p->rotate((*i).angle);
//p->setBrush(brush);
//p->setPen(QColor(0,0,0,0));
//p->drawEllipse(QPoint(),5,5);
- p->drawImage(QRect(-10,-10,20,20), images[itSplashes][0]->at(0));
+ p->drawImage(QPoint(-(images[itSplashes][(*i).imgType]->at(0).size().width()/2),-(images[itSplashes][(*i).imgType]->at(0).size().height()/2)), images[itSplashes][(*i).imgType]->at(0));
p->resetTransform();
}
}
@@ -149,8 +155,12 @@ void AD_Graphics::loadImages()
break;
case itTowers:
images[i].push_back(new Animation(":/images/images/Towers/01_6.png"));
+ images[i].push_back(new Animation(":/images/images/Towers/00_0.png"));
case itSplashes:
images[i].push_back(new Animation(":/images/images/Splashes/Rocket.png"));
+ images[i].push_back(new Animation(":/images/images/Splashes/Shot_0.png"));
+ images[i].push_back(new Animation(":/images/images/Splashes/Smoke_01.png"));
+ images[i].push_back(new Animation(":/images/images/Splashes/expl.png"));
default: break;
}
}
diff --git a/adcore.cpp b/adcore.cpp
index e70e382..554ccf7 100644
--- a/adcore.cpp
+++ b/adcore.cpp
@@ -24,15 +24,15 @@ AD_Core::AD_Core(QObject *parent) :
// adaliens->addAlien(0);
// adaliens->AddAlien(0);
// adaliens->AddAlien(0);
- adtowers->addTower(0,0,QPoint(19,7));
+ adtowers->addTower(0,2,QPoint(22,7));
for (int i=0; i<20;i++)
- adtowers->addTower(0,0,QPoint(8,20-i));
+ adtowers->addTower(0,1,QPoint(8,20-i));
for (int i=0; i<20; i++)
- adtowers->addTower(0,1,QPoint(12,i));
+ adtowers->addTower(0,0,QPoint(12,i));
for (int i=0; i<20;i++)
- adtowers->addTower(0,0,QPoint(16,20-i));
+ adtowers->addTower(0,1,QPoint(16,20-i));
waveInProgress = false;
- startTimer(50);
+ startTimer(20);
}
diff --git a/aliendefender.pro.user b/aliendefender.pro.user
index 31ed8bf..4fd4af5 100644
--- a/aliendefender.pro.user
+++ b/aliendefender.pro.user
@@ -1,283 +1,111 @@
- RunConfiguration0-BaseEnvironmentBase
- 2
-
-
- RunConfiguration0-CommandLineArguments
-
-
-
- RunConfiguration0-ProFile
- aliendefender.pro
-
-
- RunConfiguration0-RunConfiguration.name
- aliendefender
-
-
- RunConfiguration0-UseDyldImageSuffix
- false
-
-
- RunConfiguration0-UseTerminal
- false
-
-
- RunConfiguration0-UserEnvironmentChanges
-
-
-
- RunConfiguration0-UserSetName
- false
-
-
- RunConfiguration0-UserSetWorkingDirectory
- false
-
-
- RunConfiguration0-UserWorkingDirectory
-
-
-
- RunConfiguration0-type
- Qt4ProjectManager.Qt4RunConfiguration
-
-
- activeRunConfiguration
+ ProjectExplorer.Project.ActiveTarget
0
- activebuildconfiguration
- Debug
-
-
- buildConfiguration-Debug
+ ProjectExplorer.Project.EditorSettings
- Debug
- 0
- 0
-
- 2
+ System
- buildConfiguration-Release
+ ProjectExplorer.Project.Target.0
- Release
- 0
-
- 0
+ Настольный компьютер
+ Qt4ProjectManager.Target.DesktopTarget
+ 0
+ 0
+
+
+
+ QtProjectManager.QMakeBuildStep
+
+
+
+
+ Qt4ProjectManager.MakeStep
+ false
+
+
+
+ 2
+
+
+ Qt4ProjectManager.MakeStep
+ true
+
+ clean
+
+
+
+ 1
+ false
+
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+ C:/Users/Andrey/Desktop/build-AD
+ 9
+ 2
+ true
+
+
+
+
+ QtProjectManager.QMakeBuildStep
+
+
+
+
+ Qt4ProjectManager.MakeStep
+ false
+
+
+
+ 2
+
+
+ Qt4ProjectManager.MakeStep
+ true
+
+
+
+ 1
+ false
+
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ C:/Users/Andrey/Desktop/aliendefender-build-desktop
+ 9
+ 2
+ true
+
+ 2
+
+ aliendefender
+ Qt4ProjectManager.Qt4RunConfiguration
+ 2
+
+ aliendefender.pro
+ false
+ false
+
+ false
+ true
+ C:\Users\Andrey\Desktop\aliendefender
+
+ 1
- buildconfiguration-Debug-buildstep0
-
- Debug
-
- DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wExeabp7q4,guid=18815993df3603fdc64a3f6d4c7b5822
- DEFAULTS_PATH=/usr/share/gconf/gnome.default.path
- DESKTOP_SESSION=gnome
- DISPLAY=:0.0
- GDMSESSION=gnome
- GDM_KEYBOARD_LAYOUT=us
- GDM_LANG=ru_RU.UTF-8
- GNOME_DESKTOP_SESSION_ID=this-is-deprecated
- GNOME_KEYRING_CONTROL=/tmp/keyring-4vN5uf
- GTK_MODULES=canberra-gtk-module
- HOME=/home/andrey
- LANG=ru_RU.UTF-8
- LD_LIBRARY_PATH=/usr/lib/qtcreator:
- LOGNAME=andrey
- MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path
- ORBIT_SOCKETDIR=/tmp/orbit-andrey
- PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- PWD=/home/andrey
- QTDIR=/usr/share/qt4
- SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1205,unix/buull-eeePC:/tmp/.ICE-unix/1205
- SHELL=/bin/bash
- SPEECHD_PORT=6561
- SSH_AGENT_PID=1239
- SSH_AUTH_SOCK=/tmp/keyring-4vN5uf/ssh
- USER=andrey
- USERNAME=andrey
- XAUTHORITY=/var/run/gdm/auth-for-andrey-x9URui/database
- XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
- XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
- XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283151906.338331-318132279
-
-
- /home/andrey/AD/aliendefender/aliendefender.pro
- -spec
- linux-g++
- -r
- CONFIG+=debug
-
- /usr/bin/qmake-qt4
- false
- /home/andrey/AD/aliendefender
-
+ ProjectExplorer.Project.TargetCount
+ 1
- buildconfiguration-Debug-buildstep1
-
- Debug
-
- DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wExeabp7q4,guid=18815993df3603fdc64a3f6d4c7b5822
- DEFAULTS_PATH=/usr/share/gconf/gnome.default.path
- DESKTOP_SESSION=gnome
- DISPLAY=:0.0
- GDMSESSION=gnome
- GDM_KEYBOARD_LAYOUT=us
- GDM_LANG=ru_RU.UTF-8
- GNOME_DESKTOP_SESSION_ID=this-is-deprecated
- GNOME_KEYRING_CONTROL=/tmp/keyring-4vN5uf
- GTK_MODULES=canberra-gtk-module
- HOME=/home/andrey
- LANG=ru_RU.UTF-8
- LD_LIBRARY_PATH=/usr/lib/qtcreator:
- LOGNAME=andrey
- MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path
- ORBIT_SOCKETDIR=/tmp/orbit-andrey
- PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- PWD=/home/andrey
- QTDIR=/usr/share/qt4
- SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1205,unix/buull-eeePC:/tmp/.ICE-unix/1205
- SHELL=/bin/bash
- SPEECHD_PORT=6561
- SSH_AGENT_PID=1239
- SSH_AUTH_SOCK=/tmp/keyring-4vN5uf/ssh
- USER=andrey
- USERNAME=andrey
- XAUTHORITY=/var/run/gdm/auth-for-andrey-x9URui/database
- XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
- XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
- XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283151906.338331-318132279
-
- false
-
- -w
-
- /usr/bin/make
- true
- /home/andrey/AD/aliendefender
-
-
-
- buildconfiguration-Debug-cleanstep0
-
- Debug
-
- DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wExeabp7q4,guid=18815993df3603fdc64a3f6d4c7b5822
- DEFAULTS_PATH=/usr/share/gconf/gnome.default.path
- DESKTOP_SESSION=gnome
- DISPLAY=:0.0
- GDMSESSION=gnome
- GDM_KEYBOARD_LAYOUT=us
- GDM_LANG=ru_RU.UTF-8
- GNOME_DESKTOP_SESSION_ID=this-is-deprecated
- GNOME_KEYRING_CONTROL=/tmp/keyring-4vN5uf
- GTK_MODULES=canberra-gtk-module
- HOME=/home/andrey
- LANG=ru_RU.UTF-8
- LD_LIBRARY_PATH=/usr/lib/qtcreator:
- LOGNAME=andrey
- MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path
- ORBIT_SOCKETDIR=/tmp/orbit-andrey
- PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- PWD=/home/andrey
- QTDIR=/usr/share/qt4
- SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1205,unix/buull-eeePC:/tmp/.ICE-unix/1205
- SHELL=/bin/bash
- SPEECHD_PORT=6561
- SSH_AGENT_PID=1239
- SSH_AUTH_SOCK=/tmp/keyring-4vN5uf/ssh
- USER=andrey
- USERNAME=andrey
- XAUTHORITY=/var/run/gdm/auth-for-andrey-x9URui/database
- XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
- XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
- XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283151906.338331-318132279
-
- true
-
- clean
- -w
-
- /usr/bin/make
- true
- /home/andrey/AD/aliendefender
- true
-
- clean
-
-
-
-
- buildconfiguration-Release-buildstep0
-
- Release
-
-
-
- buildconfiguration-Release-buildstep1
-
- Release
-
-
-
- buildconfiguration-Release-cleanstep0
-
- Release
-
-
-
- buildconfigurations
-
- Debug
- Release
-
-
-
- buildstep0
-
-
-
-
-
-
- buildstep1
-
-
-
-
-
- buildsteps
-
- trolltech.qt4projectmanager.qmake
- trolltech.qt4projectmanager.make
-
-
-
- cleanstep0
-
-
- true
-
-
-
- cleansteps
-
- trolltech.qt4projectmanager.make
-
-
-
- defaultFileEncoding
- System
-
-
- project
-
+ ProjectExplorer.Project.Updater.FileVersion
+ 4
diff --git a/aliendefender.pro.user.1.3 b/aliendefender.pro.user.1.3
index 71a2fb1..31ed8bf 100644
--- a/aliendefender.pro.user.1.3
+++ b/aliendefender.pro.user.1.3
@@ -56,17 +56,27 @@
buildConfiguration-Debug
Debug
- 2
+ 0
0
+
2
+
+ buildConfiguration-Release
+
+ Release
+ 0
+
+ 0
+
+
buildconfiguration-Debug-buildstep0
Debug
- DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-7vJZaf9AwI,guid=f26a2301f932cefdec6dd3bc4c79669f
+ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wExeabp7q4,guid=18815993df3603fdc64a3f6d4c7b5822
DEFAULTS_PATH=/usr/share/gconf/gnome.default.path
DESKTOP_SESSION=gnome
DISPLAY=:0.0
@@ -74,7 +84,7 @@
GDM_KEYBOARD_LAYOUT=us
GDM_LANG=ru_RU.UTF-8
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
- GNOME_KEYRING_CONTROL=/tmp/keyring-U899U4
+ GNOME_KEYRING_CONTROL=/tmp/keyring-4vN5uf
GTK_MODULES=canberra-gtk-module
HOME=/home/andrey
LANG=ru_RU.UTF-8
@@ -85,17 +95,17 @@
PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PWD=/home/andrey
QTDIR=/usr/share/qt4
- SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1236,unix/buull-eeePC:/tmp/.ICE-unix/1236
+ SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1205,unix/buull-eeePC:/tmp/.ICE-unix/1205
SHELL=/bin/bash
SPEECHD_PORT=6561
- SSH_AGENT_PID=1270
- SSH_AUTH_SOCK=/tmp/keyring-U899U4/ssh
+ SSH_AGENT_PID=1239
+ SSH_AUTH_SOCK=/tmp/keyring-4vN5uf/ssh
USER=andrey
USERNAME=andrey
- XAUTHORITY=/var/run/gdm/auth-for-andrey-6T6AjI/database
+ XAUTHORITY=/var/run/gdm/auth-for-andrey-x9URui/database
XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
- XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283024543.354844-1194058895
+ XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283151906.338331-318132279
/home/andrey/AD/aliendefender/aliendefender.pro
@@ -114,7 +124,7 @@
Debug
- DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-7vJZaf9AwI,guid=f26a2301f932cefdec6dd3bc4c79669f
+ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wExeabp7q4,guid=18815993df3603fdc64a3f6d4c7b5822
DEFAULTS_PATH=/usr/share/gconf/gnome.default.path
DESKTOP_SESSION=gnome
DISPLAY=:0.0
@@ -122,7 +132,7 @@
GDM_KEYBOARD_LAYOUT=us
GDM_LANG=ru_RU.UTF-8
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
- GNOME_KEYRING_CONTROL=/tmp/keyring-U899U4
+ GNOME_KEYRING_CONTROL=/tmp/keyring-4vN5uf
GTK_MODULES=canberra-gtk-module
HOME=/home/andrey
LANG=ru_RU.UTF-8
@@ -133,17 +143,17 @@
PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PWD=/home/andrey
QTDIR=/usr/share/qt4
- SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1236,unix/buull-eeePC:/tmp/.ICE-unix/1236
+ SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1205,unix/buull-eeePC:/tmp/.ICE-unix/1205
SHELL=/bin/bash
SPEECHD_PORT=6561
- SSH_AGENT_PID=1270
- SSH_AUTH_SOCK=/tmp/keyring-U899U4/ssh
+ SSH_AGENT_PID=1239
+ SSH_AUTH_SOCK=/tmp/keyring-4vN5uf/ssh
USER=andrey
USERNAME=andrey
- XAUTHORITY=/var/run/gdm/auth-for-andrey-6T6AjI/database
+ XAUTHORITY=/var/run/gdm/auth-for-andrey-x9URui/database
XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
- XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283024543.354844-1194058895
+ XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283151906.338331-318132279
false
@@ -158,16 +168,75 @@
buildconfiguration-Debug-cleanstep0
Debug
+
+ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wExeabp7q4,guid=18815993df3603fdc64a3f6d4c7b5822
+ DEFAULTS_PATH=/usr/share/gconf/gnome.default.path
+ DESKTOP_SESSION=gnome
+ DISPLAY=:0.0
+ GDMSESSION=gnome
+ GDM_KEYBOARD_LAYOUT=us
+ GDM_LANG=ru_RU.UTF-8
+ GNOME_DESKTOP_SESSION_ID=this-is-deprecated
+ GNOME_KEYRING_CONTROL=/tmp/keyring-4vN5uf
+ GTK_MODULES=canberra-gtk-module
+ HOME=/home/andrey
+ LANG=ru_RU.UTF-8
+ LD_LIBRARY_PATH=/usr/lib/qtcreator:
+ LOGNAME=andrey
+ MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path
+ ORBIT_SOCKETDIR=/tmp/orbit-andrey
+ PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
+ PWD=/home/andrey
+ QTDIR=/usr/share/qt4
+ SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1205,unix/buull-eeePC:/tmp/.ICE-unix/1205
+ SHELL=/bin/bash
+ SPEECHD_PORT=6561
+ SSH_AGENT_PID=1239
+ SSH_AUTH_SOCK=/tmp/keyring-4vN5uf/ssh
+ USER=andrey
+ USERNAME=andrey
+ XAUTHORITY=/var/run/gdm/auth-for-andrey-x9URui/database
+ XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
+ XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
+ XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283151906.338331-318132279
+
+ true
+
+ clean
+ -w
+
+ /usr/bin/make
+ true
+ /home/andrey/AD/aliendefender
true
clean
+
+ buildconfiguration-Release-buildstep0
+
+ Release
+
+
+
+ buildconfiguration-Release-buildstep1
+
+ Release
+
+
+
+ buildconfiguration-Release-cleanstep0
+
+ Release
+
+
buildconfigurations
Debug
+ Release
diff --git a/aliens.cpp b/aliens.cpp
index 4ac9b8e..f5e4e7c 100644
--- a/aliens.cpp
+++ b/aliens.cpp
@@ -70,7 +70,6 @@ void Aliens::update()
(*i).pathIndex++;
if ((*i).pathIndex >= (*i).path.size())
{
- qDebug() << tr("Missing aliens = %1!").arg(gameData->missingAliens);
missIndex.push_back((*i).id);
curMiss = (*i).id;
break;
@@ -113,6 +112,7 @@ void Aliens::update()
for (int j=0; jmissingAliens++;
+ qDebug() << tr("Missing aliens = %1!").arg(gameData->missingAliens);
delAlien(missIndex.at(j));
}
}
diff --git a/base_types.h b/base_types.h
index 975c9f2..8fcc000 100644
--- a/base_types.h
+++ b/base_types.h
@@ -151,6 +151,7 @@ struct TowerType
float angle; // -180 .. 180
unsigned int reload; // time for reload in ticks
unsigned int build;
+ float experience;
};
diff --git a/data2.xml b/data2.xml
index 2dc905d..67a2b88 100644
--- a/data2.xml
+++ b/data2.xml
@@ -1,11 +1,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -17,8 +17,8 @@
-
-
+
+
@@ -50,6 +50,8 @@
+
+
@@ -58,18 +60,20 @@
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
@@ -77,11 +81,11 @@
-
-
+
+
-
-
+
+
diff --git a/images.qrc b/images.qrc
index cf225a4..9e5f8d3 100644
--- a/images.qrc
+++ b/images.qrc
@@ -23,5 +23,8 @@
images/Towers/00_0.png
images/Splashes/Rocket.png
images/Towers/01_6.png
+ images/Splashes/Shot_0.png
+ images/Splashes/Smoke_01.png
+ images/Splashes/expl.png
diff --git a/images/Splashes/expl.png b/images/Splashes/expl.png
new file mode 100644
index 0000000..e67b657
Binary files /dev/null and b/images/Splashes/expl.png differ
diff --git a/loader.cpp b/loader.cpp
index 652f8ee..01297d5 100644
--- a/loader.cpp
+++ b/loader.cpp
@@ -369,6 +369,8 @@ void Loader::fillTowerChains(QList * chlist, QList * trigIds, sr
strigt.damage = tbtrig.damage;
strigt.delParent = tbtrig.delParent;
strigt.radius = tbtrig.radius;
+ if (strigt.radius <= 0 && strigt.damage>0 && !splashes.value(parId).autoControl)
+ qCritical("Wrong trigger or chain, because damage >0 radius=0 and not autocontrol.\nThis damage will be ignored!");
strigt.randomPosRadius = tbtrig.randomPosRadius;
strigt.timer = tbtrig.timer;
strigt.type = tbtrig.type;
diff --git a/map.cpp b/map.cpp
index 1062ee8..d3b354a 100644
--- a/map.cpp
+++ b/map.cpp
@@ -132,7 +132,7 @@ bool Map::addTowerOnMap(int playerId, QPoint pos)
bool * pathOK;
pathOK = new bool();
*pathOK = true;
- qDebug("emit");
+ //qDebug("emit");
emit recreateAlienPath(pathOK);
qDebug() << *pathOK;
if (!pathOK)
@@ -146,7 +146,7 @@ bool Map::addTowerOnMap(int playerId, QPoint pos)
}
return true;
}
- qDebug()<<"Dont buid here" << Cells[pos.x()][pos.y()];
+ qDebug()<<"Dont buid here" << pos;
return false;
}
diff --git a/splashes.cpp b/splashes.cpp
index e3d86cb..523017b 100644
--- a/splashes.cpp
+++ b/splashes.cpp
@@ -9,43 +9,59 @@ Splashes::Splashes(Game_Data *gd, QObject *parent) :
}
-bool Splashes::addSplash(int srcId, QPointF pos)
+void Splashes::addSplash(int player, int srcTower, int srcId, QPointF pos, QPointF dest, int aim, QPoint curTower)
{
- qDebug("don't use this function addSplash(int srcId, QPointF pos)");
- return false;
- // FIXME: говнокод
- // TODO: find and correct errors here
- /* 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);
+ srcSplashType src = gameData->players.at(player)->srcTowers.at(srcTower).splashes.at(srcId);
+ SplashType spl;
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()))
+ spl.TowerId = curTower;
+ spl.srcTower = srcTower;
+ spl.PlayerId = player;
+ if (src.autoControl)
{
- qCritical("ERROR splash out of map size");
- return false;
+ spl.AlienId = aim;
+ if (gameData->curAliens.contains(aim))
+ spl.destination = gameData->curAliens.value(aim).pos+QPointF(0.5,0.5);
+ else
+ spl.destination = dest;
+ } else {
+ spl.AlienId = -1;
+ spl.destination = dest;
}
spl.pos = pos;
- spl.AlienId = -1;
- spl.angle = 0;
- spl.destination = pos;
- TriggerType trig;
+ spl.angle = 180.0f*(- std::atan2(spl.pos.x() - spl.destination.x(),spl.pos.y() - spl.destination.y()))/M_PI;
+ spl.imgType = src.imgType;
+ spl.life = 0;
+ spl.src = srcId;
+ //TriggerType trig;
+ srcTriggerType trig;
for(int i=0; isrTriggers.at(src.triggerIndexes.at(i)).timer;
- trig.src = src.triggerIndexes.at(i);
- spl.triggers.push_back(trig);
+ TriggerOnDest tod;
+ TriggerOnAlien toa;
+ TriggerOnTimer tot;
+ trig = gameData->players.at(player)->srcTowers.at(srcTower).triggers.at(src.triggerIndexes.at(i));
+ switch (trig.type)
+ {
+ case srcTriggerType::onDestination :
+ tod.src = src.triggerIndexes.at(i);
+ spl.trigsOnDest.append(tod);
+ break;
+ case srcTriggerType::onAlienInRadius :
+ toa.src = src.triggerIndexes.at(i);
+ spl.trigsOnAlien.append(toa);
+ break;
+ case srcTriggerType::onTimer :
+ tot.src = src.triggerIndexes.at(i);
+ tot.timer = trig.timer;
+ spl.trigsOnTimer.append(tot);
+ break;
+ }
+
}
+ //qDebug() << "t=" << src.triggerIndexes.size() << "d=" << spl.trigsOnDest.size();
gameData->curSplashes.insert(spl.id,spl);
nextId++;
- return true;*/
}
@@ -54,54 +70,57 @@ void Splashes::addSplash(QPoint curTowerId)
if (gameData->curTowers.contains(curTowerId))
{
TowerType tw = gameData->curTowers.value(curTowerId);
- srcSplashType src = gameData->players.at(tw.PlayerId)->srcTowers.at(tw.src).splashes.at(0);
- SplashType spl;
- spl.id = nextId;
- spl.TowerId = curTowerId;
- spl.srcTower = tw.src;
- spl.PlayerId = tw.PlayerId;
- if (!gameData->curAliens.contains(tw.aim))
- qFatal("Error finding splash aim! Tower has nvalid aim!");
- spl.destination = gameData->curAliens.value(tw.aim).pos;
- if (src.autoControl)
- spl.AlienId = tw.aim;
- else
- spl.AlienId = -1;
- spl.angle = tw.angle;
- spl.pos = tw.pos; // FIXME: splash do not create in center or left-angle of tower, it must be in tower's side
- spl.imgType = src.imgType;
- spl.life = 0;
- spl.src = 0;
- //TriggerType trig;
- for(int i=0; iplayers.at(tw.PlayerId)->srcTowers.at(tw.src).triggers.at(src.triggerIndexes.at(i));
- switch (trig.type)
- {
- case srcTriggerType::onDestination :
- tod.src = src.triggerIndexes.at(i);
- spl.trigsOnDest.append(tod);
- break;
- case srcTriggerType::onAlienInRadius :
- toa.src = src.triggerIndexes.at(i);
- spl.trigsOnAlien.append(toa);
- break;
- case srcTriggerType::onTimer :
- tot.src = src.triggerIndexes.at(i);
- tot.timer = trig.timer;
- spl.trigsOnTimer.append(tot);
- break;
- }
-
- }
- qDebug() << "t=" << src.triggerIndexes.size() << "d=" << spl.trigsOnDest.size();
- gameData->curSplashes.insert(spl.id,spl);
- nextId++;
+ addSplash(tw.PlayerId,tw.src,0,QPointF(tw.pos+QPoint(1,1)),gameData->curAliens.value(tw.aim).pos+QPointF(0.5,0.5),tw.aim,tw.pos);
}
+ // TowerType tw = gameData->curTowers.value(curTowerId);
+ // srcSplashType src = gameData->players.at(tw.PlayerId)->srcTowers.at(tw.src).splashes.at(0);
+ // SplashType spl;
+ // spl.id = nextId;
+ // spl.TowerId = curTowerId;
+ // spl.srcTower = tw.src;
+ // spl.PlayerId = tw.PlayerId;
+ // if (!gameData->curAliens.contains(tw.aim))
+ // qFatal("Error finding splash aim! Tower has nvalid aim!");
+ // spl.destination = gameData->curAliens.value(tw.aim).pos;
+ // if (src.autoControl)
+ // spl.AlienId = tw.aim;
+ // else
+ // spl.AlienId = -1;
+ // spl.pos = tw.pos+QPointF(0.5,0.5); // FIXME: splash do not create in center or left-angle of tower, it must be in tower's side
+ // spl.angle = 180.0f*(- std::atan2(spl.pos.x() - spl.destination.x(),spl.pos.y() - spl.destination.y()))/M_PI;
+ // spl.imgType = src.imgType;
+ // spl.life = 0;
+ // spl.src = 0;
+ // //TriggerType trig;
+ // for(int i=0; iplayers.at(tw.PlayerId)->srcTowers.at(tw.src).triggers.at(src.triggerIndexes.at(i));
+ // switch (trig.type)
+ // {
+ // case srcTriggerType::onDestination :
+ // tod.src = src.triggerIndexes.at(i);
+ // spl.trigsOnDest.append(tod);
+ // break;
+ // case srcTriggerType::onAlienInRadius :
+ // toa.src = src.triggerIndexes.at(i);
+ // spl.trigsOnAlien.append(toa);
+ // break;
+ // case srcTriggerType::onTimer :
+ // tot.src = src.triggerIndexes.at(i);
+ // tot.timer = trig.timer;
+ // spl.trigsOnTimer.append(tot);
+ // break;
+ // }
+
+ // }
+ // //qDebug() << "t=" << src.triggerIndexes.size() << "d=" << spl.trigsOnDest.size();
+ // gameData->curSplashes.insert(spl.id,spl);
+ // nextId++;
+ // }
}
@@ -110,14 +129,12 @@ void Splashes::update()
QList deadIndexes;
for (int i=0; icurSplashes.size(); i++)
{
- //int curDead = -1;
float arctg,angl;
SplashType spl = gameData->curSplashes.values().at(i);
//bool isTowerSplash = false;
srcSplashType src;
- TowerType tw;
- tw = gameData->curTowers.value(spl.TowerId);
- src = gameData->players.at(tw.PlayerId)->srcTowers.at(tw.src).splashes.at(spl.src);
+ // FIXME : if splash is not tower's splash, will be some trouble
+ src = gameData->players.at(spl.PlayerId)->srcTowers.at(spl.srcTower).splashes.at(spl.src);
spl.life++;
if (spl.life > src.lifetime)
deadIndexes.append(spl.id);
@@ -128,7 +145,7 @@ void Splashes::update()
{
bool badAl = false;
if (gameData->curAliens.contains(spl.AlienId))
- spl.destination = gameData->curAliens.value(spl.AlienId).pos;
+ spl.destination = gameData->curAliens.value(spl.AlienId).pos+QPointF(0.5,0.5);
else
badAl = true;
if (distance2(spl.pos, spl.destination) < src.speed*src.speed)
@@ -141,6 +158,11 @@ void Splashes::update()
// TODO: activate trigger
srcTriggerType strig = gameData->players.at(spl.PlayerId)->srcTowers.at(spl.srcTower).triggers.at(spl.trigsOnDest.at(k).src);
if (strig.delParent) deadIndexes.push_back(spl.id);
+ if (strig.count > 0 && strig.childId > 0)
+ {
+ //qDebug("bvgbjdklbvfjldsk");
+ addSplash(spl.PlayerId,spl.srcTower,strig.childId,spl.pos,spl.destination,-1,spl.TowerId);
+ }
if (strig.damage > 0)
{
if (!(strig.radius > 0))
@@ -150,7 +172,7 @@ void Splashes::update()
float hh = gameData->curAliens[spl.AlienId].health -= strig.damage;
if (hh < 0)
gameData->curAliens.remove(spl.AlienId);
- qDebug() << "health=" << hh;
+ //qDebug() << "health=" << hh;
}
} else {
processTrigger(strig,spl.pos);
@@ -169,6 +191,24 @@ void Splashes::update()
} else {
if (!gameData->map->rect().contains(spl.pos.toPoint()))
deadIndexes.push_back(spl.id);
+ if (!spl.trigsOnDest.isEmpty())
+ {
+ if (distance2(spl.pos, spl.destination) < src.speed*src.speed)
+ {
+ spl.pos = spl.destination;
+ for (int k=0; kplayers.at(spl.PlayerId)->srcTowers.at(spl.srcTower).triggers.at(spl.trigsOnDest.at(k).src);
+ if (strig.delParent) deadIndexes.push_back(spl.id);
+ processTrigger(strig,spl.pos);
+ if (strig.count > 0 && strig.childId > 0)
+ {
+ //qDebug("bvgbjdklbvfjldsk");
+ addSplash(spl.PlayerId,spl.srcTower,strig.childId,spl.pos,spl.destination,-1,spl.TowerId);
+ }
+ }
+ }
+ }
spl.pos.setX(spl.pos.x()
-src.speed*std::sin(-spl.angle*M_PI/180.f));
spl.pos.setY(spl.pos.y()
@@ -191,7 +231,7 @@ void Splashes::delSplash(int Id)
void Splashes::processTrigger(srcTriggerType srctrig, QPointF pos)
{
- qDebug("trig proc");
+ //qDebug("trig proc");
QList dead;
for (QHash::iterator i = gameData->curAliens.begin(); i != gameData->curAliens.end(); ++i)
{
diff --git a/splashes.h b/splashes.h
index d0af155..153bad5 100644
--- a/splashes.h
+++ b/splashes.h
@@ -8,7 +8,7 @@ class Splashes : public QObject
Q_OBJECT
public:
explicit Splashes(Game_Data * gd, QObject *parent = 0);
- bool addSplash(int srcId, QPointF pos);
+ void addSplash( int player, int srcTower, int srcId, QPointF pos, QPointF dest, int aim, QPoint curTower);
void delSplash(int Id);
void update();
signals:
diff --git a/towers.cpp b/towers.cpp
index f1919db..c20feab 100644
--- a/towers.cpp
+++ b/towers.cpp
@@ -30,6 +30,7 @@ bool Towers::addTower(int playerId, int srcId, QPoint pos)
tw.build = 0;
tw.reload = 0;
tw.aim = -1;
+ tw.experience = 0;
//tw .oldAim = -1;
if (gameData->map->addTowerOnMap(playerId,pos))
{
@@ -96,6 +97,7 @@ void Towers::update()
if ((*i).aim > 0)
{
(*i).reload = 0;
+ (*i).experience += stw.expByShot;
emit shot((*i).pos);
//qDebug("shot!");
}