added morphs, fix some bugs, new images

added onAlienInRadius trigger
but it not work right((
This commit is contained in:
2011-08-21 22:22:02 +04:00
parent fa68b5a120
commit 894e55bb41
186 changed files with 4040 additions and 3022 deletions

View File

@@ -17,7 +17,9 @@ SOURCES += main.cpp \
triggermodel.cpp \
mapmodel.cpp \
animationmodel.cpp \
animlabel.cpp
animlabel.cpp \
../aliens.cpp \
../aditem.cpp
HEADERS += mainwindow.h \
../loader.h \
alienmodel.h \
@@ -30,9 +32,13 @@ HEADERS += mainwindow.h \
triggermodel.h \
mapmodel.h \
animationmodel.h \
animlabel.h
animlabel.h \
../aliens.h \
../aditem.h
FORMS += mainwindow.ui
TRANSLATIONS += adeditor_ru.ts
RESOURCES += ADeditor.qrc
OTHER_FILES += ../schema.xml \
../data2.xml

View File

@@ -1,287 +1,300 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by Qt Creator 2.2.84, 2011-08-21T21:34:49. -->
<qtcreator>
<data>
<variable>RunConfiguration0-BaseEnvironmentBase</variable>
<value type="int">2</value>
</data>
<data>
<variable>RunConfiguration0-CommandLineArguments</variable>
<valuelist type="QVariantList"/>
</data>
<data>
<variable>RunConfiguration0-ProFile</variable>
<value type="QString">ADeditor.pro</value>
</data>
<data>
<variable>RunConfiguration0-RunConfiguration.name</variable>
<value type="QString">ADeditor</value>
</data>
<data>
<variable>RunConfiguration0-UseDyldImageSuffix</variable>
<value type="bool">false</value>
</data>
<data>
<variable>RunConfiguration0-UseTerminal</variable>
<value type="bool">false</value>
</data>
<data>
<variable>RunConfiguration0-UserEnvironmentChanges</variable>
<valuelist type="QVariantList"/>
</data>
<data>
<variable>RunConfiguration0-UserSetName</variable>
<value type="bool">false</value>
</data>
<data>
<variable>RunConfiguration0-UserSetWorkingDirectory</variable>
<value type="bool">true</value>
</data>
<data>
<variable>RunConfiguration0-UserWorkingDirectory</variable>
<value type="QString">/home/andrey/AD/aliendefender</value>
</data>
<data>
<variable>RunConfiguration0-type</variable>
<value type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
</data>
<data>
<variable>activeRunConfiguration</variable>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>activebuildconfiguration</variable>
<value type="QString">Debug</value>
</data>
<data>
<variable>buildConfiguration-Debug</variable>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
<value key="QtVersionId" type="int">0</value>
<value key="ToolChain" type="int">0</value>
<value key="addQDumper" type=""></value>
<value key="buildConfiguration" type="int">2</value>
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="bool" key="AlignAssignments">false</value>
<value type="QString" key="CurrentFallback">CppGlobal</value>
<value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
<value type="bool" key="IndentAccessSpecifiers">false</value>
<value type="bool" key="IndentBlockBody">true</value>
<value type="bool" key="IndentBlockBraces">false</value>
<value type="bool" key="IndentBlocksRelativeToSwitchLabels">false</value>
<value type="bool" key="IndentClassBraces">false</value>
<value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
<value type="bool" key="IndentEnumBraces">false</value>
<value type="bool" key="IndentFunctionBody">true</value>
<value type="bool" key="IndentFunctionBraces">false</value>
<value type="bool" key="IndentNamespaceBody">false</value>
<value type="bool" key="IndentNamespaceBraces">false</value>
<value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentSwitchLabels">false</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">1</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="QString" key="EditorConfiguration.CurrentFallback">Global</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.SmartBackspace">false</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.Tab.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="bool" key="AutoIndent">true</value>
<value type="bool" key="AutoSpacesForTabs">false</value>
<value type="QString" key="CurrentFallback">CppGlobal</value>
<value type="int" key="IndentSize">4</value>
<value type="int" key="PaddingMode">1</value>
<value type="bool" key="SmartBackspace">false</value>
<value type="bool" key="SpacesForTabs">true</value>
<value type="int" key="TabKeyBehavior">0</value>
<value type="int" key="TabSize">8</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.Tab.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="bool" key="AutoIndent">true</value>
<value type="bool" key="AutoSpacesForTabs">false</value>
<value type="QString" key="CurrentFallback">QmlJSGlobal</value>
<value type="int" key="IndentSize">4</value>
<value type="int" key="PaddingMode">1</value>
<value type="bool" key="SmartBackspace">false</value>
<value type="bool" key="SpacesForTabs">true</value>
<value type="int" key="TabKeyBehavior">0</value>
<value type="int" key="TabSize">8</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.Tab.Count">2</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>buildConfiguration-Release</variable>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Release</value>
<value key="QtVersionId" type="int">0</value>
<value key="addQDumper" type=""></value>
<value key="buildConfiguration" type="int">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Target.DesktopTarget</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Mingw:D:/Qt/qtcreator-2.2.84/mingw/bin/gcc.exe.x86-windows-msys-pe-32bit.D:/Qt/qtcreator-2.2.84/pythongdb/gdb-i686-pc-mingw32.exe</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qt Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">C:/Users/Andrey/Desktop/aliendefender/ADeditor</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">7</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Mingw:D:/Qt/qtcreator-2.2.84/mingw/bin/gcc.exe.x86-windows-msys-pe-32bit.D:/Qt/qtcreator-2.2.84/pythongdb/gdb-i686-pc-mingw32.exe</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qt Релиз</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">C:/Users/Andrey/Desktop/aliendefender/ADeditor</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">7</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Установка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Без установки</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Project.UseGlobal">true</value>
<value type="bool" key="Analyzer.Project.UseGlobal">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">ADeditor</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ADeditor.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory">C:/Users/Andrey/Desktop/aliendefender</value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>buildconfiguration-Debug-buildstep0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
<valuelist key="abstractProcess.Environment" type="QVariantList">
<value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-2HAd2azpnh,guid=fd81c6d6610b4c57717ec20c4c90d3de</value>
<value type="QString">DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</value>
<value type="QString">DESKTOP_SESSION=gnome</value>
<value type="QString">DISPLAY=:0.0</value>
<value type="QString">GDMSESSION=gnome</value>
<value type="QString">GDM_KEYBOARD_LAYOUT=us</value>
<value type="QString">GDM_LANG=ru_RU.UTF-8</value>
<value type="QString">GNOME_DESKTOP_SESSION_ID=this-is-deprecated</value>
<value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-vNW3fv</value>
<value type="QString">GTK_MODULES=canberra-gtk-module</value>
<value type="QString">HOME=/home/andrey</value>
<value type="QString">LANG=ru_RU.UTF-8</value>
<value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator:</value>
<value type="QString">LOGNAME=andrey</value>
<value type="QString">MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path</value>
<value type="QString">ORBIT_SOCKETDIR=/tmp/orbit-andrey</value>
<value type="QString">PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</value>
<value type="QString">PWD=/home/andrey</value>
<value type="QString">QTDIR=/usr/share/qt4</value>
<value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1158,unix/buull-eeePC:/tmp/.ICE-unix/1158</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SPEECHD_PORT=6561</value>
<value type="QString">SSH_AGENT_PID=1195</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-vNW3fv/ssh</value>
<value type="QString">USER=andrey</value>
<value type="QString">USERNAME=andrey</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-Len9P0/database</value>
<value type="QString">XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</value>
<value type="QString">XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</value>
<value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1284559837.801731-819619931</value>
</valuelist>
<valuelist key="abstractProcess.arguments" type="QVariantList">
<value type="QString">/home/andrey/AD/aliendefender/ADeditor/ADeditor.pro</value>
<value type="QString">-spec</value>
<value type="QString">linux-g++</value>
<value type="QString">-r</value>
<value type="QString">CONFIG+=debug</value>
</valuelist>
<value key="abstractProcess.command" type="QString">/usr/bin/qmake-qt4</value>
<value key="abstractProcess.enabled" type="bool">false</value>
<value key="abstractProcess.workingDirectory" type="QString">/home/andrey/AD/aliendefender/ADeditor</value>
</valuemap>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>buildconfiguration-Debug-buildstep1</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
<valuelist key="abstractProcess.Environment" type="QVariantList">
<value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-2HAd2azpnh,guid=fd81c6d6610b4c57717ec20c4c90d3de</value>
<value type="QString">DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</value>
<value type="QString">DESKTOP_SESSION=gnome</value>
<value type="QString">DISPLAY=:0.0</value>
<value type="QString">GDMSESSION=gnome</value>
<value type="QString">GDM_KEYBOARD_LAYOUT=us</value>
<value type="QString">GDM_LANG=ru_RU.UTF-8</value>
<value type="QString">GNOME_DESKTOP_SESSION_ID=this-is-deprecated</value>
<value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-vNW3fv</value>
<value type="QString">GTK_MODULES=canberra-gtk-module</value>
<value type="QString">HOME=/home/andrey</value>
<value type="QString">LANG=ru_RU.UTF-8</value>
<value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator:</value>
<value type="QString">LOGNAME=andrey</value>
<value type="QString">MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path</value>
<value type="QString">ORBIT_SOCKETDIR=/tmp/orbit-andrey</value>
<value type="QString">PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</value>
<value type="QString">PWD=/home/andrey</value>
<value type="QString">QTDIR=/usr/share/qt4</value>
<value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1158,unix/buull-eeePC:/tmp/.ICE-unix/1158</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SPEECHD_PORT=6561</value>
<value type="QString">SSH_AGENT_PID=1195</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-vNW3fv/ssh</value>
<value type="QString">USER=andrey</value>
<value type="QString">USERNAME=andrey</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-Len9P0/database</value>
<value type="QString">XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</value>
<value type="QString">XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</value>
<value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1284559837.801731-819619931</value>
</valuelist>
<value key="abstractProcess.IgnoreReturnValue" type="bool">false</value>
<valuelist key="abstractProcess.arguments" type="QVariantList">
<value type="QString">-j2</value>
<value type="QString">-w</value>
</valuelist>
<value key="abstractProcess.command" type="QString">/usr/bin/make</value>
<value key="abstractProcess.enabled" type="bool">true</value>
<value key="abstractProcess.workingDirectory" type="QString">/home/andrey/AD/aliendefender/ADeditor</value>
<valuelist key="makeargs" type="QVariantList">
<value type="QString">-j2</value>
</valuelist>
</valuemap>
<variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
<value type="QString">{6c550070-c96c-41ad-865e-c5b9b5c3b79f}</value>
</data>
<data>
<variable>buildconfiguration-Debug-cleanstep0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
<valuelist key="abstractProcess.Environment" type="QVariantList">
<value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wExeabp7q4,guid=18815993df3603fdc64a3f6d4c7b5822</value>
<value type="QString">DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</value>
<value type="QString">DESKTOP_SESSION=gnome</value>
<value type="QString">DISPLAY=:0.0</value>
<value type="QString">GDMSESSION=gnome</value>
<value type="QString">GDM_KEYBOARD_LAYOUT=us</value>
<value type="QString">GDM_LANG=ru_RU.UTF-8</value>
<value type="QString">GNOME_DESKTOP_SESSION_ID=this-is-deprecated</value>
<value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-4vN5uf</value>
<value type="QString">GTK_MODULES=canberra-gtk-module</value>
<value type="QString">HOME=/home/andrey</value>
<value type="QString">LANG=ru_RU.UTF-8</value>
<value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator:</value>
<value type="QString">LOGNAME=andrey</value>
<value type="QString">MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path</value>
<value type="QString">ORBIT_SOCKETDIR=/tmp/orbit-andrey</value>
<value type="QString">PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</value>
<value type="QString">PWD=/home/andrey</value>
<value type="QString">QTDIR=/usr/share/qt4</value>
<value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1205,unix/buull-eeePC:/tmp/.ICE-unix/1205</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SPEECHD_PORT=6561</value>
<value type="QString">SSH_AGENT_PID=1239</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-4vN5uf/ssh</value>
<value type="QString">USER=andrey</value>
<value type="QString">USERNAME=andrey</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-x9URui/database</value>
<value type="QString">XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</value>
<value type="QString">XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</value>
<value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283151906.338331-318132279</value>
</valuelist>
<value key="abstractProcess.IgnoreReturnValue" type="bool">true</value>
<valuelist key="abstractProcess.arguments" type="QVariantList">
<value type="QString">clean</value>
<value type="QString">-w</value>
</valuelist>
<value key="abstractProcess.command" type="QString">/usr/bin/make</value>
<value key="abstractProcess.enabled" type="bool">true</value>
<value key="abstractProcess.workingDirectory" type="QString">/home/andrey/AD/aliendefender/ADeditor</value>
<value key="cleanConfig" type="bool">true</value>
<valuelist key="makeargs" type="QVariantList">
<value type="QString">clean</value>
</valuelist>
</valuemap>
</data>
<data>
<variable>buildconfiguration-Release-buildstep0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Release</value>
</valuemap>
</data>
<data>
<variable>buildconfiguration-Release-buildstep1</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Release</value>
</valuemap>
</data>
<data>
<variable>buildconfiguration-Release-cleanstep0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Release</value>
</valuemap>
</data>
<data>
<variable>buildconfigurations</variable>
<valuelist type="QVariantList">
<value type="QString">Debug</value>
<value type="QString">Release</value>
</valuelist>
</data>
<data>
<variable>buildstep0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString"></value>
<value key="mkspec" type="QString"></value>
</valuemap>
</data>
<data>
<variable>buildstep1</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString"></value>
</valuemap>
</data>
<data>
<variable>buildsteps</variable>
<valuelist type="QVariantList">
<value type="QString">trolltech.qt4projectmanager.qmake</value>
<value type="QString">trolltech.qt4projectmanager.make</value>
</valuelist>
</data>
<data>
<variable>cleanstep0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString"></value>
<value key="clean" type="bool">true</value>
</valuemap>
</data>
<data>
<variable>cleansteps</variable>
<valuelist type="QVariantList">
<value type="QString">trolltech.qt4projectmanager.make</value>
</valuelist>
</data>
<data>
<variable>defaultFileEncoding</variable>
<value type="QByteArray">UTF-8</value>
</data>
<data>
<variable>project</variable>
<valuemap type="QVariantMap"/>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">10</value>
</data>
</qtcreator>

View File

@@ -34,11 +34,11 @@
</data>
<data>
<variable>RunConfiguration0-UserSetWorkingDirectory</variable>
<value type="bool">false</value>
<value type="bool">true</value>
</data>
<data>
<variable>RunConfiguration0-UserWorkingDirectory</variable>
<value type="QString"></value>
<value type="QString">/home/andrey/AD/aliendefender</value>
</data>
<data>
<variable>RunConfiguration0-type</variable>
@@ -76,7 +76,7 @@
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
<valuelist key="abstractProcess.Environment" type="QVariantList">
<value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-7vJZaf9AwI,guid=f26a2301f932cefdec6dd3bc4c79669f</value>
<value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-2HAd2azpnh,guid=fd81c6d6610b4c57717ec20c4c90d3de</value>
<value type="QString">DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</value>
<value type="QString">DESKTOP_SESSION=gnome</value>
<value type="QString">DISPLAY=:0.0</value>
@@ -84,7 +84,7 @@
<value type="QString">GDM_KEYBOARD_LAYOUT=us</value>
<value type="QString">GDM_LANG=ru_RU.UTF-8</value>
<value type="QString">GNOME_DESKTOP_SESSION_ID=this-is-deprecated</value>
<value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-U899U4</value>
<value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-vNW3fv</value>
<value type="QString">GTK_MODULES=canberra-gtk-module</value>
<value type="QString">HOME=/home/andrey</value>
<value type="QString">LANG=ru_RU.UTF-8</value>
@@ -95,17 +95,17 @@
<value type="QString">PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</value>
<value type="QString">PWD=/home/andrey</value>
<value type="QString">QTDIR=/usr/share/qt4</value>
<value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1236,unix/buull-eeePC:/tmp/.ICE-unix/1236</value>
<value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1158,unix/buull-eeePC:/tmp/.ICE-unix/1158</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SPEECHD_PORT=6561</value>
<value type="QString">SSH_AGENT_PID=1270</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-U899U4/ssh</value>
<value type="QString">SSH_AGENT_PID=1195</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-vNW3fv/ssh</value>
<value type="QString">USER=andrey</value>
<value type="QString">USERNAME=andrey</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-6T6AjI/database</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-Len9P0/database</value>
<value type="QString">XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</value>
<value type="QString">XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</value>
<value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283024543.354844-1194058895</value>
<value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1284559837.801731-819619931</value>
</valuelist>
<valuelist key="abstractProcess.arguments" type="QVariantList">
<value type="QString">/home/andrey/AD/aliendefender/ADeditor/ADeditor.pro</value>
@@ -124,7 +124,7 @@
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
<valuelist key="abstractProcess.Environment" type="QVariantList">
<value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-7vJZaf9AwI,guid=f26a2301f932cefdec6dd3bc4c79669f</value>
<value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-2HAd2azpnh,guid=fd81c6d6610b4c57717ec20c4c90d3de</value>
<value type="QString">DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</value>
<value type="QString">DESKTOP_SESSION=gnome</value>
<value type="QString">DISPLAY=:0.0</value>
@@ -132,7 +132,7 @@
<value type="QString">GDM_KEYBOARD_LAYOUT=us</value>
<value type="QString">GDM_LANG=ru_RU.UTF-8</value>
<value type="QString">GNOME_DESKTOP_SESSION_ID=this-is-deprecated</value>
<value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-U899U4</value>
<value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-vNW3fv</value>
<value type="QString">GTK_MODULES=canberra-gtk-module</value>
<value type="QString">HOME=/home/andrey</value>
<value type="QString">LANG=ru_RU.UTF-8</value>
@@ -143,25 +143,29 @@
<value type="QString">PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</value>
<value type="QString">PWD=/home/andrey</value>
<value type="QString">QTDIR=/usr/share/qt4</value>
<value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1236,unix/buull-eeePC:/tmp/.ICE-unix/1236</value>
<value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1158,unix/buull-eeePC:/tmp/.ICE-unix/1158</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SPEECHD_PORT=6561</value>
<value type="QString">SSH_AGENT_PID=1270</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-U899U4/ssh</value>
<value type="QString">SSH_AGENT_PID=1195</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-vNW3fv/ssh</value>
<value type="QString">USER=andrey</value>
<value type="QString">USERNAME=andrey</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-6T6AjI/database</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-Len9P0/database</value>
<value type="QString">XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</value>
<value type="QString">XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</value>
<value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283024543.354844-1194058895</value>
<value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1284559837.801731-819619931</value>
</valuelist>
<value key="abstractProcess.IgnoreReturnValue" type="bool">false</value>
<valuelist key="abstractProcess.arguments" type="QVariantList">
<value type="QString">-j2</value>
<value type="QString">-w</value>
</valuelist>
<value key="abstractProcess.command" type="QString">/usr/bin/make</value>
<value key="abstractProcess.enabled" type="bool">true</value>
<value key="abstractProcess.workingDirectory" type="QString">/home/andrey/AD/aliendefender/ADeditor</value>
<valuelist key="makeargs" type="QVariantList">
<value type="QString">-j2</value>
</valuelist>
</valuemap>
</data>
<data>
@@ -169,7 +173,7 @@
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
<valuelist key="abstractProcess.Environment" type="QVariantList">
<value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-7vJZaf9AwI,guid=f26a2301f932cefdec6dd3bc4c79669f</value>
<value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wExeabp7q4,guid=18815993df3603fdc64a3f6d4c7b5822</value>
<value type="QString">DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</value>
<value type="QString">DESKTOP_SESSION=gnome</value>
<value type="QString">DISPLAY=:0.0</value>
@@ -177,7 +181,7 @@
<value type="QString">GDM_KEYBOARD_LAYOUT=us</value>
<value type="QString">GDM_LANG=ru_RU.UTF-8</value>
<value type="QString">GNOME_DESKTOP_SESSION_ID=this-is-deprecated</value>
<value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-U899U4</value>
<value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-4vN5uf</value>
<value type="QString">GTK_MODULES=canberra-gtk-module</value>
<value type="QString">HOME=/home/andrey</value>
<value type="QString">LANG=ru_RU.UTF-8</value>
@@ -188,17 +192,17 @@
<value type="QString">PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</value>
<value type="QString">PWD=/home/andrey</value>
<value type="QString">QTDIR=/usr/share/qt4</value>
<value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1236,unix/buull-eeePC:/tmp/.ICE-unix/1236</value>
<value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1205,unix/buull-eeePC:/tmp/.ICE-unix/1205</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SPEECHD_PORT=6561</value>
<value type="QString">SSH_AGENT_PID=1270</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-U899U4/ssh</value>
<value type="QString">SSH_AGENT_PID=1239</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-4vN5uf/ssh</value>
<value type="QString">USER=andrey</value>
<value type="QString">USERNAME=andrey</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-6T6AjI/database</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-x9URui/database</value>
<value type="QString">XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</value>
<value type="QString">XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</value>
<value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283024543.354844-1194058895</value>
<value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283151906.338331-318132279</value>
</valuelist>
<value key="abstractProcess.IgnoreReturnValue" type="bool">true</value>
<valuelist key="abstractProcess.arguments" type="QVariantList">
@@ -274,7 +278,7 @@
</data>
<data>
<variable>defaultFileEncoding</variable>
<value type="QByteArray">System</value>
<value type="QByteArray">UTF-8</value>
</data>
<data>
<variable>project</variable>

View File

@@ -10,4 +10,7 @@
<file>icons/view-refresh.png</file>
<file>icons/edit.png</file>
</qresource>
<qresource prefix="/">
<file>../schema.xml</file>
</qresource>
</RCC>

View File

@@ -1,35 +1,42 @@
#include "animationmodel.h"
AnimationModel::AnimationModel(QList <tbAnimation> manims, QObject *parent) :
QAbstractListModel(parent)
AnimationModel::AnimationModel(QHash <int,tbAnimation> &manims, QObject *parent) :
QAbstractListModel(parent), anims(manims)
{
anims = manims;
// anims = manims;
}
void AnimationModel::refresh(QList<tbAnimation>manims)
{
anims = manims;
}
//void AnimationModel::refresh(QList<tbAnimation>manims)
//{
// anims = manims;
//}
int AnimationModel::rowCount(const QModelIndex &) const
{
return anims.count();
return anims.count();
}
QVariant AnimationModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (index.row() >= anims.size())
return QVariant();
if (role == Qt::DisplayRole)
{
return anims.at(index.row()).id;
}
return QVariant();
if (!index.isValid()) return QVariant();
if (index.row() >= anims.size()) return QVariant();
if (role == Qt::DisplayRole)
return tr("(%1) ").arg(anims.values().at(index.row()).id) + anims[anims.values().at(index.row()).id].name;
if (role == Qt::EditRole)
return anims[anims.values().at(index.row()).id].name;
return QVariant();
}
bool AnimationModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (role != Qt::EditRole) return false;
if (!index.isValid()) return false;
if (index.row() >= anims.size()) return false;
anims[anims.values().at(index.row()).id].name = value.toString();
emit dataChanged(index, index);
return true;
}

View File

@@ -8,17 +8,18 @@ class AnimationModel : public QAbstractListModel
{
Q_OBJECT
public:
explicit AnimationModel(QList <tbAnimation> anims, QObject *parent = 0);
int rowCount(const QModelIndex &parent = QModelIndex()) const;
QVariant data(const QModelIndex &index, int role) const;
void refresh(QList <tbAnimation> anims);
explicit AnimationModel(QHash <int,tbAnimation> &anims, QObject *parent = 0);
int rowCount(const QModelIndex &parent = QModelIndex()) const;
QVariant data(const QModelIndex &index, int role) const;
// void refresh(QList <tbAnimation> &anims);
Qt::ItemFlags flags(const QModelIndex &) const {return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable;}
bool setData(const QModelIndex &index, const QVariant &value, int role);
signals:
public slots:
private:
QList <tbAnimation> anims;
QHash <int,tbAnimation> &anims;
};
#endif // ANIMATIONMODEL_H

View File

@@ -6,1180 +6,1277 @@
#include <QSettings>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->pbSave->setIcon(QIcon::fromTheme("document-save", QIcon(":/icons/icons/document-save.png")));
ui->pbReload->setIcon(QIcon::fromTheme("edit-undo", QIcon(":/icons/icons/edit-undo.png")));
ui->pbAlAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbAlDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbTrigAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbTrigDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbTwAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbTwDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbMapAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbMapDelete->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbSplAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbSlpDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbAnimAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbAnimDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbImgAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbImgDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbTwSplashEdit->setIcon(QIcon::fromTheme("edit", QIcon(":/icons/icons/edit.png")));
ui->pbMapEdit->setIcon(QIcon::fromTheme("edit", QIcon(":/icons/icons/edit.png")));
adloader = new Loader(this);
adloader->load("data2.xml");
ui->setupUi(this);
ui->pbSave->setIcon(QIcon::fromTheme("document-save", QIcon(":/icons/icons/document-save.png")));
ui->pbReload->setIcon(QIcon::fromTheme("edit-undo", QIcon(":/icons/icons/edit-undo.png")));
ui->pbAlAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbAlDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbTrigAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbTrigDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbTwAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbTwDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbMapAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbMapDelete->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbSplAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbSlpDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbAnimAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbAnimDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbImgAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbImgDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbTwSplashEdit->setIcon(QIcon::fromTheme("edit", QIcon(":/icons/icons/edit.png")));
ui->pbMapEdit->setIcon(QIcon::fromTheme("edit", QIcon(":/icons/icons/edit.png")));
adloader = new Loader(this);
adloader->load("data2.xml");
animModel = new AnimationModel(adloader->animations.values());
ui->lvAnimations->setModel((QAbstractItemModel * )animModel);
connect(ui->lvAnimations->selectionModel(),SIGNAL(currentChanged(QModelIndex,QModelIndex)),this,SLOT(lvAnimations_select(QModelIndex, QModelIndex)));
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
animModel = new AnimationModel(adloader->animations);
ui->lvAnimations->setModel((QAbstractItemModel * )animModel);
connect(ui->lvAnimations->selectionModel(),SIGNAL(currentChanged(QModelIndex,QModelIndex)),this,SLOT(lvAnimations_select(QModelIndex, QModelIndex)));
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
mapScene = new QGraphicsScene();
ui->gvMap->setScene(mapScene);
ui->gvMap->scale(10,10);
mapScene = new QGraphicsScene();
ui->gvMap->setScene(mapScene);
ui->gvMap->scale(10,10);
mapModel = new MapModel(adloader->maps.values());
ui->lvMaps->setModel((QAbstractItemModel * )mapModel);
connect(ui->lvMaps->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvMaps_select(QModelIndex, QModelIndex)));
ui->lvMaps->selectionModel()->setCurrentIndex(ui->lvMaps->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
mapModel = new MapModel(adloader->maps.values());
ui->lvMaps->setModel((QAbstractItemModel * )mapModel);
connect(ui->lvMaps->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvMaps_select(QModelIndex, QModelIndex)));
ui->lvMaps->selectionModel()->setCurrentIndex(ui->lvMaps->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
alModel = new AlienModel(adloader->aliens.values());
ui->lvAliens->setModel((QAbstractItemModel * )alModel);
ui->cbAlImage->setModel((QAbstractItemModel * )animModel);
connect(ui->lvAliens->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvAliens_select(QModelIndex, QModelIndex)));
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
alModel = new AlienModel(adloader->aliens.values());
ui->lvAliens->setModel((QAbstractItemModel * )alModel);
ui->cbAlImage->setModel((QAbstractItemModel * )animModel);
connect(ui->lvAliens->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvAliens_select(QModelIndex, QModelIndex)));
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
splModel = new SplashModel(adloader->splashes.values());
ui->lvSplashes->setModel((QAbstractItemModel * )splModel);
ui->cbSplImage->setModel((QAbstractItemModel * )animModel);
connect(ui->lvSplashes->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvSplashes_select(QModelIndex, QModelIndex)));
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
splModel = new SplashModel(adloader->splashes.values());
ui->lvSplashes->setModel((QAbstractItemModel * )splModel);
ui->cbSplImage->setModel((QAbstractItemModel * )animModel);
connect(ui->lvSplashes->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvSplashes_select(QModelIndex, QModelIndex)));
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
twModel = new TowerModel(adloader->towers.values());
ui->lvTowers->setModel((QAbstractItemModel * )twModel);
ui->cbTwSplash->setModel((QAbstractItemModel * )splModel);
ui->cbTwImage->setModel((QAbstractItemModel * )animModel);
connect(ui->lvTowers->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvTowers_select(QModelIndex, QModelIndex)));
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
twModel = new TowerModel(adloader->towers.values());
ui->lvTowers->setModel((QAbstractItemModel * )twModel);
ui->cbTwSplash->setModel((QAbstractItemModel * )splModel);
ui->cbTwImage->setModel((QAbstractItemModel * )animModel);
connect(ui->lvTowers->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvTowers_select(QModelIndex, QModelIndex)));
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
trigModel = new TriggerModel(adloader->triggers.values());
ui->lvTriggers->setModel((QAbstractItemModel * )trigModel);
connect(ui->lvTriggers->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvTriggers_select(QModelIndex,QModelIndex)));
ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->cbTrigChildAim->addItem(tr("no aim"),QVariant(srcTriggerType::noAim));
ui->cbTrigChildAim->addItem(tr("random side"),QVariant(srcTriggerType::allSide));
ui->cbTrigChildAim->addItem(tr("parent aim"),QVariant(srcTriggerType::parentAim));
ui->cbTrigChildAim->addItem(tr("nearlest alien"),QVariant(srcTriggerType::nearlestAlien));
ui->cbTrigType->addItem(tr("on destination"),QVariant(srcTriggerType::onDestination));
ui->cbTrigType->addItem(tr("on alien in radius"),QVariant(srcTriggerType::onAlienInRadius));
ui->cbTrigType->addItem(tr("on timer"),QVariant(srcTriggerType::onTimer));
isSaved = true;
QSettings sett("Alien_Defender","aliendefender");
this->restoreGeometry(sett.value("session/geometry").toByteArray());
this->restoreState(sett.value("session/mainwindow").toByteArray());
ui->splitter->restoreState(sett.value("session/split1").toByteArray());
ui->splitter_2->restoreState(sett.value("session/split2").toByteArray());
ui->splitter_3->restoreState(sett.value("session/split3").toByteArray());
ui->splitter_4->restoreState(sett.value("session/split4").toByteArray());
ui->splitter_5->restoreState(sett.value("session/split5").toByteArray());
ui->splitter_6->restoreState(sett.value("session/split6").toByteArray());
ui->tabWidget->setCurrentIndex(sett.value("session/tab").toInt());
//alb = new AnimLabel();
//ui->verticalLayout->addWidget(alb);
//alb->setAnimation(adloader->animations.value(1).pathes);
trigModel = new TriggerModel(adloader->triggers.values());
ui->lvTriggers->setModel((QAbstractItemModel * )trigModel);
connect(ui->lvTriggers->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvTriggers_select(QModelIndex,QModelIndex)));
ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->cbTrigChildAim->addItem(tr("no aim"),QVariant(srcTriggerType::noAim));
ui->cbTrigChildAim->addItem(tr("random side"),QVariant(srcTriggerType::allSide));
ui->cbTrigChildAim->addItem(tr("parent aim"),QVariant(srcTriggerType::parentAim));
ui->cbTrigChildAim->addItem(tr("nearest alien"),QVariant(srcTriggerType::nearestAlien));
ui->cbTrigType->addItem(tr("on destination"),QVariant(srcTriggerType::onDestination));
ui->cbTrigType->addItem(tr("on alien in radius"),QVariant(srcTriggerType::onAlienInRadius));
ui->cbTrigType->addItem(tr("on timer"),QVariant(srcTriggerType::onTimer));
isSaved = true;
QSettings sett("Alien_Defender","aliendefender");
this->restoreGeometry(sett.value("session/geometry").toByteArray());
this->restoreState(sett.value("session/mainwindow").toByteArray());
ui->splitter->restoreState(sett.value("session/split1").toByteArray());
ui->splitter_2->restoreState(sett.value("session/split2").toByteArray());
ui->splitter_3->restoreState(sett.value("session/split3").toByteArray());
ui->splitter_4->restoreState(sett.value("session/split4").toByteArray());
ui->splitter_5->restoreState(sett.value("session/split5").toByteArray());
ui->splitter_6->restoreState(sett.value("session/split6").toByteArray());
ui->tabWidget->setCurrentIndex(sett.value("session/tab").toInt());
//alb = new AnimLabel();
//ui->verticalLayout->addWidget(alb);
//alb->setAnimation(adloader->animations.value(1).pathes);
}
MainWindow::~MainWindow()
{
delete ui;
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::on_cbAlArmor_toggled(bool checked)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].armor;
ui->sbAlArmor->setEnabled(checked);
if (checked) adloader->aliens[id].armor = ui->sbAlArmor->value();
else adloader->aliens[id].armor = 0;
if (lval != adloader->aliens[id].armor) isSaved = false;
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].armor;
ui->sbAlArmor->setEnabled(checked);
if (checked) adloader->aliens[id].armor = ui->sbAlArmor->value();
else adloader->aliens[id].armor = 0;
if (lval != adloader->aliens[id].armor) isSaved = false;
}
void MainWindow::on_cbAlRegeneration_toggled(bool checked)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].regeneration;
ui->sbAlregeneration->setEnabled(checked);
if (checked) adloader->aliens[id].regeneration = ui->sbAlregeneration->value();
else adloader->aliens[id].regeneration = 0;
if (lval != adloader->aliens[id].regeneration) isSaved = false;
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].regeneration;
ui->sbAlregeneration->setEnabled(checked);
if (checked) adloader->aliens[id].regeneration = ui->sbAlregeneration->value();
else adloader->aliens[id].regeneration = 0;
if (lval != adloader->aliens[id].regeneration) isSaved = false;
}
void MainWindow::lvAnimations_select(QModelIndex index, QModelIndex)
{
if (index.isValid())
{
ui->lwImages->clear();
refresh_lwImages(adloader->animations.values().at(index.row()).pathes);
}
if (index.isValid())
{
ui->lwImages->clear();
refresh_lwImages(adloader->animations.values().at(index.row()).pathes);
}
}
void MainWindow::lvAliens_select(QModelIndex index, QModelIndex)
{
if (index.isValid())
{
tbAlien al = adloader->aliens.values().at(index.row());
ui->leAlName->setText(al.name);
ui->sbAlHealth->setValue(al.health);
ui->sbAlArmor->setValue(al.armor);
if (al.armor > 0) ui->cbAlArmor->setChecked(true);
else ui->cbAlArmor->setChecked(false);
ui->sbAlSpeed->setValue(al.speed);
ui->sbAlPrise->setValue(al.prise);
ui->sbAlregeneration->setValue(al.regeneration);
if (al.regeneration > 0) ui->cbAlRegeneration->setChecked(true);
else ui->cbAlRegeneration->setChecked(false);
ui->sbAlScore->setValue(al.score);
ui->cbAlIsFly->setChecked(al.isFlying);
ui->cbAlImage->setCurrentIndex(adloader->animations.keys().indexOf(al.imgType));
ui->lbAlAnim->setAnimation(adloader->animations.value(al.imgType).pathes);
}
if (index.isValid())
{
tbAlien al = adloader->aliens.values().at(index.row());
ui->leAlName->setText(al.name);
ui->sbAlHealth->setValue(al.health);
ui->sbAlArmor->setValue(al.armor);
if (al.armor > 0) ui->cbAlArmor->setChecked(true);
else ui->cbAlArmor->setChecked(false);
ui->sbAlSpeed->setValue(al.speed);
ui->sbAlPrise->setValue(al.prise);
ui->sbAlregeneration->setValue(al.regeneration);
if (al.regeneration > 0) ui->cbAlRegeneration->setChecked(true);
else ui->cbAlRegeneration->setChecked(false);
ui->sbAlScore->setValue(al.score);
ui->cbAlIsFly->setChecked(al.isFlying);
ui->cbAlImage->setCurrentIndex(adloader->animations.keys().indexOf(al.imgType));
ui->lbAlAnim->setAnimation(adloader->animations.value(al.imgType).pathes);
}
}
void MainWindow::lvMaps_select(QModelIndex index, QModelIndex)
{
if (index.isValid())
{
tbMap map = adloader->maps.values().at(index.row());
ui->leMapName->setText(map.name);
ui->sbMapHei->setValue(map.size.height());
ui->sbMapWid->setValue(map.size.width());
ui->sbMapPlayers->setValue(map.maxPlayers);
Map m(map.data,map.size,map.name,map.maxPlayers,map.imgType);
QPixmap pix(map.size);
QPainter p(&pix);
p.fillRect(m.rect(),Qt::white);
for (int i=0; i<m.cells().size(); i++) {
for (int j=0; j<m.cells().at(i).size(); j++) {
QPen pen;
pen.setColor(Qt::white);
int cel = m.cells().at(i).at(j);
if (cel == Map::Wall)
pen.setColor(Qt::black);
if (cel >= Map::Free || (cel <= Map::PlayerTower && cel !=Map::Wall))
pen.setColor(QColor(qAbs(cel+2)*345%255,(qAbs(cel+2)*721)%255,(qAbs(cel+2)*75)%255,200));
p.setPen(pen);
p.drawPoint(i,j);
}
}
p.end();
mapScene->clear();
mapScene->addPixmap(pix);
ui->gvMap->centerOn(0,0);
//ui->gvMap->resetCachedContent();
//ui->pbMapEdit->setIcon(QIcon(pix));
}
if (index.isValid())
{
tbMap map = adloader->maps.values().at(index.row());
ui->leMapName->setText(map.name);
ui->sbMapHei->setValue(map.size.height());
ui->sbMapWid->setValue(map.size.width());
ui->sbMapPlayers->setValue(map.maxPlayers);
Map m(map.data,map.size,map.name,map.maxPlayers,map.imgType);
QPixmap pix(map.size);
QPainter p(&pix);
p.fillRect(m.rect(),Qt::white);
for (int i=0; i<m.cells().size(); i++) {
for (int j=0; j<m.cells().at(i).size(); j++) {
QPen pen;
pen.setColor(Qt::white);
int cel = m.cells().at(i).at(j);
if (cel == Map::Wall)
pen.setColor(Qt::black);
if (cel >= Map::Free || (cel <= Map::PlayerTower && cel !=Map::Wall))
pen.setColor(QColor(qAbs(cel+2)*345%255,(qAbs(cel+2)*721)%255,(qAbs(cel+2)*75)%255,200));
p.setPen(pen);
p.drawPoint(i,j);
}
}
p.end();
mapScene->clear();
mapScene->addPixmap(pix);
ui->gvMap->centerOn(0,0);
//ui->gvMap->resetCachedContent();
//ui->pbMapEdit->setIcon(QIcon(pix));
}
}
void MainWindow::lvTowers_select(QModelIndex index, QModelIndex)
{
if (index.isValid())
{
tbTower tw = adloader->towers.values().at(index.row());
ui->sbTwBuildTime->setValue(tw.buildTime);
ui->sbTwCost->setValue(tw.cost);
ui->sbTwExpByDam->setValue(tw.expByDamage);
if (tw.expByDamage > 0)
ui->cbTwExpByDam->setChecked(true);
else
ui->cbTwExpByDam->setChecked(false);
ui->sbTwExpByKill->setValue(tw.expByKill);
if (tw.expByKill > 0)
ui->cbTwExpByKill->setChecked(true);
else
ui->cbTwExpByKill->setChecked(false);
ui->sbTwExpByShot->setValue(tw.expByShot);
if (tw.expByShot > 0)
ui->cbTwExpByShot->setChecked(true);
else
ui->cbTwExpByShot->setChecked(false);
ui->leTwName->setText(tw.name);
ui->sbTwRadius->setValue(tw.radius);
ui->sbTwReload->setValue(tw.reload);
ui->cbTwSplash->setCurrentIndex(adloader->splashes.keys().indexOf(tw.splashId));
ui->cbTwImage->setCurrentIndex(adloader->animations.keys().indexOf(tw.imgType));
ui->lbTwAnim->setAnimation(adloader->animations.value(tw.imgType).pathes);
}
if (index.isValid())
{
tbTower tw = adloader->towers.values().at(index.row());
ui->sbTwBuildTime->setValue(tw.buildTime);
ui->sbTwCost->setValue(tw.cost);
ui->sbTwExpByDam->setValue(tw.expByDamage);
if (tw.expByDamage > 0)
ui->cbTwExpByDam->setChecked(true);
else
ui->cbTwExpByDam->setChecked(false);
ui->sbTwExpByKill->setValue(tw.expByKill);
if (tw.expByKill > 0)
ui->cbTwExpByKill->setChecked(true);
else
ui->cbTwExpByKill->setChecked(false);
ui->sbTwExpByShot->setValue(tw.expByShot);
if (tw.expByShot > 0)
ui->cbTwExpByShot->setChecked(true);
else
ui->cbTwExpByShot->setChecked(false);
ui->leTwName->setText(tw.name);
ui->sbTwRadius->setValue(tw.radius);
ui->sbTwReload->setValue(tw.reload);
ui->cbTwSplash->setCurrentIndex(adloader->splashes.keys().indexOf(tw.splashId));
ui->cbTwImage->setCurrentIndex(adloader->animations.keys().indexOf(tw.imgType));
ui->lbTwAnim->setAnimation(adloader->animations.value(tw.imgType).pathes);
}
}
void MainWindow::lvSplashes_select(QModelIndex index, QModelIndex)
{
if (index.isValid())
{
tbSplash spl = adloader->splashes.values().at(index.row());
ui->sbSplLifeTime->setValue(spl.lifetime);
ui->sbSplSpeed->setValue(spl.speed);
ui->cbSplAutoControl->setChecked(spl.autoControl);
ui->leSplName->setText(spl.name);
ui->cbSplImage->setCurrentIndex(adloader->animations.keys().indexOf(spl.imgType));
ui->lbSplAnim->setAnimation(adloader->animations.value(spl.imgType).pathes);
}
if (index.isValid())
{
tbSplash spl = adloader->splashes.values().at(index.row());
ui->sbSplLifeTime->setValue(spl.lifetime);
ui->sbSplSpeed->setValue(spl.speed);
ui->cbSplAutoControl->setChecked(spl.autoControl);
ui->cbSplKeepOnAlien->setChecked(spl.keepOnAlien);
ui->leSplName->setText(spl.name);
ui->cbSplImage->setCurrentIndex(adloader->animations.keys().indexOf(spl.imgType));
ui->lbSplAnim->setAnimation(adloader->animations.value(spl.imgType).pathes);
switch (spl.compositionMode)
{
case QPainter::RasterOp_NotSource :
ui->cbSplCompisitionMode->setCurrentIndex(1);
break;
case QPainter::CompositionMode_Plus :
ui->cbSplCompisitionMode->setCurrentIndex(2);
break;
case QPainter::CompositionMode_Multiply :
ui->cbSplCompisitionMode->setCurrentIndex(3);
break;
case QPainter::CompositionMode_Screen :
ui->cbSplCompisitionMode->setCurrentIndex(4);
break;
case QPainter::CompositionMode_Darken :
ui->cbSplCompisitionMode->setCurrentIndex(5);
break;
case QPainter::CompositionMode_Lighten :
ui->cbSplCompisitionMode->setCurrentIndex(6);
break;
case QPainter::CompositionMode_ColorDodge :
ui->cbSplCompisitionMode->setCurrentIndex(7);
break;
case QPainter::CompositionMode_ColorBurn :
ui->cbSplCompisitionMode->setCurrentIndex(8);
break;
case QPainter::CompositionMode_HardLight :
ui->cbSplCompisitionMode->setCurrentIndex(9);
break;
case QPainter::CompositionMode_SoftLight :
ui->cbSplCompisitionMode->setCurrentIndex(10);
break;
case QPainter::CompositionMode_Difference :
ui->cbSplCompisitionMode->setCurrentIndex(11);
break;
case QPainter::CompositionMode_SourceOver :
default:
ui->cbSplCompisitionMode->setCurrentIndex(0);
break;
}
}
}
void MainWindow::lvTriggers_select(QModelIndex index, QModelIndex)
{
if (index.isValid())
{
tbTrigger trig = adloader->triggers.values().at(index.row());
ui->sbTrigCount->setValue(trig.count);
if (trig.count > 0)
ui->cbTrigCount->setChecked(true);
else
ui->cbTrigCount->setChecked(false);
ui->sbTrigDamage->setValue(trig.damage);
if (trig.damage > 0)
ui->cbTrigDamage->setChecked(true);
else
ui->cbTrigDamage->setChecked(false);
ui->sbTrigDamRadius->setValue(trig.radius);
if (trig.radius > 0)
ui->cbTrigDamRad->setChecked(true);
else
ui->cbTrigDamRad->setChecked(false);
ui->sbTrigChance->setValue(trig.chance);
if (trig.chance == 100)
ui->cbTrigChance->setChecked(false);
else
ui->cbTrigChance->setChecked(true);
ui->sbTrigRandomRadius->setValue(trig.randomPosRadius);
if (trig.randomPosRadius > 0)
ui->cbTrigRandRadius->setChecked(true);
else
ui->cbTrigRandRadius->setChecked(false);
if (index.isValid())
{
tbTrigger trig = adloader->triggers.values().at(index.row());
ui->sbTrigCount->setValue(trig.count);
if (trig.count > 0)
ui->cbTrigCount->setChecked(true);
else
ui->cbTrigCount->setChecked(false);
ui->sbTrigDamage->setValue(trig.damage);
if (trig.damage > 0)
ui->cbTrigDamage->setChecked(true);
else
ui->cbTrigDamage->setChecked(false);
ui->sbTrigDamRadius->setValue(trig.radius);
if (trig.radius > 0)
ui->cbTrigDamRad->setChecked(true);
else
ui->cbTrigDamRad->setChecked(false);
ui->sbTrigChance->setValue(trig.chance);
if (trig.chance == 100)
ui->cbTrigChance->setChecked(false);
else
ui->cbTrigChance->setChecked(true);
ui->sbTrigRandomRadius->setValue(trig.randomPosRadius);
if (trig.randomPosRadius > 0)
ui->cbTrigRandRadius->setChecked(true);
else
ui->cbTrigRandRadius->setChecked(false);
ui->sbTrigTimer->setValue(trig.timer);
switch (trig.type)
{
case srcTriggerType::onDestination :
ui->cbTrigType->setCurrentIndex(0);
break;
case srcTriggerType::onAlienInRadius :
ui->cbTrigType->setCurrentIndex(1);
break;
case srcTriggerType::onTimer :
ui->cbTrigType->setCurrentIndex(2);
break;
}
if (trig.type != srcTriggerType::onTimer)
{
ui->lbTrigTimer->setVisible(false);
ui->sbTrigTimer->setVisible(false);
} else {
ui->lbTrigTimer->setVisible(true);
ui->sbTrigTimer->setVisible(true);
}
switch (trig.childAim)
{
case srcTriggerType::noAim :
ui->cbTrigChildAim->setCurrentIndex(0);
break;
case srcTriggerType::allSide :
ui->cbTrigChildAim->setCurrentIndex(1);
break;
case srcTriggerType::parentAim :
ui->cbTrigChildAim->setCurrentIndex(2);
break;
case srcTriggerType::nearlestAlien :
ui->cbTrigChildAim->setCurrentIndex(3);
break;
}
ui->leTrigName->setText(trig.name);
}
ui->sbTrigTimer->setValue(trig.timer);
switch (trig.type)
{
case srcTriggerType::onDestination :
ui->cbTrigType->setCurrentIndex(0);
break;
case srcTriggerType::onAlienInRadius :
ui->cbTrigType->setCurrentIndex(1);
break;
case srcTriggerType::onTimer :
ui->cbTrigType->setCurrentIndex(2);
break;
}
if (trig.type != srcTriggerType::onTimer)
{
ui->lbTrigTimer->setVisible(false);
ui->sbTrigTimer->setVisible(false);
} else {
ui->lbTrigTimer->setVisible(true);
ui->sbTrigTimer->setVisible(true);
}
switch (trig.childAim)
{
case srcTriggerType::noAim :
ui->cbTrigChildAim->setCurrentIndex(0);
break;
case srcTriggerType::allSide :
ui->cbTrigChildAim->setCurrentIndex(1);
break;
case srcTriggerType::parentAim :
ui->cbTrigChildAim->setCurrentIndex(2);
break;
case srcTriggerType::nearestAlien :
ui->cbTrigChildAim->setCurrentIndex(3);
break;
}
ui->leTrigName->setText(trig.name);
}
}
void MainWindow::closeEvent(QCloseEvent *event)
{
QSettings sett("Alien_Defender","aliendefender");
sett.setValue("session/geometry",this->saveGeometry());
sett.setValue("session/mainwindow",this->saveState());
sett.setValue("session/split1",ui->splitter->saveState());
sett.setValue("session/split2",ui->splitter_2->saveState());
sett.setValue("session/split3",ui->splitter_3->saveState());
sett.setValue("session/split4",ui->splitter_4->saveState());
sett.setValue("session/split5",ui->splitter_5->saveState());
sett.setValue("session/split6",ui->splitter_6->saveState());
sett.setValue("session/tab",ui->tabWidget->currentIndex());
if (!isSaved)
{
QMessageBox msgBox;
msgBox.setText(tr("Save changes?"));
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
msgBox.setEscapeButton(QMessageBox::Discard);
int ret = msgBox.exec();
switch (ret)
{
case QMessageBox::Save :
adloader->save("data2.xml");
adloader->load("data2.xml");
adloader->save("data2.xml");
event->accept();
break;
case QMessageBox::Cancel :
event->ignore();
break;
}
} else {
event->accept();
}
QSettings sett("Alien_Defender","aliendefender");
sett.setValue("session/geometry",this->saveGeometry());
sett.setValue("session/mainwindow",this->saveState());
sett.setValue("session/split1",ui->splitter->saveState());
sett.setValue("session/split2",ui->splitter_2->saveState());
sett.setValue("session/split3",ui->splitter_3->saveState());
sett.setValue("session/split4",ui->splitter_4->saveState());
sett.setValue("session/split5",ui->splitter_5->saveState());
sett.setValue("session/split6",ui->splitter_6->saveState());
sett.setValue("session/tab",ui->tabWidget->currentIndex());
if (!isSaved)
{
QMessageBox msgBox;
msgBox.setText(tr("Save changes?"));
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
msgBox.setEscapeButton(QMessageBox::Discard);
int ret = msgBox.exec();
switch (ret)
{
case QMessageBox::Save :
adloader->save("data2.xml");
adloader->load("data2.xml");
adloader->save("data2.xml");
event->accept();
break;
case QMessageBox::Cancel :
event->ignore();
break;
}
} else {
event->accept();
}
}
void MainWindow::on_pbSave_clicked()
{
adloader->save("data2.xml");
adloader->load("data2.xml");
adloader->save("data2.xml");
isSaved = true;
adloader->save("data2.xml");
adloader->load("data2.xml");
adloader->save("data2.xml");
isSaved = true;
}
void MainWindow::on_pbReload_clicked()
{
QMessageBox msgBox;
msgBox.setText(tr("All unsaved changes will be lost"));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->load("data2.xml");
alModel->refresh(adloader->aliens.values());
twModel->refresh(adloader->towers.values());
splModel->refresh(adloader->splashes.values());
trigModel->refresh(adloader->triggers.values());
animModel->refresh(adloader->animations.values());
mapModel->refresh(adloader->maps.values());
ui->lvAnimations->reset();
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->lvMaps->reset();
ui->lvMaps->selectionModel()->setCurrentIndex(ui->lvMaps->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->lvAliens->reset();
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->lvSplashes->reset();
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->lvTowers->reset();
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->lvTriggers->reset();
ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = true;
}
QMessageBox msgBox;
msgBox.setText(tr("All unsaved changes will be lost"));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->load("data2.xml");
alModel->refresh(adloader->aliens.values());
twModel->refresh(adloader->towers.values());
splModel->refresh(adloader->splashes.values());
trigModel->refresh(adloader->triggers.values());
// animModel->refresh(adloader->animations.values());
mapModel->refresh(adloader->maps.values());
ui->lvAnimations->reset();
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->lvMaps->reset();
ui->lvMaps->selectionModel()->setCurrentIndex(ui->lvMaps->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->lvAliens->reset();
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->lvSplashes->reset();
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->lvTowers->reset();
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
ui->lvTriggers->reset();
ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = true;
}
}
void MainWindow::on_sbAlHealth_valueChanged(double value)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].health;
adloader->aliens[id].health = value;
if (lval != adloader->aliens[id].health) isSaved = false;
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].health;
adloader->aliens[id].health = value;
if (lval != adloader->aliens[id].health) isSaved = false;
}
void MainWindow::on_sbAlArmor_valueChanged(double value)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].armor;
adloader->aliens[id].armor = value;
if (lval != adloader->aliens[id].armor) isSaved = false;
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].armor;
adloader->aliens[id].armor = value;
if (lval != adloader->aliens[id].armor) isSaved = false;
}
void MainWindow::on_sbAlregeneration_valueChanged(double value)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].regeneration;
adloader->aliens[id].regeneration = value;
if (lval != adloader->aliens[id].regeneration) isSaved = false;
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].regeneration;
adloader->aliens[id].regeneration = value;
if (lval != adloader->aliens[id].regeneration) isSaved = false;
}
void MainWindow::on_sbAlSpeed_valueChanged(double value)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].speed;
adloader->aliens[id].speed = value;
if (lval != adloader->aliens[id].speed) isSaved = false;
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
float lval = adloader->aliens[id].speed;
adloader->aliens[id].speed = value;
if (lval != adloader->aliens[id].speed) isSaved = false;
}
void MainWindow::on_sbAlPrise_valueChanged(int val)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
unsigned int lval = adloader->aliens[id].prise;
adloader->aliens[id].prise = val;
if (lval != adloader->aliens[id].prise) isSaved = false;
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
unsigned int lval = adloader->aliens[id].prise;
adloader->aliens[id].prise = val;
if (lval != adloader->aliens[id].prise) isSaved = false;
}
void MainWindow::on_sbAlScore_valueChanged(int val)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
unsigned int lval = adloader->aliens[id].score;
adloader->aliens[id].score = val;
if (lval != adloader->aliens[id].score) isSaved = false;
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
unsigned int lval = adloader->aliens[id].score;
adloader->aliens[id].score = val;
if (lval != adloader->aliens[id].score) isSaved = false;
}
void MainWindow::on_cbAlIsFly_toggled(bool checked)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
bool lval = adloader->aliens[id].isFlying;
adloader->aliens[id].isFlying = checked;
if (lval != adloader->aliens[id].isFlying) isSaved = false;
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
bool lval = adloader->aliens[id].isFlying;
adloader->aliens[id].isFlying = checked;
if (lval != adloader->aliens[id].isFlying) isSaved = false;
}
void MainWindow::on_leAlName_editingFinished()
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
QString lval = adloader->aliens[id].name;
adloader->aliens[id].name = ui->leAlName->text();
alModel->refresh(adloader->aliens.values());
QModelIndex mindex = ui->lvAliens->currentIndex();
ui->lvAliens->reset();
ui->lvAliens->setCurrentIndex(mindex);
if (lval != adloader->aliens[id].name) isSaved = false;
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
QString lval = adloader->aliens[id].name;
adloader->aliens[id].name = ui->leAlName->text();
alModel->refresh(adloader->aliens.values());
QModelIndex mindex = ui->lvAliens->currentIndex();
ui->lvAliens->reset();
ui->lvAliens->setCurrentIndex(mindex);
if (lval != adloader->aliens[id].name) isSaved = false;
}
void MainWindow::on_pbAlAdd_clicked()
{
int i = 1;
while (adloader->aliens.contains(i)) i++;
tbAlien al;
al.id = i;
al.name = tr("Alien");
al.health = 1;
al.prise = 0;
al.score = 1;
al.speed = 1;
adloader->aliens.insert(al.id,al);
int index = adloader->aliens.keys().indexOf(i);
alModel->refresh(adloader->aliens.values());
ui->lvAliens->reset();
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
int i = 1;
while (adloader->aliens.contains(i)) i++;
tbAlien al;
al.id = i;
al.name = tr("Alien");
al.health = 1;
al.prise = 0;
al.score = 1;
al.speed = 1;
adloader->aliens.insert(al.id,al);
int index = adloader->aliens.keys().indexOf(i);
alModel->refresh(adloader->aliens.values());
ui->lvAliens->reset();
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
void MainWindow::on_pbAlDel_clicked()
{
if (adloader->aliens.size() < 2) return;
QMessageBox msgBox;
int id = adloader->aliens.keys().at(ui->lvAliens->currentIndex().row());
for (int i=0; i<adloader->waveParts.size(); i++)
{
if (adloader->waveParts.values().at(i).alienId == id)
{
msgBox.setText(tr("You can not delete alien %1 id=%2").arg(adloader->aliens.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used in wawe %1").arg(adloader->waveParts.values().at(i).waveId));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
msgBox.setText(tr("Delete alien %1 id=%2").arg(adloader->aliens.value(id).name).arg(id));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->aliens.remove(id);
alModel->refresh(adloader->aliens.values());
ui->lvAliens->reset();
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
if (adloader->aliens.size() < 2) return;
QMessageBox msgBox;
int id = adloader->aliens.keys().at(ui->lvAliens->currentIndex().row());
for (int i=0; i<adloader->waveParts.size(); i++)
{
if (adloader->waveParts.values().at(i).alienId == id)
{
msgBox.setText(tr("You can not delete alien %1 id=%2").arg(adloader->aliens.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used in wawe %1").arg(adloader->waveParts.values().at(i).waveId));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
msgBox.setText(tr("Delete alien %1 id=%2").arg(adloader->aliens.value(id).name).arg(id));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->aliens.remove(id);
alModel->refresh(adloader->aliens.values());
ui->lvAliens->reset();
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
}
void MainWindow::on_leTwName_editingFinished()
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
QString lval = adloader->towers[id].name;
adloader->towers[id].name = ui->leTwName->text();
twModel->refresh(adloader->towers.values());
QModelIndex mindex = ui->lvTowers->currentIndex();
ui->lvTowers->reset();
ui->lvTowers->setCurrentIndex(mindex);
if (lval != adloader->towers[id].name) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
QString lval = adloader->towers[id].name;
adloader->towers[id].name = ui->leTwName->text();
twModel->refresh(adloader->towers.values());
QModelIndex mindex = ui->lvTowers->currentIndex();
ui->lvTowers->reset();
ui->lvTowers->setCurrentIndex(mindex);
if (lval != adloader->towers[id].name) isSaved = false;
}
void MainWindow::on_sbTwBuildTime_valueChanged(int val)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
unsigned int lval = adloader->towers[id].buildTime;
adloader->towers[id].buildTime = val;
if (lval != adloader->towers[id].buildTime) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
unsigned int lval = adloader->towers[id].buildTime;
adloader->towers[id].buildTime = val;
if (lval != adloader->towers[id].buildTime) isSaved = false;
}
void MainWindow::on_sbTwCost_valueChanged(int val)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
unsigned int lval = adloader->towers[id].cost;
adloader->towers[id].cost = val;
if (lval != adloader->towers[id].cost) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
unsigned int lval = adloader->towers[id].cost;
adloader->towers[id].cost = val;
if (lval != adloader->towers[id].cost) isSaved = false;
}
void MainWindow::on_cbTwSplash_currentIndexChanged(int index)
{
if (!ui->lvTowers->currentIndex().isValid()) return;
if (index >= 0)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
int lval = adloader->towers[id].splashId;
adloader->towers[id].splashId = adloader->splashes.values().at(index).id;
if (lval != adloader->towers[id].splashId) isSaved = false;
}
if (!ui->lvTowers->currentIndex().isValid()) return;
if (index >= 0)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
int lval = adloader->towers[id].splashId;
adloader->towers[id].splashId = adloader->splashes.values().at(index).id;
if (lval != adloader->towers[id].splashId) isSaved = false;
}
}
void MainWindow::on_sbTwReload_valueChanged(int val)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
unsigned int lval = adloader->towers[id].reload;
adloader->towers[id].reload = val;
if (lval != adloader->towers[id].reload) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
unsigned int lval = adloader->towers[id].reload;
adloader->towers[id].reload = val;
if (lval != adloader->towers[id].reload) isSaved = false;
}
void MainWindow::on_sbTwRadius_valueChanged(double val)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].radius;
adloader->towers[id].radius = val;
if (lval != adloader->towers[id].radius) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].radius;
adloader->towers[id].radius = val;
if (lval != adloader->towers[id].radius) isSaved = false;
}
void MainWindow::on_sbTwExpByShot_valueChanged(double val)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByShot;
adloader->towers[id].expByShot = val;
if (lval != adloader->towers[id].expByShot) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByShot;
adloader->towers[id].expByShot = val;
if (lval != adloader->towers[id].expByShot) isSaved = false;
}
void MainWindow::on_cbTwExpByShot_toggled(bool checked)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByShot;
ui->sbTwExpByShot->setEnabled(checked);
if (checked) adloader->towers[id].expByShot = ui->sbTwExpByShot->value();
else adloader->towers[id].expByShot = 0;
if (lval != adloader->towers[id].expByShot) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByShot;
ui->sbTwExpByShot->setEnabled(checked);
if (checked) adloader->towers[id].expByShot = ui->sbTwExpByShot->value();
else adloader->towers[id].expByShot = 0;
if (lval != adloader->towers[id].expByShot) isSaved = false;
}
void MainWindow::on_sbTwExpByDam_valueChanged(double val)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByDamage;
adloader->towers[id].expByDamage = val;
if (lval != adloader->towers[id].expByDamage) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByDamage;
adloader->towers[id].expByDamage = val;
if (lval != adloader->towers[id].expByDamage) isSaved = false;
}
void MainWindow::on_cbTwExpByDam_toggled(bool checked)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByDamage;
ui->sbTwExpByDam->setEnabled(checked);
if (checked) adloader->towers[id].expByDamage = ui->sbTwExpByDam->value();
else adloader->towers[id].expByDamage = 0;
if (lval != adloader->towers[id].expByDamage) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByDamage;
ui->sbTwExpByDam->setEnabled(checked);
if (checked) adloader->towers[id].expByDamage = ui->sbTwExpByDam->value();
else adloader->towers[id].expByDamage = 0;
if (lval != adloader->towers[id].expByDamage) isSaved = false;
}
void MainWindow::on_sbTwExpByKill_valueChanged(double val)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByKill;
adloader->towers[id].expByKill = val;
if (lval != adloader->towers[id].expByKill) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByKill;
adloader->towers[id].expByKill = val;
if (lval != adloader->towers[id].expByKill) isSaved = false;
}
void MainWindow::on_cbTwExpByKill_toggled(bool checked)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByKill;
ui->sbTwExpByKill->setEnabled(checked);
if (checked) adloader->towers[id].expByKill = ui->sbTwExpByKill->value();
else adloader->towers[id].expByKill = 0;
if (lval != adloader->towers[id].expByKill) isSaved = false;
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
float lval = adloader->towers[id].expByKill;
ui->sbTwExpByKill->setEnabled(checked);
if (checked) adloader->towers[id].expByKill = ui->sbTwExpByKill->value();
else adloader->towers[id].expByKill = 0;
if (lval != adloader->towers[id].expByKill) isSaved = false;
}
void MainWindow::on_pbTwAdd_clicked()
{
int i = 1;
while (adloader->towers.contains(i)) i++;
tbTower tw;
tw.id = i;
tw.name = tr("Tower");
tw.splashId = adloader->splashes.keys().at(0);
tw.buildTime = 1;
tw.cost = 1;
tw.radius = 1;
tw.reload = 1;
adloader->towers.insert(tw.id,tw);
int index = adloader->towers.keys().indexOf(i);
twModel->refresh(adloader->towers.values());
ui->lvTowers->reset();
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
int i = 1;
while (adloader->towers.contains(i)) i++;
tbTower tw;
tw.id = i;
tw.name = tr("Tower");
tw.splashId = adloader->splashes.keys().at(0);
tw.buildTime = 1;
tw.cost = 1;
tw.radius = 1;
tw.reload = 1;
adloader->towers.insert(tw.id,tw);
int index = adloader->towers.keys().indexOf(i);
twModel->refresh(adloader->towers.values());
ui->lvTowers->reset();
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
void MainWindow::on_pbTwDel_clicked()
{
if (adloader->towers.size() < 2) return;
QMessageBox msgBox;
int id = adloader->towers.keys().at(ui->lvTowers->currentIndex().row());
for (int i=0; i<adloader->levTowers.size(); i++)
{
if (adloader->levTowers.values().at(i).towerId == id)
{
msgBox.setText(tr("You can not delete tower %1 id=%2").arg(adloader->towers.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used in level %1").arg(adloader->levTowers.values().at(i).levelId));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
msgBox.setText(tr("Delete tower %1 id=%2").arg(adloader->towers.value(id).name).arg(id));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->towers.remove(id);
twModel->refresh(adloader->towers.values());
ui->lvTowers->reset();
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
if (adloader->towers.size() < 2) return;
QMessageBox msgBox;
int id = adloader->towers.keys().at(ui->lvTowers->currentIndex().row());
for (int i=0; i<adloader->levTowers.size(); i++)
{
if (adloader->levTowers.values().at(i).towerId == id)
{
msgBox.setText(tr("You can not delete tower %1 id=%2").arg(adloader->towers.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used in level %1").arg(adloader->levTowers.values().at(i).levelId));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
msgBox.setText(tr("Delete tower %1 id=%2").arg(adloader->towers.value(id).name).arg(id));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->towers.remove(id);
twModel->refresh(adloader->towers.values());
ui->lvTowers->reset();
ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
}
void MainWindow::on_leSplName_editingFinished()
{
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
QString lval = adloader->splashes[id].name;
adloader->splashes[id].name = ui->leSplName->text();
splModel->refresh(adloader->splashes.values());
//ui->lvSplashes->setModel((QAbstractItemModel * )splModel);
//ui->cbTwSplash->setModel((QAbstractItemModel * )splModel);
QModelIndex mindex = ui->lvSplashes->currentIndex();
ui->lvSplashes->reset();
ui->lvSplashes->setCurrentIndex(mindex);
if (lval != adloader->splashes[id].name) isSaved = false;
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
QString lval = adloader->splashes[id].name;
adloader->splashes[id].name = ui->leSplName->text();
splModel->refresh(adloader->splashes.values());
//ui->lvSplashes->setModel((QAbstractItemModel * )splModel);
//ui->cbTwSplash->setModel((QAbstractItemModel * )splModel);
QModelIndex mindex = ui->lvSplashes->currentIndex();
ui->lvSplashes->reset();
ui->lvSplashes->setCurrentIndex(mindex);
if (lval != adloader->splashes[id].name) isSaved = false;
}
void MainWindow::on_sbSplSpeed_valueChanged(double val)
{
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
float lval = adloader->splashes[id].speed;
adloader->splashes[id].speed = val;
if (lval != adloader->splashes[id].speed) isSaved = false;
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
float lval = adloader->splashes[id].speed;
adloader->splashes[id].speed = val;
if (lval != adloader->splashes[id].speed) isSaved = false;
}
void MainWindow::on_cbSplAutoControl_toggled(bool checked)
{
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
bool lval = adloader->splashes[id].autoControl;
adloader->splashes[id].autoControl = checked;
if (lval != adloader->splashes[id].autoControl) isSaved = false;
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
bool lval = adloader->splashes[id].autoControl;
adloader->splashes[id].autoControl = checked;
if (lval != adloader->splashes[id].autoControl) isSaved = false;
}
void MainWindow::on_sbSplLifeTime_valueChanged(int val)
{
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
unsigned int lval = adloader->splashes[id].lifetime;
adloader->splashes[id].lifetime = val;
if (lval != adloader->splashes[id].lifetime) isSaved = false;
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
unsigned int lval = adloader->splashes[id].lifetime;
adloader->splashes[id].lifetime = val;
if (lval != adloader->splashes[id].lifetime) isSaved = false;
}
void MainWindow::on_pbSplAdd_clicked()
{
int i = 1;
while (adloader->splashes.contains(i)) i++;
tbSplash spl;
spl.id = i;
spl.name = tr("Splash");
spl.lifetime = 1;
spl.speed = 1;
adloader->splashes.insert(spl.id,spl);
int index = adloader->splashes.keys().indexOf(i);
splModel->refresh(adloader->splashes.values());
ui->lvSplashes->reset();
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
int i = 1;
while (adloader->splashes.contains(i)) i++;
tbSplash spl;
spl.id = i;
spl.name = tr("Splash");
spl.lifetime = 1;
spl.speed = 1;
adloader->splashes.insert(spl.id,spl);
int index = adloader->splashes.keys().indexOf(i);
splModel->refresh(adloader->splashes.values());
ui->lvSplashes->reset();
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
void MainWindow::on_pbSlpDel_clicked()
{
if (adloader->splashes.size() < 2) return;
QMessageBox msgBox;
int id = adloader->splashes.keys().at(ui->lvSplashes->currentIndex().row());
for (int i=0; i<adloader->towers.size(); i++)
{
if (adloader->towers.values().at(i).splashId == id)
{
msgBox.setText(tr("You can not delete splash %1 id=%2").arg(adloader->splashes.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used by tower %1 id=%2").arg(adloader->towers.values().at(i).name).arg(adloader->towers.values().at(i).id));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
for (int i=0; i<adloader->chains.size(); i++)
{
if (adloader->chains.values().at(i).childSplashId == id
|| adloader->chains.values().at(i).parentSplashId == id)
{
msgBox.setText(tr("You can not delete splash %1 id=%2").arg(adloader->splashes.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used by chain in tower %1 id=%2").arg(adloader->towers.value(adloader->chains.values().at(i).towerId).name).arg(adloader->chains.values().at(i).towerId));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
msgBox.setText(tr("Delete splash %1 id=%2").arg(adloader->splashes.value(id).name).arg(id));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->splashes.remove(id);
splModel->refresh(adloader->splashes.values());
ui->lvSplashes->reset();
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
if (adloader->splashes.size() < 2) return;
QMessageBox msgBox;
int id = adloader->splashes.keys().at(ui->lvSplashes->currentIndex().row());
for (int i=0; i<adloader->towers.size(); i++)
{
if (adloader->towers.values().at(i).splashId == id)
{
msgBox.setText(tr("You can not delete splash %1 id=%2").arg(adloader->splashes.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used by tower %1 id=%2").arg(adloader->towers.values().at(i).name).arg(adloader->towers.values().at(i).id));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
for (int i=0; i<adloader->chains.size(); i++)
{
if (adloader->chains.values().at(i).childSplashId == id
|| adloader->chains.values().at(i).parentSplashId == id)
{
msgBox.setText(tr("You can not delete splash %1 id=%2").arg(adloader->splashes.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used by chain in tower %1 id=%2").arg(adloader->towers.value(adloader->chains.values().at(i).towerId).name).arg(adloader->chains.values().at(i).towerId));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
msgBox.setText(tr("Delete splash %1 id=%2").arg(adloader->splashes.value(id).name).arg(id));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->splashes.remove(id);
splModel->refresh(adloader->splashes.values());
ui->lvSplashes->reset();
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
}
void MainWindow::on_pbTwSplashEdit_clicked()
{
int splIndex = adloader->splashes.keys().indexOf(adloader->towers.values().at(ui->lvTowers->currentIndex().row()).splashId);
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(splIndex,0),QItemSelectionModel::ClearAndSelect);
ui->tabWidget->setCurrentWidget(ui->tabSplashes);
int splIndex = adloader->splashes.keys().indexOf(adloader->towers.values().at(ui->lvTowers->currentIndex().row()).splashId);
ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(splIndex,0),QItemSelectionModel::ClearAndSelect);
ui->tabWidget->setCurrentWidget(ui->tabSplashes);
}
void MainWindow::on_cbTrigChance_toggled(bool checked)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
int lval = adloader->triggers[id].chance;
ui->sbTrigChance->setEnabled(checked);
if (checked) adloader->triggers[id].chance = ui->sbTrigChance->value();
else adloader->triggers[id].chance = 100;
if (lval != adloader->triggers[id].chance) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
int lval = adloader->triggers[id].chance;
ui->sbTrigChance->setEnabled(checked);
if (checked) adloader->triggers[id].chance = ui->sbTrigChance->value();
else adloader->triggers[id].chance = 100;
if (lval != adloader->triggers[id].chance) isSaved = false;
}
void MainWindow::on_sbTrigChance_valueChanged(int val)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
int lval = adloader->triggers[id].chance;
adloader->triggers[id].chance = val;
if (lval != adloader->triggers[id].chance) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
int lval = adloader->triggers[id].chance;
adloader->triggers[id].chance = val;
if (lval != adloader->triggers[id].chance) isSaved = false;
}
void MainWindow::on_leTrigName_editingFinished()
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
QString lval = adloader->triggers[id].name;
adloader->triggers[id].name = ui->leTrigName->text();
trigModel->refresh(adloader->triggers.values());
QModelIndex mindex = ui->lvTriggers->currentIndex();
ui->lvTriggers->reset();
ui->lvTriggers->setCurrentIndex(mindex);
if (lval != adloader->triggers[id].name) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
QString lval = adloader->triggers[id].name;
adloader->triggers[id].name = ui->leTrigName->text();
trigModel->refresh(adloader->triggers.values());
QModelIndex mindex = ui->lvTriggers->currentIndex();
ui->lvTriggers->reset();
ui->lvTriggers->setCurrentIndex(mindex);
if (lval != adloader->triggers[id].name) isSaved = false;
}
void MainWindow::on_sbTrigCount_valueChanged(int val)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
int lval = adloader->triggers[id].count;
adloader->triggers[id].count = val;
if (lval != adloader->triggers[id].count) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
int lval = adloader->triggers[id].count;
adloader->triggers[id].count = val;
if (lval != adloader->triggers[id].count) isSaved = false;
}
void MainWindow::on_sbTrigRandomRadius_valueChanged(double value)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].randomPosRadius;
adloader->triggers[id].randomPosRadius = value;
if (lval != adloader->triggers[id].randomPosRadius) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].randomPosRadius;
adloader->triggers[id].randomPosRadius = value;
if (lval != adloader->triggers[id].randomPosRadius) isSaved = false;
}
void MainWindow::on_cbTrigDelPar_toggled(bool checked)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
bool lval = adloader->triggers[id].delParent;
adloader->triggers[id].delParent = checked;
if (lval != adloader->triggers[id].delParent) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
bool lval = adloader->triggers[id].delParent;
adloader->triggers[id].delParent = checked;
if (lval != adloader->triggers[id].delParent) isSaved = false;
}
void MainWindow::on_sbTrigTimer_valueChanged(int val)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
unsigned int lval = adloader->triggers[id].timer;
adloader->triggers[id].timer = val;
if (lval != adloader->triggers[id].timer) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
unsigned int lval = adloader->triggers[id].timer;
adloader->triggers[id].timer = val;
if (lval != adloader->triggers[id].timer) isSaved = false;
}
void MainWindow::on_sbTrigDamage_valueChanged(double value)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].damage;
adloader->triggers[id].damage = value;
if (lval != adloader->triggers[id].damage) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].damage;
adloader->triggers[id].damage = value;
if (lval != adloader->triggers[id].damage) isSaved = false;
}
void MainWindow::on_sbTrigDamRadius_valueChanged(double value)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].radius;
adloader->triggers[id].radius = value;
if (lval != adloader->triggers[id].radius) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].radius;
adloader->triggers[id].radius = value;
if (lval != adloader->triggers[id].radius) isSaved = false;
}
void MainWindow::on_cbTrigDamRad_toggled(bool checked)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].radius;
ui->sbTrigDamRadius->setEnabled(checked);
if (checked) adloader->triggers[id].radius = ui->sbTrigDamRadius->value();
else adloader->triggers[id].radius = 0;
if (lval != adloader->triggers[id].radius) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].radius;
ui->sbTrigDamRadius->setEnabled(checked);
if (checked) adloader->triggers[id].radius = ui->sbTrigDamRadius->value();
else adloader->triggers[id].radius = 0;
if (lval != adloader->triggers[id].radius) isSaved = false;
}
void MainWindow::on_cbTrigDamage_toggled(bool checked)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].damage;
ui->sbTrigDamage->setEnabled(checked);
if (checked) adloader->triggers[id].damage = ui->sbTrigDamage->value();
else adloader->triggers[id].damage = 0;
if (lval != adloader->triggers[id].damage) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].damage;
ui->sbTrigDamage->setEnabled(checked);
if (checked) adloader->triggers[id].damage = ui->sbTrigDamage->value();
else adloader->triggers[id].damage = 0;
if (lval != adloader->triggers[id].damage) isSaved = false;
}
void MainWindow::on_cbTrigRandRadius_toggled(bool checked)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].randomPosRadius;
ui->sbTrigRandomRadius->setEnabled(checked);
if (checked) adloader->triggers[id].randomPosRadius = ui->sbTrigRandomRadius->value();
else adloader->triggers[id].randomPosRadius = 0;
if (lval != adloader->triggers[id].randomPosRadius) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
float lval = adloader->triggers[id].randomPosRadius;
ui->sbTrigRandomRadius->setEnabled(checked);
if (checked) adloader->triggers[id].randomPosRadius = ui->sbTrigRandomRadius->value();
else adloader->triggers[id].randomPosRadius = 0;
if (lval != adloader->triggers[id].randomPosRadius) isSaved = false;
}
void MainWindow::on_cbTrigCount_toggled(bool checked)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
int lval = adloader->triggers[id].count;
ui->sbTrigCount->setEnabled(checked);
if (checked) adloader->triggers[id].count = ui->sbTrigCount->value();
else adloader->triggers[id].count = 0;
if (lval != adloader->triggers[id].count) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
int lval = adloader->triggers[id].count;
ui->sbTrigCount->setEnabled(checked);
if (checked) adloader->triggers[id].count = ui->sbTrigCount->value();
else adloader->triggers[id].count = 0;
if (lval != adloader->triggers[id].count) isSaved = false;
}
void MainWindow::on_pbTrigAdd_clicked()
{
int i = 1;
while (adloader->triggers.contains(i)) i++;
tbTrigger trig;
trig.id = i;
trig.name = tr("Trigger");
trig.count = 0;
trig.damage = 0;
trig.radius = 0;
trig.timer = 10;
trig.chance = 100;
trig.delParent =true ;
trig.childAim = srcTriggerType::noAim;
trig.randomPosRadius = 0;
trig.type = srcTriggerType::onDestination;
adloader->triggers.insert(trig.id,trig);
int index = adloader->triggers.keys().indexOf(i);
trigModel->refresh(adloader->triggers.values());
ui->lvTriggers->reset();
ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
int i = 1;
while (adloader->triggers.contains(i)) i++;
tbTrigger trig;
trig.id = i;
trig.name = tr("Trigger");
trig.count = 0;
trig.damage = 0;
trig.radius = 0;
trig.timer = 10;
trig.chance = 100;
trig.delParent =true ;
trig.childAim = srcTriggerType::noAim;
trig.randomPosRadius = 0;
trig.type = srcTriggerType::onDestination;
adloader->triggers.insert(trig.id,trig);
int index = adloader->triggers.keys().indexOf(i);
trigModel->refresh(adloader->triggers.values());
ui->lvTriggers->reset();
ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
void MainWindow::on_pbTrigDel_clicked()
{
if (adloader->triggers.size() < 2) return;
QMessageBox msgBox;
int id = adloader->triggers.keys().at(ui->lvTriggers->currentIndex().row());
for (int i=0; i<adloader->chains.size(); i++)
{
if (adloader->chains.values().at(i).triggerId == id)
{
msgBox.setText(tr("You can not delete trigger %1 id=%2").arg(adloader->triggers.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used by chain in tower %1 id=%2").arg(adloader->towers.value(adloader->chains.values().at(i).towerId).name).arg(adloader->chains.values().at(i).towerId));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
msgBox.setText(tr("Delete trigger %1 id=%2").arg(adloader->triggers.value(id).name).arg(id));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->triggers.remove(id);
trigModel->refresh(adloader->triggers.values());
ui->lvTriggers->reset();
ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
if (adloader->triggers.size() < 2) return;
QMessageBox msgBox;
int id = adloader->triggers.keys().at(ui->lvTriggers->currentIndex().row());
for (int i=0; i<adloader->chains.size(); i++)
{
if (adloader->chains.values().at(i).triggerId == id)
{
msgBox.setText(tr("You can not delete trigger %1 id=%2").arg(adloader->triggers.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used by chain in tower %1 id=%2").arg(adloader->towers.value(adloader->chains.values().at(i).towerId).name).arg(adloader->chains.values().at(i).towerId));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
msgBox.setText(tr("Delete trigger %1 id=%2").arg(adloader->triggers.value(id).name).arg(id));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->triggers.remove(id);
trigModel->refresh(adloader->triggers.values());
ui->lvTriggers->reset();
ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
}
void MainWindow::on_cbTrigType_currentIndexChanged(int index)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
srcTriggerType::triggerType lval = adloader->triggers[id].type;
adloader->triggers[id].type = (srcTriggerType::triggerType)ui->cbTrigType->itemData(index).toInt();
if (adloader->triggers[id].type != srcTriggerType::onTimer)
{
ui->lbTrigTimer->setVisible(false);
ui->sbTrigTimer->setVisible(false);
} else {
ui->lbTrigTimer->setVisible(true);
ui->sbTrigTimer->setVisible(true);
ui->sbTrigTimer->setValue(adloader->triggers[id].timer);
}
if (lval != adloader->triggers[id].type) isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
srcTriggerType::triggerType lval = adloader->triggers[id].type;
adloader->triggers[id].type = (srcTriggerType::triggerType)ui->cbTrigType->itemData(index).toInt();
if (adloader->triggers[id].type == srcTriggerType::onAlienInRadius)
{
ui->lbTrigChildAim->hide();
ui->cbTrigChildAim->hide();
} else {
ui->lbTrigChildAim->show();
ui->cbTrigChildAim->show();
}
if (adloader->triggers[id].type != srcTriggerType::onTimer)
{
ui->lbTrigTimer->setVisible(false);
ui->sbTrigTimer->setVisible(false);
} else {
ui->lbTrigTimer->setVisible(true);
ui->sbTrigTimer->setVisible(true);
ui->sbTrigTimer->setValue(adloader->triggers[id].timer);
}
if (lval != adloader->triggers[id].type) isSaved = false;
}
void MainWindow::on_cbTrigChildAim_currentIndexChanged(int index)
{
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
srcTriggerType::aimType lval = adloader->triggers[id].childAim;
adloader->triggers[id].childAim = (srcTriggerType::aimType)ui->cbTrigChildAim->itemData(index).toInt();
if (lval != adloader->triggers[id].childAim)isSaved = false;
int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id;
srcTriggerType::aimType lval = adloader->triggers[id].childAim;
adloader->triggers[id].childAim = (srcTriggerType::aimType)ui->cbTrigChildAim->itemData(index).toInt();
if (lval != adloader->triggers[id].childAim)isSaved = false;
}
void MainWindow::on_pbImgAdd_clicked()
{
int id = adloader->animations.values().at(ui->lvAnimations->currentIndex().row()).id;
QFileDialog fd;
QStringList strl;
fd.setNameFilter(tr("Images (*.png)"));
fd.setFileMode(QFileDialog::ExistingFiles);
QDir dir;
if (fd.exec())
{
strl = fd.selectedFiles();
for (int i=0; i<strl.size(); ++i)
{
strl[i] = dir.relativeFilePath(strl[i]);
}
adloader->animations[id].pathes.append(strl);
refresh_lwImages(adloader->animations.value(id).pathes);
isSaved = false;
}
int id = adloader->animations.values().at(ui->lvAnimations->currentIndex().row()).id;
QStringList strl;
/*QFileDialog fd;
fd.setNameFilter(tr());
fd.setFileMode(QFileDialog::ExistingFiles);*/
QDir dir;
strl = QFileDialog::getOpenFileNames(this, "Select images", QString()/*qApp->applicationDirPath()*/, "Images (*.png)");
/*if (fd.exec())
{
strl = fd.selectedFiles();*/
for (int i=0; i<strl.size(); ++i)
{
strl[i] = dir.relativeFilePath(strl[i]);
}
adloader->animations[id].pathes.append(strl);
refresh_lwImages(adloader->animations.value(id).pathes);
isSaved = false;
//}
}
void MainWindow::refresh_lwImages(QStringList pathes)
{
ui->lwImages->clear();
for (int i=0; i<pathes.size(); ++i)
{
ui->lwImages->addItem(new QListWidgetItem(QIcon(pathes.at(i)),pathes.at(i)));
}
ui->lwImages->clear();
for (int i=0; i<pathes.size(); ++i)
{
ui->lwImages->addItem(new QListWidgetItem(QIcon(pathes.at(i)),pathes.at(i)));
}
}
void MainWindow::on_pbImgDel_clicked()
{
if (!ui->lwImages->selectedItems().isEmpty())
{
int id = adloader->animations.values().at(ui->lvAnimations->currentIndex().row()).id;
for (int i=0; i<ui->lwImages->selectedItems().size(); ++i)
adloader->animations[id].pathes.removeOne(ui->lwImages->selectedItems().at(i)->text());
refresh_lwImages(adloader->animations.value(id).pathes);
isSaved = false;
}
if (!ui->lwImages->selectedItems().isEmpty())
{
int id = adloader->animations.values().at(ui->lvAnimations->currentIndex().row()).id;
for (int i=0; i<ui->lwImages->selectedItems().size(); ++i)
adloader->animations[id].pathes.removeOne(ui->lwImages->selectedItems().at(i)->text());
refresh_lwImages(adloader->animations.value(id).pathes);
isSaved = false;
}
}
void MainWindow::on_pbAnimAdd_clicked()
{
int i = 1;
while (adloader->animations.contains(i)) i++;
tbAnimation anim;
anim.id = i;
adloader->animations.insert(anim.id,anim);
int index = adloader->animations.keys().indexOf(i);
animModel->refresh(adloader->animations.values());
ui->lvAnimations->reset();
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
int i = 1;
while (adloader->animations.contains(i)) i++;
tbAnimation anim;
anim.id = i;
adloader->animations.insert(anim.id,anim);
int index = adloader->animations.keys().indexOf(i);
// animModel->refresh(adloader->animations.values());
ui->lvAnimations->reset();
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
void MainWindow::on_cbAlImage_currentIndexChanged(int index)
{
if (!ui->lvAliens->currentIndex().isValid()) return;
if (index >= 0)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
int lval = adloader->aliens[id].imgType;
adloader->aliens[id].imgType = adloader->animations.values().at(index).id;
ui->lbAlAnim->setAnimation(adloader->animations.value(adloader->aliens[id].imgType).pathes);
if (lval != adloader->aliens[id].imgType) isSaved = false;
}
if (!ui->lvAliens->currentIndex().isValid()) return;
if (index >= 0)
{
int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id;
int lval = adloader->aliens[id].imgType;
adloader->aliens[id].imgType = adloader->animations.values().at(index).id;
ui->lbAlAnim->setAnimation(adloader->animations.value(adloader->aliens[id].imgType).pathes);
if (lval != adloader->aliens[id].imgType) isSaved = false;
}
}
void MainWindow::on_cbTwImage_currentIndexChanged(int index)
{
if (!ui->lvTowers->currentIndex().isValid()) return;
if (index >= 0)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
int lval = adloader->towers[id].imgType;
adloader->towers[id].imgType = adloader->animations.values().at(index).id;
ui->lbTwAnim->setAnimation(adloader->animations.value(adloader->towers[id].imgType).pathes);
if (lval != adloader->towers[id].imgType) isSaved = false;
}
if (!ui->lvTowers->currentIndex().isValid()) return;
if (index >= 0)
{
int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id;
int lval = adloader->towers[id].imgType;
adloader->towers[id].imgType = adloader->animations.values().at(index).id;
ui->lbTwAnim->setAnimation(adloader->animations.value(adloader->towers[id].imgType).pathes);
if (lval != adloader->towers[id].imgType) isSaved = false;
}
}
void MainWindow::on_cbSplImage_currentIndexChanged(int index)
{
if (!ui->lvSplashes->currentIndex().isValid()) return;
if (index >= 0)
{
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
int lval = adloader->splashes[id].imgType;
adloader->splashes[id].imgType = adloader->animations.values().at(index).id;
ui->lbSplAnim->setAnimation(adloader->animations.value(adloader->splashes[id].imgType).pathes);
if (lval != adloader->splashes[id].imgType) isSaved = false;
}
if (!ui->lvSplashes->currentIndex().isValid()) return;
if (index >= 0)
{
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
int lval = adloader->splashes[id].imgType;
adloader->splashes[id].imgType = adloader->animations.values().at(index).id;
ui->lbSplAnim->setAnimation(adloader->animations.value(adloader->splashes[id].imgType).pathes);
if (lval != adloader->splashes[id].imgType) isSaved = false;
}
}
void MainWindow::on_pbAnimDel_clicked()
{
if (adloader->animations.size() < 2) return;
QMessageBox msgBox;
int id = adloader->animations.keys().at(ui->lvAnimations->currentIndex().row());
for (int i=0; i<adloader->towers.size(); i++)
{
if (adloader->towers.values().at(i).imgType == id)
{
msgBox.setText(tr("You can not delete anim %1").arg(id));
msgBox.setInformativeText(tr("It used by tower %1 id=%2").arg(adloader->towers.values().at(i).name).arg(adloader->towers.values().at(i).id));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
for (int i=0; i<adloader->aliens.size(); i++)
{
if (adloader->aliens.values().at(i).imgType == id)
{
msgBox.setText(tr("You can not delete anim %1").arg(id));
msgBox.setInformativeText(tr("It used by alien %1 id=%2").arg(adloader->aliens.values().at(i).name).arg(adloader->aliens.values().at(i).id));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
for (int i=0; i<adloader->splashes.size(); i++)
{
if (adloader->splashes.values().at(i).imgType == id)
{
msgBox.setText(tr("You can not delete anim %1").arg(id));
msgBox.setInformativeText(tr("It used by splash %1 id=%2").arg(adloader->splashes.values().at(i).name).arg(adloader->splashes.values().at(i).id));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
msgBox.setText(tr("Delete anim %1").arg(id));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->animations.remove(id);
animModel->refresh(adloader->animations.values());
ui->lvAnimations->reset();
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
if (adloader->animations.size() < 2) return;
QMessageBox msgBox;
int id = adloader->animations.keys().at(ui->lvAnimations->currentIndex().row());
for (int i=0; i<adloader->towers.size(); i++)
{
if (adloader->towers.values().at(i).imgType == id)
{
msgBox.setText(tr("You can not delete anim %1").arg(id));
msgBox.setInformativeText(tr("It used by tower %1 id=%2").arg(adloader->towers.values().at(i).name).arg(adloader->towers.values().at(i).id));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
for (int i=0; i<adloader->aliens.size(); i++)
{
if (adloader->aliens.values().at(i).imgType == id)
{
msgBox.setText(tr("You can not delete anim %1").arg(id));
msgBox.setInformativeText(tr("It used by alien %1 id=%2").arg(adloader->aliens.values().at(i).name).arg(adloader->aliens.values().at(i).id));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
for (int i=0; i<adloader->splashes.size(); i++)
{
if (adloader->splashes.values().at(i).imgType == id)
{
msgBox.setText(tr("You can not delete anim %1").arg(id));
msgBox.setInformativeText(tr("It used by splash %1 id=%2").arg(adloader->splashes.values().at(i).name).arg(adloader->splashes.values().at(i).id));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
msgBox.setText(tr("Delete anim %1").arg(id));
msgBox.setInformativeText(tr("Are you sure?"));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if (ret == QMessageBox::Ok)
{
adloader->animations.remove(id);
// animModel->refresh(adloader->animations.values());
ui->lvAnimations->reset();
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
}
}
void MainWindow::on_cbSplCompisitionMode_currentIndexChanged(const QString &str)
{
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
QPainter::CompositionMode lval = adloader->splashes[id].compositionMode;
if (str == "NotSource") adloader->splashes[id].compositionMode = QPainter::RasterOp_NotSource;
if (str == "Plus") adloader->splashes[id].compositionMode = QPainter::CompositionMode_Plus;
if (str == "Multiply") adloader->splashes[id].compositionMode = QPainter::CompositionMode_Multiply;
if (str == "Screen") adloader->splashes[id].compositionMode = QPainter::CompositionMode_Screen;
if (str == "Overlay") adloader->splashes[id].compositionMode = QPainter::CompositionMode_Overlay;
if (str == "Darken") adloader->splashes[id].compositionMode = QPainter::CompositionMode_Darken;
if (str == "Lighten") adloader->splashes[id].compositionMode = QPainter::CompositionMode_Lighten;
if (str == "ColorDodge") adloader->splashes[id].compositionMode = QPainter::CompositionMode_ColorDodge;
if (str == "ColorBurn") adloader->splashes[id].compositionMode = QPainter::CompositionMode_ColorBurn;
if (str == "HardLight") adloader->splashes[id].compositionMode = QPainter::CompositionMode_HardLight;
if (str == "SoftLight") adloader->splashes[id].compositionMode = QPainter::CompositionMode_SoftLight;
if (str == "Difference") adloader->splashes[id].compositionMode = QPainter::CompositionMode_Difference;
if (lval != adloader->splashes[id].compositionMode) isSaved = false;
}
void MainWindow::on_sbSplZValue_valueChanged(double val)
{
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
float lval = adloader->splashes[id].ZValue;
adloader->splashes[id].ZValue = val;
if (lval != adloader->splashes[id].ZValue) isSaved = false;
}
void MainWindow::on_sbSplAnimSpeed_valueChanged(double val)
{
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
float lval = adloader->splashes[id].animSpeed;
adloader->splashes[id].animSpeed = val;
if (lval != adloader->splashes[id].animSpeed) isSaved = false;
}
void MainWindow::on_cbSplKeepOnAlien_toggled(bool checked)
{
int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id;
bool lval = adloader->splashes[id].keepOnAlien;
adloader->splashes[id].keepOnAlien = checked;
if (lval != adloader->splashes[id].keepOnAlien) isSaved = false;
}

View File

@@ -16,101 +16,105 @@
#include "animlabel.h"
namespace Ui {
class MainWindow;
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
Loader * adloader;
AlienModel * alModel;
TowerModel * twModel;
SplashModel * splModel;
TriggerModel* trigModel;
MapModel * mapModel;
AnimationModel * animModel;
QGraphicsScene * mapScene;
Ui::MainWindow *ui;
Loader * adloader;
AlienModel * alModel;
TowerModel * twModel;
SplashModel * splModel;
TriggerModel* trigModel;
MapModel * mapModel;
AnimationModel * animModel;
QGraphicsScene * mapScene;
//AnimLabel * alb;
//AnimLabel * alb;
bool isSaved;
bool isSaved;
void refresh_lwImages(QStringList pathes);
void closeEvent(QCloseEvent *);
void refresh_lwImages(QStringList pathes);
void closeEvent(QCloseEvent *);
private slots:
void on_pbAnimDel_clicked();
void on_cbSplImage_currentIndexChanged(int index);
void on_cbTwImage_currentIndexChanged(int index);
void on_cbAlImage_currentIndexChanged(int index);
void on_pbAnimAdd_clicked();
void on_pbImgDel_clicked();
void on_pbImgAdd_clicked();
void on_cbTrigChildAim_currentIndexChanged(int index);
void on_cbTrigType_currentIndexChanged(int index);
void on_cbTrigCount_toggled(bool checked);
void on_leTrigName_editingFinished();
void on_pbTwSplashEdit_clicked();
void on_cbTrigDamRad_toggled(bool checked);
void on_cbTrigDamage_toggled(bool checked);
void on_cbTrigDelPar_toggled(bool checked);
void on_cbTrigChance_toggled(bool checked);
void on_cbTrigRandRadius_toggled(bool checked);
void on_cbTwExpByKill_toggled(bool checked);
void on_cbTwExpByDam_toggled(bool checked);
void on_cbTwExpByShot_toggled(bool checked);
void on_cbAlIsFly_toggled(bool checked);
void on_pbTrigDel_clicked();
void on_pbTrigAdd_clicked();
void on_sbTrigChance_valueChanged(int );
void on_sbTrigDamRadius_valueChanged(double );
void on_sbTrigDamage_valueChanged(double );
void on_sbTrigTimer_valueChanged(int );
void on_sbTrigRandomRadius_valueChanged(double );
void on_sbTrigCount_valueChanged(int );
void on_pbReload_clicked();
void on_pbSlpDel_clicked();
void on_pbSplAdd_clicked();
void on_sbSplLifeTime_valueChanged(int );
void on_cbSplAutoControl_toggled(bool checked);
void on_sbSplSpeed_valueChanged(double );
void on_leSplName_editingFinished();
void on_pbTwDel_clicked();
void on_sbTwExpByKill_valueChanged(double );
void on_sbTwExpByDam_valueChanged(double );
void on_sbTwExpByShot_valueChanged(double );
void on_sbTwRadius_valueChanged(double );
void on_sbTwReload_valueChanged(int );
void on_cbTwSplash_currentIndexChanged(int index);
void on_sbTwCost_valueChanged(int );
void on_sbTwBuildTime_valueChanged(int );
void on_pbTwAdd_clicked();
void on_leTwName_editingFinished();
void on_pbAlDel_clicked();
void on_pbAlAdd_clicked();
void on_leAlName_editingFinished();
void on_sbAlScore_valueChanged(int );
void on_sbAlPrise_valueChanged(int );
void on_sbAlSpeed_valueChanged(double );
void on_sbAlregeneration_valueChanged(double );
void on_sbAlArmor_valueChanged(double );
void on_sbAlHealth_valueChanged(double );
void on_pbSave_clicked();
void lvAliens_select(QModelIndex, QModelIndex);
void lvAnimations_select(QModelIndex, QModelIndex);
void lvTowers_select(QModelIndex, QModelIndex);
void lvSplashes_select(QModelIndex, QModelIndex);
void lvTriggers_select(QModelIndex, QModelIndex);
void lvMaps_select(QModelIndex, QModelIndex);
void on_cbAlRegeneration_toggled(bool checked);
void on_cbAlArmor_toggled(bool checked);
void on_pbAnimDel_clicked();
void on_cbSplImage_currentIndexChanged(int index);
void on_cbTwImage_currentIndexChanged(int index);
void on_cbAlImage_currentIndexChanged(int index);
void on_pbAnimAdd_clicked();
void on_pbImgDel_clicked();
void on_pbImgAdd_clicked();
void on_cbTrigChildAim_currentIndexChanged(int index);
void on_cbTrigType_currentIndexChanged(int index);
void on_cbTrigCount_toggled(bool checked);
void on_leTrigName_editingFinished();
void on_pbTwSplashEdit_clicked();
void on_cbTrigDamRad_toggled(bool checked);
void on_cbTrigDamage_toggled(bool checked);
void on_cbTrigDelPar_toggled(bool checked);
void on_cbTrigChance_toggled(bool checked);
void on_cbTrigRandRadius_toggled(bool checked);
void on_cbTwExpByKill_toggled(bool checked);
void on_cbTwExpByDam_toggled(bool checked);
void on_cbTwExpByShot_toggled(bool checked);
void on_cbAlIsFly_toggled(bool checked);
void on_pbTrigDel_clicked();
void on_pbTrigAdd_clicked();
void on_sbTrigChance_valueChanged(int );
void on_sbTrigDamRadius_valueChanged(double );
void on_sbTrigDamage_valueChanged(double );
void on_sbTrigTimer_valueChanged(int );
void on_sbTrigRandomRadius_valueChanged(double );
void on_sbTrigCount_valueChanged(int );
void on_pbReload_clicked();
void on_pbSlpDel_clicked();
void on_pbSplAdd_clicked();
void on_sbSplLifeTime_valueChanged(int );
void on_cbSplAutoControl_toggled(bool checked);
void on_sbSplSpeed_valueChanged(double );
void on_leSplName_editingFinished();
void on_pbTwDel_clicked();
void on_sbTwExpByKill_valueChanged(double );
void on_sbTwExpByDam_valueChanged(double );
void on_sbTwExpByShot_valueChanged(double );
void on_sbTwRadius_valueChanged(double );
void on_sbTwReload_valueChanged(int );
void on_cbTwSplash_currentIndexChanged(int index);
void on_sbTwCost_valueChanged(int );
void on_sbTwBuildTime_valueChanged(int );
void on_pbTwAdd_clicked();
void on_leTwName_editingFinished();
void on_pbAlDel_clicked();
void on_pbAlAdd_clicked();
void on_leAlName_editingFinished();
void on_sbAlScore_valueChanged(int );
void on_sbAlPrise_valueChanged(int );
void on_sbAlSpeed_valueChanged(double );
void on_sbAlregeneration_valueChanged(double );
void on_sbAlArmor_valueChanged(double );
void on_sbAlHealth_valueChanged(double );
void on_pbSave_clicked();
void lvAliens_select(QModelIndex, QModelIndex);
void lvAnimations_select(QModelIndex, QModelIndex);
void lvTowers_select(QModelIndex, QModelIndex);
void lvSplashes_select(QModelIndex, QModelIndex);
void lvTriggers_select(QModelIndex, QModelIndex);
void lvMaps_select(QModelIndex, QModelIndex);
void on_cbAlRegeneration_toggled(bool checked);
void on_cbAlArmor_toggled(bool checked);
void on_cbSplCompisitionMode_currentIndexChanged(const QString &arg1);
void on_sbSplZValue_valueChanged(double arg1);
void on_sbSplAnimSpeed_valueChanged(double arg1);
void on_cbSplKeepOnAlien_toggled(bool checked);
};
#endif // MAINWINDOW_H

View File

@@ -47,7 +47,7 @@
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
<number>5</number>
<number>2</number>
</property>
<property name="movable">
<bool>true</bool>
@@ -875,19 +875,7 @@
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7" stretch="0,0,0,0,0,0">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_28">
<item>
@@ -964,7 +952,7 @@
</sizepolicy>
</property>
<property name="text">
<string>LifeTime</string>
<string>Life time</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
@@ -986,6 +974,197 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_24">
<item>
<widget class="QLabel" name="label_38">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Animation speed</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbSplAnimSpeed">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimum">
<double>0.010000000000000</double>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_41">
<item>
<widget class="QLabel" name="label_39">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Z value</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbSplZValue">
<property name="enabled">
<bool>true</bool>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_47">
<item>
<widget class="QLabel" name="label_36">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Composition mode</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="cbSplCompisitionMode">
<property name="duplicatesEnabled">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>Source</string>
</property>
</item>
<item>
<property name="text">
<string>NotSource</string>
</property>
</item>
<item>
<property name="text">
<string>Plus</string>
</property>
</item>
<item>
<property name="text">
<string>Multiply</string>
</property>
</item>
<item>
<property name="text">
<string>Screen</string>
</property>
</item>
<item>
<property name="text">
<string>Overlay</string>
</property>
</item>
<item>
<property name="text">
<string>Darken</string>
</property>
</item>
<item>
<property name="text">
<string>Lighten</string>
</property>
</item>
<item>
<property name="text">
<string>ColorDodge</string>
</property>
</item>
<item>
<property name="text">
<string>ColorBurn</string>
</property>
</item>
<item>
<property name="text">
<string>HardLight</string>
</property>
</item>
<item>
<property name="text">
<string>SoftLight</string>
</property>
</item>
<item>
<property name="text">
<string>Difference</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_48">
<item>
<widget class="QCheckBox" name="cbSplKeepOnAlien">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Keep on alien</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_14">
<item>
@@ -1000,7 +1179,7 @@
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>AutoControl</string>
<string>Auto control</string>
</property>
</widget>
</item>
@@ -1258,7 +1437,7 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout_40">
<item>
<widget class="QLabel" name="label_35">
<widget class="QLabel" name="lbTrigChildAim">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
@@ -1673,6 +1852,9 @@
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::InternalMove</enum>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>

View File

@@ -1,14 +0,0 @@
cmake_minimum_required(VERSION 2.6)
project(Alien_Defender)
find_package(Qt4 REQUIRED)
include_directories(${QT_INCLUDES})
file(GLOB MOCS "./*.h")
file(GLOB CPPS "./*.cpp")
file(GLOB UIS "./*.ui")
file(GLOB RES "./*.qrc")
add_definitions(-Wall -O2 -g3 -ggdb)
qt4_wrap_ui(CUIS ${UIS})
qt4_wrap_cpp(CMOCS ${MOCS})
qt4_add_resources(CRES ${RES})
add_executable(AlienDefender ${CMOCS} ${CUIS} ${CPPS} ${CRES})
target_link_libraries(AlienDefender ${QT_LIBRARIES} ${QT_QTOPENGL_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTXMLPATTERNS_LIBRARY})

View File

@@ -4,16 +4,24 @@
AD_Graphics::AD_Graphics(AD_Core *adcore, QWidget *parent) : QGraphicsView(parent)
AD_Graphics::AD_Graphics(AD_Core *adcore, QWidget *parent) : QGraphicsView(parent) , color_curve(QEasingCurve::InQuad)
{
focus_item = select_tow = select_al = 0;
data = adcore->addata;
core = adcore;
setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
setAlignment(Qt::AlignLeft | Qt::AlignTop);
setMouseTracking(true);
scene = new QGraphicsScene();
scene->setItemIndexMethod(QGraphicsScene::NoIndex);
core->setScene(scene);
setScene(scene);
selection_al = new ADItem(-1, ADItem::Other, core->addata->alienSelect.images);
selection_al->hide();
selection_tow = new ADItem(-1, ADItem::Other, core->addata->towerSelect.images);
selection_tow->hide();
scene->addItem(selection_al);
scene->addItem(selection_tow);
//setCacheMode();
//setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
mapimg = new QImage(data->map->rect().size()*cellSize,QImage::Format_ARGB32);
@@ -46,6 +54,7 @@ AD_Graphics::AD_Graphics(AD_Core *adcore, QWidget *parent) : QGraphicsView(paren
scene->setSceneRect(mapimg->rect());
scene->setBackgroundBrush(*mapimg);
setCacheMode(QGraphicsView::CacheBackground);
setRenderHints(QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing);
resize(mapimg->size());
startTimer(50);
}
@@ -53,13 +62,15 @@ AD_Graphics::AD_Graphics(AD_Core *adcore, QWidget *parent) : QGraphicsView(paren
AD_Graphics::~AD_Graphics()
{
delete selection_tow;
delete selection_al;
delete scene;
}
void AD_Graphics::mousePressEvent(QMouseEvent *event)
{
scene->clearSelection();
// scene->clearSelection();
if (event->button() == Qt::LeftButton)
{
if (m_building) emit add_tow((QPointF(event->pos())/cellSize).toPoint());
@@ -72,8 +83,9 @@ void AD_Graphics::mousePressEvent(QMouseEvent *event)
ADItem * i = qgraphicsitem_cast<ADItem*>(x);
if (i->itemType() == ADItem::Tower)
{
i->setSelected(true);
emit tower_select(i->tid());
// i->setSelected(true);
select_tow = i;
emit selected_tower_changed(i->tid());
return;
}
if (i->itemType() == ADItem::Alien)
@@ -83,19 +95,37 @@ void AD_Graphics::mousePressEvent(QMouseEvent *event)
}
if (al != 0)
{
al->setSelected(true);
emit alien_select(al->id());
// al->setSelected(true);
select_al = al;
core->addata->players.at(0)->selectAlienId = select_al->id();
return;
}
}
}
if (event->button() == Qt::RightButton)
{
select_al = 0;
select_tow = 0;
emit selected_tower_changed(QPoint());
emit cancel();
}
}
void AD_Graphics::timerEvent(QTimerEvent * )
{
if (select_al != 0)
{
selection_al->setPos(select_al->pos());
selection_al->show();
} else selection_al->hide();
if (select_tow != 0)
{
selection_tow->setPos(select_tow->pos());
selection_tow->show();
} else selection_tow->hide();
selection_tow->next();
selection_al->next();
if (!core->isWaveEnd())
scene->update();
}
@@ -116,9 +146,38 @@ void AD_Graphics::drawForeground(QPainter *p, const QRectF &rect)
if (i->isBarVisible())
{
p->setPen(Qt::black);
p->setBrush(QBrush(QColor(qRound(255*(1-i->value())),qRound(255*i->value()),0)));
p->setBrush(Qt::NoBrush);
p->drawRect(i->pos().x()-cellSize-1,i->pos().y()-cellSize*1.25-1,cellSize*2+2,cellSize/4+2);
p->setPen(Qt::NoPen);
p->setBrush(QBrush(QColor::fromHsv(120*color_curve.valueForProgress(i->value()),230,230)));
p->drawRect(i->pos().x()-cellSize,i->pos().y()-cellSize*1.25,cellSize*2*i->value(),cellSize/4);
}
}
if (focus_item != 0)
{
if (focus_item->itemType() == ADItem::Tower)
{
float r = core->addata->curTowers[focus_item->tid()].src->radius*cellSize;
p->setPen(Qt::black);
p->setBrush(Qt::NoBrush);
p->drawEllipse(focus_item->pos(), r, r);
}
}
}
void AD_Graphics::mouseMoveEvent(QMouseEvent *event)
{
QList<QGraphicsItem * > li = scene->items(event->pos(), Qt::IntersectsItemBoundingRect, Qt::DescendingOrder);
foreach (QGraphicsItem * i, li) {
if (qgraphicsitem_cast<ADItem *>(i)->itemType() == ADItem::Tower) {
focus_item = qgraphicsitem_cast<ADItem *>(i);
// selection_tow->setPos(focus_item->pos());
// selection_tow->show();
return;
}
}
// selection_tow->hide();
focus_item = 0;
}

View File

@@ -4,6 +4,7 @@
#include <QGraphicsWidget>
#include <QPushButton>
#include <QMouseEvent>
#include <QEasingCurve>
#include "adcore.h"
@@ -14,42 +15,43 @@ class AD_Graphics: public QGraphicsView
Q_PROPERTY(bool building READ building WRITE setBuilding)
public:
explicit AD_Graphics(AD_Core * core, QWidget * parent = 0);
QPoint selectedTower() {if (select_tow != 0) return select_tow->tid(); else return QPoint();}
int selectedAlien() {if (select_al != 0) return select_al->id(); else return -1;}
~AD_Graphics();
bool building() const
{
return m_building;
}
bool building() const {return m_building;}
public slots:
void setBuilding(bool arg)
{
m_building = arg;
}
void selectTower(ADItem * item) {select_tow = item;}
void setBuilding(bool arg) {m_building = arg;}
void alienKilled(int id) {if (select_al != 0) if (select_al->id() == id) select_al = 0;}
void towerKilled(QPoint id) {if (select_tow != 0) if (select_tow->tid() == id) {select_tow = 0; emit selected_tower_changed(QPoint());}}
private:
void drawBackground(QPainter * p, const QRectF &);
void drawForeground(QPainter *painter, const QRectF &rect);
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
QGraphicsScene * scene;
AD_Core * core;
QImage * mapimg;
Game_Data * data;
ADItem * focus_item;
ADItem * select_al;
ADItem * select_tow;
ADItem * selection_tow;
ADItem * selection_al;
QEasingCurve color_curve;
bool m_building;
private slots:
protected:
void timerEvent(QTimerEvent * );
signals:
signals:
void cancel();
void add_tow(QPoint pnt);
void tower_select(QPoint id);
void alien_select(int id);
void selected_tower_changed(QPoint id);
};
#endif // AD_GRAPHICS_H

View File

@@ -8,7 +8,7 @@ AD_Core::AD_Core(QObject *parent) :
adloader->load("data2.xml");
addata = adloader->loadlevel(1);
delete adloader;
if (addata != 0) qDebug("Sucsess");
if (addata != 0) qDebug("Success");
else qFatal("Error");
adtowers = new Towers(addata);
adsplashes = new Splashes(addata);
@@ -17,7 +17,7 @@ AD_Core::AD_Core(QObject *parent) :
connect(adsplashes,SIGNAL(killAlien(int,int)),this,SLOT(killAlien(int,int)));
waveInProgress = false;
waveEnd = false;
startTimer(50);
timer = startTimer(40);
}
@@ -26,6 +26,10 @@ void AD_Core::next()
adtowers->update();
adsplashes->update();
addata->aliens->update();
foreach(Player * p, addata->players)
{
if (!addata->aliens->curAliens.contains(p->selectAlienId)) p->selectAlienId = -1;
}
waveProcessing();
step++;
}
@@ -81,7 +85,7 @@ void AD_Core::waveProcessing()
void AD_Core::killAlien(int playerId, int alienId)
{
addata->players.at(playerId)->money += addata->aliens->curAliens[alienId].src->prise;
addata->players[playerId]->money += addata->aliens->curAliens[alienId].src->prise;
addata->aliens->delAlien(alienId);
}
@@ -92,3 +96,10 @@ void AD_Core::setScene(QGraphicsScene *scene)
adtowers->setScene(scene);
adsplashes->setScene(scene);
}
void AD_Core::setSpeed(float x)
{
killTimer(timer);
timer = startTimer(qRound(40.f/x));
}

View File

@@ -10,33 +10,36 @@
class AD_Core : public QThread
{
Q_OBJECT
Q_OBJECT
public:
explicit AD_Core(QObject *parent = 0);
Game_Data * addata;
Towers * adtowers;
Splashes * adsplashes;
long int step;
explicit AD_Core(QObject *parent = 0);
Game_Data * addata;
Towers * adtowers;
Splashes * adsplashes;
long int step;
void setScene(QGraphicsScene * scene);
bool isWaveEnd() {return waveEnd;}
void setScene(QGraphicsScene * scene);
bool isWaveEnd() {return waveEnd;}
void setSpeed(float x);
public slots:
void next();
void nextWave();
void next();
void nextWave();
private:
void timerEvent(QTimerEvent * );
void waveProcessing();
void timerEvent(QTimerEvent * );
void waveProcessing();
bool waveInProgress;
bool waveEnd;
int wavetime;
bool waveInProgress;
bool waveEnd;
int wavetime;
int timer;
private slots:
void killAlien(int playerId, int alienId);
void killAlien(int playerId, int alienId);
signals:
};
#endif // ADCORE_H

View File

@@ -6,69 +6,80 @@
ADItem::ADItem(int id, adType type, QList<QImage *> *images_, QRectF geometry, QGraphicsItem *parent) :
QGraphicsItem(parent)
{
m_id = id;
m_type = type;
anim = 0;
images = images_;
animcount = images->size();
QSize size = images->at(0)->size();
staticImage = false;
if (animcount == 1) staticImage = true;
if (geometry.isNull()) br = QRect(QPoint(-(size.width()/2), -(size.height()/2)), size);
else br = geometry;
if (type == Alien)
{
setFlag(QGraphicsItem::ItemIsSelectable);
barValue = 1.f;
hasBar = true;
} else hasBar = false;
if (staticImage)
{
setCacheMode(QGraphicsItem::ItemCoordinateCache);
img = (*images)[0];
}
m_id = id;
m_type = type;
anim = 0;
images = images_;
animcount = images->size();
QSize size = images->at(0)->size();
staticImage = false;
if (animcount == 1) staticImage = true;
if (geometry.isNull()) br = QRect(QPoint(-(size.width()/2), -(size.height()/2)), size);
else br = geometry;
hasBar = false;
switch (type)
{
case Alien :
setFlag(QGraphicsItem::ItemIsSelectable);
barValue = 1.f;
hasBar = true;
setZValue(-1.f);
break;
case Other :
default:
setZValue(3.f);
}
if (staticImage)
{
setCacheMode(QGraphicsItem::ItemCoordinateCache);
img = (*images)[0];
}
cmode = QPainter::CompositionMode_SourceOver;
}
ADItem::ADItem(QPoint id, QImage *image, QRectF geometry, QGraphicsItem *parent) :
QGraphicsItem(parent)
QGraphicsItem(parent)
{
hasBar = true;
barValue = 0.f;
m_type = Tower;
m_tid = id;
img = image;
QSize size = img->size();
if (geometry.isNull()) br = QRect(QPoint(-(size.width()/2),-(size.height()/2)),size);
else br = geometry;
staticImage = true;
setFlag(QGraphicsItem::ItemIsSelectable);
hasBar = true;
barValue = 0.f;
m_type = Tower;
setZValue(-2.f);
m_tid = id;
img = image;
QSize size = img->size();
if (geometry.isNull()) br = QRectF(QPoint(-(size.width()/2),-(size.height()/2)),size);
else br = geometry;
staticImage = true;
setFlag(QGraphicsItem::ItemIsSelectable);
cmode = QPainter::CompositionMode_SourceOver;
}
void ADItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
{
if (staticImage)
painter->drawImage(br,*img);
else painter->drawImage(br, *(images->at(qRound(anim))));
if (isSelected())
{
painter->setPen(Qt::red);
painter->drawRect(br);
}
painter->setCompositionMode(cmode);
if (staticImage)
painter->drawImage(br,*img);
else painter->drawImage(br, *(images->at(qRound(anim))));
// if (isSelected())
// {
// painter->setPen(Qt::red);
// painter->drawRect(br);
// }
}
QRectF ADItem::boundingRect() const
{
return br;
return br;
}
void ADItem::next(float step)
{
if (staticImage) return;
anim+=step;
if (qRound(anim) >= animcount)
anim = 0;
if (staticImage) return;
anim+=step;
if (qRound(anim) >= animcount)
anim = 0;
}

View File

@@ -2,37 +2,40 @@
#define ADITEM_H
#include <QGraphicsItem>
#include <QPainter>
class ADItem : public QGraphicsItem
{
public:
enum adType {Alien, Tower, Splash};
explicit ADItem(int id, adType type, QList<QImage *> *images, QRectF geometry = QRectF(), QGraphicsItem *parent = 0);
explicit ADItem(QPoint id, QImage * image, QRectF geometry = QRectF(), QGraphicsItem *parent = 0);
void setBarValue(float val) {barValue = val;}
void setBarVisible(bool visible = true) {hasBar = visible;}
void hideBar() {hasBar = false; setCacheMode(QGraphicsItem::ItemCoordinateCache);}
float value() {return barValue;}
bool isBarVisible() {return hasBar;}
void next(float step);
QPoint tid() {return m_tid;}
int id() {return m_id;}
adType itemType() {return m_type;}
enum adType {Alien, Tower, Splash, Other};
explicit ADItem(int id, adType type, QList<QImage *> *images, QRectF geometry = QRectF(), QGraphicsItem *parent = 0);
explicit ADItem(QPoint id, QImage * image, QRectF geometry = QRectF(), QGraphicsItem *parent = 0);
void setBarValue(float val) {barValue = val;}
void setBarVisible(bool visible = true) {hasBar = visible;}
void setCompositionMode(QPainter::CompositionMode mode) {cmode = mode;}
void hideBar() {hasBar = false; setCacheMode(QGraphicsItem::ItemCoordinateCache);}
float value() {return barValue;}
bool isBarVisible() {return hasBar;}
void next(float step = 1.f);
QPoint tid() {return m_tid;}
int id() {return m_id;}
adType itemType() {return m_type;}
QRectF boundingRect() const;
private:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
QRectF boundingRect() const;
QList<QImage *> * images;
QImage * img;
float anim;
adType m_type;
int m_id;
QPoint m_tid;
int animcount;
bool staticImage;
bool hasBar;
float barValue;
QRectF br;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
QList<QImage *> * images;
QImage * img;
float anim;
adType m_type;
int m_id;
QPoint m_tid;
int animcount;
bool staticImage;
bool hasBar;
float barValue;
QRectF br;
QPainter::CompositionMode cmode;
};
#endif // ADITEM_H

View File

@@ -1,3 +0,0 @@
[Project]
Manager=KDevCMakeManager
Name=aliendefender

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by Qt Creator 2.2.84, 2011-08-20T10:11:41. -->
<!-- Written by Qt Creator 2.2.84, 2011-08-21T21:34:49. -->
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -87,7 +87,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Target.DesktopTarget</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
@@ -132,7 +132,7 @@
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qt Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
@@ -141,7 +141,7 @@
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">INVALID</value>
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Mingw:D:/Qt/qtcreator-2.2.84/mingw/bin/gcc.exe.x86-windows-msys-pe-32bit.D:/Qt/qtcreator-2.2.84/pythongdb/gdb-i686-pc-mingw32.exe</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
@@ -182,12 +182,12 @@
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qt Релиз</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">D:/Dropbox/My Dropbox/projects/aliendefender-build-desktop</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">-1</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">7</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>

View File

@@ -0,0 +1,184 @@
<!DOCTYPE QtCreatorProject>
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value key="EditorConfiguration.AutoIndent" type="bool">true</value>
<value key="EditorConfiguration.AutoSpacesForTabs" type="bool">false</value>
<value key="EditorConfiguration.Codec" type="QByteArray">System</value>
<value key="EditorConfiguration.DoubleIndentBlocks" type="bool">false</value>
<value key="EditorConfiguration.IndentBraces" type="bool">false</value>
<value key="EditorConfiguration.IndentSize" type="int">4</value>
<value key="EditorConfiguration.MouseNavigation" type="bool">true</value>
<value key="EditorConfiguration.PaddingMode" type="int">1</value>
<value key="EditorConfiguration.ScrollWheelZooming" type="bool">true</value>
<value key="EditorConfiguration.SmartBackspace" type="bool">false</value>
<value key="EditorConfiguration.SpacesForTabs" type="bool">false</value>
<value key="EditorConfiguration.TabKeyBehavior" type="int">0</value>
<value key="EditorConfiguration.TabSize" type="int">4</value>
<value key="EditorConfiguration.UseGlobal" type="bool">true</value>
<value key="EditorConfiguration.Utf8BomBehavior" type="int">1</value>
<value key="EditorConfiguration.addFinalNewLine" type="bool">true</value>
<value key="EditorConfiguration.cleanIndentation" type="bool">true</value>
<value key="EditorConfiguration.cleanWhitespace" type="bool">true</value>
<value key="EditorConfiguration.inEntireDocument" type="bool">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString"></value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Target.DesktopTarget</value>
<value key="ProjectExplorer.Target.ActiveBuildConfiguration" type="int">0</value>
<value key="ProjectExplorer.Target.ActiveDeployConfiguration" type="int">0</value>
<value key="ProjectExplorer.Target.ActiveRunConfiguration" type="int">0</value>
<valuemap key="ProjectExplorer.Target.BuildConfiguration.0" type="QVariantMap">
<value key="ProjectExplorer.BuildCOnfiguration.ToolChain" type="QString">ProjectExplorer.ToolChain.Mingw:D:/Qt/2010.04/mingw/bin/g++.exe.x86-windows-msys-pe-32bit.C:/Qt/qtcreator-2.2.0/pythongdb/gdb-i686-pc-mingw32.exe</value>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStepList.0" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildStepList.Step.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">qmake</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
<value key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary" type="bool">false</value>
<value key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QString"></value>
<value key="QtProjectManager.QMakeBuildStep.QMakeForced" type="bool">false</value>
</valuemap>
<valuemap key="ProjectExplorer.BuildStepList.Step.1" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Сборка</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
<value key="Qt4ProjectManager.MakeStep.MakeArguments" type="QString"></value>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildStepList.StepsCount" type="int">2</value>
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Build</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Build</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStepList.1" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildStepList.Step.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Сборка</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
<value key="Qt4ProjectManager.MakeStep.MakeArguments" type="QString">clean</value>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildStepList.StepsCount" type="int">1</value>
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Clean</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Clean</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.BuildStepListCount" type="int">2</value>
<value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
<valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Debug</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Debug</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">D:/Dropbox/My Dropbox/projects/aliendefender-build-desktop</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">7</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="QString">ProjectExplorer.ToolChain.Mingw:D:/Qt/2010.04/mingw/bin/g++.exe.x86-windows-msys-pe-32bit.C:/Qt/qtcreator-2.2.0/pythongdb/gdb-i686-pc-mingw32.exe</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
</valuemap>
<valuemap key="ProjectExplorer.Target.BuildConfiguration.1" type="QVariantMap">
<value key="ProjectExplorer.BuildCOnfiguration.ToolChain" type="QString">ProjectExplorer.ToolChain.Mingw:C:/Qt/qtcreator-2.2.0/mingw/bin/gcc.exe.x86-windows-msys-pe-32bit.C:/Qt/qtcreator-2.2.0/pythongdb/gdb-i686-pc-mingw32.exe</value>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStepList.0" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildStepList.Step.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">qmake</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
<value key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary" type="bool">false</value>
<value key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QString"></value>
<value key="QtProjectManager.QMakeBuildStep.QMakeForced" type="bool">false</value>
</valuemap>
<valuemap key="ProjectExplorer.BuildStepList.Step.1" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Сборка</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
<value key="Qt4ProjectManager.MakeStep.MakeArguments" type="QString"></value>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildStepList.StepsCount" type="int">2</value>
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Build</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Build</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStepList.1" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildStepList.Step.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Сборка</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
<value key="Qt4ProjectManager.MakeStep.MakeArguments" type="QString"></value>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildStepList.StepsCount" type="int">1</value>
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Clean</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Clean</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.BuildStepListCount" type="int">2</value>
<value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
<valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Release</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Release</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">D:/Dropbox/My Dropbox/projects/aliendefender-build-desktop</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="QString">ProjectExplorer.ToolChain.Mingw:C:/Qt/qtcreator-2.2.0/mingw/bin/gcc.exe.x86-windows-msys-pe-32bit.C:/Qt/qtcreator-2.2.0/pythongdb/gdb-i686-pc-mingw32.exe</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
</valuemap>
<value key="ProjectExplorer.Target.BuildConfigurationCount" type="int">2</value>
<valuemap key="ProjectExplorer.Target.DeployConfiguration.0" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStepList.0" type="QVariantMap">
<value key="ProjectExplorer.BuildStepList.StepsCount" type="int">0</value>
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Установка</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Deploy</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.BuildStepListCount" type="int">1</value>
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Без установки</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Без установки</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value key="ProjectExplorer.Target.DeployConfigurationCount" type="int">1</value>
<valuemap key="ProjectExplorer.Target.RunConfiguration.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Конфигурация запуска Qt4</value>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">aliendefender</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase" type="int">2</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments" type="QString"></value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.ProFile" type="QString">aliendefender.pro</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix" type="bool">false</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal" type="bool">false</value>
<valuelist key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory" type="QString"></value>
<value key="RunConfiguration.QmlDebugServerPort" type="uint">3768</value>
<value key="RunConfiguration.UseCppDebugger" type="bool">true</value>
<value key="RunConfiguration.UseQmlDebugger" type="bool">false</value>
</valuemap>
<value key="ProjectExplorer.Target.RunConfigurationCount" type="int">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
<value type="QString">{00000000-0000-0000-0000-000000000000}</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">9</value>
</data>
</qtcreator>

View File

@@ -60,6 +60,7 @@ void Aliens::retrace(bool * OK)
void Aliens::delAlien(int id, bool missed)
{
emit alien_killed(id);
if (missed)
{
m_missingAliens++;

View File

@@ -11,28 +11,29 @@ class Aliens : public QObject
{
Q_OBJECT
public:
explicit Aliens(Map * map, QObject *parent = 0);
void addAlien(int srcId);
void update();
void setScene(QGraphicsScene * scene_) {scene = scene_;}
QList <srcAlienType> srcAliens;
QHash <int,AlienType> curAliens;
int missingAliens() {return m_missingAliens;}
explicit Aliens(Map * map, QObject *parent = 0);
void addAlien(int srcId);
void update();
void setScene(QGraphicsScene * scene_) {scene = scene_;}
QList <srcAlienType> srcAliens;
QHash <int,AlienType> curAliens;
int missingAliens() {return m_missingAliens;}
signals:
void alien_killed(int id);
public slots:
void delAlien(int id, bool missed = false);
void retrace(bool * OK);
void delAlien(int id, bool missed = false);
void retrace(bool * OK);
private:
Map * map;
QGraphicsScene * scene;
Map * map;
QGraphicsScene * scene;
QPointF globStart;
QPointF globFinish;
int nextId;
int m_missingAliens;
QPointF globStart;
QPointF globFinish;
int nextId;
int m_missingAliens;
};

View File

@@ -15,180 +15,230 @@
#include <QRectF>
#include <QImage>
#include <QStringList>
#include <QPainter>
#include "aditem.h"
const float cellSize = 20.f;
struct srcAlienType;
struct srcTowerType;
struct srcSplashType;
struct srcTriggerType;
struct srcAlienType
{
QString name;
float speed;
float health;
float armor;
float regeneration;
bool isFlying;
unsigned int score;
int imgType;
QList<QImage *> * images;
unsigned int prise;
QString name;
float speed;
float health;
float armor;
float regeneration;
bool isFlying;
unsigned int score;
int imgType;
QList<QImage *> * images;
unsigned int prise;
};
struct AlienType
{
int id; // uses for QHash
srcAlienType * src;
QPointF pos;
float angle; // -180 .. 180
float speed; // cells per tick (speed=1 is 60cells by 1 sec for 60fps e.g.)
float health;
QPoint finish;
QVector <QPointF> path;
int pathIndex;
ADItem * item;
int id; // uses for QHash
srcAlienType * src;
QPointF pos;
float angle; // -180 .. 180
float speed; // cells per tick (speed=1 is 60cells by 1 sec for 60fps e.g.)
float health;
QPoint finish;
QVector <QPointF> path;
int pathIndex;
ADItem * item;
};
struct srcTriggerType
{
enum triggerType
{
onDestination,
onTimer,
onAlienInRadius
};
enum triggerType
{
onDestination,
onTimer,
onAlienInRadius
};
enum aimType
{
noAim,
parentAim,
allSide,
nearlestAlien
};
int childId; // =-1 for none birth splash (e.q. only damage)
aimType childAim;
bool delParent;
float damage;
float radius;
triggerType type;
unsigned int timer;
int count;
float randomPosRadius;
enum aimType
{
noAim,
parentAim,
allSide,
nearestAlien
};
int childId; // =-1 for none birth splash (e.q. only damage)
aimType childAim;
bool delParent;
float damage;
float radius;
triggerType type;
unsigned int timer;
int count;
float randomPosRadius;
};
struct TriggerOnDest
{
srcTriggerType * src;
srcTriggerType * src;
};
struct TriggerOnTimer
{
srcTriggerType * src;
unsigned int timer;
srcTriggerType * src;
unsigned int timer;
};
struct TriggerOnAlien
{
srcTriggerType * src;
QList <int> triggerAliens;
srcTriggerType * src;
QList <int> triggerAliens;
};
struct srcSplashType;
struct MorphType
{
srcTowerType * morph;
float expRequired;
unsigned int cost;
};
struct srcTowerType
{
QString name;
QImage * image;
int imgType;
int PlayerId; // tower's owner
unsigned int cost;
unsigned int reload;
unsigned int buildTime;
float radius; // in cells
float expByShot;
float expByKill;
float expByDamage;
QList <srcTriggerType> triggers;
QList <srcSplashType> splashes;
QString name;
QImage * image;
int imgType;
int PlayerId; // tower's owner
unsigned int cost;
unsigned int reload;
unsigned int buildTime;
float radius; // in cells
float expByShot;
float expByKill;
float expByDamage;
bool isRoot;
QList <srcTriggerType> triggers;
QList <srcSplashType> splashes;
QList<MorphType> morphs;
};
struct TowerType
{
srcTowerType * src;
int aim; // aim alien Id
int PlayerId; // tower's owner
QPoint pos; // same as Id; not QPointF because tower fixed on grid
float angle; // -180 .. 180
unsigned int reload; // time for reload in ticks
unsigned int build;
float experience;
ADItem * item;
bool isBilding;
srcTowerType * src;
int aim; // aim alien Id
int PlayerId; // tower's owner
QPoint pos; // same as Id; not QPointF because tower fixed on grid
float angle; // -180 .. 180
unsigned int reload; // time for reload in ticks
unsigned int build;
float experience;
ADItem * item;
bool isBilding;
};
struct srcSplashType
{
QString name;
int imgType;
float speed; // in cells
int lifetime;
bool autoControl;
QList <int> triggerIndexes;
QList<QImage *> * images;
QString name;
int imgType;
float speed; // in cells
int lifetime;
bool autoControl;
bool keepOnAlien;
float animSpeed;
float ZValue;
QPainter::CompositionMode compositionMode;
QList <int> triggerIndexes;
QList<QImage *> * images;
};
struct SplashType
{
int id;
srcSplashType * src;
srcTowerType * srcTow;
int id;
srcSplashType * src;
srcTowerType * srcTow;
QPoint towerId; // parent tower, (0,0) or null for non parent
int PlayerId;
int AlienId; // aim alien (different from tower.AlienId)
QPointF destination;
int life; // in ticks
float angle; // -180 .. 180
QPointF pos;
QList <TriggerOnAlien> trigsOnAlien;
QList <TriggerOnDest> trigsOnDest;
QList <TriggerOnTimer> trigsOnTimer;
ADItem * item;
int PlayerId;
int AlienId; // aim alien (different from tower.AlienId)
QPointF destination;
int life; // in ticks
float angle; // -180 .. 180
QPointF pos;
QList <TriggerOnAlien> trigsOnAlien;
QList <TriggerOnDest> trigsOnDest;
QList <TriggerOnTimer> trigsOnTimer;
ADItem * item;
};
/// DEPRECATED !!!
struct AnimationType
{
QList<QImage * > * images;
QList<QImage * > * images;
};
/// DEPRECATED !!!
struct WaveType
{
QList <int> types; // some types of aliens (e.g. 2 fly and 3 grount in one wave)
QList <unsigned int> counts; // count aliens of each type
unsigned int timeout; // time in ticks
unsigned int prise;
QList <int> types; // some types of aliens (e.g. 2 fly and 3 grount in one wave)
QList <unsigned int> counts; // count aliens of each type
unsigned int timeout; // time in ticks
unsigned int prise;
};
inline uint qHash(const QPoint &pos)
{
return qHash(pos.x() + (pos.y() << 16));
return qHash(pos.x() + (pos.y() << 16));
}
inline float distance2(const QPointF &p1, const QPointF &p2)
{
return (p1.x()-p2.x())*(p1.x()-p2.x())+(p1.y()-p2.y())*(p1.y()-p2.y());
return (p1.x()-p2.x())*(p1.x()-p2.x())+(p1.y()-p2.y())*(p1.y()-p2.y());
}
template<typename Type>
class _PIForeachC {
public:
_PIForeachC(const Type & t): _t(t) {_it = _t.begin(); _break = false;}
typename Type::value_type _var;
typename Type::const_iterator _it;
const Type & _t;
bool _break, _inv;
inline bool isEnd() {return _it == _t.end();}
inline void operator ++() {_it++; _break = false;}
};
template<typename Type>
class _PIForeach {
public:
_PIForeach(Type & t): _t(t) {_it = _t.begin(); _break = false;}
typename Type::value_type _var;
typename Type::iterator _it;
Type & _t;
bool _break, _inv;
inline bool isEnd() {return _it == _t.end();}
inline void operator ++() {_it++; _break = false;}
};
#define piForTimes(c) for(int i = 0; i < c; ++i)
#define piForeach(i,c) for(_PIForeach<typeof(c)> _for(c); !_for.isEnd(); ++_for) for(i = *_for._it; !_for._break; _for._break = true)
#define piForeachA(i,c) for(_PIForeach<typeof(c)> _for(c); !_for.isEnd(); ++_for) for(typeof(_for._var) & i(*_for._it); !_for._break; _for._break = true)
#define piForeachC(i,c) for(_PIForeachC<typeof(c)> _for(c); !_for.isEnd(); ++_for) for(const i = *_for._it; !_for._break; _for._break = true)
#define piForeachCA(i,c) for(_PIForeachC<typeof(c)> _for(c); !_for.isEnd(); ++_for) for(const typeof(_for._var) & i(*_for._it); !_for._break; _for._break = true)
#define piForeachAC piForeachCA
#endif // BASE_TYPES_H

14
clean
View File

@@ -1,14 +0,0 @@
#! /bin/bash
VERBOSE=1 make clean
for i in $( ls -1 ); do
if [ "`ls -1 --file-type | grep $i | grep -o /`" = "/" ]; then
cd $i
rm -rvf ./CMakeFiles
rm -vf ./CMakeCache.txt ./Makefile ./cmake_install.cmake ./install_manifest.txt ./*~
cd ../
fi
done
rm -rvf ./CMakeFiles
rm -vf ./CMakeCache.txt ./Makefile ./cmake_install.cmake ./install_manifest.txt ./*~ ./*cxx ./moc_* ./*.o
cd ADeditor
make clean

143
data2.xml
View File

@@ -1,8 +1,8 @@
<!DOCTYPE data>
<ADdata>
<aliens>
<alien speed="0.03" imageType="1" prise="1" id="1" score="12" name="Monstr 1" health="15"/>
<alien speed="0.01" imageType="1" prise="100" id="4" score="10" name="test" health="1000"/>
<alien speed="0.05" imageType="1" prise="1" id="1" score="12" name="Monstr 1" health="15"/>
<alien speed="0.02" imageType="1" prise="100" id="4" score="10" name="test" health="1000"/>
<alien speed="0.03" imageType="1" prise="4" id="10" score="99" name="first" health="50"/>
<alien regeneration="3" speed="0.01" imageType="1" prise="10" armor="1.5" id="12" score="99" name="MMMM" health="200"/>
<alien speed="0.05" imageType="1" prise="10" id="33" score="99" name="Mega Alien" health="888"/>
@@ -13,105 +13,106 @@
<map width="25" imageType="20" height="11" id="3" data="AAAEtHicY2BgkGRgYOD+//+PBDpmYFDnxy4OUQ+kGQnhUfWj6kfVj6onRj1mOaO0A5s4ADeqzbA=" name="map" maxPlayers="1"/>
</maps>
<waves>
<wave prise="5" timeout="50" id="1"/>
<wave prise="7" timeout="50" id="2"/>
<wave prise="10" timeout="50" id="3"/>
<wave prise="20" timeout="50" id="4"/>
<wave prise="220" timeout="20" id="5"/>
<wave prise="220" timeout="200" id="6"/>
<!--<wave prise="220" timeout="250" id="7"/>
<wave prise="220" timeout="500" id="8"/>
<wave prise="220" timeout="100" id="9"/>
<wave prise="220" timeout="1" id="10"/>
<wave prise="220" timeout="5" id="11"/>-->
<wave prise="5" timeout="30" id="1"/>
<wave prise="7" timeout="30" id="2"/>
<wave prise="10" timeout="30" id="3"/>
<wave prise="20" timeout="30" id="4"/>
<wave prise="50" timeout="10" id="5"/>
<wave prise="100" timeout="20" id="6"/>
<wave prise="200" timeout="5" id="7"/>
<wave prise="1000" timeout="50" id="8"/>
</waves>
<levels>
<level map="3" id="1" score="138887032" name="First Level"/>
<level map="3" id="1" score="286154272" name="First Level"/>
</levels>
<waveParts>
<wavePart alien="1" count="1" wave="1"/>
<wavePart alien="1" count="2" wave="2"/>
<wavePart alien="1" count="3" wave="3"/>
<wavePart alien="1" count="5" wave="4"/>
<wavePart alien="1" count="200" wave="5"/>
<wavePart alien="1" count="20" wave="5"/>
<wavePart alien="4" count="1" wave="6"/>
<!--<wavePart alien="4" count="60" wave="4"/>
<wavePart alien="2" count="20" wave="4"/>
<wavePart alien="4" count="26" wave="5"/>
<wavePart alien="10" count="26" wave="5"/>
<wavePart alien="12" count="26" wave="5"/>
<wavePart alien="4" count="16" wave="5"/>
<wavePart alien="10" count="16" wave="5"/>
<wavePart alien="12" count="16" wave="5"/>
<wavePart alien="4" count="6" wave="5"/>
<wavePart alien="10" count="1" wave="6"/>
<wavePart alien="4" count="1" wave="6"/>
<wavePart alien="10" count="1" wave="6"/>
<wavePart alien="4" count="1" wave="6"/>
<wavePart alien="10" count="1" wave="6"/>
<wavePart alien="4" count="1" wave="6"/>
<wavePart alien="10" count="1" wave="6"/>
<wavePart alien="4" count="1" wave="6"/>
<wavePart alien="10" count="1" wave="6"/>
<wavePart alien="4" count="1" wave="6"/>
<wavePart alien="12" count="1" wave="6"/>
<wavePart alien="10" count="1" wave="6"/>
<wavePart alien="4" count="1" wave="6"/>
<wavePart alien="10" count="1" wave="6"/>
<wavePart alien="4" count="1" wave="6"/>
<wavePart alien="33" count="2" wave="7"/>
<wavePart alien="33" count="50" wave="8"/>-->
<wavePart alien="4" count="10" wave="7"/>
<wavePart alien="4" count="100" wave="8"/>
</waveParts>
<wavesOnLevels>
<waveOnLevel wave="1" level="1"/>
<waveOnLevel wave="2" level="1"/>
<waveOnLevel wave="3" level="1"/>
<waveOnLevel wave="4" level="1"/>
<waveOnLevel wave="5" level="1"/>
<waveOnLevel wave="8" level="1"/>
<waveOnLevel wave="7" level="1"/>
<waveOnLevel wave="6" level="1"/>
<waveOnLevel wave="5" level="1"/>
<waveOnLevel wave="4" level="1"/>
<waveOnLevel wave="3" level="1"/>
<waveOnLevel wave="2" level="1"/>
<waveOnLevel wave="1" level="1"/>
</wavesOnLevels>
<splashes>
<splash speed="0.2" imageType="5" lifetime="9999" id="1" name="rocket"/>
<splash speed="0.2" imageType="5" lifetime="9999" autoControl="true" id="2" name="smart rocket"/>
<splash speed="0.5" imageType="7" lifetime="9999" autoControl="true" id="3" name="bullet"/>
<splash speed="0.5" imageType="7" lifetime="9999" autoControl="true" id="7" name="bullet"/>
<splash speed="0" imageType="4" lifetime="16" id="4" name="bum"/>
<splash speed="0" imageType="6" lifetime="10" id="5" name="smoke"/>
<splash speed="0.1" imageType="5" lifetime="50" autoControl="true" id="6" name="Снаряд"/>
<splash speed="0.2" imageType="5" lifetime="9999" ZValue="0" compositionMode="Source" animSpeed="1" id="1" name="rocket"/>
<splash speed="0.2" imageType="5" lifetime="9999" ZValue="0" autoControl="true" compositionMode="Source" animSpeed="1" id="2" name="smart rocket"/>
<splash speed="1" imageType="7" lifetime="9999" ZValue="0" autoControl="true" compositionMode="Source" animSpeed="1" id="3" name="bullet"/>
<splash speed="0" imageType="4" lifetime="16" ZValue="0" compositionMode="Plus" animSpeed="1" id="4" name="bum"/>
<splash speed="0" imageType="6" lifetime="29" ZValue="0" compositionMode="Source" animSpeed="1" id="5" name="smoke"/>
<splash speed="0.1" imageType="5" lifetime="50" ZValue="0" autoControl="true" compositionMode="Source" animSpeed="1" id="6" name="Снаряд"/>
<splash speed="0" imageType="9" lifetime="10" ZValue="0" autoControl="true" compositionMode="Source" animSpeed="1" id="7" name="blood"/>
<splash speed="0.1" imageType="15" lifetime="32" ZValue="1.4013e-45" compositionMode="Source" animSpeed="0.5" id="8" name="fire"/>
<splash speed="0.5" imageType="16" lifetime="100" ZValue="1.4013e-45" autoControl="true" compositionMode="Source" animSpeed="9.30575e-29" id="9" name="burn" keepOnAlien="true"/>
</splashes>
<towers>
<tower imageType="8" radius="12" expByKill="0.1" expByShot="0.15" buildTime="150" splash="2" reload="15" id="1" name="rocket launcher 2" cost="5" expByDamage="0.04"/>
<tower imageType="8" radius="12" expByKill="0.1" expByShot="0.15" buildTime="50" splash="2" reload="15" id="1" name="rocket launcher 2" cost="5" expByDamage="0.04"/>
<tower imageType="2" radius="3" expByKill="0.2" expByShot="0.1" buildTime="25" splash="3" reload="50" id="2" name="tower 1" cost="7" expByDamage="0.1"/>
<tower imageType="2" radius="3" expByKill="0.2" expByShot="0.1" buildTime="25" splash="3" reload="35" id="4" name="tower 1-2" cost="15" expByDamage="0.1"/>
<tower imageType="2" radius="2" expByKill="0.2" expByShot="0.1" buildTime="25" splash="3" reload="15" id="5" name="tower 1-3" cost="25" expByDamage="0.1"/>
<tower imageType="3" radius="5" expByKill="0.1" expByShot="0.15" buildTime="200" splash="1" reload="50" id="3" name="rocket launcher" cost="3" expByDamage="0.04"/>
<tower imageType="3" radius="5" expByKill="0.1" expByShot="0.15" buildTime="20" splash="1" reload="50" id="3" name="rocket launcher" cost="3" expByDamage="0.04"/>
<tower imageType="12" radius="3" expByKill="0.2" expByShot="0.1" buildTime="25" splash="3" reload="35" id="4" name="tower 1-2" cost="15" expByDamage="0.1"/>
<tower imageType="13" radius="4" expByKill="0.2" expByShot="0.1" buildTime="25" splash="3" reload="15" id="5" name="tower 1-3" cost="25" expByDamage="0.1"/>
<tower imageType="14" radius="3" expByKill="0.2" expByShot="0.1" buildTime="20" splash="8" reload="20" id="6" name="firethrower" cost="10" expByDamage="0.1"/>
</towers>
<triggers>
<trigger damage="5" childAim="noAim" delParent="true" type="onDestination" id="2" name="shot"/>
<trigger damage="2" childAim="noAim" radius="2" count="1" type="onAlienInRadius" id="1" name="fire shot"/>
<trigger damage="5" childAim="noAim" delParent="true" count="1" type="onDestination" id="2" name="shot"/>
<trigger damage="1" childAim="noAim" radius="2.5" delParent="true" count="1" type="onDestination" id="3" name="explosion"/>
<trigger childAim="noAim" count="1" type="onTimer" id="4" name="smoke" timer="2"/>
<trigger childAim="noAim" count="1" type="onTimer" id="4" name="smoke" timer="3"/>
<trigger damage="20" childAim="noAim" delParent="true" type="onDestination" id="5" name="shot"/>
<trigger damage="0.2" childAim="parentAim" type="onTimer" id="6" name="burn" timer="2"/>
</triggers>
<chains>
<chain tower="1" trigger="4" child="5" parent="2"/>
<chain tower="1" trigger="3" child="4" parent="2"/>
<chain tower="2" trigger="2" parent="3"/>
<chain tower="4" trigger="2" parent="7"/>
<chain tower="3" trigger="4" child="5" parent="1"/>
<chain tower="1" trigger="4" child="5" parent="2"/>
<chain tower="2" trigger="2" child="7" parent="3"/>
<chain tower="3" trigger="3" child="4" parent="1"/>
<chain tower="3" trigger="4" child="5" parent="1"/>
<chain tower="4" trigger="2" child="7" parent="3"/>
<chain tower="5" trigger="5" parent="3"/>
<chain tower="6" trigger="6" parent="9"/>
<chain tower="6" trigger="1" child="9" parent="8"/>
</chains>
<towersOnLevels>
<towerOnLevel tower="6" level="1"/>
<towerOnLevel tower="5" level="1"/>
<towerOnLevel tower="4" level="1"/>
<towerOnLevel tower="3" level="1"/>
<towerOnLevel tower="2" level="1"/>
<towerOnLevel tower="1" level="1"/>
</towersOnLevels>
<morphs>
<morph from="2" expRequired="0" to="4" cost="10"/>
<morph from="4" expRequired="0.5" to="5" cost="40"/>
<morph from="5" expRequired="10" to="3" cost="100"/>
<morph from="5" expRequired="10" to="1" cost="200"/>
</morphs>
<animations>
<animation pathes="images/Aliens/Al_00_0.png;images/Aliens/Al_00_1.png;images/Aliens/Al_00_2.png;images/Aliens/Al_00_3.png;images/Aliens/Al_00_4.png;images/Aliens/Al_00_5.png;images/Aliens/Al_00_6.png;images/Aliens/Al_00_7.png;images/Aliens/Al_00_8.png;images/Aliens/Al_00_9.png;images/Aliens/Al_00_10.png;images/Aliens/Al_00_11.png;images/Aliens/Al_00_12.png;images/Aliens/Al_00_13.png;images/Aliens/Al_00_14.png;images/Aliens/Al_00_15.png;images/Aliens/Al_00_16.png;images/Aliens/Al_00_17.png;images/Aliens/Al_00_18.png;images/Aliens/Al_00_19.png" id="1"/>
<animation pathes="images/Towers/00_0.png" id="2"/>
<animation pathes="images/Towers/01_0.png" id="3"/>
<animation pathes="images/Splashes/expl_00.png;images/Splashes/expl_01.png;images/Splashes/expl_02.png;images/Splashes/expl_03.png;images/Splashes/expl_04.png;images/Splashes/expl_05.png;images/Splashes/expl_06.png;images/Splashes/expl_07.png;images/Splashes/expl_08.png;images/Splashes/expl_09.png;images/Splashes/expl_10.png;images/Splashes/expl_11.png;images/Splashes/expl_12.png;images/Splashes/expl_13.png;images/Splashes/expl_14.png;images/Splashes/expl_15.png;images/Splashes/expl_16.png" id="4"/>
<animation pathes="images/Splashes/Rocket.png" id="5"/>
<animation pathes="images/Splashes/Smoke_00.png;images/Splashes/Smoke_01.png;images/Splashes/Smoke_02.png;images/Splashes/Smoke_03.png;images/Splashes/Smoke_04.png;images/Splashes/Smoke_05.png;images/Splashes/Smoke_06.png;images/Splashes/Smoke_07.png;images/Splashes/Smoke_08.png;images/Splashes/Smoke_09.png;images/Splashes/Smoke_10.png" id="6"/>
<animation pathes="images/Splashes/Shot_0.png;images/Splashes/Shot_1.png;images/Splashes/Shot_2.png;images/Splashes/Shot_3.png" id="7"/>
<animation pathes="images/Towers/01_6.png" id="8"/>
<animation pathes="images/Aliens/Al_00_0.png;images/Aliens/Al_00_1.png;images/Aliens/Al_00_2.png;images/Aliens/Al_00_3.png;images/Aliens/Al_00_4.png;images/Aliens/Al_00_5.png;images/Aliens/Al_00_6.png;images/Aliens/Al_00_7.png;images/Aliens/Al_00_8.png;images/Aliens/Al_00_9.png;images/Aliens/Al_00_10.png;images/Aliens/Al_00_11.png;images/Aliens/Al_00_12.png;images/Aliens/Al_00_13.png;images/Aliens/Al_00_14.png;images/Aliens/Al_00_15.png;images/Aliens/Al_00_16.png;images/Aliens/Al_00_17.png;images/Aliens/Al_00_18.png;images/Aliens/Al_00_19.png" id="1" name="alien"/>
<animation pathes="images/Towers/00_0.png" id="2" name="tower 1"/>
<animation pathes="images/Towers/01_0.png" id="3" name="rocket tower 1"/>
<animation pathes="images/Splashes/expl_00.png;images/Splashes/expl_01.png;images/Splashes/expl_02.png;images/Splashes/expl_03.png;images/Splashes/expl_04.png;images/Splashes/expl_05.png;images/Splashes/expl_06.png;images/Splashes/expl_07.png;images/Splashes/expl_08.png;images/Splashes/expl_09.png;images/Splashes/expl_10.png;images/Splashes/expl_11.png;images/Splashes/expl_12.png;images/Splashes/expl_13.png;images/Splashes/expl_14.png;images/Splashes/expl_15.png;images/Splashes/expl_16.png" id="4" name="explosion"/>
<animation pathes="images/Splashes/Rocket.png" id="5" name="rocket"/>
<animation pathes="images/Splashes/smoke_0001.png;images/Splashes/smoke_0002.png;images/Splashes/smoke_0003.png;images/Splashes/smoke_0004.png;images/Splashes/smoke_0005.png;images/Splashes/smoke_0006.png;images/Splashes/smoke_0007.png;images/Splashes/smoke_0008.png;images/Splashes/smoke_0009.png;images/Splashes/smoke_0010.png;images/Splashes/smoke_0011.png;images/Splashes/smoke_0012.png;images/Splashes/smoke_0013.png;images/Splashes/smoke_0014.png;images/Splashes/smoke_0015.png;images/Splashes/smoke_0016.png;images/Splashes/smoke_0017.png;images/Splashes/smoke_0018.png;images/Splashes/smoke_0019.png;images/Splashes/smoke_0020.png;images/Splashes/smoke_0021.png;images/Splashes/smoke_0022.png;images/Splashes/smoke_0023.png;images/Splashes/smoke_0024.png;images/Splashes/smoke_0025.png;images/Splashes/smoke_0026.png;images/Splashes/smoke_0027.png;images/Splashes/smoke_0028.png;images/Splashes/smoke_0029.png" id="6" name="smoke"/>
<animation pathes="images/Splashes/Shot_0.png" id="7" name="shot"/>
<animation pathes="images/Towers/01_6.png" id="8" name="rocket tower 2"/>
<animation pathes="images/Splashes/expl_blood_00.png;images/Splashes/expl_blood_01.png;images/Splashes/expl_blood_02.png;images/Splashes/expl_blood_03.png;images/Splashes/expl_blood_04.png;images/Splashes/expl_blood_05.png;images/Splashes/expl_blood_06.png;images/Splashes/expl_blood_07.png;images/Splashes/expl_blood_08.png;images/Splashes/expl_blood_09.png" id="9" name="blood"/>
<animation pathes="images/Interface/select_tower_0000.png;images/Interface/select_tower_0001.png;images/Interface/select_tower_0002.png;images/Interface/select_tower_0003.png;images/Interface/select_tower_0004.png;images/Interface/select_tower_0005.png;images/Interface/select_tower_0006.png;images/Interface/select_tower_0007.png;images/Interface/select_tower_0008.png;images/Interface/select_tower_0009.png;images/Interface/select_tower_0010.png;images/Interface/select_tower_0011.png;images/Interface/select_tower_0012.png;images/Interface/select_tower_0013.png;images/Interface/select_tower_0014.png;images/Interface/select_tower_0015.png;images/Interface/select_tower_0016.png;images/Interface/select_tower_0017.png;images/Interface/select_tower_0018.png;images/Interface/select_tower_0019.png;images/Interface/select_tower_0020.png;images/Interface/select_tower_0021.png;images/Interface/select_tower_0022.png;images/Interface/select_tower_0023.png;images/Interface/select_tower_0024.png;images/Interface/select_tower_0025.png;images/Interface/select_tower_0026.png;images/Interface/select_tower_0027.png;images/Interface/select_tower_0028.png;images/Interface/select_tower_0029.png;images/Interface/select_tower_0030.png;images/Interface/select_tower_0031.png;images/Interface/select_tower_0032.png;images/Interface/select_tower_0033.png;images/Interface/select_tower_0034.png;images/Interface/select_tower_0035.png;images/Interface/select_tower_0036.png;images/Interface/select_tower_0037.png;images/Interface/select_tower_0038.png;images/Interface/select_tower_0039.png;images/Interface/select_tower_0040.png;images/Interface/select_tower_0041.png;images/Interface/select_tower_0042.png;images/Interface/select_tower_0043.png;images/Interface/select_tower_0044.png;images/Interface/select_tower_0045.png;images/Interface/select_tower_0046.png;images/Interface/select_tower_0047.png;images/Interface/select_tower_0048.png;images/Interface/select_tower_0049.png;images/Interface/select_tower_0050.png" id="10" name="tower select"/>
<animation pathes="images/Interface/select_alien_0000.png;images/Interface/select_alien_0001.png;images/Interface/select_alien_0002.png;images/Interface/select_alien_0003.png;images/Interface/select_alien_0004.png;images/Interface/select_alien_0005.png;images/Interface/select_alien_0006.png;images/Interface/select_alien_0007.png;images/Interface/select_alien_0008.png;images/Interface/select_alien_0009.png;images/Interface/select_alien_0010.png;images/Interface/select_alien_0011.png;images/Interface/select_alien_0012.png;images/Interface/select_alien_0013.png;images/Interface/select_alien_0014.png;images/Interface/select_alien_0015.png;images/Interface/select_alien_0016.png;images/Interface/select_alien_0017.png;images/Interface/select_alien_0018.png;images/Interface/select_alien_0019.png;images/Interface/select_alien_0020.png;images/Interface/select_alien_0021.png;images/Interface/select_alien_0022.png;images/Interface/select_alien_0023.png;images/Interface/select_alien_0024.png;images/Interface/select_alien_0025.png;images/Interface/select_alien_0026.png;images/Interface/select_alien_0027.png;images/Interface/select_alien_0028.png;images/Interface/select_alien_0029.png;images/Interface/select_alien_0030.png;images/Interface/select_alien_0031.png;images/Interface/select_alien_0032.png;images/Interface/select_alien_0033.png;images/Interface/select_alien_0034.png;images/Interface/select_alien_0035.png;images/Interface/select_alien_0036.png;images/Interface/select_alien_0037.png;images/Interface/select_alien_0038.png;images/Interface/select_alien_0039.png;images/Interface/select_alien_0040.png;images/Interface/select_alien_0041.png;images/Interface/select_alien_0042.png;images/Interface/select_alien_0043.png;images/Interface/select_alien_0044.png;images/Interface/select_alien_0045.png;images/Interface/select_alien_0046.png;images/Interface/select_alien_0047.png;images/Interface/select_alien_0048.png;images/Interface/select_alien_0049.png;images/Interface/select_alien_0050.png" id="11" name="alien select"/>
<animation pathes="images/Towers/00_1.png" id="12" name="tower 1-2"/>
<animation pathes="images/Towers/00_2.png" id="13" name="tower 1-3"/>
<animation pathes="images/Towers/04_0.png" id="14" name="firethrower 1"/>
<animation pathes="images/Splashes/part_fire_0.png;images/Splashes/part_fire_1.png;images/Splashes/part_fire_2.png;images/Splashes/part_fire_3.png;images/Splashes/part_fire_4.png;images/Splashes/part_fire_5.png;images/Splashes/part_fire_6.png;images/Splashes/part_fire_1.png;images/Splashes/part_fire_2.png;images/Splashes/part_fire_3.png;images/Splashes/part_fire_4.png;images/Splashes/part_fire_5.png;images/Splashes/part_fire_6.png;images/Splashes/part_fire_7.png" id="15" name="fire"/>
<animation pathes="images/Splashes/expl_plasma_14.png" id="16" name="burn"/>
</animations>
</ADdata>

149
form.cpp
View File

@@ -1,37 +1,40 @@
#include "form.h"
#include "ui_form.h"
#include "touchbuttframe.h"
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
buildTowerId = -1;
cur_tow = QPoint();
cur_al = -1;
buildTowerId = -1;
ui->setupUi(this);
graphics = new AD_Graphics(&core);
ui->widget->layout()->addWidget(graphics);
TouchButtFrame * tbf = new TouchButtFrame();
tbf->addButton(tr("delete"));
foreach (srcTowerType i, core.addata->players.at(0)->srcTowers)
{
tbf->addButton(i.name);
//QPushButton * butt = new QPushButton(i.name);
//towerButtons << butt;
//butt->setAutoDefault(true);
//butt->setAutoExclusive(true);
//butt->setCheckable(true);
}
ui->gbTowers->layout()->addWidget(tbf);
connect(tbf,SIGNAL(click(int)),this,SLOT(towerBuild(int)));
connect(tbf,SIGNAL(click(int)),tbf,SLOT(set_green(int)));
connect(graphics,SIGNAL(add_tow(QPoint)),this,SLOT(add_tow(QPoint)));
connect(graphics,SIGNAL(tower_select(QPoint)),this,SLOT(towerSelected(QPoint)));
connect(graphics,SIGNAL(alien_select(int)),this,SLOT(alienSelected(int)));
graphics = new AD_Graphics(&core);
ui->widget->layout()->addWidget(graphics);
TouchButtFrame * tbf = new TouchButtFrame();
tbf->setOrientation(Qt::Vertical);
morphtbf = new TouchButtFrame();
morphtbf->setOrientation(Qt::Vertical);
tbf->addButton(tr("delete"));
foreach (srcTowerType i, core.addata->players.at(0)->srcTowers)
{
tbf->addButton(i.name);
//QPushButton * butt = new QPushButton(i.name);
//towerButtons << butt;
//butt->setAutoDefault(true);
//butt->setAutoExclusive(true);
//butt->setCheckable(true);
}
ui->gbTowers->layout()->addWidget(tbf);
ui->verticalLayout_2->addWidget(morphtbf);
connect(tbf,SIGNAL(click(int)),this,SLOT(towerBuild(int)));
connect(tbf,SIGNAL(click(int)),tbf,SLOT(set_green(int)));
connect(morphtbf,SIGNAL(click(int)),this,SLOT(towerMorph(int)));
connect(graphics,SIGNAL(add_tow(QPoint)),this,SLOT(add_tow(QPoint)));
connect(core.adtowers,SIGNAL(tower_killed(QPoint)),graphics,SLOT(towerKilled(QPoint)));
connect(core.addata->aliens,SIGNAL(alien_killed(int)),graphics,SLOT(alienKilled(int)));
connect(graphics,SIGNAL(cancel()),this,SLOT(cancel()));
this->startTimer(50);
connect(graphics,SIGNAL(selected_tower_changed(QPoint)),this,SLOT(selectedTowerChanged(QPoint)));
this->startTimer(50);
}
@@ -43,38 +46,37 @@ Form::~Form()
void Form::on_pbNextWave_clicked()
{
core.nextWave();
core.nextWave();
}
void Form::towerBuild(int index)
{
buildTowerId = index-1;
if (index == 0) buildTowerId = -9;
graphics->setBuilding(true);
setCursor(Qt::CrossCursor);
buildTowerId = index-1;
if (index == 0) buildTowerId = -9;
graphics->setBuilding(true);
setCursor(Qt::CrossCursor);
}
void Form::add_tow(QPoint pnt)
{
if (buildTowerId == -1) return;
if (buildTowerId == -9) {core.adtowers->delTower(pnt); return;}
core.adtowers->addTower(0,buildTowerId,pnt);
if (buildTowerId == -1) return;
if (buildTowerId == -9)
{
core.adtowers->delTower(pnt);
emit tower_killed();
return;
}
core.adtowers->addTower(0,buildTowerId,pnt);
}
//void Form::del_tow(QPoint pnt)
//{
// core.adtowers->delTower(pnt);
//}
void Form::cancel()
{
buildTowerId = -1;
graphics->setBuilding(false);
setCursor(Qt::ArrowCursor);
buildTowerId = -1;
graphics->setBuilding(false);
setCursor(Qt::ArrowCursor);
}
@@ -82,37 +84,28 @@ void Form::timerEvent(QTimerEvent *)
{
QString twstr;
QString alstr;
if (!cur_tow.isNull())
if (!graphics->selectedTower().isNull())
{
if (core.addata->curTowers.contains(cur_tow))
{
TowerType tw = core.addata->curTowers.value(cur_tow);
twstr = "\n\n " + tw.src->name;
if (tw.isBilding) twstr += tr("\n build %1/%2").arg(tw.build).arg(tw.src->buildTime);
twstr += tr("\n player %1\n exp %2").arg(tw.PlayerId).arg(tw.experience);
twstr += tr("\n reload %1/%2\n alien %3").arg(tw.reload).arg(tw.src->reload).arg(tw.aim);
twstr += tr("\n cost %1\n radius %2").arg(tw.src->cost).arg(tw.src->radius);
} else {
cur_tow = QPoint();
}
TowerType &tw = core.addata->curTowers[graphics->selectedTower()];
twstr = "\n\n " + tw.src->name;
if (tw.isBilding) twstr += tr("\n build %1/%2").arg(tw.build).arg(tw.src->buildTime);
twstr += tr("\n player %1\n exp %2").arg(tw.PlayerId).arg(tw.experience);
twstr += tr("\n reload %1/%2\n alien %3").arg(tw.reload).arg(tw.src->reload).arg(tw.aim);
twstr += tr("\n cost %1\n radius %2").arg(tw.src->cost).arg(tw.src->radius-1);
for (int i=0; i<tw.src->morphs.size(); ++i)
morphtbf->Button(i)->setEnabled(core.adtowers->canMorph(tw.pos,i));
}
if (cur_al != -1)
if (graphics->selectedAlien() != -1)
{
if (core.addata->aliens->curAliens.contains(cur_al))
{
AlienType al = core.addata->aliens->curAliens.value(cur_al);
alstr = "\n\n " + al.src->name;
if (al.src->isFlying) alstr += tr("\n flying");
else alstr += tr("\n ground");
alstr += tr("\n health %1/%2").arg(al.health).arg(al.src->health);
alstr += tr("\n speed %1/%2").arg(al.speed).arg(al.src->speed);
alstr += tr("\n armor %1\n regeneration %2").arg(al.src->armor).arg(al.src->regeneration);
alstr += tr("\n prise %1").arg(al.src->prise);
} else {
cur_al = -1;
}
AlienType al = core.addata->aliens->curAliens.value(graphics->selectedAlien());
alstr = "\n\n " + al.src->name;
if (al.src->isFlying) alstr += tr("\n flying");
else alstr += tr("\n ground");
alstr += tr("\n health %1/%2").arg(al.health).arg(al.src->health);
alstr += tr("\n speed %1/%2").arg(al.speed).arg(al.src->speed);
alstr += tr("\n armor %1\n regeneration %2").arg(al.src->armor).arg(al.src->regeneration);
alstr += tr("\n prise %1").arg(al.src->prise);
}
if (!core.addata->aliens->curAliens.contains(cur_al)) cur_al = -1;
ui->lbInfo->setText(tr(" money %1 \n missing %2").arg(core.addata->players.at(0)->money).arg(core.addata->aliens->missingAliens())
+ tr("\n aliens %1").arg(core.addata->aliens->curAliens.size())
+ tr("\n towers %1").arg(core.addata->curTowers.size())
@@ -121,15 +114,27 @@ void Form::timerEvent(QTimerEvent *)
}
void Form::towerSelected(QPoint id)
void Form::on_sbSpeed_valueChanged(double val)
{
cur_tow = id;
core.setSpeed(val);
}
void Form::alienSelected(int id)
void Form::selectedTowerChanged(QPoint id)
{
cur_al = id;
morphtbf->deleteButtons();
if (id.isNull()) return;
srcTowerType * t = core.addata->curTowers[id].src;
piForeachCA(i, t->morphs)
morphtbf->addButton(i.morph->name);
}
void Form::towerMorph(int index)
{
QPoint id(graphics->selectedTower());
graphics->towerKilled(id);
core.adtowers->morphTower(id,index);
graphics->selectTower(core.addata->curTowers[id].item);
selectedTowerChanged(graphics->selectedTower());
}

33
form.h
View File

@@ -4,6 +4,8 @@
#include <QWidget>
#include "adcore.h"
#include "ad_graphics.h"
#include "touchbuttframe.h"
namespace Ui {
class Form;
@@ -18,24 +20,25 @@ public:
~Form();
private slots:
void on_pbNextWave_clicked();
void towerBuild(int index);
void add_tow(QPoint pnt);
//void del_tow(QPoint pnt);
void cancel();
void towerSelected(QPoint id);
void alienSelected(int id);
void on_pbNextWave_clicked();
void towerBuild(int index);
void towerMorph(int index);
void add_tow(QPoint pnt);
void selectedTowerChanged(QPoint id);
void cancel();
void on_sbSpeed_valueChanged(double arg1);
private:
void timerEvent(QTimerEvent *);
void timerEvent(QTimerEvent *);
Ui::Form *ui;
int buildTowerId;
AD_Core core;
AD_Graphics * graphics;
TouchButtFrame * morphtbf;
Ui::Form *ui;
int buildTowerId;
AD_Core core;
AD_Graphics * graphics;
QPoint cur_tow;
int cur_al;
//QList <QPushButton *> towerButtons;
signals:
void tower_killed();
};
#endif // FORM_H

27
form.ui
View File

@@ -52,7 +52,7 @@
<x>0</x>
<y>0</y>
<width>135</width>
<height>194</height>
<height>324</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
@@ -85,11 +85,36 @@
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbSpeed">
<property name="prefix">
<string>speed </string>
</property>
<property name="suffix">
<string> x</string>
</property>
<property name="decimals">
<number>1</number>
</property>
<property name="minimum">
<double>0.100000000000000</double>
</property>
<property name="singleStep">
<double>0.500000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>

View File

@@ -3,7 +3,8 @@
Game_Data::Game_Data(Map *mapp, QObject *parent) :
QObject(parent)
{
map = mapp;
curWave = 0;
aliens = new Aliens(map);
map = mapp;
curWave = 0;
// alienSelect.images = towerSelect.images = 0;
aliens = new Aliens(map);
}

View File

@@ -11,18 +11,20 @@ class Game_Data : public QObject
{
Q_OBJECT
public:
explicit Game_Data(Map * map, QObject *parent = 0);
QList <srcSplashType> srcSplashes;
QList <srcTriggerType> srcTriggers;
QHash <int,SplashType> curSplashes;
QHash <QPoint,TowerType> curTowers;
QList <WaveType> waves;
QList <Player *> players;
QList <AnimationType> curAnimations;
Map * map;
Aliens * aliens;
int curWave;
int missingAliens;
explicit Game_Data(Map * map, QObject *parent = 0);
QList <srcSplashType> srcSplashes;
QList <srcTriggerType> srcTriggers;
QHash <int,SplashType> curSplashes;
QHash <QPoint,TowerType> curTowers;
QList <WaveType> waves;
QList <Player *> players;
QList <AnimationType> curAnimations;
AnimationType towerSelect;
AnimationType alienSelect;
Map * map;
Aliens * aliens;
int curWave;
int missingAliens;
signals:

View File

@@ -1,30 +1,6 @@
<RCC>
<qresource prefix="/images">
<file>images/Aliens/Al_00_0.png</file>
<file>images/Aliens/Al_00_1.png</file>
<file>images/Aliens/Al_00_2.png</file>
<file>images/Aliens/Al_00_3.png</file>
<file>images/Aliens/Al_00_4.png</file>
<file>images/Aliens/Al_00_5.png</file>
<file>images/Aliens/Al_00_6.png</file>
<file>images/Aliens/Al_00_7.png</file>
<file>images/Aliens/Al_00_8.png</file>
<file>images/Aliens/Al_00_9.png</file>
<file>images/Aliens/Al_00_10.png</file>
<file>images/Aliens/Al_00_11.png</file>
<file>images/Aliens/Al_00_12.png</file>
<file>images/Aliens/Al_00_13.png</file>
<file>images/Aliens/Al_00_14.png</file>
<file>images/Aliens/Al_00_15.png</file>
<file>images/Aliens/Al_00_16.png</file>
<file>images/Aliens/Al_00_17.png</file>
<file>images/Aliens/Al_00_18.png</file>
<file>images/Aliens/Al_00_19.png</file>
<file>images/Towers/00_0.png</file>
<file>images/Splashes/Rocket.png</file>
<file>images/Towers/01_6.png</file>
<file>images/Splashes/Shot_0.png</file>
<file>images/Splashes/Smoke_01.png</file>
<file>images/Splashes/expl.png</file>
<qresource prefix="/">
<file>schema.xml</file>
<file>images/select.png</file>
</qresource>
</RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Some files were not shown because too many files have changed in this diff Show More