added AD editor (not work yet, just for test)

This commit is contained in:
2010-08-25 03:10:15 +03:00
parent 68784b7e9e
commit d897bb8fa2
27 changed files with 2163 additions and 398 deletions

BIN
ADeditor/ADeditor Executable file

Binary file not shown.

15
ADeditor/ADeditor.pro Normal file
View File

@@ -0,0 +1,15 @@
# -------------------------------------------------
# Project created by QtCreator 2010-08-22T13:42:02
# -------------------------------------------------
QT += xml \
xmlpatterns
TARGET = ADeditor
TEMPLATE = app
SOURCES += main.cpp \
mainwindow.cpp \
../loader.cpp \
alienmodel.cpp
HEADERS += mainwindow.h \
../loader.h \
alienmodel.h
FORMS += mainwindow.ui

283
ADeditor/ADeditor.pro.user Normal file
View File

@@ -0,0 +1,283 @@
<!DOCTYPE QtCreatorProject>
<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">false</value>
</data>
<data>
<variable>RunConfiguration0-UserWorkingDirectory</variable>
<value type="QString"></value>
</data>
<data>
<variable>RunConfiguration0-type</variable>
<value type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
</data>
<data>
<variable>activeRunConfiguration</variable>
<value type="int">0</value>
</data>
<data>
<variable>activebuildconfiguration</variable>
<value type="QString">Debug</value>
</data>
<data>
<variable>buildConfiguration-Debug</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>
</valuemap>
</data>
<data>
<variable>buildConfiguration-Release</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>
</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-5i8Go7nPio,guid=870ffe971971ceac89206f0e4c5facbd</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-7vXnOW</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/1124,unix/buull-eeePC:/tmp/.ICE-unix/1124</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SPEECHD_PORT=6561</value>
<value type="QString">SSH_AGENT_PID=1158</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-7vXnOW/ssh</value>
<value type="QString">USER=andrey</value>
<value type="QString">USERNAME=andrey</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-HWCXAG/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-1281338556.676663-803309736</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>
</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-5i8Go7nPio,guid=870ffe971971ceac89206f0e4c5facbd</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-7vXnOW</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/1124,unix/buull-eeePC:/tmp/.ICE-unix/1124</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SPEECHD_PORT=6561</value>
<value type="QString">SSH_AGENT_PID=1158</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-7vXnOW/ssh</value>
<value type="QString">USER=andrey</value>
<value type="QString">USERNAME=andrey</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-HWCXAG/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-1281338556.676663-803309736</value>
</valuelist>
<value key="abstractProcess.IgnoreReturnValue" type="bool">false</value>
<valuelist key="abstractProcess.arguments" type="QVariantList">
<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>
</valuemap>
</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-5i8Go7nPio,guid=870ffe971971ceac89206f0e4c5facbd</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-7vXnOW</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/1124,unix/buull-eeePC:/tmp/.ICE-unix/1124</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SPEECHD_PORT=6561</value>
<value type="QString">SSH_AGENT_PID=1158</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-7vXnOW/ssh</value>
<value type="QString">USER=andrey</value>
<value type="QString">USERNAME=andrey</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-HWCXAG/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-1281338556.676663-803309736</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">System</value>
</data>
<data>
<variable>project</variable>
<valuemap type="QVariantMap"/>
</data>
</qtcreator>

279
ADeditor/Makefile Normal file
View File

@@ -0,0 +1,279 @@
#############################################################################
# Makefile for building: ADeditor
# Generated by qmake (2.01a) (Qt 4.6.2) on: ?? ???. 24 15:25:17 2010
# Project: ADeditor.pro
# Template: app
# Command: /usr/bin/qmake-qt4 -spec /usr/share/qt4/mkspecs/linux-g++ -unix CONFIG+=debug -o Makefile ADeditor.pro
#############################################################################
####### Compiler, tools and options
CC = gcc
CXX = g++
DEFINES = -DQT_XMLPATTERNS_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
CFLAGS = -pipe -g -Wall -W -D_REENTRANT $(DEFINES)
CXXFLAGS = -pipe -g -Wall -W -D_REENTRANT $(DEFINES)
INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtXmlPatterns -I/usr/include/qt4 -I. -I.
LINK = g++
LFLAGS =
LIBS = $(SUBLIBS) -L/usr/lib -lQtXmlPatterns -lQtXml -lQtGui -lQtCore -lpthread
AR = ar cqs
RANLIB =
QMAKE = /usr/bin/qmake-qt4
TAR = tar -cf
COMPRESS = gzip -9f
COPY = cp -f
SED = sed
COPY_FILE = $(COPY)
COPY_DIR = $(COPY) -r
STRIP = strip
INSTALL_FILE = install -m 644 -p
INSTALL_DIR = $(COPY_DIR)
INSTALL_PROGRAM = install -m 755 -p
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
MOVE = mv -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = main.cpp \
mainwindow.cpp \
../loader.cpp \
alienmodel.cpp moc_mainwindow.cpp \
moc_loader.cpp \
moc_alienmodel.cpp
OBJECTS = main.o \
mainwindow.o \
loader.o \
alienmodel.o \
moc_mainwindow.o \
moc_loader.o \
moc_alienmodel.o
DIST = /usr/share/qt4/mkspecs/common/g++.conf \
/usr/share/qt4/mkspecs/common/unix.conf \
/usr/share/qt4/mkspecs/common/linux.conf \
/usr/share/qt4/mkspecs/qconfig.pri \
/usr/share/qt4/mkspecs/features/qt_functions.prf \
/usr/share/qt4/mkspecs/features/qt_config.prf \
/usr/share/qt4/mkspecs/features/exclusive_builds.prf \
/usr/share/qt4/mkspecs/features/default_pre.prf \
/usr/share/qt4/mkspecs/features/debug.prf \
/usr/share/qt4/mkspecs/features/default_post.prf \
/usr/share/qt4/mkspecs/features/warn_on.prf \
/usr/share/qt4/mkspecs/features/qt.prf \
/usr/share/qt4/mkspecs/features/unix/thread.prf \
/usr/share/qt4/mkspecs/features/moc.prf \
/usr/share/qt4/mkspecs/features/resources.prf \
/usr/share/qt4/mkspecs/features/uic.prf \
/usr/share/qt4/mkspecs/features/yacc.prf \
/usr/share/qt4/mkspecs/features/lex.prf \
/usr/share/qt4/mkspecs/features/include_source_dir.prf \
ADeditor.pro
QMAKE_TARGET = ADeditor
DESTDIR =
TARGET = ADeditor
first: all
####### Implicit rules
.SUFFIXES: .o .c .cpp .cc .cxx .C
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
####### Build rules
all: Makefile $(TARGET)
$(TARGET): ui_mainwindow.h $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: ADeditor.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \
/usr/share/qt4/mkspecs/common/unix.conf \
/usr/share/qt4/mkspecs/common/linux.conf \
/usr/share/qt4/mkspecs/qconfig.pri \
/usr/share/qt4/mkspecs/features/qt_functions.prf \
/usr/share/qt4/mkspecs/features/qt_config.prf \
/usr/share/qt4/mkspecs/features/exclusive_builds.prf \
/usr/share/qt4/mkspecs/features/default_pre.prf \
/usr/share/qt4/mkspecs/features/debug.prf \
/usr/share/qt4/mkspecs/features/default_post.prf \
/usr/share/qt4/mkspecs/features/warn_on.prf \
/usr/share/qt4/mkspecs/features/qt.prf \
/usr/share/qt4/mkspecs/features/unix/thread.prf \
/usr/share/qt4/mkspecs/features/moc.prf \
/usr/share/qt4/mkspecs/features/resources.prf \
/usr/share/qt4/mkspecs/features/uic.prf \
/usr/share/qt4/mkspecs/features/yacc.prf \
/usr/share/qt4/mkspecs/features/lex.prf \
/usr/share/qt4/mkspecs/features/include_source_dir.prf \
/usr/lib/libQtXmlPatterns.prl \
/usr/lib/libQtXml.prl \
/usr/lib/libQtGui.prl \
/usr/lib/libQtCore.prl
$(QMAKE) -spec /usr/share/qt4/mkspecs/linux-g++ -unix CONFIG+=debug -o Makefile ADeditor.pro
/usr/share/qt4/mkspecs/common/g++.conf:
/usr/share/qt4/mkspecs/common/unix.conf:
/usr/share/qt4/mkspecs/common/linux.conf:
/usr/share/qt4/mkspecs/qconfig.pri:
/usr/share/qt4/mkspecs/features/qt_functions.prf:
/usr/share/qt4/mkspecs/features/qt_config.prf:
/usr/share/qt4/mkspecs/features/exclusive_builds.prf:
/usr/share/qt4/mkspecs/features/default_pre.prf:
/usr/share/qt4/mkspecs/features/debug.prf:
/usr/share/qt4/mkspecs/features/default_post.prf:
/usr/share/qt4/mkspecs/features/warn_on.prf:
/usr/share/qt4/mkspecs/features/qt.prf:
/usr/share/qt4/mkspecs/features/unix/thread.prf:
/usr/share/qt4/mkspecs/features/moc.prf:
/usr/share/qt4/mkspecs/features/resources.prf:
/usr/share/qt4/mkspecs/features/uic.prf:
/usr/share/qt4/mkspecs/features/yacc.prf:
/usr/share/qt4/mkspecs/features/lex.prf:
/usr/share/qt4/mkspecs/features/include_source_dir.prf:
/usr/lib/libQtXmlPatterns.prl:
/usr/lib/libQtXml.prl:
/usr/lib/libQtGui.prl:
/usr/lib/libQtCore.prl:
qmake: FORCE
@$(QMAKE) -spec /usr/share/qt4/mkspecs/linux-g++ -unix CONFIG+=debug -o Makefile ADeditor.pro
dist:
@$(CHK_DIR_EXISTS) .tmp/ADeditor1.0.0 || $(MKDIR) .tmp/ADeditor1.0.0
$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/ADeditor1.0.0/ && $(COPY_FILE) --parents mainwindow.h ../loader.h alienmodel.h .tmp/ADeditor1.0.0/ && $(COPY_FILE) --parents main.cpp mainwindow.cpp ../loader.cpp alienmodel.cpp .tmp/ADeditor1.0.0/ && $(COPY_FILE) --parents mainwindow.ui .tmp/ADeditor1.0.0/ && (cd `dirname .tmp/ADeditor1.0.0` && $(TAR) ADeditor1.0.0.tar ADeditor1.0.0 && $(COMPRESS) ADeditor1.0.0.tar) && $(MOVE) `dirname .tmp/ADeditor1.0.0`/ADeditor1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/ADeditor1.0.0
clean:compiler_clean
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
####### Sub-libraries
distclean: clean
-$(DEL_FILE) $(TARGET)
-$(DEL_FILE) Makefile
mocclean: compiler_moc_header_clean compiler_moc_source_clean
mocables: compiler_moc_header_make_all compiler_moc_source_make_all
compiler_moc_header_make_all: moc_mainwindow.cpp moc_loader.cpp moc_alienmodel.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_mainwindow.cpp moc_loader.cpp moc_alienmodel.cpp
moc_mainwindow.cpp: ../loader.h \
../game_data.h \
../player.h \
../base_types.h \
../map.h \
mainwindow.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) mainwindow.h -o moc_mainwindow.cpp
moc_loader.cpp: ../game_data.h \
../player.h \
../base_types.h \
../map.h \
../loader.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) ../loader.h -o moc_loader.cpp
moc_alienmodel.cpp: ../loader.h \
../game_data.h \
../player.h \
../base_types.h \
../map.h \
alienmodel.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) alienmodel.h -o moc_alienmodel.cpp
compiler_rcc_make_all:
compiler_rcc_clean:
compiler_image_collection_make_all: qmake_image_collection.cpp
compiler_image_collection_clean:
-$(DEL_FILE) qmake_image_collection.cpp
compiler_moc_source_make_all:
compiler_moc_source_clean:
compiler_uic_make_all: ui_mainwindow.h
compiler_uic_clean:
-$(DEL_FILE) ui_mainwindow.h
ui_mainwindow.h: mainwindow.ui
/usr/bin/uic-qt4 mainwindow.ui -o ui_mainwindow.h
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_moc_header_clean compiler_uic_clean
####### Compile
main.o: main.cpp mainwindow.h \
../loader.h \
../game_data.h \
../player.h \
../base_types.h \
../map.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
mainwindow.o: mainwindow.cpp mainwindow.h \
../loader.h \
../game_data.h \
../player.h \
../base_types.h \
../map.h \
ui_mainwindow.h \
alienmodel.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
loader.o: ../loader.cpp ../loader.h \
../game_data.h \
../player.h \
../base_types.h \
../map.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o loader.o ../loader.cpp
alienmodel.o: alienmodel.cpp alienmodel.h \
../loader.h \
../game_data.h \
../player.h \
../base_types.h \
../map.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o alienmodel.o alienmodel.cpp
moc_mainwindow.o: moc_mainwindow.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
moc_loader.o: moc_loader.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_loader.o moc_loader.cpp
moc_alienmodel.o: moc_alienmodel.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_alienmodel.o moc_alienmodel.cpp
####### Install
install: FORCE
uninstall: FORCE
FORCE:

29
ADeditor/alienmodel.cpp Normal file
View File

@@ -0,0 +1,29 @@
#include "alienmodel.h"
AlienModel::AlienModel(QList<tbAlien>maliens, QObject *parent) :
QAbstractListModel(parent)
{
aliens = maliens;
}
int AlienModel::rowCount(const QModelIndex &) const
{
return aliens.count();
}
QVariant AlienModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (index.row() >= aliens.size())
return QVariant();
if (role == Qt::DisplayRole)
{
return aliens.at(index.row()).name;
}
return QVariant();
}

23
ADeditor/alienmodel.h Normal file
View File

@@ -0,0 +1,23 @@
#ifndef ALIENMODEL_H
#define ALIENMODEL_H
#include <QAbstractListModel>
#include "../loader.h"
class AlienModel : public QAbstractListModel
{
Q_OBJECT
public:
explicit AlienModel(QList<tbAlien> aliens, QObject *parent = 0);
int rowCount(const QModelIndex &parent = QModelIndex()) const;
QVariant data(const QModelIndex &index, int role) const;
signals:
public slots:
private:
QList<tbAlien> aliens;
};
#endif // ALIENMODEL_H

BIN
ADeditor/alientablemodel.o Normal file

Binary file not shown.

64
ADeditor/data.xml Normal file
View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE data>
<ADdata>
<aliens>
<alien speed="0.01" score="50" imageType="1" prise="1" id="1" name="al fly" health="40" flying="true"/>
<alien speed="0.012" score="100" imageType="1" prise="0" id="10" name="my alien" health="100"/>
<alien speed="0.0099" score="350" imageType="1" prise="1" id="12" name="MONSTR" health="200" armor="1.5" regeneration="3"/>
</aliens>
<maps>
<map imageType="1" id="1" data="AAAERHicY2BgEGAA4v///0hQgmFmAGlGcjCxZuCTHzUDuxkMDOr85JrBwKC0A8kMJlwYagYOeYgZ+NXgNwMtPEbNINIMIsynOO8DAG0r1Q0=" name="My Map" width="16" height="16" maxPlayers="2"/>
</maps>
<waves>
<wave id="1" timeout="20000" prise="100"/>
<wave id="2" timeout="20000" prise="200"/>
<wave id="3" timeout="20000" prise="220"/>
</waves>
<levels>
<level id="1" map="1" name="First Level"/>
</levels>
<waveParts>
<wavePart wave="1" alien="10" count="4"/>
<wavePart wave="1" alien="12" count="5"/>
<wavePart wave="1" alien="10" count="10"/>
<wavePart wave="2" alien="10" count="9"/>
<wavePart wave="3" alien="10" count="1"/>
<wavePart wave="3" alien="10" count="2"/>
<wavePart wave="3" alien="12" count="3"/>
<wavePart wave="3" alien="12" count="4"/>
</waveParts>
<wavesOnLevels>
<waveOnLevel level="1" wave="1"/>
<waveOnLevel level="1" wave="2"/>
<waveOnLevel level="1" wave="3"/>
</wavesOnLevels>
<splashes>
<splash speed="0.2" imageType="1" id="1" name="rocket" lifetime="9999"/>
<splash speed="0.2" imageType="1" id="2" name="smart rocket" lifetime="9999" autoControl="true"/>
<splash speed="100" imageType="2" id="3" name="bullet" lifetime="100" autoControl="true"/>
<splash speed="1" imageType="3" id="4" name="bum" lifetime="10"/>
<splash speed="0" imageType="4" id="5" name="smoke" lifetime="10"/>
</splashes>
<towers>
<tower id="1" imageType="1" name="rocket launcher" cost="30" buildTime="50" reload="20" splash="1" radius="3" expByDamage="0.04" expByKill="0.1" expByShot="0.15"/>
<tower id="3" imageType="1" name="rocket launcher 2" cost="30" buildTime="50" reload="20" splash="1" radius="3" expByDamage="0.04" expByKill="0.1" expByShot="0.15"/>
<tower id="2" imageType="2" name="gun" cost="10" buildTime="25" reload="5" splash="3" radius="1.5" expByDamage="0.1" expByShot="0.1" expByKill="0.2"/>
</towers>
<triggers>
<trigger id="2" name="shot" type="onDestination" delParent="true" damage="5"/>
<trigger id="3" name="explosion" type="onDestination" count="1" delParent="true" damage="5" radius="1.5"/>
<trigger id="4" name="smoke" type="onTimer" timer="2" count="1"/>
</triggers>
<chains>
<chain tower="1" parent="1" trigger="3" child="4"/>
<chain tower="1" parent="1" trigger="4" child="5"/>
<chain tower="3" parent="2" trigger="3" child="4"/>
<chain tower="3" parent="2" trigger="4" child="5"/>
<chain tower="2" parent="3" trigger="2"/>
</chains>
<towersOnLevels>
<towerOnLevel level="1" tower="1"/>
<towerOnLevel level="1" tower="2"/>
<towerOnLevel level="1" tower="3"/>
</towersOnLevels>
</ADdata>

63
ADeditor/data2.xml Normal file
View File

@@ -0,0 +1,63 @@
<!DOCTYPE data>
<ADdata>
<aliens>
<alien flying="true" speed="0.01" imageType="1" prise="1" id="1" score="50" name="al fly" health="40"/>
<alien speed="0.012" imageType="1" prise="0" id="10" score="100" name="my alien" health="100"/>
<alien regeneration="3" speed="0.0099" imageType="1" prise="1" armor="1.5" id="12" score="350" name="MONSTR" health="200"/>
</aliens>
<maps>
<map width="16" imageType="1" height="16" id="1" data="AAAERHicY2BgEGAA4v///0hQgmFmAGlGcjCxZuCTHzUDuxkMDOr85JrBwKC0A8kMJlwYagYOeYgZ+NXgNwMtPEbNINIMIsynOO8DAG0r1Q0=" name="My Map" maxPlayers="2"/>
</maps>
<waves>
<wave prise="100" timeout="20000" id="1"/>
<wave prise="200" timeout="20000" id="2"/>
<wave prise="220" timeout="20000" id="3"/>
</waves>
<levels>
<level map="1" id="1" score="144665064" name="First Level"/>
</levels>
<waveParts>
<wavePart alien="10" count="4" wave="1"/>
<wavePart alien="12" count="5" wave="1"/>
<wavePart alien="10" count="10" wave="1"/>
<wavePart alien="10" count="9" wave="2"/>
<wavePart alien="10" count="1" wave="3"/>
<wavePart alien="10" count="2" wave="3"/>
<wavePart alien="12" count="3" wave="3"/>
<wavePart alien="12" count="4" wave="3"/>
</waveParts>
<wavesOnLevels>
<waveOnLevel wave="1" level="1"/>
<waveOnLevel wave="2" level="1"/>
<waveOnLevel wave="3" level="1"/>
</wavesOnLevels>
<splashes>
<splash speed="0.2" imageType="1" lifetime="9999" id="1" name="rocket"/>
<splash speed="0.2" imageType="1" lifetime="9999" autoControl="true" id="2" name="smart rocket"/>
<splash speed="100" imageType="2" lifetime="100" autoControl="true" id="3" name="bullet"/>
<splash speed="1" imageType="3" lifetime="10" id="4" name="bum"/>
<splash speed="0" imageType="4" lifetime="10" id="5" name="smoke"/>
</splashes>
<towers>
<tower imageType="1" radius="3" expByKill="0.1" expByShot="0.15" buildTime="50" splash="1" reload="20" id="1" name="rocket launcher" cost="30" expByDamage="0.04"/>
<tower imageType="2" radius="1.5" expByKill="0.2" expByShot="0.1" buildTime="25" splash="3" reload="5" id="2" name="gun" cost="10" expByDamage="0.1"/>
<tower imageType="1" radius="3" expByKill="0.1" expByShot="0.15" buildTime="50" splash="1" reload="20" id="3" name="rocket launcher 2" cost="30" expByDamage="0.04"/>
</towers>
<triggers>
<trigger damage="5" childAim="noAim" delParent="true" type="onDestination" id="2" name="shot"/>
<trigger damage="5" childAim="noAim" radius="1.5" delParent="true" count="1" type="onDestination" id="3" name="explosion"/>
<trigger childAim="noAim" count="1" type="onTimer" id="4" name="smoke"/>
</triggers>
<chains>
<chain tower="1" trigger="3" child="4" parent="1"/>
<chain tower="1" trigger="4" child="5" parent="1"/>
<chain tower="2" trigger="2" parent="3"/>
<chain tower="3" trigger="3" child="4" parent="2"/>
<chain tower="3" trigger="4" child="5" parent="2"/>
</chains>
<towersOnLevels>
<towerOnLevel tower="1" level="1"/>
<towerOnLevel tower="2" level="1"/>
<towerOnLevel tower="3" level="1"/>
</towersOnLevels>
</ADdata>

10
ADeditor/main.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

76
ADeditor/mainwindow.cpp Normal file
View File

@@ -0,0 +1,76 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "alienmodel.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
adloader = new Loader(this);
adloader->load("data2.xml");
QAbstractItemModel * model = new AlienModel(adloader->aliens.values());
ui->lvAliens->setModel(model);
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::Select);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::on_cbAlArmor_toggled(bool checked)
{
ui->sbAlArmor->setEnabled(checked);
}
void MainWindow::on_cbAlRegeneration_toggled(bool checked)
{
ui->sbAlregeneration->setEnabled(checked);
}
void MainWindow::lvAliens_select(QModelIndex index, QModelIndex)
{
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);
}
void MainWindow::on_pbSave_clicked()
{
adloader->save("data2.xml");
adloader->load("data2.xml");
QAbstractItemModel * model = new AlienModel(adloader->aliens.values());
ui->lvAliens->setModel(model);
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::Select);
}

34
ADeditor/mainwindow.h Normal file
View File

@@ -0,0 +1,34 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QListWidgetItem>
#include "../loader.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
Loader * adloader;
private slots:
void on_pbSave_clicked();
void lvAliens_select(QModelIndex, QModelIndex);
void on_cbAlRegeneration_toggled(bool checked);
void on_cbAlArmor_toggled(bool checked);
};
#endif // MAINWINDOW_H

664
ADeditor/mainwindow.ui Normal file
View File

@@ -0,0 +1,664 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>516</width>
<height>435</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="tabAlien_2">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tabAlien">
<attribute name="title">
<string>Aliens</string>
</attribute>
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0" columnstretch="1,0">
<item row="0" column="1" rowspan="2">
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Name</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="leAlName"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Health</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbAlHealth"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QCheckBox" name="cbAlArmor">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Armor</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbAlArmor">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QCheckBox" name="cbAlRegeneration">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Regeneration</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbAlregeneration">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Speed</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbAlSpeed"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Prise</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sbAlPrise"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Score</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sbAlScore"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_10">
<item>
<widget class="QCheckBox" name="cbAlIsFly">
<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>Is Flying</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<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_9" stretch="10,4,0,1">
<item>
<widget class="QLabel" name="label_8">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Image</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QGraphicsView" name="graphicsView">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>48</width>
<height>32</height>
</size>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="2,1">
<property name="spacing">
<number>20</number>
</property>
<item>
<widget class="QPushButton" name="pbAlAdd">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pbAlDel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Delete</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QListView" name="lvAliens">
<property name="editTriggers">
<set>QAbstractItemView::AllEditTriggers</set>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabTower">
<attribute name="title">
<string>Towers</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QListView" name="TowerList"/>
</item>
<item row="0" column="1">
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_25">
<item>
<widget class="QLabel" name="label_20">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Name</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="leAlName_5"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_26">
<item>
<widget class="QLabel" name="label_21">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Build time</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sbAlPrise_5"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_30">
<item>
<widget class="QLabel" name="label_23">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Cost</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sbAlPrise_3"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_36">
<item>
<widget class="QLabel" name="label_29">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>splash</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_35">
<item>
<widget class="QLabel" name="label_28">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Reload</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sbAlPrise_4"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_29">
<item>
<widget class="QLabel" name="label_22">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Radius</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbAlSpeed_3"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_31">
<item>
<widget class="QLabel" name="label_24">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>ExpbyShot</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbAlHealth_4"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_34">
<item>
<widget class="QLabel" name="label_27">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>ExpbyDam</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbAlHealth_6"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_32">
<item>
<widget class="QLabel" name="label_26">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>ExpbyKill</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sbAlHealth_5"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_33" stretch="10,4,0,1">
<item>
<widget class="QLabel" name="label_25">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Image</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QGraphicsView" name="graphicsView_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_5">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>48</width>
<height>32</height>
</size>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QPushButton" name="pbSave">
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,69 @@
/****************************************************************************
** Meta object code from reading C++ file 'alientablemodel.h'
**
** Created: Tue Aug 24 14:03:38 2010
** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include "alientablemodel.h"
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'alientablemodel.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 62
#error "This file was generated using the moc from 4.6.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
static const uint qt_meta_data_AlienTableModel[] = {
// content:
4, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
static const char qt_meta_stringdata_AlienTableModel[] = {
"AlienTableModel\0"
};
const QMetaObject AlienTableModel::staticMetaObject = {
{ &QAbstractTableModel::staticMetaObject, qt_meta_stringdata_AlienTableModel,
qt_meta_data_AlienTableModel, 0 }
};
#ifdef Q_NO_DATA_RELOCATION
const QMetaObject &AlienTableModel::getStaticMetaObject() { return staticMetaObject; }
#endif //Q_NO_DATA_RELOCATION
const QMetaObject *AlienTableModel::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;
}
void *AlienTableModel::qt_metacast(const char *_clname)
{
if (!_clname) return 0;
if (!strcmp(_clname, qt_meta_stringdata_AlienTableModel))
return static_cast<void*>(const_cast< AlienTableModel*>(this));
return QAbstractTableModel::qt_metacast(_clname);
}
int AlienTableModel::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QAbstractTableModel::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
return _id;
}
QT_END_MOC_NAMESPACE

Binary file not shown.

221
ADeditor/schema.xml Normal file
View File

@@ -0,0 +1,221 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="ADdata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="aliens">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="alien" type="alienType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="maps">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="map" type="mapType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="waves">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="wave" type="waveType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="levels">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="level" type="levelType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="waveParts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="wavePart" type="wavePartType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="wavesOnLevels">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="waveOnLevel" type="waveOnLevelType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="splashes">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="splash" type="splashType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="towers">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="tower" type="towerType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="triggers">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="trigger" type="triggerType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="chains">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="chain" type="chainType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="towersOnLevels">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="towerOnLevel" type="towerOnLevelType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="alienType">
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="score" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="speed" type="xsd:float" use="required"/>
<xsd:attribute name="health" type="xsd:float" use="required"/>
<xsd:attribute name="prise" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="imageType" type="xsd:integer" use="required"/>
<xsd:attribute name="armor" type="xsd:float" use="optional"/>
<xsd:attribute name="regeneration" type="xsd:float" use="optional"/>
<xsd:attribute name="flying" type="xsd:boolean" use="optional"/>
</xsd:complexType>
<xsd:complexType name="splashType">
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="speed" type="xsd:float" use="required"/>
<xsd:attribute name="imageType" type="xsd:integer" use="required"/>
<xsd:attribute name="lifetime" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="autoControl" type="xsd:boolean" use="optional"/>
</xsd:complexType>
<xsd:complexType name="triggerType">
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="count" type="xsd:positiveInteger" use="optional"/>
<xsd:attribute name="timer" type="xsd:positiveInteger" use="optional"/>
<xsd:attribute name="chance" type="xsd:positiveInteger" use="optional"/>
<xsd:attribute name="randomPosRadius" type="xsd:float" use="optional"/>
<xsd:attribute name="damage" type="xsd:float" use="optional"/>
<xsd:attribute name="radius" type="xsd:float" use="optional"/>
<xsd:attribute name="delParent" type="xsd:boolean" use="optional"/>
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="onDestination"/>
<xsd:enumeration value="onTimer"/>
<xsd:enumeration value="onAlienInRadius"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="childAim" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="noAim"/>
<xsd:enumeration value="parentAim"/>
<xsd:enumeration value="allSide"/>
<xsd:enumeration value="nearlestAlien"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="towerType">
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="imageType" type="xsd:integer" use="required"/>
<xsd:attribute name="buildTime" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="cost" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="splash" type="xsd:integer" use="required"/>
<xsd:attribute name="reload" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="radius" type="xsd:float" use="required"/>
<xsd:attribute name="expByShot" type="xsd:float" use="optional"/>
<xsd:attribute name="expByKill" type="xsd:float" use="optional"/>
<xsd:attribute name="expByDamage" type="xsd:float" use="optional"/>
</xsd:complexType>
<xsd:complexType name="mapType">
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="maxPlayers" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="width" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="height" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="imageType" type="xsd:integer" use="required"/>
<xsd:attribute name="data" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="morphType">
<xsd:attribute name="from" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="to" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="cost" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="expRequired" type="xsd:float" use="required"/>
</xsd:complexType>
<xsd:complexType name="upgradeType">
<xsd:attribute name="tower" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="trigger" type="xsd:positiveInteger" use="optional"/>
<xsd:attribute name="cost" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="radius" type="xsd:float" use="optional"/>
<xsd:attribute name="reload" type="xsd:positiveInteger" use="optional"/>
<xsd:attribute name="damage" type="xsd:float" use="optional"/>
<xsd:attribute name="damageRadius" type="xsd:float" use="optional"/>
</xsd:complexType>
<xsd:complexType name="wavePartType">
<xsd:attribute name="alien" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="wave" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="count" type="xsd:positiveInteger" use="required"/>
</xsd:complexType>
<xsd:complexType name="chainType">
<xsd:attribute name="tower" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="parent" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="trigger" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="child" type="xsd:positiveInteger" use="optional"/>
</xsd:complexType>
<xsd:complexType name="waveType">
<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="timeout" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="prise" type="xsd:nonNegativeInteger" use="required"/>
<!--xsd:attribute name="type" type="xsd:nonNegativeInteger" use="required"-->
</xsd:complexType>
<xsd:complexType name="waveOnLevelType">
<xsd:attribute name="level" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="wave" type="xsd:positiveInteger" use="required"/>
</xsd:complexType>
<xsd:complexType name="towerOnLevelType">
<xsd:attribute name="level" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="tower" type="xsd:positiveInteger" use="required"/>
<!--xsd:attribute name="enableWave" type="xsd:nonNegativeInteger" use="optional"-->
</xsd:complexType>
<xsd:complexType name="levelType">
<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="map" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="score" type="xsd:positiveInteger" use="required"/>
</xsd:complexType>
</xsd:schema>

View File

@@ -7,6 +7,9 @@ adCore::adCore(QObject *parent) :
//admap = new Map(1); //admap = new Map(1);
//addata = new Game_Data(admap); //addata = new Game_Data(admap);
adloader = new Loader(); adloader = new Loader();
addata = adloader->loadlevel(1);
if (addata != 0) qDebug("Sucsess");
else qDebug("Error");
//admap->load(); //admap->load();
//adload->create(); //adload->create();
//adload->readAliens(); //adload->readAliens();

BIN
aliendefender Executable file

Binary file not shown.

View File

@@ -160,7 +160,7 @@
<valuemap type="QVariantMap"> <valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value> <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
<valuelist key="abstractProcess.Environment" type="QVariantList"> <valuelist key="abstractProcess.Environment" type="QVariantList">
<value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-oJVJLhEuxX,guid=dd326939f06256af8e013dce4c50f54e</value> <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-5i8Go7nPio,guid=870ffe971971ceac89206f0e4c5facbd</value>
<value type="QString">DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</value> <value type="QString">DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</value>
<value type="QString">DESKTOP_SESSION=gnome</value> <value type="QString">DESKTOP_SESSION=gnome</value>
<value type="QString">DISPLAY=:0.0</value> <value type="QString">DISPLAY=:0.0</value>
@@ -168,7 +168,7 @@
<value type="QString">GDM_KEYBOARD_LAYOUT=us</value> <value type="QString">GDM_KEYBOARD_LAYOUT=us</value>
<value type="QString">GDM_LANG=ru_RU.UTF-8</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_DESKTOP_SESSION_ID=this-is-deprecated</value>
<value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-UECX54</value> <value type="QString">GNOME_KEYRING_CONTROL=/tmp/keyring-7vXnOW</value>
<value type="QString">GTK_MODULES=canberra-gtk-module</value> <value type="QString">GTK_MODULES=canberra-gtk-module</value>
<value type="QString">HOME=/home/andrey</value> <value type="QString">HOME=/home/andrey</value>
<value type="QString">LANG=ru_RU.UTF-8</value> <value type="QString">LANG=ru_RU.UTF-8</value>
@@ -179,17 +179,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">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">PWD=/home/andrey</value>
<value type="QString">QTDIR=/usr/share/qt4</value> <value type="QString">QTDIR=/usr/share/qt4</value>
<value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1144,unix/buull-eeePC:/tmp/.ICE-unix/1144</value> <value type="QString">SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1124,unix/buull-eeePC:/tmp/.ICE-unix/1124</value>
<value type="QString">SHELL=/bin/bash</value> <value type="QString">SHELL=/bin/bash</value>
<value type="QString">SPEECHD_PORT=6561</value> <value type="QString">SPEECHD_PORT=6561</value>
<value type="QString">SSH_AGENT_PID=1178</value> <value type="QString">SSH_AGENT_PID=1158</value>
<value type="QString">SSH_AUTH_SOCK=/tmp/keyring-UECX54/ssh</value> <value type="QString">SSH_AUTH_SOCK=/tmp/keyring-7vXnOW/ssh</value>
<value type="QString">USER=andrey</value> <value type="QString">USER=andrey</value>
<value type="QString">USERNAME=andrey</value> <value type="QString">USERNAME=andrey</value>
<value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-SArBRZ/database</value> <value type="QString">XAUTHORITY=/var/run/gdm/auth-for-andrey-HWCXAG/database</value>
<value type="QString">XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</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_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</value>
<value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1280374094.93008-1317282182</value> <value type="QString">XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1281338556.676663-803309736</value>
</valuelist> </valuelist>
<value key="abstractProcess.IgnoreReturnValue" type="bool">true</value> <value key="abstractProcess.IgnoreReturnValue" type="bool">true</value>
<valuelist key="abstractProcess.arguments" type="QVariantList"> <valuelist key="abstractProcess.arguments" type="QVariantList">

View File

@@ -128,9 +128,8 @@ struct SplashType
struct WaveType struct WaveType
{ {
int Id;
QList <int> types; // some types of aliens (e.g. 2 fly and 3 grount in one wave) QList <int> types; // some types of aliens (e.g. 2 fly and 3 grount in one wave)
QList <int> counts; // count aliens of each type QList <unsigned int> counts; // count aliens of each type
unsigned int timeout; // time in ticks unsigned int timeout; // time in ticks
unsigned int prise; unsigned int prise;
}; };

View File

@@ -2,6 +2,7 @@
<!DOCTYPE data> <!DOCTYPE data>
<ADdata> <ADdata>
<aliens> <aliens>
<alien speed="0.01" score="50" imageType="1" prise="1" id="1" name="al fly" health="40" flying="true"/>
<alien speed="0.012" score="100" imageType="1" prise="0" id="10" name="my alien" health="100"/> <alien speed="0.012" score="100" imageType="1" prise="0" id="10" name="my alien" health="100"/>
<alien speed="0.0099" score="350" imageType="1" prise="1" id="12" name="MONSTR" health="200" armor="1.5" regeneration="3"/> <alien speed="0.0099" score="350" imageType="1" prise="1" id="12" name="MONSTR" health="200" armor="1.5" regeneration="3"/>
</aliens> </aliens>
@@ -11,6 +12,7 @@
<waves> <waves>
<wave id="1" timeout="20000" prise="100"/> <wave id="1" timeout="20000" prise="100"/>
<wave id="2" timeout="20000" prise="200"/> <wave id="2" timeout="20000" prise="200"/>
<wave id="3" timeout="20000" prise="220"/>
</waves> </waves>
<levels> <levels>
<level id="1" map="1" name="First Level"/> <level id="1" map="1" name="First Level"/>
@@ -20,10 +22,15 @@
<wavePart wave="1" alien="12" count="5"/> <wavePart wave="1" alien="12" count="5"/>
<wavePart wave="1" alien="10" count="10"/> <wavePart wave="1" alien="10" count="10"/>
<wavePart wave="2" alien="10" count="9"/> <wavePart wave="2" alien="10" count="9"/>
<wavePart wave="3" alien="10" count="1"/>
<wavePart wave="3" alien="10" count="2"/>
<wavePart wave="3" alien="12" count="3"/>
<wavePart wave="3" alien="12" count="4"/>
</waveParts> </waveParts>
<wavesOnLevels> <wavesOnLevels>
<waveOnLevel level="1" wave="1"/> <waveOnLevel level="1" wave="1"/>
<waveOnLevel level="1" wave="2"/> <waveOnLevel level="1" wave="2"/>
<waveOnLevel level="1" wave="3"/>
</wavesOnLevels> </wavesOnLevels>
<splashes> <splashes>
<splash speed="0.2" imageType="1" id="1" name="rocket" lifetime="9999"/> <splash speed="0.2" imageType="1" id="1" name="rocket" lifetime="9999"/>

View File

@@ -5,14 +5,14 @@ Loader::Loader(QObject *parent) :
{ {
doc = new QDomDocument("data"); doc = new QDomDocument("data");
//create(); //create();
load(); //load();
} }
void Loader::load() void Loader::load(QString filename)
{ {
validate(); validate(filename);
file = new QFile("data.xml"); file = new QFile(filename);
if (!file->open(QIODevice::ReadOnly)) if (!file->open(QIODevice::ReadOnly))
qFatal("No file data.xml found!"); qFatal("No file data.xml found!");
if (!doc->setContent(file)) if (!doc->setContent(file))
@@ -38,80 +38,289 @@ void Loader::load()
} }
void Loader::create() void Loader::save(QString filename)
{ {
QFile cfile("data.xml"); QDomDocument data("data");
QFile cfile(filename);
if (!cfile.open(QIODevice::WriteOnly)) if (!cfile.open(QIODevice::WriteOnly))
return; return;
cfile.resize(0); cfile.resize(0);
QDomElement elem; QDomElement elem;
QDomElement root = doc->createElement("ADdata"); QDomElement root = data.createElement("ADdata");
doc->appendChild(root); data.appendChild(root);
QDomElement child = doc->createElement("aliens"); QDomElement child = data.createElement("aliens");
root.appendChild(child); root.appendChild(child);
elem = doc->createElement("alien"); for (int i=0; i<aliens.size(); i++)
child.appendChild(elem); {
elem.setAttribute("name","my alien"); tbAlien al = aliens.values().at(i);
elem.setAttribute("speed",0.012); elem = data.createElement("alien");
elem.setAttribute("health",100); child.appendChild(elem);
elem.setAttribute("prise",0); elem.setAttribute("id",al.id);
elem.setAttribute("id",10); elem.setAttribute("name",al.name);
elem.setAttribute("imageType",1); elem.setAttribute("health",al.health);
elem = doc->createElement("alien"); if (al.armor > 0)
child.appendChild(elem); elem.setAttribute("armor",al.armor);
elem.setAttribute("name","MONSTR"); if (al.isFlying)
elem.setAttribute("speed",0.0099); elem.setAttribute("flying","true");
elem.setAttribute("health",200); elem.setAttribute("prise",al.prise);
elem.setAttribute("prise",1); if (al.regeneration > 0)
elem.setAttribute("id",12); elem.setAttribute("regeneration",al.regeneration);
elem.setAttribute("imageType",1); elem.setAttribute("score",al.score);
child = doc->createElement("towers"); elem.setAttribute("speed",al.speed);
elem.setAttribute("imageType",al.imgType);
}
child = data.createElement("maps");
root.appendChild(child); root.appendChild(child);
elem = doc->createElement("tower"); for (int i=0; i<maps.size(); i++)
child.appendChild(elem); {
elem.setAttribute("name","my tower"); tbMap map = maps.values().at(i);
elem.setAttribute("imageType",1); elem = data.createElement("map");
elem.setAttribute("reload",20); child.appendChild(elem);
elem.setAttribute("buildTime",100); elem.setAttribute("name",map.name);
elem.setAttribute("price",10); elem.setAttribute("maxPlayers",map.maxPlayers);
elem.setAttribute("radius",1.2); elem.setAttribute("id",map.id);
elem.setAttribute("splashType",0); elem.setAttribute("imageType",map.imgType);
elem.setAttribute("id",0); elem.setAttribute("width",map.size.width());
elem = doc->createElement("tower"); elem.setAttribute("height",map.size.height());
child.appendChild(elem); elem.setAttribute("data",QString(map.data));
elem.setAttribute("name","Wall"); }
elem.setAttribute("imageType",1); child = data.createElement("waves");
elem.setAttribute("buildTime",300);
elem.setAttribute("reload",0);
elem.setAttribute("price",9);
elem.setAttribute("radius",0);
elem.setAttribute("splashType",0);
elem.setAttribute("id",1);
child = doc->createElement("maps");
root.appendChild(child); root.appendChild(child);
elem = doc->createElement("map"); for (int i=0; i<waves.size(); i++)
child.appendChild(elem); {
elem.setAttribute("name","Map 16x16"); tbWave w = waves.values().at(i);
elem.setAttribute("maxPlayers","2"); elem = data.createElement("wave");
elem.setAttribute("id",1); child.appendChild(elem);
elem.setAttribute("imageType",1); elem.setAttribute("id",w.id);
elem.setAttribute("data",CreateMapExample()); elem.setAttribute("prise",w.prise);
child = doc->createElement("splashes"); elem.setAttribute("timeout",w.timeout);
}
child = data.createElement("levels");
root.appendChild(child); root.appendChild(child);
elem = doc->createElement("splash"); for (int i=0; i<levels.size(); i++)
child.appendChild(elem); {
elem.setAttribute("name","shot"); tbLevel lev = levels.values().at(i);
elem.setAttribute("imageType",1); elem = data.createElement("level");
elem.setAttribute("damage",2.5); child.appendChild(elem);
elem.setAttribute("speed",100); elem.setAttribute("id",lev.id);
elem.setAttribute("autoControl","true"); elem.setAttribute("map",lev.mapId);
elem.setAttribute("radius",1.2); elem.setAttribute("name",lev.name);
elem.setAttribute("id",0); elem.setAttribute("score",lev.score);
cfile.write(doc->toByteArray()); }
child = data.createElement("waveParts");
root.appendChild(child);
for (int i=0; i<waveParts.size(); i++)
{
tbWavePart wp = waveParts.values().at(i);
elem = data.createElement("wavePart");
child.appendChild(elem);
elem.setAttribute("wave",wp.waveId);
elem.setAttribute("alien",wp.alienId);
elem.setAttribute("count",wp.count);
}
child = data.createElement("wavesOnLevels");
root.appendChild(child);
for (int i=0; i<levWaves.size(); i++)
{
tbWaveOnLevel wol = levWaves.values().at(i);
elem = data.createElement("waveOnLevel");
child.appendChild(elem);
elem.setAttribute("level",wol.levelId);
elem.setAttribute("wave",wol.waveId);
}
child = data.createElement("splashes");
root.appendChild(child);
for (int i=0; i<splashes.size(); i++)
{
tbSplash spl = splashes.values().at(i);
elem = data.createElement("splash");
child.appendChild(elem);
elem.setAttribute("name",spl.name);
elem.setAttribute("id",spl.id);
elem.setAttribute("imageType",spl.imgType);
elem.setAttribute("lifetime",spl.lifetime);
elem.setAttribute("speed",spl.speed);
if (spl.autoControl)
elem.setAttribute("autoControl","true");
}
child = data.createElement("towers");
root.appendChild(child);
for (int i=0; i<towers.size(); i++)
{
tbTower tw = towers.values().at(i);
elem = data.createElement("tower");
child.appendChild(elem);
elem.setAttribute("name",tw.name);
elem.setAttribute("imageType",tw.imgType);
elem.setAttribute("reload",tw.reload);
elem.setAttribute("buildTime",tw.buildTime);
elem.setAttribute("cost",tw.cost);
elem.setAttribute("radius",tw.radius);
elem.setAttribute("splash",tw.splashId);
elem.setAttribute("id",tw.id);
if (tw.expByDamage > 0)
elem.setAttribute("expByDamage",tw.expByDamage);
if (tw.expByKill > 0)
elem.setAttribute("expByKill",tw.expByKill);
if (tw.expByShot > 0)
elem.setAttribute("expByShot",tw.expByShot);
}
child = data.createElement("triggers");
root.appendChild(child);
for (int i=0; i<triggers.size(); i++)
{
tbTrigger trig = triggers.values().at(i);
elem = data.createElement("trigger");
child.appendChild(elem);
elem.setAttribute("id",trig.id);
elem.setAttribute("name",trig.name);
if (trig.chance != 100)
elem.setAttribute("chance",trig.chance);
if (trig.count > 0)
elem.setAttribute("count",trig.count);
if (trig.damage > 0)
elem.setAttribute("damage",trig.damage);
if (trig.radius > 0)
elem.setAttribute("radius",trig.radius);
if (trig.delParent)
elem.setAttribute("delParent","true");
if (trig.randomPosRadius > 0)
elem.setAttribute("randomPosRadius",trig.randomPosRadius);
switch (trig.childAim)
{
case tbTrigger::allSide :
elem.setAttribute("childAim","allSide");
break;
case tbTrigger::nearlestAlien :
elem.setAttribute("childAim","nearlestAlien");
break;
case tbTrigger::parentAim :
elem.setAttribute("childAim","parentAim");
break;
default:
elem.setAttribute("childAim","noAim");
break;
}
switch (trig.type)
{
case tbTrigger::onTimer :
elem.setAttribute("type","onTimer");
break;
case tbTrigger::onDestination :
elem.setAttribute("type","onDestination");
break;
case tbTrigger::onAlienInRadius :
elem.setAttribute("type","onAlienInRadius");
break;
}
}
child = data.createElement("chains");
root.appendChild(child);
for (int i=0; i<chains.size(); i++)
{
tbChain ch = chains.values().at(i);
elem = data.createElement("chain");
child.appendChild(elem);
elem.setAttribute("tower",ch.towerId);
elem.setAttribute("trigger",ch.triggerId);
elem.setAttribute("parent",ch.parentSplashId);
if (ch.childSplashId > 0)
elem.setAttribute("child",ch.childSplashId);
}
child = data.createElement("towersOnLevels");
root.appendChild(child);
for (int i=0; i<levTowers.size(); i++)
{
tbTowerOnLevel tol = levTowers.values().at(i);
elem = data.createElement("towerOnLevel");
child.appendChild(elem);
elem.setAttribute("level",tol.levelId);
elem.setAttribute("tower",tol.towerId);
}
cfile.write(data.toByteArray());
cfile.close(); cfile.close();
//qDebug() << data.toByteArray();
} }
//Game_Data * Loader::loadlevel(int id)
//{
// if (!levels.contains(id))
// {
// qCritical() << tr("Error Level %1 not found!").arg(id);
// return 0;
// }
// qDebug() << tr("Loading level %1 ...").arg(levels.value(id).name);
// tbMap tbm = maps.value(levels.value(id).mapId);
// Map * map = new Map(tbm.data,tbm.size,tbm.name,tbm.maxPlayers,tbm.imgType);
// Game_Data * gd = new Game_Data(map);
// QList <tbWaveOnLevel> wollist = levWaves.values(id);
// if (wollist.isEmpty())
// {
// qCritical() << tr("Error no waves on level!");
// return 0;
// }
// tbWave tbw;
// tbWavePart tbwpt;
// QList <tbWavePart> wplist;
// QList <int> alienIds;
// for (int i=0; i<wollist.size(); i++)
// {
// WaveType wt;
// tbw = waves.value(wollist.at(i).waveId);
// wt.prise = tbw.prise;
// wt.timeout = tbw.timeout;
// wplist = waveParts.values(tbw.id);
// if (wplist.isEmpty())
// {
// qCritical() << tr("Error wave %1 is empty!").arg(tbw.id);
// return 0;
// }
// for (int j=0; j<wplist.size(); j++)
// {
// tbwpt = wplist.at(j);
// if (alienIds.contains(tbwpt.alienId))
// {
// wt.types.prepend(alienIds.indexOf(tbwpt.alienId));
// } else {
// alienIds.append(tbwpt.alienId);
// wt.types.prepend(alienIds.size()-1);
// }
// wt.counts.prepend(tbwpt.count);
// }
// gd->waves.prepend(wt);
// wplist.clear();
// }
// for (int i=0; i<gd->waves.size(); i++)
// qDebug() << tr("load wave #%1 prise=%2 timeout=%3").arg(i+1).arg(gd->waves.at(i).prise).arg(gd->waves.at(i).timeout) << gd->waves.at(i).types << gd->waves.at(i).counts;
// wollist.clear();
// for (int i=0; i<alienIds.size(); i++)
// {
// srcAlienType salt;
// tbAlien tbal = aliens.value(alienIds.at(i));
// salt.armor = tbal.armor;
// salt.health = tbal.health;
// salt.imgType = tbal.imgType;
// salt.isFlying = tbal.isFlying;
// salt.name = tbal.name;
// salt.prise = tbal.prise;
// salt.regeneration = tbal.regeneration;
// salt.score = tbal.score;
// salt.speed = tbal.speed;
// gd->srcAliens.append(salt);
// qDebug() << tr("Alien %1 #%2 ").arg(salt.name).arg(i);
// }
// QList <tbTowerOnLevel> tollist = levTowers.values(id);
// tbTower tbt;
// for (int i=0; i<tollist.size(); i++)
// {
// srcTowerType stt;
// tbt = towers.value(tollist.at(i).towerId);
// }
// return gd;
//}
QString Loader::CreateMapExample() QString Loader::CreateMapExample()
{ {
QVector < QVector < int > > Cells; QVector < QVector < int > > Cells;
@@ -154,6 +363,7 @@ QString Loader::CreateMapExample()
void Loader::readAliens() void Loader::readAliens()
{ {
aliens.clear();
QDomNodeList alelems = doc->elementsByTagName("alien"); QDomNodeList alelems = doc->elementsByTagName("alien");
for (int i=0; i<alelems.size(); i++) for (int i=0; i<alelems.size(); i++)
{ {
@@ -169,6 +379,7 @@ void Loader::readAliens()
al.imgType = nm.namedItem("imageType").nodeValue().toInt(); al.imgType = nm.namedItem("imageType").nodeValue().toInt();
al.regeneration = nm.namedItem("regeneration").nodeValue().toFloat(); al.regeneration = nm.namedItem("regeneration").nodeValue().toFloat();
al.score = nm.namedItem("score").nodeValue().toInt(); al.score = nm.namedItem("score").nodeValue().toInt();
al.isFlying = (nm.namedItem("flying").nodeValue() == "true");
aliens.insert(al.id,al); aliens.insert(al.id,al);
qDebug() << tr("Alien %1 id=%2 health=%3 speed=%4 prise=%5 imgType=%6 armor=%7 regeneration=%8 score=%10").arg(al.name).arg(al.id).arg(al.health).arg(al.speed).arg(al.prise).arg(al.imgType).arg(al.armor).arg(al.regeneration).arg(al.score); qDebug() << tr("Alien %1 id=%2 health=%3 speed=%4 prise=%5 imgType=%6 armor=%7 regeneration=%8 score=%10").arg(al.name).arg(al.id).arg(al.health).arg(al.speed).arg(al.prise).arg(al.imgType).arg(al.armor).arg(al.regeneration).arg(al.score);
} }
@@ -180,6 +391,7 @@ void Loader::readAliens()
void Loader::readWaves() void Loader::readWaves()
{ {
waves.clear();
QDomNodeList welems = doc->elementsByTagName("wave"); QDomNodeList welems = doc->elementsByTagName("wave");
for (int i=0; i<welems.size(); i++) for (int i=0; i<welems.size(); i++)
{ {
@@ -200,6 +412,7 @@ void Loader::readWaves()
void Loader::readWaveParts() void Loader::readWaveParts()
{ {
waveParts.clear();
QDomNodeList wpelems = doc->elementsByTagName("wavePart"); QDomNodeList wpelems = doc->elementsByTagName("wavePart");
for (int i=0; i<wpelems.size(); i++) for (int i=0; i<wpelems.size(); i++)
{ {
@@ -233,6 +446,7 @@ void Loader::readWaveParts()
void Loader::readChains() void Loader::readChains()
{ {
chains.clear();
QDomNodeList celems = doc->elementsByTagName("chain"); QDomNodeList celems = doc->elementsByTagName("chain");
for (int i=0; i<celems.size(); i++) for (int i=0; i<celems.size(); i++)
{ {
@@ -280,6 +494,7 @@ void Loader::readChains()
void Loader::readLevWaves() void Loader::readLevWaves()
{ {
levWaves.clear();
QDomNodeList lwelems = doc->elementsByTagName("waveOnLevel"); QDomNodeList lwelems = doc->elementsByTagName("waveOnLevel");
for (int i=0; i<lwelems.size(); i++) for (int i=0; i<lwelems.size(); i++)
{ {
@@ -312,6 +527,7 @@ void Loader::readLevWaves()
void Loader::readLevTowers() void Loader::readLevTowers()
{ {
levTowers.clear();
QDomNodeList ltelems = doc->elementsByTagName("towerOnLevel"); QDomNodeList ltelems = doc->elementsByTagName("towerOnLevel");
for (int i=0; i<ltelems.size(); i++) for (int i=0; i<ltelems.size(); i++)
{ {
@@ -344,6 +560,7 @@ void Loader::readLevTowers()
void Loader::readLevels() void Loader::readLevels()
{ {
levels.clear();
QDomNodeList lelems = doc->elementsByTagName("level"); QDomNodeList lelems = doc->elementsByTagName("level");
for (int i=0; i<lelems.size(); i++) for (int i=0; i<lelems.size(); i++)
{ {
@@ -373,6 +590,7 @@ void Loader::readLevels()
void Loader::readTriggers() void Loader::readTriggers()
{ {
triggers.clear();
QString str; QString str;
QDomNodeList trelems = doc->elementsByTagName("trigger"); QDomNodeList trelems = doc->elementsByTagName("trigger");
for (int i=0; i<trelems.size(); i++) for (int i=0; i<trelems.size(); i++)
@@ -388,7 +606,7 @@ void Loader::readTriggers()
trig.count = nm.namedItem("count").nodeValue().toInt(); trig.count = nm.namedItem("count").nodeValue().toInt();
trig.timer = nm.namedItem("timer").nodeValue().toInt(); trig.timer = nm.namedItem("timer").nodeValue().toInt();
trig.chance = nm.namedItem("chance").nodeValue().toInt(); trig.chance = nm.namedItem("chance").nodeValue().toInt();
if (!(trig.chance>1)) trig.chance = 100; if (!(trig.chance>0)) trig.chance = 100;
str = nm.namedItem("delParent").nodeValue(); str = nm.namedItem("delParent").nodeValue();
trig.delParent = (str == "true"); trig.delParent = (str == "true");
str = nm.namedItem("type").nodeValue(); str = nm.namedItem("type").nodeValue();
@@ -418,6 +636,7 @@ void Loader::readTriggers()
void Loader::readSplashes() void Loader::readSplashes()
{ {
splashes.clear();
QString str; QString str;
QDomNodeList selems = doc->elementsByTagName("splash"); QDomNodeList selems = doc->elementsByTagName("splash");
for (int i=0; i<selems.size(); i++) for (int i=0; i<selems.size(); i++)
@@ -443,6 +662,7 @@ void Loader::readSplashes()
void Loader::readTowers() void Loader::readTowers()
{ {
towers.clear();
QDomNodeList twelems = doc->elementsByTagName("tower"); QDomNodeList twelems = doc->elementsByTagName("tower");
for (int i=0; i<twelems.size(); i++) for (int i=0; i<twelems.size(); i++)
{ {
@@ -481,6 +701,7 @@ void Loader::readTowers()
void Loader::readMaps() void Loader::readMaps()
{ {
maps.clear();
QDomNodeList melems = doc->elementsByTagName("map"); QDomNodeList melems = doc->elementsByTagName("map");
for (int i=0; i<melems.size(); i++) for (int i=0; i<melems.size(); i++)
{ {
@@ -503,7 +724,7 @@ void Loader::readMaps()
} }
void Loader::validate() void Loader::validate(QString filename)
{ {
QFile sfile("schema.xml"); QFile sfile("schema.xml");
if (!sfile.open(QIODevice::ReadOnly)) if (!sfile.open(QIODevice::ReadOnly))
@@ -512,9 +733,9 @@ void Loader::validate()
if (!schema.load(&sfile)) if (!schema.load(&sfile))
qFatal("Error parsing schema.xml"); qFatal("Error parsing schema.xml");
QXmlSchemaValidator sval(schema); QXmlSchemaValidator sval(schema);
QFile dfile("data.xml"); QFile dfile(filename);
if (!dfile.open(QIODevice::ReadOnly)) if (!dfile.open(QIODevice::ReadOnly))
qFatal("No file data.xml found!"); qFatal("ERROR File not found!");
if (!sval.validate(&dfile)) if (!sval.validate(&dfile))
qFatal("Validation failure!"); qFatal("Validation failure!");
else else

View File

@@ -156,16 +156,10 @@ class Loader : public QObject
Q_OBJECT Q_OBJECT
public: public:
explicit Loader(QObject *parent = 0); explicit Loader(QObject *parent = 0);
void create(); //void create();
void reload(); void save(QString filename);
Game_Data * loadlevel(); void load(QString filename);
signals: Game_Data * loadlevel(int id);
public slots:
private:
QDomDocument * doc;
QFile * file;
QHash <int,tbAlien> aliens; QHash <int,tbAlien> aliens;
QHash <int,tbMap> maps; QHash <int,tbMap> maps;
@@ -181,6 +175,14 @@ private:
QMultiHash <int,tbTowerOnLevel> levTowers; QMultiHash <int,tbTowerOnLevel> levTowers;
QMultiHash <int,tbUpgrade> upgrades; QMultiHash <int,tbUpgrade> upgrades;
signals:
public slots:
private:
QDomDocument * doc;
QFile * file;
void readAliens(); void readAliens();
void readMaps(); void readMaps();
void readLevels(); void readLevels();
@@ -195,8 +197,7 @@ private:
void readWaveParts(); void readWaveParts();
void readUpgrades(); void readUpgrades();
void validate(); void validate(QString filename);
void load();
QString CreateMapExample(); QString CreateMapExample();
}; };

View File

@@ -95,6 +95,7 @@
<xsd:attribute name="imageType" type="xsd:integer" use="required"/> <xsd:attribute name="imageType" type="xsd:integer" use="required"/>
<xsd:attribute name="armor" type="xsd:float" use="optional"/> <xsd:attribute name="armor" type="xsd:float" use="optional"/>
<xsd:attribute name="regeneration" type="xsd:float" use="optional"/> <xsd:attribute name="regeneration" type="xsd:float" use="optional"/>
<xsd:attribute name="flying" type="xsd:boolean" use="optional"/>
</xsd:complexType> </xsd:complexType>
<xsd:complexType name="splashType"> <xsd:complexType name="splashType">
@@ -168,6 +169,16 @@
<xsd:attribute name="expRequired" type="xsd:float" use="required"/> <xsd:attribute name="expRequired" type="xsd:float" use="required"/>
</xsd:complexType> </xsd:complexType>
<xsd:complexType name="upgradeType">
<xsd:attribute name="tower" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="trigger" type="xsd:positiveInteger" use="optional"/>
<xsd:attribute name="cost" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="radius" type="xsd:float" use="optional"/>
<xsd:attribute name="reload" type="xsd:positiveInteger" use="optional"/>
<xsd:attribute name="damage" type="xsd:float" use="optional"/>
<xsd:attribute name="damageRadius" type="xsd:float" use="optional"/>
</xsd:complexType>
<xsd:complexType name="wavePartType"> <xsd:complexType name="wavePartType">
<xsd:attribute name="alien" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="alien" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="wave" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="wave" type="xsd:positiveInteger" use="required"/>
@@ -203,6 +214,7 @@
<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/> <xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="map" type="xsd:nonNegativeInteger" use="required"/> <xsd:attribute name="map" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="score" type="xsd:positiveInteger" use="required"/>
</xsd:complexType> </xsd:complexType>
</xsd:schema> </xsd:schema>

View File

@@ -1,254 +0,0 @@
#include <settreader.h>
using namespace std;
SettingsReader::SettingsReader(const QString & fname) {
isFile = true;
file = new QFile(fname);
file->open(QIODevice::ReadWrite);
stream = new QTextStream(file);
parse();
}
SettingsReader::SettingsReader(QString * string) {
isFile = false;
str = string;
stream = new QTextStream(string);
parse();
}
SettingsReader::~SettingsReader() {
settname.clear();
settval.clear();
settcom.clear();
setttab.clear();
settlines.clear();
setttype.clear();
all.clear();
stream->setDevice(0);
delete stream;
if (isFile) {
file->close();
delete file;
}
}
QString SettingsReader::getValue(QString vname, QString def, bool * exist) {
for (int i = 0; i < settname.size(); i++) {
if (settname.at(i) == vname) {
if (exist != 0) *exist = true;
return settval.at(i);
}
}
if (exist != 0) *exist = false;
return def;
}
void SettingsReader::addLine(const QString & name, const QString & value, const QString & type) {
if (setttab.size() > 0 && all.size() > 0) *stream << setttab.at(setttab.size() - 1) << name << " = " << value << " #" << type << endl;
else *stream << name << " = " << value << " #" << type << endl;
settname.append(name);
settval.append(value);
settcom.append("");
setttype.append(type);
if (setttab.size() > 0) setttab.append(setttab.at(setttab.size() - 1));
else setttab.append(" ");
settlines.push_back(all.size());
all.append(name + " = " + value + " #" + type);
stream->flush();
if (isFile) file->flush();
}
void SettingsReader::insertLine(int number, const QString & name, const QString & value, const QString & type) {
if (number >= settname.size()) {
addLine(name, value, type);
return;
}
settname.insert(number, name);
settval.insert(number, value);
settcom.insert(number, "");
setttab.insert(number, setttab.at(number));
setttype.insert(number, type);
settlines.insert(number, settlines.at(number));
for (int i = number + 1; i < settlines.size(); i++) settlines[i]++;
all.insert(settlines.at(number), name + " = " + value + " #" + type);
stream->flush();
if (isFile) file->flush();
writeAll();
}
int SettingsReader::numValues() {
return settval.size();
}
QString SettingsReader::getValue(int number) {
return settval.at(number);
}
QString SettingsReader::getName(int number) {
return settname.at(number);
}
QString SettingsReader::getComment(int number) {
return settcom.at(number);
}
char SettingsReader::getType(int number) {
return setttype.at(number)[0].cell();
}
int SettingsReader::getNumber(const QString & name) {
for (int i = 0; i < settname.size(); i++) {
if (settname.at(i) == name) {
return i;
}
}
return -1;
}
void SettingsReader::setValue(int number, const QString & value, bool write) {
QString tmp = settname.at(number) + " = " + value + " #" + setttype.at(number) + " " + settcom.at(number);
settval.replace(number, value);
all.replace(settlines[number], tmp);
if (write) writeAll();
}
void SettingsReader::setValue(const QString & name, const QString & value, bool write) {
int number = getNumber(name);
if (number == -1) return;
QString tmp = settname.at(number) + " = " + value + " #" + setttype.at(number) + " " + settcom.at(number);
settval.replace(number, value);
all.replace(settlines[number], tmp);
if (write) writeAll();
}
void SettingsReader::setName(int number, const QString & name) {
QString tmp = name + " = " + settval.at(number) + " #" + setttype.at(number) + " " + settcom.at(number);
settname.replace(number, name);
all.replace(settlines[number], tmp);
writeAll();
}
void SettingsReader::setType(int number, const QString & type) {
QString tmp = settname.at(number) + " = " + settval.at(number) + " #" + type + " " + settcom.at(number);
setttype.replace(number, type);
all.replace(settlines[number], tmp);
writeAll();
}
void SettingsReader::setComment(int number, const QString & comment) {
QString tmp = settname.at(number) + " = " + settval.at(number) + " #" + setttype.at(number) + " " + comment;
settcom.replace(number, comment);
all.replace(settlines[number], tmp);
writeAll();
}
void SettingsReader::deleteLine(const QString & name) {
bool exist = false;
int i;
for (i = 0; i < settname.size(); i++) {
if (settname.at(i) == name) {
exist = true;
break;
}
}
if (!exist) return;
deleteLine(i);
}
void SettingsReader::deleteLine(int number) {
settname.remove(number);
settval.remove(number);
settcom.remove(number);
setttab.remove(number);
setttype.remove(number);
all.remove(settlines[number]);
for (int i = number; i < settlines.size(); i++) settlines[i]--;
settlines.remove(number);
writeAll();
}
void SettingsReader::writeAll() {
if (isFile) file->resize(0);
else *str = "";
stream->seek(0);
int c = 0;
for (int i = 0; i < all.size(); i++) {
if (c < settlines.size() && c < setttab.size()) {
if (settlines[c] == i) {
*stream << setttab.at(c);
c++;
}
}
*stream << all.at(i) << endl;
}
if (isFile) file->flush();
readAll();
}
void SettingsReader::readAll() {
settname.clear();
settval.clear();
settcom.clear();
setttab.clear();
settlines.clear();
setttype.clear();
all.clear();
if (isFile) file->flush();
parse();
}
void SettingsReader::parse() {
QString str, tab, comm;
int ind, sind;
stream->seek(0);
lines = 0;
if (isFile) if (!file->exists()) return;
while (!stream->atEnd()) {
str = stream->readLine();
tab = str.left(str.indexOf(str.trimmed().left(1)));
str = str.trimmed();
all.append(str);
ind = str.indexOf('=');
if ((ind > 0) && !(str.left(1) == "#")) {
sind = str.indexOf('#');
if (sind > 0) {
comm = str.right(str.length() - sind - 1).trimmed();
setttype.append(comm.left(1));
comm = comm.right(comm.length() - 1).trimmed();
settcom.append(comm);
str.truncate(sind);
} else {
setttype.append("s");
settcom.append("");
}
settname.append((str.left(ind)).trimmed());
settval.append((str.right(str.length() - ind - 1)).trimmed());
setttab.append(tab);
settlines.push_back(lines);
}
lines++;
}
}

View File

@@ -1,54 +0,0 @@
#ifndef __SETT_READER_H__
#define __SETT_READER_H__
#include <iostream>
#include <QDebug>
#include <QTextStream>
#include <QStringList>
#include <QVector>
#include <QFile>
class SettingsReader
{
public:
SettingsReader(const QString & fname);
SettingsReader(QString * string);
~SettingsReader();
QString getValue(QString vname, QString def = "", bool * exist = 0);
QString getValue(int number);
QString getName(int number);
QString getComment(int number);
char getType(int number);
int getNumber(const QString & name);
void setValue(int number, const QString & value, bool write = true);
void setValue(const QString & name, const QString & value, bool write = true);
void setName(int number, const QString & name);
void setType(int number, const QString & type);
void setComment(int number, const QString & comment);
int numValues();
void addLine(const QString & name, const QString & value, const QString & type = "s");
void insertLine(int number, const QString & name, const QString & value, const QString & type = "s");
void deleteLine(const QString & name);
void deleteLine(int number);
void readAll();
void writeAll();
private:
void parse();
bool isFile;
int lines;
QFile * file;
QString * str;
QTextStream * stream;
QVector<QString> settname;
QVector<QString> settval;
QVector<QString> settcom;
QVector<QString> setttab;
QVector<QString> setttype;
QVector<QString> all;
QVector<int> settlines;
};
#endif

BIN
settreader.o Normal file

Binary file not shown.