aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Oliver <contact@pauloliver.dev>2024-02-29 19:27:35 +0100
committerPaul Oliver <contact@pauloliver.dev>2024-02-29 19:27:49 +0100
commit17909d029c6a8872b2fddf4e171d7925bbbe9c5c (patch)
treecbb08af84cd68d24acc362d593a2048b0fa79689
Initial commitHEADmaster
-rw-r--r--Guppies1.0.cbp196
-rw-r--r--Guppies1.0.depend3524
-rw-r--r--Guppies1.0.layout84
-rw-r--r--Guppies1_0App.cpp34
-rw-r--r--Guppies1_0App.h21
-rw-r--r--Guppies1_0Main.cpp757
-rw-r--r--Guppies1_0Main.h246
-rw-r--r--README.md20
-rw-r--r--Simulation/Camera.cpp241
-rw-r--r--Simulation/Camera.hpp42
-rw-r--r--Simulation/ContactListener.cpp168
-rw-r--r--Simulation/ContactListener.hpp16
-rw-r--r--Simulation/Corpse.cpp99
-rw-r--r--Simulation/Corpse.hpp28
-rw-r--r--Simulation/Entity.cpp59
-rw-r--r--Simulation/Entity.hpp34
-rw-r--r--Simulation/GraphicObjs.hpp56
-rw-r--r--Simulation/Guppie.cpp584
-rw-r--r--Simulation/Guppie.hpp58
-rw-r--r--Simulation/GuppiesInclude.hpp6
-rw-r--r--Simulation/Params.hpp172
-rw-r--r--Simulation/Pellet.cpp66
-rw-r--r--Simulation/Pellet.hpp20
-rw-r--r--Simulation/SimBase.hpp70
-rw-r--r--Simulation/SimBase_CreateNew.cpp49
-rw-r--r--Simulation/SimBase_Draw.cpp40
-rw-r--r--Simulation/SimBase_Execute.cpp152
-rw-r--r--Simulation/SimBase_PrepareGraphics.cpp269
-rw-r--r--Simulation/SimBase_Update.cpp55
-rw-r--r--Simulation/SimFitness.hpp26
-rw-r--r--Simulation/SimFitness_StartSpecs.cpp60
-rw-r--r--Simulation/SimFitness_UpdateSpecs.cpp40
-rw-r--r--Simulation/Tank.cpp52
-rw-r--r--Simulation/Tank.hpp34
-rw-r--r--Simulation/TextDisplay.cpp136
-rw-r--r--Simulation/TextDisplay.hpp55
-rw-r--r--Simulation/Zapper.cpp46
-rw-r--r--Simulation/Zapper.hpp14
-rw-r--r--bin/Release/Guppies.exebin0 -> 8102912 bytes
-rw-r--r--bin/Release/Instructions.txt255
-rw-r--r--bin/Release/gfx/Thumbs.dbbin0 -> 35840 bytes
-rw-r--r--bin/Release/gfx/font.ttfbin0 -> 358324 bytes
-rw-r--r--bin/Release/gfx/icon.pngbin0 -> 4306 bytes
-rw-r--r--bin/Release/gfx/icon_big.pngbin0 -> 23677 bytes
-rw-r--r--bin/Release/gfx/logo.pngbin0 -> 41537 bytes
-rw-r--r--gfx/Thumbs.dbbin0 -> 38912 bytes
-rw-r--r--gfx/font.ttfbin0 -> 358324 bytes
-rw-r--r--gfx/icon.pngbin0 -> 4306 bytes
-rw-r--r--gfx/icon_big.pngbin0 -> 23677 bytes
-rw-r--r--gfx/logo.pngbin0 -> 41537 bytes
-rw-r--r--icon.icobin0 -> 370070 bytes
-rw-r--r--obj/Release/Simulation/.keep0
-rw-r--r--obj/Release/resource.resbin0 -> 394186 bytes
-rw-r--r--prms/test.prms37
-rw-r--r--resource.rc3
-rw-r--r--wxsmith/Guppies1_0dialog.wxs1038
56 files changed, 8962 insertions, 0 deletions
diff --git a/Guppies1.0.cbp b/Guppies1.0.cbp
new file mode 100644
index 0000000..45b4893
--- /dev/null
+++ b/Guppies1.0.cbp
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+ <FileVersion major="1" minor="6" />
+ <Project>
+ <Option title="Guppies1.0" />
+ <Option pch_mode="2" />
+ <Option compiler="gcc" />
+ <Option virtualFolders="Simulation\Params\;Simulation\;Simulation\Camera\;Simulation\ContactListener\;Simulation\Corpse\;Simulation\Entity\;Simulation\SimBase\;Simulation\Guppie\;Simulation\Pellet\;Simulation\SimFitness\;Simulation\Tank\;Simulation\TextDisplay\;Simulation\Zapper\;App\;" />
+ <Build>
+ <Target title="Release">
+ <Option output="bin/Release/Guppies" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj/Release/" />
+ <Option type="0" />
+ <Option compiler="gcc" />
+ <Option projectLinkerOptionsRelation="2" />
+ <Compiler>
+ <Add option="-O3" />
+ <Add option="-DSFML_STATIC" />
+ <Add directory="C:/wxWidgets-2.9.4/lib/gcc_lib/mswu" />
+ <Add directory="../../Libraries/SFML-2.0/include" />
+ <Add directory="../../Libraries/Box2D/include" />
+ <Add directory="../../Libraries/NeuralNetworks" />
+ </Compiler>
+ <ResourceCompiler>
+ <Add directory="C:/wxWidgets-2.9.4/lib/gcc_lib/mswu" />
+ </ResourceCompiler>
+ <Linker>
+ <Add option="-s" />
+ <Add library="libwxmsw29u.a" />
+ <Add library="libwxpng.a" />
+ <Add library="libwxjpeg.a" />
+ <Add library="libwxtiff.a" />
+ <Add library="libwxzlib.a" />
+ <Add library="..\..\Libraries\NeuralNetworks\libNeuralNetworks.a" />
+ <Add library="..\..\Libraries\SFML-2.0\lib\libsfml-graphics-s.a" />
+ <Add library="..\..\Libraries\SFML-2.0\lib\libsfml-window-s.a" />
+ <Add library="..\..\Libraries\SFML-2.0\lib\libsfml-system-s.a" />
+ <Add library="..\..\Libraries\Box2D\lib\win\libBox2D.a" />
+ <Add directory="C:/wxWidgets-2.9.4/lib/gcc_lib" />
+ <Add directory="../../Libraries/Box2D/lib/win" />
+ <Add directory="../../Libraries/NeuralNetworks" />
+ </Linker>
+ </Target>
+ </Build>
+ <Compiler>
+ <Add option="-pipe" />
+ <Add option="-mthreads" />
+ <Add option='[[if (PLATFORM == PLATFORM_MSW &amp;&amp; (GetCompilerFactory().GetCompilerVersionString(_T(&quot;gcc&quot;)) &gt;= _T(&quot;4.0.0&quot;))) print(_T(&quot;-Wno-attributes&quot;));]]' />
+ <Add option="-D__GNUWIN32__" />
+ <Add option="-D__WXMSW__" />
+ <Add option="-DwxUSE_UNICODE" />
+ <Add directory="C:/wxWidgets-2.9.4/include" />
+ <Add directory="C:/wxWidgets-2.9.4/contrib/include" />
+ </Compiler>
+ <ResourceCompiler>
+ <Add directory="C:/wxWidgets-2.9.4/include" />
+ </ResourceCompiler>
+ <Linker>
+ <Add option="-mthreads" />
+ <Add library="libkernel32.a" />
+ <Add library="libuser32.a" />
+ <Add library="libgdi32.a" />
+ <Add library="libwinspool.a" />
+ <Add library="libcomdlg32.a" />
+ <Add library="libadvapi32.a" />
+ <Add library="libshell32.a" />
+ <Add library="libole32.a" />
+ <Add library="liboleaut32.a" />
+ <Add library="libuuid.a" />
+ <Add library="libcomctl32.a" />
+ <Add library="libwsock32.a" />
+ <Add library="libodbc32.a" />
+ </Linker>
+ <Unit filename="Guppies1_0App.cpp">
+ <Option virtualFolder="App/" />
+ </Unit>
+ <Unit filename="Guppies1_0App.h">
+ <Option virtualFolder="App/" />
+ </Unit>
+ <Unit filename="Guppies1_0Main.cpp">
+ <Option virtualFolder="App/" />
+ </Unit>
+ <Unit filename="Guppies1_0Main.h">
+ <Option virtualFolder="App/" />
+ </Unit>
+ <Unit filename="Simulation/Camera.cpp">
+ <Option virtualFolder="Simulation/Camera/" />
+ </Unit>
+ <Unit filename="Simulation/Camera.hpp">
+ <Option virtualFolder="Simulation/Camera/" />
+ </Unit>
+ <Unit filename="Simulation/ContactListener.cpp">
+ <Option virtualFolder="Simulation/ContactListener/" />
+ </Unit>
+ <Unit filename="Simulation/ContactListener.hpp">
+ <Option virtualFolder="Simulation/ContactListener/" />
+ </Unit>
+ <Unit filename="Simulation/Corpse.cpp">
+ <Option virtualFolder="Simulation/Corpse/" />
+ </Unit>
+ <Unit filename="Simulation/Corpse.hpp">
+ <Option virtualFolder="Simulation/Corpse/" />
+ </Unit>
+ <Unit filename="Simulation/Entity.cpp">
+ <Option virtualFolder="Simulation/Entity/" />
+ </Unit>
+ <Unit filename="Simulation/Entity.hpp">
+ <Option virtualFolder="Simulation/Entity/" />
+ </Unit>
+ <Unit filename="Simulation/GraphicObjs.hpp">
+ <Option virtualFolder="Simulation/SimBase/" />
+ </Unit>
+ <Unit filename="Simulation/Guppie.cpp">
+ <Option virtualFolder="Simulation/Guppie/" />
+ </Unit>
+ <Unit filename="Simulation/Guppie.hpp">
+ <Option virtualFolder="Simulation/Guppie/" />
+ </Unit>
+ <Unit filename="Simulation/GuppiesInclude.hpp">
+ <Option virtualFolder="Simulation/" />
+ </Unit>
+ <Unit filename="Simulation/Params.hpp">
+ <Option virtualFolder="Simulation/Params/" />
+ </Unit>
+ <Unit filename="Simulation/Pellet.cpp">
+ <Option virtualFolder="Simulation/Pellet/" />
+ </Unit>
+ <Unit filename="Simulation/Pellet.hpp">
+ <Option virtualFolder="Simulation/Pellet/" />
+ </Unit>
+ <Unit filename="Simulation/SimBase.hpp">
+ <Option virtualFolder="Simulation/SimBase/" />
+ </Unit>
+ <Unit filename="Simulation/SimBase_CreateNew.cpp">
+ <Option virtualFolder="Simulation/SimBase/" />
+ </Unit>
+ <Unit filename="Simulation/SimBase_Draw.cpp">
+ <Option virtualFolder="Simulation/SimBase/" />
+ </Unit>
+ <Unit filename="Simulation/SimBase_Execute.cpp">
+ <Option virtualFolder="Simulation/SimBase/" />
+ </Unit>
+ <Unit filename="Simulation/SimBase_PrepareGraphics.cpp">
+ <Option virtualFolder="Simulation/SimBase/" />
+ </Unit>
+ <Unit filename="Simulation/SimBase_Update.cpp">
+ <Option virtualFolder="Simulation/SimBase/" />
+ </Unit>
+ <Unit filename="Simulation/SimFitness.hpp">
+ <Option virtualFolder="Simulation/SimFitness/" />
+ </Unit>
+ <Unit filename="Simulation/SimFitness_StartSpecs.cpp">
+ <Option virtualFolder="Simulation/SimFitness/" />
+ </Unit>
+ <Unit filename="Simulation/SimFitness_UpdateSpecs.cpp">
+ <Option virtualFolder="Simulation/SimFitness/" />
+ </Unit>
+ <Unit filename="Simulation/Tank.cpp">
+ <Option virtualFolder="Simulation/Tank/" />
+ </Unit>
+ <Unit filename="Simulation/Tank.hpp">
+ <Option virtualFolder="Simulation/Tank/" />
+ </Unit>
+ <Unit filename="Simulation/TextDisplay.cpp">
+ <Option virtualFolder="Simulation/TextDisplay/" />
+ </Unit>
+ <Unit filename="Simulation/TextDisplay.hpp">
+ <Option virtualFolder="Simulation/TextDisplay/" />
+ </Unit>
+ <Unit filename="Simulation/Zapper.cpp">
+ <Option virtualFolder="Simulation/Zapper/" />
+ </Unit>
+ <Unit filename="Simulation/Zapper.hpp">
+ <Option virtualFolder="Simulation/Zapper/" />
+ </Unit>
+ <Unit filename="resource.rc">
+ <Option compilerVar="WINDRES" />
+ <Option virtualFolder="App/" />
+ </Unit>
+ <Unit filename="wxsmith/Guppies1_0dialog.wxs">
+ <Option virtualFolder="App/" />
+ </Unit>
+ <Extensions>
+ <code_completion />
+ <envvars />
+ <debugger />
+ <lib_finder disable_auto="1" />
+ <wxsmith version="1">
+ <gui name="wxWidgets" src="Guppies1_0App.cpp" main="Guppies1_0Dialog" init_handlers="necessary" language="CPP" />
+ <resources>
+ <wxDialog wxs="wxsmith/Guppies1_0dialog.wxs" src="Guppies1_0Main.cpp" hdr="Guppies1_0Main.h" fwddecl="0" i18n="1" name="Guppies1_0Dialog" language="CPP" />
+ </resources>
+ </wxsmith>
+ </Extensions>
+ </Project>
+</CodeBlocks_project_file>
diff --git a/Guppies1.0.depend b/Guppies1.0.depend
new file mode 100644
index 0000000..944eb09
--- /dev/null
+++ b/Guppies1.0.depend
@@ -0,0 +1,3524 @@
+# depslib dependency file v1.0
+1352832889 source:c:\users\mostro\documents\programming\applications\guppies1.0\guppies1_0app.cpp
+ "Guppies1_0App.h"
+ "Guppies1_0Main.h"
+ <wx/image.h>
+
+1352832889 c:\users\mostro\documents\programming\applications\guppies1.0\guppies1_0app.h
+ <wx/app.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\app.h
+ "wx/event.h"
+ "wx/eventfilter.h"
+ "wx/build.h"
+ "wx/cmdargs.h"
+ "wx/init.h"
+ "wx/intl.h"
+ "wx/log.h"
+ "wx/unix/app.h"
+ "wx/msw/app.h"
+ "wx/motif/app.h"
+ "wx/dfb/app.h"
+ "wx/gtk/app.h"
+ "wx/gtk1/app.h"
+ "wx/x11/app.h"
+ "wx/osx/app.h"
+ "wx/cocoa/app.h"
+ "wx/os2/app.h"
+ "wx/univ/theme.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\event.h
+ "wx/defs.h"
+ "wx/cpp.h"
+ "wx/object.h"
+ "wx/clntdata.h"
+ "wx/gdicmn.h"
+ "wx/cursor.h"
+ "wx/mousestate.h"
+ "wx/dynarray.h"
+ "wx/thread.h"
+ "wx/tracker.h"
+ "wx/typeinfo.h"
+ "wx/any.h"
+ "wx/meta/convertible.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\defs.h
+ "wx/platform.h"
+ "wx/version.h"
+ "wx/dlimpexp.h"
+ <stddef.h>
+ "wx/debug.h"
+ <sys/types.h>
+ <sys/types.h>
+ "wx/windowid.h"
+ <unistd.h>
+ "wx/msw/winundef.h"
+ "wx/features.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\platform.h
+ <unistd.h>
+ <TargetConditionals.h>
+ <AvailabilityMacros.h>
+ "wx/osx/config_xcode.h"
+ "wx/android/config_android.h"
+ "wx/setup.h"
+ "wx/msw/wince/libraries.h"
+ "wx/msw/libraries.h"
+ "wx/msw/gccpriv.h"
+ <TargetConditionals.h>
+ <AvailabilityMacros.h>
+ "wx/chkconf.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\config_xcode.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\android\config_android.h
+
+1341838982 c:\wxwidgets-2.9.4\lib\gcc_lib\mswu\wx\setup.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wince\libraries.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\libraries.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\gccpriv.h
+ <_mingw.h>
+ <w32api.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\chkconf.h
+ "wx/msw/wince/chkconf.h"
+ "wx/msw/chkconf.h"
+ "wx/gtk/chkconf.h"
+ "wx/cocoa/chkconf.h"
+ "wx/osx/chkconf.h"
+ "wx/os2/chkconf.h"
+ "wx/dfb/chkconf.h"
+ "wx/motif/chkconf.h"
+ "wx/x11/chkconf.h"
+ "wx/android/chkconf.h"
+ "wx/unix/chkconf.h"
+ "wx/univ/chkconf.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wince\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\chkconf.h
+ "wx/osx/iphone/chkconf.h"
+ "wx/osx/carbon/chkconf.h"
+ "wx/osx/cocoa/chkconf.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\iphone\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\carbon\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\android\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\unix\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\chkconf.h
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\version.h
+ "wx/cpp.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cpp.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dlimpexp.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\debug.h
+ <assert.h>
+ <limits.h>
+ "wx/chartype.h"
+ "wx/cpp.h"
+ "wx/dlimpexp.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\chartype.h
+ "wx/platform.h"
+ <sys/types.h>
+ <wchar.h>
+ <wcstr.h>
+ <stdlib.h>
+ <widec.h>
+ <ctype.h>
+ <stddef.h>
+ <string.h>
+ <ctype.h>
+ <tchar.h>
+ <ctype.h>
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\windowid.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\winundef.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\features.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\object.h
+ "wx/memory.h"
+ "wx/xti.h"
+ "wx/rtti.h"
+ "wx/xti2.h"
+ "wx/msw/msvcrt.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\memory.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/msgout.h"
+ <stddef.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\string.h
+ "wx/defs.h"
+ <ctype.h>
+ <stdio.h>
+ <string.h>
+ <stdarg.h>
+ <limits.h>
+ <string.h>
+ <stdio.h>
+ <stdarg.h>
+ <limits.h>
+ <stdlib.h>
+ <strings.h>
+ "wx/wxcrtbase.h"
+ "wx/strvararg.h"
+ "wx/buffer.h"
+ "wx/strconv.h"
+ "wx/stringimpl.h"
+ "wx/stringops.h"
+ "wx/unichar.h"
+ "wx/tls.h"
+ "wx/iosfwrap.h"
+ "wx/crt.h"
+
+1355767012 c:\wxwidgets-2.9.4\include\wx\wxcrtbase.h
+ "wx/chartype.h"
+ <stdio.h>
+ <string.h>
+ <ctype.h>
+ <wctype.h>
+ <time.h>
+ <io.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\strvararg.h
+ "wx/platform.h"
+ "wx/cpp.h"
+ "wx/chartype.h"
+ "wx/strconv.h"
+ "wx/buffer.h"
+ "wx/unichar.h"
+ <type_traits>
+ <type_traits>
+ <tr1/type_traits>
+ "wx/stringimpl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\strconv.h
+ "wx/defs.h"
+ "wx/chartype.h"
+ "wx/buffer.h"
+ "typeinfo.h"
+ <stdlib.h>
+ "wx/fontenc.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\buffer.h
+ "wx/chartype.h"
+ "wx/wxcrtbase.h"
+ <stdlib.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\typeinfo.h
+ "wx/defs.h"
+ <typeinfo>
+ <string.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\fontenc.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\unichar.h
+ "wx/defs.h"
+ "wx/chartype.h"
+ "wx/stringimpl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\stringimpl.h
+ "wx/defs.h"
+ "wx/chartype.h"
+ "wx/wxcrtbase.h"
+ <stdlib.h>
+ "wx/beforestd.h"
+ <string>
+ "wx/afterstd.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\beforestd.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\afterstd.h
+ "wx/msw/winundef.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\stringops.h
+ "wx/chartype.h"
+ "wx/stringimpl.h"
+ "wx/unichar.h"
+ "wx/buffer.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\tls.h
+ "wx/defs.h"
+ "wx/msw/tls.h"
+ "wx/os2/tls.h"
+ "wx/unix/tls.h"
+ <stdlib.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\tls.h
+ "wx/msw/wrapwin.h"
+ "wx/thread.h"
+ "wx/vector.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wrapwin.h
+ "wx/platform.h"
+ <winsock2.h>
+ <windows.h>
+ "wx/msw/winundef.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\thread.h
+ "wx/defs.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\vector.h
+ "wx/defs.h"
+ <vector>
+ <algorithm>
+ "wx/utils.h"
+ "wx/scopeguard.h"
+ "wx/meta/movable.h"
+ "wx/meta/if.h"
+ "wx/beforestd.h"
+ <new>
+ "wx/afterstd.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\utils.h
+ "wx/object.h"
+ "wx/list.h"
+ "wx/filefn.h"
+ "wx/hashmap.h"
+ "wx/versioninfo.h"
+ "wx/meta/implicitconversion.h"
+ "wx/gdicmn.h"
+ "wx/mousestate.h"
+ "wx/longlong.h"
+ "wx/platinfo.h"
+ <direct.h>
+ <dirent.h>
+ <unistd.h>
+ <stdio.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\list.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/beforestd.h"
+ <algorithm>
+ <iterator>
+ <list>
+ "wx/afterstd.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\filefn.h
+ "wx/list.h"
+ "wx/arrstr.h"
+ "wx/msw/wince/time.h"
+ "wx/msw/private.h"
+ <time.h>
+ <sys/types.h>
+ <sys/stat.h>
+ <process.h>
+ "wx/os2/private.h"
+ <direct.h>
+ <io.h>
+ <unistd.h>
+ <unistd.h>
+ <dirent.h>
+ <direct.h>
+ <dos.h>
+ <io.h>
+ <direct.h>
+ <dos.h>
+ <io.h>
+ <io.h>
+ <unistd.h>
+ <dir.h>
+ <fcntl.h>
+ <sys/types.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\arrstr.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/dynarray.h"
+ "wx/beforestd.h"
+ <iterator>
+ "wx/afterstd.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dynarray.h
+ "wx/defs.h"
+ "wx/beforestd.h"
+ <vector>
+ <algorithm>
+ "wx/afterstd.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wince\time.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\private.h
+ "wx/msw/wrapwin.h"
+ "wx/msw/microwin.h"
+ "wx/log.h"
+ "wx/window.h"
+ "wx/gdicmn.h"
+ "wx/colour.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\microwin.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\log.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/strvararg.h"
+ "wx/arrstr.h"
+ <time.h>
+ "wx/dynarray.h"
+ "wx/hashmap.h"
+ "wx/thread.h"
+ "wx/iosfwrap.h"
+ "wx/generic/logg.h"
+ "wx/cocoa/log.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\hashmap.h
+ "wx/string.h"
+ "wx/wxcrt.h"
+ <unordered_map>
+ <tr1/unordered_map>
+ <ext/hash_map>
+ <hash_map>
+ <stddef.h>
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\wxcrt.h
+ "wx/wxcrtbase.h"
+ "wx/string.h"
+ <string.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\iosfwrap.h
+ <iostream.h>
+ <iosfwd>
+ "wx/msw/winundef.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\logg.h
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\window.h
+ "wx/event.h"
+ "wx/list.h"
+ "wx/cursor.h"
+ "wx/font.h"
+ "wx/colour.h"
+ "wx/region.h"
+ "wx/utils.h"
+ "wx/intl.h"
+ "wx/validate.h"
+ "wx/palette.h"
+ "wx/accel.h"
+ "wx/access.h"
+ "wx/msw/window.h"
+ "wx/motif/window.h"
+ "wx/gtk/window.h"
+ "wx/gtk1/window.h"
+ "wx/x11/window.h"
+ "wx/dfb/window.h"
+ "wx/osx/window.h"
+ "wx/cocoa/window.h"
+ "wx/os2/window.h"
+ "wx/univ/window.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cursor.h
+ "wx/defs.h"
+ "wx/msw/cursor.h"
+ "wx/motif/cursor.h"
+ "wx/gtk/cursor.h"
+ "wx/gtk1/cursor.h"
+ "wx/x11/cursor.h"
+ "wx/dfb/cursor.h"
+ "wx/osx/cursor.h"
+ "wx/cocoa/cursor.h"
+ "wx/os2/cursor.h"
+ "wx/utils.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\cursor.h
+ "wx/msw/gdiimage.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\gdiimage.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+ "wx/list.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gdiobj.h
+ "wx/object.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gdicmn.h
+ "wx/defs.h"
+ "wx/list.h"
+ "wx/string.h"
+ "wx/fontenc.h"
+ "wx/hashmap.h"
+ "wx/math.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\math.h
+ "wx/defs.h"
+ <math.h>
+ <float.h>
+ <ieeefp.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\cursor.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\bitmap.h
+ "wx/string.h"
+ "wx/gdicmn.h"
+ "wx/colour.h"
+ "wx/image.h"
+ "wx/variant.h"
+ "wx/msw/bitmap.h"
+ "wx/x11/bitmap.h"
+ "wx/gtk/bitmap.h"
+ "wx/gtk1/bitmap.h"
+ "wx/x11/bitmap.h"
+ "wx/dfb/bitmap.h"
+ "wx/osx/bitmap.h"
+ "wx/cocoa/bitmap.h"
+ "wx/os2/bitmap.h"
+ "wx/generic/mask.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\colour.h
+ "wx/defs.h"
+ "wx/gdiobj.h"
+ "wx/variant.h"
+ "wx/msw/colour.h"
+ "wx/motif/colour.h"
+ "wx/gtk/colour.h"
+ "wx/gtk1/colour.h"
+ "wx/generic/colour.h"
+ "wx/x11/colour.h"
+ "wx/osx/colour.h"
+ "wx/cocoa/colour.h"
+ "wx/os2/colour.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\variant.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/arrstr.h"
+ "wx/list.h"
+ "wx/cpp.h"
+ "wx/longlong.h"
+ "wx/datetime.h"
+ "wx/iosfwrap.h"
+ "wx/any.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\longlong.h
+ "wx/defs.h"
+ "wx/string.h"
+ <limits.h>
+ "wx/iosfwrap.h"
+ <limits>
+ "wx/strvararg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\datetime.h
+ "wx/defs.h"
+ "wx/msw/wince/time.h"
+ <time.h>
+ <limits.h>
+ "wx/longlong.h"
+ "wx/anystr.h"
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\anystr.h
+ "wx/string.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\any.h
+ "wx/defs.h"
+ <new>
+ "wx/string.h"
+ "wx/meta/if.h"
+ "wx/typeinfo.h"
+ "wx/list.h"
+ "wx/datetime.h"
+ "wx/variant.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\meta\if.h
+ "wx/defs.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\colour.h
+ "wx/object.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\colour.h
+ "wx/object.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\colour.h
+ "wx/osx/core/colour.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\core\colour.h
+ "wx/object.h"
+ "wx/string.h"
+ "wx/osx/core/cfref.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\core\cfref.h
+ <unistd.h>
+ <AvailabilityMacros.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\image.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/gdicmn.h"
+ "wx/hashmap.h"
+ "wx/arrstr.h"
+ "wx/stream.h"
+ "wx/variant.h"
+ "wx/imagbmp.h"
+ "wx/imagpng.h"
+ "wx/imaggif.h"
+ "wx/imagpcx.h"
+ "wx/imagjpeg.h"
+ "wx/imagtga.h"
+ "wx/imagtiff.h"
+ "wx/imagpnm.h"
+ "wx/imagxpm.h"
+ "wx/imagiff.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\stream.h
+ "wx/defs.h"
+ <stdio.h>
+ "wx/object.h"
+ "wx/string.h"
+ "wx/filefn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imagbmp.h
+ "wx/image.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imagpng.h
+ "wx/defs.h"
+ "wx/image.h"
+ "wx/versioninfo.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\versioninfo.h
+ "wx/string.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imaggif.h
+ "wx/image.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imagpcx.h
+ "wx/image.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imagjpeg.h
+ "wx/defs.h"
+ "wx/image.h"
+ "wx/versioninfo.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imagtga.h
+ "wx/image.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imagtiff.h
+ "wx/defs.h"
+ "wx/image.h"
+ "wx/versioninfo.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imagpnm.h
+ "wx/image.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imagxpm.h
+ "wx/image.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imagiff.h
+ "wx/image.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\bitmap.h
+ "wx/msw/gdiimage.h"
+ "wx/palette.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\palette.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/gdiobj.h"
+ "wx/msw/palette.h"
+ "wx/x11/palette.h"
+ "wx/generic/paletteg.h"
+ "wx/osx/palette.h"
+ "wx/os2/palette.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\palette.h
+ "wx/gdiobj.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\paletteg.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\palette.h
+ "wx/gdiobj.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\bitmap.h
+ "wx/palette.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\mask.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\font.h
+ "wx/defs.h"
+ "wx/fontenc.h"
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+ "wx/msw/font.h"
+ "wx/motif/font.h"
+ "wx/gtk/font.h"
+ "wx/gtk1/font.h"
+ "wx/x11/font.h"
+ "wx/dfb/font.h"
+ "wx/osx/font.h"
+ "wx/cocoa/font.h"
+ "wx/os2/font.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\font.h
+ "wx/gdicmn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\font.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\region.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+ "wx/msw/region.h"
+ "wx/gtk/region.h"
+ "wx/gtk1/region.h"
+ "wx/x11/region.h"
+ "wx/dfb/region.h"
+ "wx/osx/region.h"
+ "wx/cocoa/region.h"
+ "wx/os2/region.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\region.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\region.h
+ "wx/osx/carbon/region.h"
+ "wx/generic/region.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\carbon\region.h
+ "wx/list.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\region.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\intl.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/translation.h"
+ "wx/fontenc.h"
+ "wx/language.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\translation.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/buffer.h"
+ "wx/language.h"
+ "wx/hashmap.h"
+ "wx/strconv.h"
+ "wx/scopedptr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\language.h
+ "wx/defs.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\scopedptr.h
+ "wx/defs.h"
+ "wx/checkeddelete.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\checkeddelete.h
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\validate.h
+ "wx/defs.h"
+ "wx/event.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\accel.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/generic/accel.h"
+ "wx/msw/accel.h"
+ "wx/motif/accel.h"
+ "wx/gtk/accel.h"
+ "wx/gtk1/accel.h"
+ "wx/osx/accel.h"
+ "wx/generic/accel.h"
+ "wx/os2/accel.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\accel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\accel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\accel.h
+ "wx/string.h"
+ "wx/event.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\access.h
+ "wx/defs.h"
+ "wx/variant.h"
+ "wx/msw/ole/access.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\ole\access.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\window.h
+ "wx/settings.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\settings.h
+ "wx/colour.h"
+ "wx/font.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\window.h
+ "wx/brush.h"
+ "wx/dc.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\brush.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+ "wx/msw/brush.h"
+ "wx/x11/brush.h"
+ "wx/gtk/brush.h"
+ "wx/gtk1/brush.h"
+ "wx/dfb/brush.h"
+ "wx/osx/brush.h"
+ "wx/cocoa/brush.h"
+ "wx/os2/brush.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\brush.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\brush.h
+ "wx/gdicmn.h"
+ "wx/gdiobj.h"
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dc.h
+ "wx/object.h"
+ "wx/intl.h"
+ "wx/cursor.h"
+ "wx/font.h"
+ "wx/colour.h"
+ "wx/bitmap.h"
+ "wx/brush.h"
+ "wx/pen.h"
+ "wx/palette.h"
+ "wx/dynarray.h"
+ "wx/math.h"
+ "wx/image.h"
+ "wx/region.h"
+ "wx/affinematrix2d.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\pen.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+ "wx/msw/pen.h"
+ "wx/x11/pen.h"
+ "wx/gtk/pen.h"
+ "wx/gtk1/pen.h"
+ "wx/dfb/pen.h"
+ "wx/osx/pen.h"
+ "wx/cocoa/pen.h"
+ "wx/os2/pen.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\pen.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\pen.h
+ "wx/gdiobj.h"
+ "wx/colour.h"
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\affinematrix2d.h
+ "wx/defs.h"
+ "wx/affinematrix2dbase.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\affinematrix2dbase.h
+ "wx/defs.h"
+ "wx/geometry.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\geometry.h
+ "wx/defs.h"
+ "wx/utils.h"
+ "wx/gdicmn.h"
+ "wx/math.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\window.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\meta\implicitconversion.h
+ "wx/defs.h"
+ "wx/meta/if.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\mousestate.h
+ "wx/gdicmn.h"
+ "wx/kbdstate.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\kbdstate.h
+ "wx/defs.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\platinfo.h
+ "wx/string.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\scopeguard.h
+ "wx/defs.h"
+ "wx/except.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\except.h
+ "wx/defs.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\meta\movable.h
+ "wx/meta/pod.h"
+ "wx/string.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\meta\pod.h
+ "wx/defs.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\unix\tls.h
+ <pthread.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\crt.h
+ "wx/defs.h"
+ "wx/chartype.h"
+ "wx/wxcrt.h"
+ "wx/wxcrtvararg.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\wxcrtvararg.h
+ "wx/wxcrt.h"
+ "wx/strvararg.h"
+ "wx/string.h"
+ <stdarg.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msgout.h
+ "wx/defs.h"
+ "wx/chartype.h"
+ "wx/strvararg.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\xti.h
+ "wx/defs.h"
+ "wx/xtitypes.h"
+ "wx/xtihandler.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\xtitypes.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/hashmap.h"
+ "wx/arrstr.h"
+ "wx/flags.h"
+ "wx/intl.h"
+ "wx/log.h"
+ <typeinfo>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\flags.h
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\xtihandler.h
+ "wx/defs.h"
+ "wx/xti.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\rtti.h
+ "wx/memory.h"
+ "wx/flags.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\xti2.h
+ "wx/xtiprop.h"
+ "wx/xtictor.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\xtiprop.h
+ "wx/defs.h"
+ "wx/xti.h"
+ "wx/any.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\xtictor.h
+ "wx/defs.h"
+ "wx/xti.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\msvcrt.h
+ <stdlib.h>
+ <crtdbg.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\clntdata.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/hashmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\tracker.h
+ "wx/defs.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\meta\convertible.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\eventfilter.h
+ "wx/defs.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\build.h
+ "wx/version.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cmdargs.h
+ "wx/arrstr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\init.h
+ "wx/defs.h"
+ "wx/chartype.h"
+ "wx/msw/init.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\init.h
+ "wx/msw/wrapwin.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\unix\app.h
+ <signal.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\app.h
+ "wx/event.h"
+ "wx/icon.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\icon.h
+ "wx/iconloc.h"
+ "wx/msw/icon.h"
+ "wx/motif/icon.h"
+ "wx/generic/icon.h"
+ "wx/generic/icon.h"
+ "wx/generic/icon.h"
+ "wx/generic/icon.h"
+ "wx/osx/icon.h"
+ "wx/generic/icon.h"
+ "wx/cocoa/icon.h"
+ "wx/os2/icon.h"
+ "wx/variant.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\iconloc.h
+ "wx/string.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\icon.h
+ "wx/msw/gdiimage.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\icon.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\icon.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\app.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/gdicmn.h"
+ "wx/event.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\theme.h
+ "wx/string.h"
+
+1352834483 c:\users\mostro\documents\programming\applications\guppies1.0\guppies1_0main.h
+ <wx/notebook.h>
+ <wx/sizer.h>
+ <wx/stattext.h>
+ <wx/filepicker.h>
+ <wx/statline.h>
+ <wx/panel.h>
+ <wx/button.h>
+ <wx/dialog.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\notebook.h
+ "wx/defs.h"
+ "wx/bookctrl.h"
+ "wx/univ/notebook.h"
+ "wx/msw/notebook.h"
+ "wx/generic/notebook.h"
+ "wx/gtk/notebook.h"
+ "wx/gtk1/notebook.h"
+ "wx/osx/notebook.h"
+ "wx/cocoa/notebook.h"
+ "wx/os2/notebook.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\bookctrl.h
+ "wx/defs.h"
+ "wx/control.h"
+ "wx/dynarray.h"
+ "wx/withimages.h"
+ "wx/notebook.h"
+ "wx/choicebk.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\control.h
+ "wx/defs.h"
+ "wx/window.h"
+ "wx/univ/control.h"
+ "wx/msw/control.h"
+ "wx/motif/control.h"
+ "wx/gtk/control.h"
+ "wx/gtk1/control.h"
+ "wx/osx/control.h"
+ "wx/cocoa/control.h"
+ "wx/os2/control.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\control.h
+ "wx/univ/inphand.h"
+ "wx/univ/inpcons.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\inphand.h
+ "wx/univ/inpcons.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\inpcons.h
+ "wx/object.h"
+ "wx/event.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\control.h
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\control.h
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\withimages.h
+ "wx/defs.h"
+ "wx/icon.h"
+ "wx/imaglist.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\imaglist.h
+ "wx/defs.h"
+ "wx/generic/imaglist.h"
+ "wx/msw/imaglist.h"
+ "wx/osx/imaglist.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\imaglist.h
+ "wx/list.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\imaglist.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\imaglist.h
+ "wx/defs.h"
+ "wx/list.h"
+ "wx/icon.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\choicebk.h
+ "wx/defs.h"
+ "wx/bookctrl.h"
+ "wx/choice.h"
+ "wx/containr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\choice.h
+ "wx/defs.h"
+ "wx/ctrlsub.h"
+ "wx/univ/choice.h"
+ "wx/msw/wince/choicece.h"
+ "wx/msw/choice.h"
+ "wx/motif/choice.h"
+ "wx/gtk/choice.h"
+ "wx/gtk1/choice.h"
+ "wx/osx/choice.h"
+ "wx/cocoa/choice.h"
+ "wx/os2/choice.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\ctrlsub.h
+ "wx/defs.h"
+ "wx/arrstr.h"
+ "wx/control.h"
+ "wx/msw/ctrlsub.h"
+ "wx/motif/ctrlsub.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\ctrlsub.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\choice.h
+ "wx/combobox.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\combobox.h
+ "wx/defs.h"
+ "wx/textctrl.h"
+ "wx/ctrlsub.h"
+ "wx/textentry.h"
+ "wx/univ/combobox.h"
+ "wx/msw/combobox.h"
+ "wx/motif/combobox.h"
+ "wx/gtk/combobox.h"
+ "wx/gtk1/combobox.h"
+ "wx/osx/combobox.h"
+ "wx/cocoa/combobox.h"
+ "wx/os2/combobox.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\textctrl.h
+ "wx/defs.h"
+ "wx/control.h"
+ "wx/textentry.h"
+ "wx/dynarray.h"
+ "wx/gdicmn.h"
+ "wx/ioswrap.h"
+ "wx/x11/textctrl.h"
+ "wx/univ/textctrl.h"
+ "wx/msw/wince/textctrlce.h"
+ "wx/msw/textctrl.h"
+ "wx/motif/textctrl.h"
+ "wx/gtk/textctrl.h"
+ "wx/gtk1/textctrl.h"
+ "wx/osx/textctrl.h"
+ "wx/cocoa/textctrl.h"
+ "wx/os2/textctrl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\textentry.h
+ "wx/filefn.h"
+ "wx/gdicmn.h"
+ "wx/gtk/textentry.h"
+ "wx/osx/textentry.h"
+ "wx/msw/textentry.h"
+ "wx/motif/textentry.h"
+ "wx/os2/textentry.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\textentry.h
+ "wx/control.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\textentry.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\ioswrap.h
+ "wx/beforestd.h"
+ <iostream.h>
+ <iostream>
+ "wx/afterstd.h"
+ "wx/msw/winundef.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\textctrl.h
+ "wx/scrolwin.h"
+ "wx/univ/inphand.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\scrolwin.h
+ "wx/panel.h"
+ "wx/gtk/scrolwin.h"
+ "wx/gtk1/scrolwin.h"
+ "wx/generic/scrolwin.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\panel.h
+ "wx/window.h"
+ "wx/containr.h"
+ "wx/univ/panel.h"
+ "wx/msw/panel.h"
+ "wx/generic/panelg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\containr.h
+ "wx/defs.h"
+ "wx/event.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\panel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\panel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\panelg.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\scrolwin.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wince\textctrlce.h
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\textctrl.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\textctrl.h
+ "wx/control.h"
+ "wx/textctrl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\combobox.h
+ "wx/combo.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\combo.h
+ "wx/defs.h"
+ "wx/control.h"
+ "wx/renderer.h"
+ "wx/bitmap.h"
+ "wx/textentry.h"
+ "wx/msw/combo.h"
+ "wx/generic/combo.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\renderer.h
+ "wx/gdicmn.h"
+ "wx/colour.h"
+ "wx/font.h"
+ "wx/bitmap.h"
+ "wx/string.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\combo.h
+ "wx/timer.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\timer.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/longlong.h"
+ "wx/event.h"
+ "wx/stopwatch.h"
+ "wx/utils.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\stopwatch.h
+ "wx/defs.h"
+ "wx/longlong.h"
+ "wx/time.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\time.h
+ "wx/longlong.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\combo.h
+ "wx/dcbuffer.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dcbuffer.h
+ "wx/dcmemory.h"
+ "wx/dcclient.h"
+ "wx/window.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dcmemory.h
+ "wx/dc.h"
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dcclient.h
+ "wx/dc.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\combobox.h
+ "wx/choice.h"
+ "wx/textentry.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\combobox.h
+ "wx/containr.h"
+ "wx/choice.h"
+ "wx/textctrl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wince\choicece.h
+ "wx/defs.h"
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\choice.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\choice.h
+ "wx/control.h"
+ "wx/dynarray.h"
+ "wx/arrstr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\notebook.h
+ "wx/arrstr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\notebook.h
+ "wx/control.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\notebook.h
+ "wx/event.h"
+ "wx/control.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\notebook.h
+ "wx/event.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\sizer.h
+ "wx/defs.h"
+ "wx/window.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\stattext.h
+ "wx/defs.h"
+ "wx/control.h"
+ "wx/univ/stattext.h"
+ "wx/msw/stattext.h"
+ "wx/motif/stattext.h"
+ "wx/gtk/stattext.h"
+ "wx/gtk1/stattext.h"
+ "wx/osx/stattext.h"
+ "wx/cocoa/stattext.h"
+ "wx/os2/stattext.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\stattext.h
+ "wx/generic/stattextg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\stattextg.h
+ "wx/stattext.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\stattext.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\stattext.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\filepicker.h
+ "wx/defs.h"
+ "wx/pickerbase.h"
+ "wx/filename.h"
+ "wx/gtk/filepicker.h"
+ "wx/generic/filepickerg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\pickerbase.h
+ "wx/control.h"
+ "wx/sizer.h"
+ "wx/containr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\filename.h
+ "wx/arrstr.h"
+ "wx/filefn.h"
+ "wx/datetime.h"
+ "wx/intl.h"
+ "wx/longlong.h"
+ "wx/file.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\file.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/filefn.h"
+ "wx/strconv.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\filepickerg.h
+ "wx/button.h"
+ "wx/filedlg.h"
+ "wx/dirdlg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\button.h
+ "wx/defs.h"
+ "wx/anybutton.h"
+ "wx/univ/button.h"
+ "wx/msw/button.h"
+ "wx/motif/button.h"
+ "wx/gtk/button.h"
+ "wx/gtk1/button.h"
+ "wx/osx/button.h"
+ "wx/cocoa/button.h"
+ "wx/os2/button.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\anybutton.h
+ "wx/defs.h"
+ "wx/bitmap.h"
+ "wx/control.h"
+ "wx/univ/anybutton.h"
+ "wx/msw/anybutton.h"
+ "wx/gtk/anybutton.h"
+ "wx/osx/anybutton.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\anybutton.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\anybutton.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\anybutton.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\button.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\button.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\button.h
+ "wx/control.h"
+ "wx/gdicmn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\filedlg.h
+ "wx/defs.h"
+ "wx/dialog.h"
+ "wx/arrstr.h"
+ "wx/generic/filedlgg.h"
+ "wx/msw/filedlg.h"
+ "wx/motif/filedlg.h"
+ "wx/gtk/filedlg.h"
+ "wx/gtk1/filedlg.h"
+ "wx/osx/filedlg.h"
+ "wx/cocoa/filedlg.h"
+ "wx/os2/filedlg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dialog.h
+ "wx/defs.h"
+ "wx/toplevel.h"
+ "wx/univ/dialog.h"
+ "wx/msw/dialog.h"
+ "wx/motif/dialog.h"
+ "wx/gtk/dialog.h"
+ "wx/gtk1/dialog.h"
+ "wx/osx/dialog.h"
+ "wx/cocoa/dialog.h"
+ "wx/os2/dialog.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\toplevel.h
+ "wx/nonownedwnd.h"
+ "wx/iconbndl.h"
+ "wx/containr.h"
+ "wx/weakref.h"
+ "wx/msw/toplevel.h"
+ "wx/gtk/toplevel.h"
+ "wx/gtk1/toplevel.h"
+ "wx/x11/toplevel.h"
+ "wx/dfb/toplevel.h"
+ "wx/osx/toplevel.h"
+ "wx/cocoa/toplevel.h"
+ "wx/os2/toplevel.h"
+ "wx/motif/toplevel.h"
+ "wx/univ/toplevel.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\nonownedwnd.h
+ "wx/window.h"
+ "wx/dfb/nonownedwnd.h"
+ "wx/gtk/nonownedwnd.h"
+ "wx/osx/nonownedwnd.h"
+ "wx/msw/nonownedwnd.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\nonownedwnd.h
+ "wx/window.h"
+ "wx/graphics.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\graphics.h
+ "wx/defs.h"
+ "wx/geometry.h"
+ "wx/dynarray.h"
+ "wx/dc.h"
+ "wx/image.h"
+ "wx/vector.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\nonownedwnd.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\iconbndl.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+ "wx/icon.h"
+ "wx/dynarray.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\weakref.h
+ "wx/tracker.h"
+ "wx/meta/convertible.h"
+ "wx/meta/int2type.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\meta\int2type.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\toplevel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\toplevel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\toplevel.h
+ "wx/univ/inpcons.h"
+ "wx/univ/inphand.h"
+ "wx/icon.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\dialog.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\dialog.h
+ "wx/panel.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\dialog.h
+ "wx/panel.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\filedlgg.h
+ "wx/listctrl.h"
+ "wx/datetime.h"
+ "wx/filefn.h"
+ "wx/artprov.h"
+ "wx/filedlg.h"
+ "wx/generic/filectrlg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\listctrl.h
+ "wx/defs.h"
+ "wx/listbase.h"
+ "wx/msw/listctrl.h"
+ "wx/osx/listctrl.h"
+ "wx/generic/listctrl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\listbase.h
+ "wx/colour.h"
+ "wx/font.h"
+ "wx/gdicmn.h"
+ "wx/event.h"
+ "wx/control.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\listctrl.h
+ "wx/textctrl.h"
+ "wx/dynarray.h"
+ "wx/vector.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\listctrl.h
+ "wx/defs.h"
+ "wx/generic/listctrl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\listctrl.h
+ "wx/containr.h"
+ "wx/scrolwin.h"
+ "wx/textctrl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\artprov.h
+ "wx/string.h"
+ "wx/bitmap.h"
+ "wx/icon.h"
+ "wx/iconbndl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\filectrlg.h
+ "wx/containr.h"
+ "wx/listctrl.h"
+ "wx/filectrl.h"
+ "wx/filename.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\filectrl.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/event.h"
+ "wx/gtk/filectrl.h"
+ "wx/generic/filectrlg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\filedlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\filedlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dirdlg.h
+ "wx/dialog.h"
+ "wx/generic/dirdlgg.h"
+ "wx/generic/dirdlgg.h"
+ "wx/generic/dirdlgg.h"
+ "wx/msw/dirdlg.h"
+ "wx/gtk/dirdlg.h"
+ "wx/generic/dirdlgg.h"
+ "wx/osx/dirdlg.h"
+ "wx/cocoa/dirdlg.h"
+ "wx/generic/dirdlgg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\dirdlgg.h
+ "wx/dialog.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\dirdlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\dirdlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\statline.h
+ "wx/defs.h"
+ "wx/control.h"
+ "wx/univ/statline.h"
+ "wx/msw/statline.h"
+ "wx/gtk/statline.h"
+ "wx/gtk1/statline.h"
+ "wx/os2/statline.h"
+ "wx/osx/statline.h"
+ "wx/cocoa/statline.h"
+ "wx/generic/statline.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\statline.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\statline.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\statline.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\statline.h
+
+1352834593 source:c:\users\mostro\documents\programming\applications\guppies1.0\guppies1_0main.cpp
+ "Guppies1_0Main.h"
+ <wx/msgdlg.h>
+ <wx/settings.h>
+ <wx/intl.h>
+ <wx/string.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msgdlg.h
+ "wx/defs.h"
+ "wx/dialog.h"
+ "wx/stockitem.h"
+ "wx/generic/msgdlgg.h"
+ "wx/cocoa/msgdlg.h"
+ "wx/msw/msgdlg.h"
+ "wx/motif/msgdlg.h"
+ "wx/gtk/msgdlg.h"
+ "wx/osx/msgdlg.h"
+ "wx/os2/msgdlg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\stockitem.h
+ "wx/defs.h"
+ "wx/chartype.h"
+ "wx/string.h"
+ "wx/accel.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\msgdlgg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\msgdlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\msgdlg.h
+
+1333917710 source:c:\users\mostro\documents\programming\applications\guppies1.0\resource.rc
+ "wx/msw/wx.rc"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wx.rc
+ <windows.h>
+ "wx/msw/wince/wince.rc"
+ "wx/msw/rcdefs.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wince\wince.rc
+ <commctrl.h>
+ "wx/msw/wince/resources.h"
+ "wx/msw/wince/smartphone.rc"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wince\resources.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wince\smartphone.rc
+ <aygshell.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\rcdefs.h
+
+1354554733 source:c:\users\paul\documents\programming\applications\guppies1.0\resource.rc
+ "wx/msw/wx.rc"
+
+1352865290 source:c:\users\paul\documents\programming\applications\guppies1.0\guppies1_0app.cpp
+ "Guppies1_0App.h"
+ "Guppies1_0Main.h"
+ <wx/image.h>
+
+1352865290 c:\users\paul\documents\programming\applications\guppies1.0\guppies1_0app.h
+ <wx/app.h>
+
+1355957691 c:\users\paul\documents\programming\applications\guppies1.0\guppies1_0main.h
+ <wx/notebook.h>
+ <wx/sizer.h>
+ <wx/stattext.h>
+ <wx/textctrl.h>
+ <wx/checkbox.h>
+ <wx/filepicker.h>
+ <wx/statline.h>
+ <wx/panel.h>
+ <wx/hyperlink.h>
+ <wx/choice.h>
+ <wx/statbmp.h>
+ <wx/button.h>
+ <wx/dialog.h>
+ <wx/clrpicker.h>
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\cocoa\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\chkconf.h
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\chkconf.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\log.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\cursor.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\cursor.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\cursor.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+ "wx/image.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\cursor.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+ "wx/colour.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\colour.h
+ "wx/object.h"
+ "wx/string.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\colour.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\colour.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/gdiobj.h"
+ "wx/palette.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\palette.h
+ "wx/list.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\palette.h
+ "wx/gdiobj.h"
+ "wx/os2/private.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\private.h
+ <os2.h>
+ <os2def.h>
+ <X11/Xmd.h>
+ <Xm/VendorSP.h>
+ <types.h>
+ <tcpustd.h>
+ <sys/time.h>
+ "wx/dlimpexp.h"
+ "wx/fontenc.h"
+ "wx/thread.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\colour.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/gdiobj.h"
+ "wx/palette.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\colour.h
+ "wx/object.h"
+ "wx/string.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\colour.h
+ "wx/object.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\cursor.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\bitmap.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/palette.h"
+ "wx/gdiobj.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\bitmap.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\bitmap.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/palette.h"
+ "wx/gdiobj.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\bitmap.h
+ "wx/dfb/dfbptr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\dfbptr.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\bitmap.h
+ "wx/palette.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\bitmap.h
+ "wx/os2/private.h"
+ "wx/os2/gdiimage.h"
+ "wx/gdicmn.h"
+ "wx/palette.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\gdiimage.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+ "wx/list.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\cursor.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\cursor.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\font.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\font.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\font.h
+ "wx/hash.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\hash.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/object.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\font.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\font.h
+ "wx/dfb/dfbptr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\font.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\font.h
+ "wx/gdiobj.h"
+ "wx/os2/private.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\region.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\region.h
+ "wx/list.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\region.h
+ "wx/list.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\region.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\region.h
+ "wx/generic/region.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\region.h
+ "wx/list.h"
+ "wx/os2/private.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\accel.h
+ "wx/object.h"
+ "wx/string.h"
+ "wx/event.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\accel.h
+ "wx/generic/accel.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\accel.h
+ "wx/generic/accel.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\accel.h
+ "wx/object.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\window.h
+ "wx/region.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\window.h
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\window.h
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\window.h
+ "wx/region.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\window.h
+ "wx/dfb/dfbptr.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\brush.h
+ "wx/gdiobj.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\brush.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\brush.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/gdiobj.h"
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\brush.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/gdiobj.h"
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\brush.h
+ "wx/gdicmn.h"
+ "wx/gdiobj.h"
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\brush.h
+ "wx/bitmap.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\pen.h
+ "wx/gdicmn.h"
+ "wx/gdiobj.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\pen.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\pen.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\pen.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/string.h"
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\pen.h
+ "wx/gdiobj.h"
+ "wx/gdicmn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\pen.h
+ "wx/gdiobj.h"
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\window.h
+ "wx/cocoa/NSView.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\nsview.h
+ "wx/hashmap.h"
+ "wx/cocoa/ObjcAssociate.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\objcassociate.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\window.h
+ <os2.h>
+ "wx/hash.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\tls.h
+ "wx/os2/private.h"
+ "wx/thread.h"
+ "wx/vector.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\icon.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\icon.h
+ "wx/gdicmn.h"
+ "wx/gdiobj.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\icon.h
+ "wx/bitmap.h"
+ "wx/os2/gdiimage.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\app.h
+ "wx/event.h"
+ "wx/hashmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\app.h
+ "wx/dfb/dfbptr.h"
+ "wx/vidmode.h"
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\vidmode.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\app.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\app.h
+ "wx/frame.h"
+ "wx/icon.h"
+ "wx/strconv.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\frame.h
+ "wx/toplevel.h"
+ "wx/statusbr.h"
+ "wx/univ/frame.h"
+ "wx/msw/frame.h"
+ "wx/gtk/frame.h"
+ "wx/gtk1/frame.h"
+ "wx/motif/frame.h"
+ "wx/osx/frame.h"
+ "wx/cocoa/frame.h"
+ "wx/os2/frame.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\nonownedwnd.h
+ "wx/window.h"
+ "wx/dfb/dfbptr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\nonownedwnd.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\toplevel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\toplevel.h
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\toplevel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\dfb\toplevel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\toplevel.h
+ "wx/hashmap.h"
+ "wx/cocoa/NSWindow.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\nswindow.h
+ "wx/hashmap.h"
+ "wx/cocoa/ObjcAssociate.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\toplevel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\toplevel.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\statusbr.h
+ "wx/defs.h"
+ "wx/control.h"
+ "wx/list.h"
+ "wx/dynarray.h"
+ "wx/univ/statusbr.h"
+ "wx/msw/statusbar.h"
+ "wx/generic/statusbr.h"
+ "wx/osx/statusbr.h"
+ "wx/generic/statusbr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\control.h
+ "wx/window.h"
+ "wx/list.h"
+ "wx/validate.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\control.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\control.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/list.h"
+ "wx/window.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\control.h
+ "wx/cocoa/NSControl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\nscontrol.h
+ "wx/hashmap.h"
+ "wx/cocoa/ObjcAssociate.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\control.h
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\statusbr.h
+ "wx/univ/inpcons.h"
+ "wx/arrstr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\statusbar.h
+ "wx/vector.h"
+ "wx/tooltip.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\tooltip.h
+ "wx/defs.h"
+ "wx/msw/tooltip.h"
+ "wx/gtk/tooltip.h"
+ "wx/gtk1/tooltip.h"
+ "wx/osx/tooltip.h"
+ "wx/cocoa/tooltip.h"
+ "wx/os2/tooltip.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\tooltip.h
+ "wx/object.h"
+ "wx/gdicmn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\tooltip.h
+ "wx/string.h"
+ "wx/object.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\tooltip.h
+ "wx/defs.h"
+ "wx/string.h"
+ "wx/object.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\tooltip.h
+ "wx/string.h"
+ "wx/event.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\tooltip.h
+ "wx/object.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\tooltip.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\statusbr.h
+ "wx/defs.h"
+ "wx/pen.h"
+ "wx/arrstr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\statusbr.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\frame.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\frame.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\frame.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\frame.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\frame.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\frame.h
+ "wx/toolbar.h"
+ "wx/accel.h"
+ "wx/icon.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\toolbar.h
+ "wx/defs.h"
+ "wx/tbarbase.h"
+ "wx/univ/toolbar.h"
+ "wx/msw/toolbar.h"
+ "wx/msw/wince/tbarwce.h"
+ "wx/motif/toolbar.h"
+ "wx/gtk/toolbar.h"
+ "wx/gtk1/toolbar.h"
+ "wx/osx/toolbar.h"
+ "wx/cocoa/toolbar.h"
+ "wx/os2/toolbar.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\tbarbase.h
+ "wx/defs.h"
+ "wx/bitmap.h"
+ "wx/list.h"
+ "wx/control.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\toolbar.h
+ "wx/button.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\anybutton.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\button.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\button.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\button.h
+ "wx/defs.h"
+ "wx/object.h"
+ "wx/list.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\button.h
+ "wx/cocoa/NSButton.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\nsbutton.h
+ "wx/hashmap.h"
+ "wx/cocoa/ObjcAssociate.h"
+ "wx/cocoa/ObjcRef.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\objcref.h
+ "wx/osx/core/cfref.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\button.h
+ "wx/control.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\toolbar.h
+ "wx/dynarray.h"
+ "wx/imaglist.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\wince\tbarwce.h
+ "wx/dynarray.h"
+ "wx/msw/toolbar.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\toolbar.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\toolbar.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\toolbar.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\toolbar.h
+ "wx/tbarbase.h"
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\toolbar.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\toolbar.h
+ "wx/timer.h"
+ "wx/tbarbase.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\frame.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\frame.h
+ "wx/os2/wxrsc.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\wxrsc.h
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\app.h
+ "wx/gdicmn.h"
+ "wx/event.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\app.h
+ "wx/osx/core/cfref.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\app.h
+ <types.h>
+ <sys/ioctl.h>
+ <sys/select.h>
+ <sys/time.h>
+ <sys/types.h>
+ <unistd.h>
+ <utils.h>
+ <types.h>
+ "wx/event.h"
+ "wx/icon.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\ctrlsub.h
+ "wx/dynarray.h"
+ "wx/generic/ctrlsub.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\ctrlsub.h
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\textentry.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\textentry.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\textentry.h
+
+1341838983 c:\wxwidgets-2.9.4\include\wx\x11\textctrl.h
+ "wx/univ/textctrl.h"
+ "wx/scrolwin.h"
+ "wx/arrstr.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\scrolwin.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\scrolwin.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\textctrl.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\textctrl.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\textctrl.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\textctrl.h
+ "wx/cocoa/NSTextField.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\nstextfield.h
+ "wx/hashmap.h"
+ "wx/cocoa/ObjcAssociate.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\textctrl.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\combobox.h
+ "wx/choice.h"
+ "wx/textentry.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\combobox.h
+ "wx/choice.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\combobox.h
+ "wx/defs.h"
+ "wx/object.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\combobox.h
+ "wx/hashmap.h"
+ "wx/cocoa/ObjcAssociate.h"
+ "wx/textctrl.h"
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\combobox.h
+ "wx/choice.h"
+ "wx/textentry.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\choice.h
+ "wx/clntdata.h"
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\choice.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\choice.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\choice.h
+ "wx/cocoa/NSMenu.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\nsmenu.h
+ "wx/hashmap.h"
+ "wx/cocoa/ObjcAssociate.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\choice.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\notebook.h
+ "wx/list.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\notebook.h
+ "wx/list.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\notebook.h
+ "wx/cocoa/NSTabView.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\nstabview.h
+ "wx/hashmap.h"
+ "wx/cocoa/ObjcAssociate.h"
+ "wx/cocoa/ObjcRef.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\notebook.h
+ "wx/control.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\stattext.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\stattext.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\stattext.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\stattext.h
+ "wx/cocoa/NSTextField.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\stattext.h
+ "wx/control.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\checkbox.h
+ "wx/defs.h"
+ "wx/control.h"
+ "wx/univ/checkbox.h"
+ "wx/msw/checkbox.h"
+ "wx/motif/checkbox.h"
+ "wx/gtk/checkbox.h"
+ "wx/gtk1/checkbox.h"
+ "wx/osx/checkbox.h"
+ "wx/cocoa/checkbox.h"
+ "wx/os2/checkbox.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\checkbox.h
+ "wx/button.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\checkbox.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\checkbox.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\checkbox.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\checkbox.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\checkbox.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\checkbox.h
+ "wx/cocoa/NSButton.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\checkbox.h
+ "wx/control.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\filepicker.h
+ "wx/generic/filepickerg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\dialog.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\dialog.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\dialog.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\dialog.h
+ "wx/defs.h"
+ "wx/panel.h"
+ "wx/cocoa/NSPanel.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\nspanel.h
+ "wx/hashmap.h"
+ "wx/cocoa/ObjcAssociate.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\dialog.h
+ "wx/panel.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\filectrl.h
+ "wx/control.h"
+ "wx/filectrl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\filedlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\filedlg.h
+ "wx/gtk/filectrl.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\filedlg.h
+ "wx/generic/filedlgg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\filedlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\filedlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\dirdlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\dirdlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\statline.h
+ "wx/defs.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\statline.h
+ "wx/defs.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\statline.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\statline.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\clrpicker.h
+ "wx/defs.h"
+ "wx/pickerbase.h"
+ "wx/gtk/clrpicker.h"
+ "wx/generic/clrpickerg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\clrpicker.h
+ "wx/button.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\clrpickerg.h
+ "wx/button.h"
+ "wx/bmpbuttn.h"
+ "wx/colourdata.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\bmpbuttn.h
+ "wx/defs.h"
+ "wx/button.h"
+ "wx/univ/bmpbuttn.h"
+ "wx/msw/bmpbuttn.h"
+ "wx/motif/bmpbuttn.h"
+ "wx/gtk/bmpbuttn.h"
+ "wx/gtk1/bmpbuttn.h"
+ "wx/osx/bmpbuttn.h"
+ "wx/cocoa/bmpbuttn.h"
+ "wx/os2/bmpbuttn.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\bmpbuttn.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\bmpbuttn.h
+ "wx/button.h"
+ "wx/bitmap.h"
+ "wx/brush.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\bmpbuttn.h
+ "wx/motif/bmpmotif.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\bmpmotif.h
+ "wx/defs.h"
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\bmpbuttn.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\bmpbuttn.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\bmpbuttn.h
+ "wx/button.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\bmpbuttn.h
+ "wx/cocoa/NSButton.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\bmpbuttn.h
+ "wx/button.h"
+ "wx/dcclient.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\colourdata.h
+ "wx/colour.h"
+
+1356048783 source:c:\users\paul\documents\programming\applications\guppies1.0\guppies1_0main.cpp
+ "Guppies1_0Main.h"
+ <wx/msgdlg.h>
+ <wx/textfile.h>
+ <wx/bitmap.h>
+ <wx/settings.h>
+ <wx/font.h>
+ <wx/intl.h>
+ <wx/image.h>
+ <wx/string.h>
+ "Simulation/GuppiesInclude.hpp"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\msgdlg.h
+ "wx/msgdlg.h"
+ "wx/generic/msgdlgg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\msgdlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\msgdlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\msgdlg.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\statbmp.h
+ "wx/defs.h"
+ "wx/control.h"
+ "wx/bitmap.h"
+ "wx/icon.h"
+ "wx/univ/statbmp.h"
+ "wx/msw/statbmp.h"
+ "wx/motif/statbmp.h"
+ "wx/gtk/statbmp.h"
+ "wx/gtk1/statbmp.h"
+ "wx/osx/statbmp.h"
+ "wx/cocoa/statbmp.h"
+ "wx/os2/statbmp.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\univ\statbmp.h
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\statbmp.h
+ "wx/control.h"
+ "wx/icon.h"
+ "wx/bitmap.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\motif\statbmp.h
+ "wx/motif/bmpmotif.h"
+ "wx/icon.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\statbmp.h
+ "wx/icon.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk1\statbmp.h
+ "wx/icon.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\statbmp.h
+ "wx/osx/carbon/statbmp.h"
+ "wx/generic/statbmpg.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\osx\carbon\statbmp.h
+ "wx/icon.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\statbmpg.h
+ "wx/statbmp.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\cocoa\statbmp.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\os2\statbmp.h
+ "wx/control.h"
+ "wx/icon.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\hyperlink.h
+ "wx/defs.h"
+ "wx/control.h"
+ "wx/gtk/hyperlink.h"
+ "wx/msw/hyperlink.h"
+ "wx/generic/hyperlink.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\gtk\hyperlink.h
+ "wx/generic/hyperlink.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\generic\hyperlink.h
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\msw\hyperlink.h
+ "wx/generic/hyperlink.h"
+
+1355229748 c:\users\paul\documents\programming\applications\guppies1.0\params.hpp
+ <sstream>
+ <cmath>
+ <SFML/Graphics.hpp>
+ <Box2D.h>
+ <NeuralNetworks.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics.hpp
+ <SFML/Window.hpp>
+ <SFML/Graphics/BlendMode.hpp>
+ <SFML/Graphics/Color.hpp>
+ <SFML/Graphics/Font.hpp>
+ <SFML/Graphics/Glyph.hpp>
+ <SFML/Graphics/Image.hpp>
+ <SFML/Graphics/RenderStates.hpp>
+ <SFML/Graphics/RenderTexture.hpp>
+ <SFML/Graphics/RenderWindow.hpp>
+ <SFML/Graphics/Shader.hpp>
+ <SFML/Graphics/Shape.hpp>
+ <SFML/Graphics/CircleShape.hpp>
+ <SFML/Graphics/RectangleShape.hpp>
+ <SFML/Graphics/ConvexShape.hpp>
+ <SFML/Graphics/Sprite.hpp>
+ <SFML/Graphics/Text.hpp>
+ <SFML/Graphics/Texture.hpp>
+ <SFML/Graphics/Transform.hpp>
+ <SFML/Graphics/Vertex.hpp>
+ <SFML/Graphics/VertexArray.hpp>
+ <SFML/Graphics/View.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window.hpp
+ <SFML/System.hpp>
+ <SFML/Window/Context.hpp>
+ <SFML/Window/ContextSettings.hpp>
+ <SFML/Window/Event.hpp>
+ <SFML/Window/Joystick.hpp>
+ <SFML/Window/Keyboard.hpp>
+ <SFML/Window/Mouse.hpp>
+ <SFML/Window/VideoMode.hpp>
+ <SFML/Window/Window.hpp>
+ <SFML/Window/WindowStyle.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system.hpp
+ <SFML/Config.hpp>
+ <SFML/System/Clock.hpp>
+ <SFML/System/Err.hpp>
+ <SFML/System/InputStream.hpp>
+ <SFML/System/Lock.hpp>
+ <SFML/System/Mutex.hpp>
+ <SFML/System/Sleep.hpp>
+ <SFML/System/String.hpp>
+ <SFML/System/Thread.hpp>
+ <SFML/System/ThreadLocal.hpp>
+ <SFML/System/ThreadLocalPtr.hpp>
+ <SFML/System/Utf.hpp>
+ <SFML/System/Vector2.hpp>
+ <SFML/System/Vector3.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\config.hpp
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\clock.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/Time.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\export.hpp
+ <SFML/Config.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\time.hpp
+ <SFML/System/Export.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\err.hpp
+ <SFML/System/Export.hpp>
+ <ostream>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\inputstream.hpp
+ <SFML/Config.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\lock.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/NonCopyable.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\noncopyable.hpp
+ <SFML/System/Export.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\mutex.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/NonCopyable.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\sleep.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/Time.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\string.hpp
+ <SFML/System/Export.hpp>
+ <locale>
+ <string>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\thread.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/NonCopyable.hpp>
+ <cstdlib>
+ <SFML/System/Thread.inl>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\thread.inl
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\threadlocal.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/NonCopyable.hpp>
+ <cstdlib>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\threadlocalptr.hpp
+ <SFML/System/ThreadLocal.hpp>
+ <SFML/System/ThreadLocalPtr.inl>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\threadlocalptr.inl
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\utf.hpp
+ <SFML/Config.hpp>
+ <algorithm>
+ <locale>
+ <string>
+ <cstdlib>
+ <SFML/System/Utf.inl>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\utf.inl
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\vector2.hpp
+ <SFML/System/Vector2.inl>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\vector2.inl
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\vector3.hpp
+ <SFML/System/Vector3.inl>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\system\vector3.inl
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\context.hpp
+ <SFML/Window/Export.hpp>
+ <SFML/Window/GlResource.hpp>
+ <SFML/Window/ContextSettings.hpp>
+ <SFML/System/NonCopyable.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\export.hpp
+ <SFML/Config.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\glresource.hpp
+ <SFML/Window/Export.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\contextsettings.hpp
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\event.hpp
+ <SFML/Config.hpp>
+ <SFML/Window/Joystick.hpp>
+ <SFML/Window/Keyboard.hpp>
+ <SFML/Window/Mouse.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\joystick.hpp
+ <SFML/Window/Export.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\keyboard.hpp
+ <SFML/Window/Export.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\mouse.hpp
+ <SFML/Window/Export.hpp>
+ <SFML/System/Vector2.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\videomode.hpp
+ <SFML/Window/Export.hpp>
+ <vector>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\window.hpp
+ <SFML/Window/Export.hpp>
+ <SFML/Window/ContextSettings.hpp>
+ <SFML/Window/VideoMode.hpp>
+ <SFML/Window/WindowHandle.hpp>
+ <SFML/Window/WindowStyle.hpp>
+ <SFML/Window/GlResource.hpp>
+ <SFML/System/Clock.hpp>
+ <SFML/System/Vector2.hpp>
+ <SFML/System/NonCopyable.hpp>
+ <string>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\windowhandle.hpp
+ <SFML/Config.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\window\windowstyle.hpp
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\blendmode.hpp
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\color.hpp
+ <SFML/Graphics/Export.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\export.hpp
+ <SFML/Config.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\font.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Glyph.hpp>
+ <SFML/Graphics/Texture.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/System/Vector2.hpp>
+ <SFML/System/String.hpp>
+ <map>
+ <string>
+ <vector>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\glyph.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Rect.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\rect.hpp
+ <SFML/System/Vector2.hpp>
+ <algorithm>
+ <SFML/Graphics/Rect.inl>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\rect.inl
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\texture.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Image.hpp>
+ <SFML/Window/GlResource.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\image.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Color.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <string>
+ <vector>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\renderstates.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/BlendMode.hpp>
+ <SFML/Graphics/Transform.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\transform.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/System/Vector2.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\rendertexture.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Texture.hpp>
+ <SFML/Graphics/RenderTarget.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\rendertarget.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Color.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/Graphics/View.hpp>
+ <SFML/Graphics/Transform.hpp>
+ <SFML/Graphics/BlendMode.hpp>
+ <SFML/Graphics/RenderStates.hpp>
+ <SFML/Graphics/PrimitiveType.hpp>
+ <SFML/Graphics/Vertex.hpp>
+ <SFML/System/NonCopyable.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\view.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/Graphics/Transform.hpp>
+ <SFML/System/Vector2.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\primitivetype.hpp
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\vertex.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Color.hpp>
+ <SFML/System/Vector2.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\renderwindow.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/RenderTarget.hpp>
+ <SFML/Graphics/Image.hpp>
+ <SFML/Window/Window.hpp>
+ <string>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\shader.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Transform.hpp>
+ <SFML/Graphics/Color.hpp>
+ <SFML/Window/GlResource.hpp>
+ <SFML/System/NonCopyable.hpp>
+ <SFML/System/Vector2.hpp>
+ <SFML/System/Vector3.hpp>
+ <map>
+ <string>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\shape.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Drawable.hpp>
+ <SFML/Graphics/Transformable.hpp>
+ <SFML/Graphics/VertexArray.hpp>
+ <SFML/System/Vector2.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\drawable.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/RenderStates.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\transformable.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Transform.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\vertexarray.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Vertex.hpp>
+ <SFML/Graphics/PrimitiveType.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/Graphics/Drawable.hpp>
+ <vector>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\circleshape.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Shape.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\rectangleshape.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Shape.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\convexshape.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Shape.hpp>
+ <vector>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\sprite.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Drawable.hpp>
+ <SFML/Graphics/Transformable.hpp>
+ <SFML/Graphics/Vertex.hpp>
+ <SFML/Graphics/Rect.hpp>
+
+1355493963 c:\users\paul\documents\programming\libraries\sfml-2.0-rc\include\sfml\graphics\text.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Drawable.hpp>
+ <SFML/Graphics/Transformable.hpp>
+ <SFML/Graphics/Font.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/Graphics/VertexArray.hpp>
+ <SFML/System/String.hpp>
+ <string>
+ <vector>
+
+1315071538 c:\users\paul\documents\programming\libraries\box2d\include\box2d.h
+ <Box2D/Common/b2Settings.h>
+ <Box2D/Common/b2Draw.h>
+ <Box2D/Common/b2Timer.h>
+ <Box2D/Collision/Shapes/b2CircleShape.h>
+ <Box2D/Collision/Shapes/b2EdgeShape.h>
+ <Box2D/Collision/Shapes/b2ChainShape.h>
+ <Box2D/Collision/Shapes/b2PolygonShape.h>
+ <Box2D/Collision/b2BroadPhase.h>
+ <Box2D/Collision/b2Distance.h>
+ <Box2D/Collision/b2DynamicTree.h>
+ <Box2D/Collision/b2TimeOfImpact.h>
+ <Box2D/Dynamics/b2Body.h>
+ <Box2D/Dynamics/b2Fixture.h>
+ <Box2D/Dynamics/b2WorldCallbacks.h>
+ <Box2D/Dynamics/b2TimeStep.h>
+ <Box2D/Dynamics/b2World.h>
+ <Box2D/Dynamics/Contacts/b2Contact.h>
+ <Box2D/Dynamics/Joints/b2DistanceJoint.h>
+ <Box2D/Dynamics/Joints/b2FrictionJoint.h>
+ <Box2D/Dynamics/Joints/b2GearJoint.h>
+ <Box2D/Dynamics/Joints/b2WheelJoint.h>
+ <Box2D/Dynamics/Joints/b2MouseJoint.h>
+ <Box2D/Dynamics/Joints/b2PrismaticJoint.h>
+ <Box2D/Dynamics/Joints/b2PulleyJoint.h>
+ <Box2D/Dynamics/Joints/b2RevoluteJoint.h>
+ <Box2D/Dynamics/Joints/b2RopeJoint.h>
+ <Box2D/Dynamics/Joints/b2WeldJoint.h>
+
+1350117930 c:\users\paul\documents\programming\libraries\box2d\include\box2d\common\b2settings.h
+ <cassert>
+ <cmath>
+
+1301283100 c:\users\paul\documents\programming\libraries\box2d\include\box2d\common\b2draw.h
+ <Box2D/Common/b2Math.h>
+
+1315133282 c:\users\paul\documents\programming\libraries\box2d\include\box2d\common\b2math.h
+ <Box2D/Common/b2Settings.h>
+ <cmath>
+ <cfloat>
+ <cstddef>
+ <limits>
+
+1315842396 c:\users\paul\documents\programming\libraries\box2d\include\box2d\common\b2timer.h
+ <Box2D/Common/b2Settings.h>
+
+1301019418 c:\users\paul\documents\programming\libraries\box2d\include\box2d\collision\shapes\b2circleshape.h
+ <Box2D/Collision/Shapes/b2Shape.h>
+
+1314013792 c:\users\paul\documents\programming\libraries\box2d\include\box2d\collision\shapes\b2shape.h
+ <Box2D/Common/b2BlockAllocator.h>
+ <Box2D/Common/b2Math.h>
+ <Box2D/Collision/b2Collision.h>
+
+1301019418 c:\users\paul\documents\programming\libraries\box2d\include\box2d\common\b2blockallocator.h
+ <Box2D/Common/b2Settings.h>
+
+1307337762 c:\users\paul\documents\programming\libraries\box2d\include\box2d\collision\b2collision.h
+ <Box2D/Common/b2Math.h>
+ <climits>
+
+1314892386 c:\users\paul\documents\programming\libraries\box2d\include\box2d\collision\shapes\b2edgeshape.h
+ <Box2D/Collision/Shapes/b2Shape.h>
+
+1314891742 c:\users\paul\documents\programming\libraries\box2d\include\box2d\collision\shapes\b2chainshape.h
+ <Box2D/Collision/Shapes/b2Shape.h>
+
+1301019418 c:\users\paul\documents\programming\libraries\box2d\include\box2d\collision\shapes\b2polygonshape.h
+ <Box2D/Collision/Shapes/b2Shape.h>
+
+1301293402 c:\users\paul\documents\programming\libraries\box2d\include\box2d\collision\b2broadphase.h
+ <Box2D/Common/b2Settings.h>
+ <Box2D/Collision/b2Collision.h>
+ <Box2D/Collision/b2DynamicTree.h>
+ <algorithm>
+
+1309020390 c:\users\paul\documents\programming\libraries\box2d\include\box2d\collision\b2dynamictree.h
+ <Box2D/Collision/b2Collision.h>
+ <Box2D/Common/b2GrowableStack.h>
+
+1301019418 c:\users\paul\documents\programming\libraries\box2d\include\box2d\common\b2growablestack.h
+ <Box2D/Common/b2Settings.h>
+ <cstring>
+
+1301019418 c:\users\paul\documents\programming\libraries\box2d\include\box2d\collision\b2distance.h
+ <Box2D/Common/b2Math.h>
+
+1301019418 c:\users\paul\documents\programming\libraries\box2d\include\box2d\collision\b2timeofimpact.h
+ <Box2D/Common/b2Math.h>
+ <Box2D/Collision/b2Distance.h>
+
+1315120342 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\b2body.h
+ <Box2D/Common/b2Math.h>
+ <Box2D/Collision/Shapes/b2Shape.h>
+ <memory>
+
+1315104742 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\b2fixture.h
+ <Box2D/Dynamics/b2Body.h>
+ <Box2D/Collision/b2Collision.h>
+ <Box2D/Collision/Shapes/b2Shape.h>
+
+1314106000 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\b2worldcallbacks.h
+ <Box2D/Common/b2Settings.h>
+
+1315841530 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\b2timestep.h
+ <Box2D/Common/b2Math.h>
+
+1315206396 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\b2world.h
+ <Box2D/Common/b2Math.h>
+ <Box2D/Common/b2BlockAllocator.h>
+ <Box2D/Common/b2StackAllocator.h>
+ <Box2D/Dynamics/b2ContactManager.h>
+ <Box2D/Dynamics/b2WorldCallbacks.h>
+ <Box2D/Dynamics/b2TimeStep.h>
+
+1301019418 c:\users\paul\documents\programming\libraries\box2d\include\box2d\common\b2stackallocator.h
+ <Box2D/Common/b2Settings.h>
+
+1301019418 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\b2contactmanager.h
+ <Box2D/Collision/b2BroadPhase.h>
+
+1305819218 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\contacts\b2contact.h
+ <Box2D/Common/b2Math.h>
+ <Box2D/Collision/b2Collision.h>
+ <Box2D/Collision/Shapes/b2Shape.h>
+ <Box2D/Dynamics/b2Fixture.h>
+
+1315195382 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2distancejoint.h
+ <Box2D/Dynamics/Joints/b2Joint.h>
+
+1315207598 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2joint.h
+ <Box2D/Common/b2Math.h>
+
+1315206678 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2frictionjoint.h
+ <Box2D/Dynamics/Joints/b2Joint.h>
+
+1315206932 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2gearjoint.h
+ <Box2D/Dynamics/Joints/b2Joint.h>
+
+1315207550 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2wheeljoint.h
+ <Box2D/Dynamics/Joints/b2Joint.h>
+
+1315207610 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2mousejoint.h
+ <Box2D/Dynamics/Joints/b2Joint.h>
+
+1315398326 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2prismaticjoint.h
+ <Box2D/Dynamics/Joints/b2Joint.h>
+
+1315207320 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2pulleyjoint.h
+ <Box2D/Dynamics/Joints/b2Joint.h>
+
+1315204772 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2revolutejoint.h
+ <Box2D/Dynamics/Joints/b2Joint.h>
+
+1315226614 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2ropejoint.h
+ <Box2D/Dynamics/Joints/b2Joint.h>
+
+1315203064 c:\users\paul\documents\programming\libraries\box2d\include\box2d\dynamics\joints\b2weldjoint.h
+ <Box2D/Dynamics/Joints/b2Joint.h>
+
+1353123142 c:\users\paul\documents\programming\libraries\neuralnetworks\neuralnetworks.hpp
+ "Population.hpp"
+ "SingleMLP.hpp"
+ "DualMLP.hpp"
+ "SimpleRN.hpp"
+ "FullyRN.hpp"
+
+1353121618 c:\users\paul\documents\programming\libraries\neuralnetworks\population.hpp
+ "NNUtils.hpp"
+
+1353124844 c:\users\paul\documents\programming\libraries\neuralnetworks\nnutils.hpp
+ <cmath>
+ <vector>
+ <random>
+ <chrono>
+ <memory>
+
+1353118744 c:\users\paul\documents\programming\libraries\neuralnetworks\singlemlp.hpp
+ "NeuralNet.hpp"
+
+1353056560 c:\users\paul\documents\programming\libraries\neuralnetworks\neuralnet.hpp
+ "NodeLayer.hpp"
+
+1360285428 c:\users\paul\documents\programming\libraries\neuralnetworks\nodelayer.hpp
+ "Neuron.hpp"
+ "MemCell.hpp"
+
+1353029878 c:\users\paul\documents\programming\libraries\neuralnetworks\neuron.hpp
+ "Node.hpp"
+
+1353035574 c:\users\paul\documents\programming\libraries\neuralnetworks\node.hpp
+ "NNUtils.hpp"
+
+1353030558 c:\users\paul\documents\programming\libraries\neuralnetworks\memcell.hpp
+ "Neuron.hpp"
+
+1353119342 c:\users\paul\documents\programming\libraries\neuralnetworks\dualmlp.hpp
+ "NeuralNet.hpp"
+
+1353118744 c:\users\paul\documents\programming\libraries\neuralnetworks\simplern.hpp
+ "SingleMLP.hpp"
+
+1353118954 c:\users\paul\documents\programming\libraries\neuralnetworks\fullyrn.hpp
+ "DualMLP.hpp"
+
+1353639058 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\simbase_update.cpp
+ "SimBase.hpp"
+
+1355230367 c:\users\paul\documents\programming\applications\guppies1.0\simulation\simbase.hpp
+ <list>
+ "Params.hpp"
+ "GraphicObjs.hpp"
+ "Camera.hpp"
+ "Tank.hpp"
+ "TextDisplay.hpp"
+ "Zapper.hpp"
+ "Pellet.hpp"
+ "Guppie.hpp"
+ "Corpse.hpp"
+
+1355243474 c:\users\paul\documents\programming\applications\guppies1.0\simulation\params.hpp
+ <sstream>
+ <cmath>
+ <SFML/Graphics.hpp>
+ <Box2D.h>
+ <NeuralNetworks.hpp>
+
+1354293943 c:\users\paul\documents\programming\applications\guppies1.0\simulation\graphicobjs.hpp
+ <SFML/Graphics.hpp>
+
+1353640410 c:\users\paul\documents\programming\applications\guppies1.0\simulation\camera.hpp
+ <SFML/Graphics.hpp>
+ <Box2D.h>
+
+1352712742 c:\users\paul\documents\programming\applications\guppies1.0\simulation\tank.hpp
+ <SFML/Graphics.hpp>
+ <Box2d.h>
+ "ContactListener.hpp"
+
+1356021184 c:\users\paul\documents\programming\applications\guppies1.0\simulation\contactlistener.hpp
+ <Box2D.h>
+
+1352800218 c:\users\paul\documents\programming\applications\guppies1.0\simulation\textdisplay.hpp
+ <SFML/Graphics.hpp>
+ "Params.hpp"
+
+1352799536 c:\users\paul\documents\programming\applications\guppies1.0\simulation\zapper.hpp
+ "Entity.hpp"
+
+1352799536 c:\users\paul\documents\programming\applications\guppies1.0\simulation\entity.hpp
+ <SFML/Graphics.hpp>
+ <Box2D.h>
+
+1352799536 c:\users\paul\documents\programming\applications\guppies1.0\simulation\pellet.hpp
+ "Entity.hpp"
+
+1356019956 c:\users\paul\documents\programming\applications\guppies1.0\simulation\guppie.hpp
+ <NeuralNet.hpp>
+ "Entity.hpp"
+
+1353956503 c:\users\paul\documents\programming\applications\guppies1.0\simulation\corpse.hpp
+ "Entity.hpp"
+
+1353575978 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\simfitness_startspecs.cpp
+ "SimFitness.hpp"
+
+1353125082 c:\users\paul\documents\programming\applications\guppies1.0\simulation\simfitness.hpp
+ <Population.hpp>
+ <SingleMLP.hpp>
+ <DualMLP.hpp>
+ <SimpleRN.hpp>
+ <FullyRN.hpp>
+ "SimBase.hpp"
+
+1353952906 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\entity.cpp
+ "Entity.hpp"
+ "SimBase.hpp"
+
+1353931125 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\simbase_draw.cpp
+ "SimBase.hpp"
+
+1354043769 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\simfitness_updatespecs.cpp
+ "SimFitness.hpp"
+
+1352800124 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\tank.cpp
+ "Tank.hpp"
+ "SimBase.hpp"
+
+1353950007 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\pellet.cpp
+ "Pellet.hpp"
+ "SimBase.hpp"
+
+1355712517 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\camera.cpp
+ "Camera.hpp"
+ "SimBase.hpp"
+
+1356021211 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\contactlistener.cpp
+ "ContactListener.hpp"
+ "SimBase.hpp"
+
+1354294236 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\simbase_preparegraphics.cpp
+ "SimBase.hpp"
+
+1355767645 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\textdisplay.cpp
+ "TextDisplay.hpp"
+ "SimBase.hpp"
+ <sstream>
+
+1353949790 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\zapper.cpp
+ "Zapper.hpp"
+ "SimBase.hpp"
+
+1355712505 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\simbase_execute.cpp
+ "SimBase.hpp"
+
+1356019956 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\guppie.cpp
+ "Guppie.hpp"
+ "SimFitness.hpp"
+
+1355161016 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\corpse.cpp
+ "Corpse.hpp"
+ "SimBase.hpp"
+
+1355158906 source:c:\users\paul\documents\programming\applications\guppies1.0\simulation\simbase_createnew.cpp
+ "SimBase.hpp"
+
+1352150896 c:\users\paul\documents\programming\applications\guppies1.0\simulation\guppiesinclude.hpp
+ "SimFitness.hpp"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\textfile.h
+ "wx/defs.h"
+ "wx/textbuf.h"
+ "wx/file.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\textbuf.h
+ "wx/defs.h"
+ "wx/arrstr.h"
+ "wx/convauto.h"
+ "wx/string.h"
+ "wx/dynarray.h"
+
+1341838982 c:\wxwidgets-2.9.4\include\wx\convauto.h
+ "wx/strconv.h"
+ "wx/fontenc.h"
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics.hpp
+ <SFML/Window.hpp>
+ <SFML/Graphics/BlendMode.hpp>
+ <SFML/Graphics/Color.hpp>
+ <SFML/Graphics/Font.hpp>
+ <SFML/Graphics/Glyph.hpp>
+ <SFML/Graphics/Image.hpp>
+ <SFML/Graphics/RenderStates.hpp>
+ <SFML/Graphics/RenderTexture.hpp>
+ <SFML/Graphics/RenderWindow.hpp>
+ <SFML/Graphics/Shader.hpp>
+ <SFML/Graphics/Shape.hpp>
+ <SFML/Graphics/CircleShape.hpp>
+ <SFML/Graphics/RectangleShape.hpp>
+ <SFML/Graphics/ConvexShape.hpp>
+ <SFML/Graphics/Sprite.hpp>
+ <SFML/Graphics/Text.hpp>
+ <SFML/Graphics/Texture.hpp>
+ <SFML/Graphics/Transform.hpp>
+ <SFML/Graphics/Vertex.hpp>
+ <SFML/Graphics/VertexArray.hpp>
+ <SFML/Graphics/View.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window.hpp
+ <SFML/System.hpp>
+ <SFML/Window/Context.hpp>
+ <SFML/Window/ContextSettings.hpp>
+ <SFML/Window/Event.hpp>
+ <SFML/Window/Joystick.hpp>
+ <SFML/Window/Keyboard.hpp>
+ <SFML/Window/Mouse.hpp>
+ <SFML/Window/VideoMode.hpp>
+ <SFML/Window/Window.hpp>
+ <SFML/Window/WindowStyle.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system.hpp
+ <SFML/Config.hpp>
+ <SFML/System/Clock.hpp>
+ <SFML/System/Err.hpp>
+ <SFML/System/InputStream.hpp>
+ <SFML/System/Lock.hpp>
+ <SFML/System/Mutex.hpp>
+ <SFML/System/Sleep.hpp>
+ <SFML/System/String.hpp>
+ <SFML/System/Thread.hpp>
+ <SFML/System/ThreadLocal.hpp>
+ <SFML/System/ThreadLocalPtr.hpp>
+ <SFML/System/Utf.hpp>
+ <SFML/System/Vector2.hpp>
+ <SFML/System/Vector3.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\config.hpp
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\clock.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/Time.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\export.hpp
+ <SFML/Config.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\time.hpp
+ <SFML/System/Export.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\err.hpp
+ <SFML/System/Export.hpp>
+ <ostream>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\inputstream.hpp
+ <SFML/Config.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\lock.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/NonCopyable.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\noncopyable.hpp
+ <SFML/System/Export.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\mutex.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/NonCopyable.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\sleep.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/Time.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\string.hpp
+ <SFML/System/Export.hpp>
+ <locale>
+ <string>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\thread.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/NonCopyable.hpp>
+ <cstdlib>
+ <SFML/System/Thread.inl>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\thread.inl
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\threadlocal.hpp
+ <SFML/System/Export.hpp>
+ <SFML/System/NonCopyable.hpp>
+ <cstdlib>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\threadlocalptr.hpp
+ <SFML/System/ThreadLocal.hpp>
+ <SFML/System/ThreadLocalPtr.inl>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\threadlocalptr.inl
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\utf.hpp
+ <SFML/Config.hpp>
+ <algorithm>
+ <locale>
+ <string>
+ <cstdlib>
+ <SFML/System/Utf.inl>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\utf.inl
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\vector2.hpp
+ <SFML/System/Vector2.inl>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\vector2.inl
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\vector3.hpp
+ <SFML/System/Vector3.inl>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\system\vector3.inl
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\context.hpp
+ <SFML/Window/Export.hpp>
+ <SFML/Window/GlResource.hpp>
+ <SFML/Window/ContextSettings.hpp>
+ <SFML/System/NonCopyable.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\export.hpp
+ <SFML/Config.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\glresource.hpp
+ <SFML/Window/Export.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\contextsettings.hpp
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\event.hpp
+ <SFML/Config.hpp>
+ <SFML/Window/Joystick.hpp>
+ <SFML/Window/Keyboard.hpp>
+ <SFML/Window/Mouse.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\joystick.hpp
+ <SFML/Window/Export.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\keyboard.hpp
+ <SFML/Window/Export.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\mouse.hpp
+ <SFML/Window/Export.hpp>
+ <SFML/System/Vector2.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\videomode.hpp
+ <SFML/Window/Export.hpp>
+ <vector>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\window.hpp
+ <SFML/Window/Export.hpp>
+ <SFML/Window/ContextSettings.hpp>
+ <SFML/Window/VideoMode.hpp>
+ <SFML/Window/WindowHandle.hpp>
+ <SFML/Window/WindowStyle.hpp>
+ <SFML/Window/GlResource.hpp>
+ <SFML/System/Clock.hpp>
+ <SFML/System/Vector2.hpp>
+ <SFML/System/NonCopyable.hpp>
+ <SFML/System/String.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\windowhandle.hpp
+ <SFML/Config.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\window\windowstyle.hpp
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\blendmode.hpp
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\color.hpp
+ <SFML/Graphics/Export.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\export.hpp
+ <SFML/Config.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\font.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Glyph.hpp>
+ <SFML/Graphics/Texture.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/System/Vector2.hpp>
+ <SFML/System/String.hpp>
+ <map>
+ <string>
+ <vector>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\glyph.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Rect.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\rect.hpp
+ <SFML/System/Vector2.hpp>
+ <algorithm>
+ <SFML/Graphics/Rect.inl>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\rect.inl
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\texture.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Image.hpp>
+ <SFML/Window/GlResource.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\image.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Color.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <string>
+ <vector>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\renderstates.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/BlendMode.hpp>
+ <SFML/Graphics/Transform.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\transform.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/System/Vector2.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\rendertexture.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Texture.hpp>
+ <SFML/Graphics/RenderTarget.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\rendertarget.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Color.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/Graphics/View.hpp>
+ <SFML/Graphics/Transform.hpp>
+ <SFML/Graphics/BlendMode.hpp>
+ <SFML/Graphics/RenderStates.hpp>
+ <SFML/Graphics/PrimitiveType.hpp>
+ <SFML/Graphics/Vertex.hpp>
+ <SFML/System/NonCopyable.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\view.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/Graphics/Transform.hpp>
+ <SFML/System/Vector2.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\primitivetype.hpp
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\vertex.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Color.hpp>
+ <SFML/System/Vector2.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\renderwindow.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/RenderTarget.hpp>
+ <SFML/Graphics/Image.hpp>
+ <SFML/Window/Window.hpp>
+ <string>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\shader.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Transform.hpp>
+ <SFML/Graphics/Color.hpp>
+ <SFML/Window/GlResource.hpp>
+ <SFML/System/NonCopyable.hpp>
+ <SFML/System/Vector2.hpp>
+ <SFML/System/Vector3.hpp>
+ <map>
+ <string>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\shape.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Drawable.hpp>
+ <SFML/Graphics/Transformable.hpp>
+ <SFML/Graphics/VertexArray.hpp>
+ <SFML/System/Vector2.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\drawable.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/RenderStates.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\transformable.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Transform.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\vertexarray.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Vertex.hpp>
+ <SFML/Graphics/PrimitiveType.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/Graphics/Drawable.hpp>
+ <vector>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\circleshape.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Shape.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\rectangleshape.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Shape.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\convexshape.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Shape.hpp>
+ <vector>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\sprite.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Drawable.hpp>
+ <SFML/Graphics/Transformable.hpp>
+ <SFML/Graphics/Vertex.hpp>
+ <SFML/Graphics/Rect.hpp>
+
+1361279954 c:\users\paul\documents\programming\libraries\sfml-2.0\include\sfml\graphics\text.hpp
+ <SFML/Graphics/Export.hpp>
+ <SFML/Graphics/Drawable.hpp>
+ <SFML/Graphics/Transformable.hpp>
+ <SFML/Graphics/Font.hpp>
+ <SFML/Graphics/Rect.hpp>
+ <SFML/Graphics/VertexArray.hpp>
+ <SFML/System/String.hpp>
+ <string>
+ <vector>
+
diff --git a/Guppies1.0.layout b/Guppies1.0.layout
new file mode 100644
index 0000000..df64a4d
--- /dev/null
+++ b/Guppies1.0.layout
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_layout_file>
+ <ActiveTarget name="Release" />
+ <File name="Simulation\Corpse.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="612" topLine="71" />
+ </Cursor>
+ </File>
+ <File name="resource.rc" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="47" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="Simulation\ContactListener.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="454" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="Simulation\Guppie.hpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="663" topLine="12" />
+ </Cursor>
+ </File>
+ <File name="Simulation\Guppie.cpp" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="18814" topLine="554" />
+ </Cursor>
+ </File>
+ <File name="Simulation\ContactListener.hpp" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="238" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="Simulation\TextDisplay.cpp" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="213" topLine="3" />
+ </Cursor>
+ </File>
+ <File name="Simulation\Params.hpp" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="90" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="Simulation\SimBase.hpp" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="103" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="Simulation\Tank.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="0" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="Simulation\SimBase_CreateNew.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="322" topLine="2" />
+ </Cursor>
+ </File>
+ <File name="Simulation\TextDisplay.hpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="164" topLine="3" />
+ </Cursor>
+ </File>
+ <File name="Simulation\SimBase_Execute.cpp" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="806" topLine="16" />
+ </Cursor>
+ </File>
+ <File name="Simulation\Camera.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="678" topLine="19" />
+ </Cursor>
+ </File>
+ <File name="Guppies1_0App.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="385" topLine="0" />
+ </Cursor>
+ </File>
+ <File name="Guppies1_0Main.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="1" zoom_2="0">
+ <Cursor>
+ <Cursor1 position="48625" topLine="681" />
+ </Cursor>
+ </File>
+</CodeBlocks_layout_file>
diff --git a/Guppies1_0App.cpp b/Guppies1_0App.cpp
new file mode 100644
index 0000000..27a2e5f
--- /dev/null
+++ b/Guppies1_0App.cpp
@@ -0,0 +1,34 @@
+/***************************************************************
+ * Name: Guppies1_0App.cpp
+ * Purpose: Code for Application Class
+ * Author: Paul T. Oliver (nino.trullen@gmail.com)
+ * Created: 2012-11-13
+ * Copyright: Paul T. Oliver ()
+ * License:
+ **************************************************************/
+
+#include "Guppies1_0App.h"
+
+//(*AppHeaders
+#include "Guppies1_0Main.h"
+#include <wx/image.h>
+//*)
+
+IMPLEMENT_APP(Guppies1_0App);
+
+bool Guppies1_0App::OnInit()
+{
+ //(*AppInitialize
+ bool wxsOK = true;
+ wxInitAllImageHandlers();
+ if ( wxsOK )
+ {
+ Guppies1_0Dialog Dlg(0);
+ SetTopWindow(&Dlg);
+ Dlg.ShowModal();
+ wxsOK = false;
+ }
+ //*)
+ return wxsOK;
+
+}
diff --git a/Guppies1_0App.h b/Guppies1_0App.h
new file mode 100644
index 0000000..91cc38d
--- /dev/null
+++ b/Guppies1_0App.h
@@ -0,0 +1,21 @@
+/***************************************************************
+ * Name: Guppies1_0App.h
+ * Purpose: Defines Application Class
+ * Author: Paul T. Oliver (nino.trullen@gmail.com)
+ * Created: 2012-11-13
+ * Copyright: Paul T. Oliver ()
+ * License:
+ **************************************************************/
+
+#ifndef GUPPIES1_0APP_H
+#define GUPPIES1_0APP_H
+
+#include <wx/app.h>
+
+class Guppies1_0App : public wxApp
+{
+ public:
+ virtual bool OnInit();
+};
+
+#endif // GUPPIES1_0APP_H
diff --git a/Guppies1_0Main.cpp b/Guppies1_0Main.cpp
new file mode 100644
index 0000000..089abf4
--- /dev/null
+++ b/Guppies1_0Main.cpp
@@ -0,0 +1,757 @@
+/***************************************************************
+ * Name: Guppies1_0Main.cpp
+ * Purpose: Code for Application Frame
+ * Author: Paul T. Oliver (nino.trullen@gmail.com)
+ * Created: 2012-11-13
+ * Copyright: Paul T. Oliver ()
+ * License:
+ **************************************************************/
+
+#include "Guppies1_0Main.h"
+#include <wx/msgdlg.h>
+#include <wx/textfile.h>
+
+//(*InternalHeaders(Guppies1_0Dialog)
+#include <wx/bitmap.h>
+#include <wx/settings.h>
+#include <wx/font.h>
+#include <wx/intl.h>
+#include <wx/image.h>
+#include <wx/string.h>
+//*)
+
+//helper functions
+enum wxbuildinfoformat {
+ short_f, long_f };
+
+wxString wxbuildinfo(wxbuildinfoformat format)
+{
+ wxString wxbuild(wxVERSION_STRING);
+
+ if (format == long_f )
+ {
+#if defined(__WXMSW__)
+ wxbuild << _T("-Windows");
+#elif defined(__UNIX__)
+ wxbuild << _T("-Linux");
+#endif
+
+#if wxUSE_UNICODE
+ wxbuild << _T("-Unicode build");
+#else
+ wxbuild << _T("-ANSI build");
+#endif // wxUSE_UNICODE
+ }
+
+ return wxbuild;
+}
+
+//(*IdInit(Guppies1_0Dialog)
+const long Guppies1_0Dialog::ID_STATICBITMAP1 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICLINE3 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT37 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT39 = wxNewId();
+const long Guppies1_0Dialog::ID_HYPERLINKCTRL1 = wxNewId();
+const long Guppies1_0Dialog::ID_BUTTON4 = wxNewId();
+const long Guppies1_0Dialog::ID_BUTTON3 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT38 = wxNewId();
+const long Guppies1_0Dialog::ID_PANEL4 = wxNewId();
+const long Guppies1_0Dialog::ID_FILEPICKERCTRL1 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICLINE1 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT1 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICLINE2 = wxNewId();
+const long Guppies1_0Dialog::ID_BUTTON1 = wxNewId();
+const long Guppies1_0Dialog::ID_PANEL2 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT31 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT32 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT33 = wxNewId();
+const long Guppies1_0Dialog::ID_CHOICE1 = wxNewId();
+const long Guppies1_0Dialog::ID_CHOICE2 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL18 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT35 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT34 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT36 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL22 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL23 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL24 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT28 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT30 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT29 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL19 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL20 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL21 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT2 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL1 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT3 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT4 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT5 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT6 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT7 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT8 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT9 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT10 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL2 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL3 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL4 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL5 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL6 = wxNewId();
+const long Guppies1_0Dialog::ID_CHECKBOX1 = wxNewId();
+const long Guppies1_0Dialog::ID_CHECKBOX2 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL8 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT22 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT23 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT24 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT25 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT26 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT27 = wxNewId();
+const long Guppies1_0Dialog::ID_COLOURPICKERCTRL1 = wxNewId();
+const long Guppies1_0Dialog::ID_COLOURPICKERCTRL2 = wxNewId();
+const long Guppies1_0Dialog::ID_COLOURPICKERCTRL3 = wxNewId();
+const long Guppies1_0Dialog::ID_COLOURPICKERCTRL4 = wxNewId();
+const long Guppies1_0Dialog::ID_COLOURPICKERCTRL5 = wxNewId();
+const long Guppies1_0Dialog::ID_COLOURPICKERCTRL6 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT11 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT12 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT13 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT14 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT15 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT16 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT17 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL7 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL9 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL10 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL11 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL12 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL13 = wxNewId();
+const long Guppies1_0Dialog::ID_CHECKBOX3 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT18 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT19 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT20 = wxNewId();
+const long Guppies1_0Dialog::ID_STATICTEXT21 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL14 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL15 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL16 = wxNewId();
+const long Guppies1_0Dialog::ID_TEXTCTRL17 = wxNewId();
+const long Guppies1_0Dialog::ID_FILEPICKERCTRL2 = wxNewId();
+const long Guppies1_0Dialog::ID_FILEPICKERCTRL3 = wxNewId();
+const long Guppies1_0Dialog::ID_BUTTON5 = wxNewId();
+const long Guppies1_0Dialog::ID_BUTTON2 = wxNewId();
+const long Guppies1_0Dialog::ID_PANEL3 = wxNewId();
+const long Guppies1_0Dialog::ID_NOTEBOOK1 = wxNewId();
+const long Guppies1_0Dialog::ID_PANEL1 = wxNewId();
+//*)
+
+BEGIN_EVENT_TABLE(Guppies1_0Dialog,wxDialog)
+ //(*EventTable(Guppies1_0Dialog)
+ //*)
+END_EVENT_TABLE()
+
+Guppies1_0Dialog::Guppies1_0Dialog(wxWindow* parent,wxWindowID id)
+{
+ //(*Initialize(Guppies1_0Dialog)
+ wxBoxSizer* BoxSizer4;
+ wxStaticBoxSizer* StaticBoxSizer2;
+ wxBoxSizer* BoxSizer6;
+ wxBoxSizer* BoxSizer19;
+ wxBoxSizer* BoxSizer15;
+ wxBoxSizer* BoxSizer20;
+ wxBoxSizer* BoxSizer5;
+ wxBoxSizer* BoxSizer10;
+ wxBoxSizer* BoxSizer7;
+ wxBoxSizer* BoxSizer8;
+ wxBoxSizer* BoxSizer21;
+ wxBoxSizer* BoxSizer13;
+ wxStaticBoxSizer* StaticBoxSizer4;
+ wxBoxSizer* BoxSizer23;
+ wxStaticBoxSizer* StaticBoxSizer9;
+ wxBoxSizer* BoxSizer2;
+ wxBoxSizer* BoxSizer11;
+ wxBoxSizer* BoxSizer16;
+ wxStaticBoxSizer* StaticBoxSizer7;
+ wxBoxSizer* BoxSizer12;
+ wxBoxSizer* BoxSizer18;
+ wxBoxSizer* BoxSizer28;
+ wxStaticBoxSizer* StaticBoxSizer10;
+ wxBoxSizer* BoxSizer14;
+ wxStaticBoxSizer* StaticBoxSizer8;
+ wxStaticBoxSizer* StaticBoxSizer3;
+ wxStaticBoxSizer* StaticBoxSizer6;
+ wxBoxSizer* BoxSizer27;
+ wxBoxSizer* BoxSizer17;
+ wxBoxSizer* BoxSizer24;
+ wxBoxSizer* BoxSizer26;
+ wxBoxSizer* BoxSizer9;
+ wxStaticBoxSizer* StaticBoxSizer1;
+ wxBoxSizer* BoxSizer22;
+ wxBoxSizer* BoxSizer3;
+ wxStaticBoxSizer* StaticBoxSizer5;
+ wxBoxSizer* BoxSizer25;
+
+ Create(parent, wxID_ANY, _("Neural Guppies - 0.1 beta"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxMINIMIZE_BOX, _T("wxID_ANY"));
+ BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
+ Panel1 = new wxPanel(this, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL1"));
+ BoxSizer2 = new wxBoxSizer(wxVERTICAL);
+ Notebook1 = new wxNotebook(Panel1, ID_NOTEBOOK1, wxDefaultPosition, wxDefaultSize, 0, _T("ID_NOTEBOOK1"));
+ Panel4 = new wxPanel(Notebook1, ID_PANEL4, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL4"));
+ Panel4->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNHIGHLIGHT));
+ BoxSizer27 = new wxBoxSizer(wxVERTICAL);
+ StaticBitmap1 = new wxStaticBitmap(Panel4, ID_STATICBITMAP1, wxBitmap(wxImage(_T("gfx\\logo.png"))), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICBITMAP1"));
+ BoxSizer27->Add(StaticBitmap1, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
+ StaticLine3 = new wxStaticLine(Panel4, ID_STATICLINE3, wxDefaultPosition, wxSize(10,-1), wxLI_HORIZONTAL, _T("ID_STATICLINE3"));
+ BoxSizer27->Add(StaticLine3, 0, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText37 = new wxStaticText(Panel4, ID_STATICTEXT37, _("\nVersion -0.1 beta 20121220\n\nBy: Paul T. Oliver"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_STATICTEXT37"));
+ wxFont StaticText37Font(11,wxSWISS,wxFONTSTYLE_NORMAL,wxNORMAL,false,_T("DejaVu Sans Mono"),wxFONTENCODING_DEFAULT);
+ StaticText37->SetFont(StaticText37Font);
+ BoxSizer27->Add(StaticText37, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
+ StaticText39 = new wxStaticText(Panel4, ID_STATICTEXT39, _("paul.t.oliver.design@gmail.com"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT39"));
+ BoxSizer27->Add(StaticText39, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
+ HyperlinkCtrl1 = new wxHyperlinkCtrl(Panel4, ID_HYPERLINKCTRL1, wxEmptyString, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_CONTEXTMENU|wxHL_ALIGN_CENTRE|wxNO_BORDER, _T("ID_HYPERLINKCTRL1"));
+ BoxSizer27->Add(HyperlinkCtrl1, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 4);
+ BoxSizer28 = new wxBoxSizer(wxHORIZONTAL);
+ Button4 = new wxButton(Panel4, ID_BUTTON4, _("Load simulation"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON4"));
+ wxFont Button4Font(11,wxSWISS,wxFONTSTYLE_NORMAL,wxNORMAL,false,_T("DejaVu Sans Mono"),wxFONTENCODING_DEFAULT);
+ Button4->SetFont(Button4Font);
+ BoxSizer28->Add(Button4, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ Button3 = new wxButton(Panel4, ID_BUTTON3, _("New simulation"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON3"));
+ wxFont Button3Font(11,wxSWISS,wxFONTSTYLE_NORMAL,wxNORMAL,false,_T("DejaVu Sans Mono"),wxFONTENCODING_DEFAULT);
+ Button3->SetFont(Button3Font);
+ BoxSizer28->Add(Button3, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer27->Add(BoxSizer28, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText38 = new wxStaticText(Panel4, ID_STATICTEXT38, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_STATICTEXT38"));
+ BoxSizer27->Add(StaticText38, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ Panel4->SetSizer(BoxSizer27);
+ BoxSizer27->Fit(Panel4);
+ BoxSizer27->SetSizeHints(Panel4);
+ Panel2 = new wxPanel(Notebook1, ID_PANEL2, wxPoint(29,47), wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL2"));
+ Panel2->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNHIGHLIGHT));
+ BoxSizer3 = new wxBoxSizer(wxVERTICAL);
+ BoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
+ FilePickerCtrl1 = new wxFilePickerCtrl(Panel2, ID_FILEPICKERCTRL1, wxEmptyString, _("Load simulation"), _T("*.sim"), wxDefaultPosition, wxDefaultSize, wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL, wxDefaultValidator, _T("ID_FILEPICKERCTRL1"));
+ FilePickerCtrl1->Disable();
+ BoxSizer4->Add(FilePickerCtrl1, 3, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer3->Add(BoxSizer4, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticLine1 = new wxStaticLine(Panel2, ID_STATICLINE1, wxDefaultPosition, wxSize(10,-1), wxLI_HORIZONTAL, _T("ID_STATICLINE1"));
+ BoxSizer3->Add(StaticLine1, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText1 = new wxStaticText(Panel2, ID_STATICTEXT1, _("No simulation loaded."), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
+ BoxSizer3->Add(StaticText1, 3, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 10);
+ StaticLine2 = new wxStaticLine(Panel2, ID_STATICLINE2, wxDefaultPosition, wxSize(10,-1), wxLI_HORIZONTAL, _T("ID_STATICLINE2"));
+ BoxSizer3->Add(StaticLine2, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer5 = new wxBoxSizer(wxHORIZONTAL);
+ Button1 = new wxButton(Panel2, ID_BUTTON1, _("Resume simulation"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1"));
+ Button1->Disable();
+ BoxSizer5->Add(Button1, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer3->Add(BoxSizer5, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ Panel2->SetSizer(BoxSizer3);
+ BoxSizer3->Fit(Panel2);
+ BoxSizer3->SetSizeHints(Panel2);
+ Panel3 = new wxPanel(Notebook1, ID_PANEL3, wxPoint(96,8), wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL3"));
+ Panel3->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNHIGHLIGHT));
+ BoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
+ BoxSizer20 = new wxBoxSizer(wxVERTICAL);
+ StaticBoxSizer8 = new wxStaticBoxSizer(wxHORIZONTAL, Panel3, _("Neural network parameters"));
+ BoxSizer21 = new wxBoxSizer(wxVERTICAL);
+ StaticText31 = new wxStaticText(Panel3, ID_STATICTEXT31, _("Network structure"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT31"));
+ BoxSizer21->Add(StaticText31, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText32 = new wxStaticText(Panel3, ID_STATICTEXT32, _("Node structure"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT32"));
+ BoxSizer21->Add(StaticText32, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText33 = new wxStaticText(Panel3, ID_STATICTEXT33, _("Nodes per hidden layer"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT33"));
+ BoxSizer21->Add(StaticText33, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer8->Add(BoxSizer21, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer22 = new wxBoxSizer(wxVERTICAL);
+ Choice1 = new wxChoice(Panel3, ID_CHOICE1, wxDefaultPosition, wxDefaultSize, 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE1"));
+ Choice1->SetSelection( Choice1->Append(_("Single MLP")) );
+ Choice1->Append(_("Dual MLP"));
+ Choice1->Append(_("Simple RN"));
+ Choice1->Append(_("Fully RN"));
+ BoxSizer22->Add(Choice1, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
+ Choice2 = new wxChoice(Panel3, ID_CHOICE2, wxDefaultPosition, wxDefaultSize, 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE2"));
+ Choice2->SetSelection( Choice2->Append(_("Neuron")) );
+ Choice2->Append(_("Memory cell"));
+ BoxSizer22->Add(Choice2, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
+ TextCtrl18 = new wxTextCtrl(Panel3, ID_TEXTCTRL18, _("80"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL18"));
+ BoxSizer22->Add(TextCtrl18, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
+ StaticBoxSizer8->Add(BoxSizer22, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer20->Add(StaticBoxSizer8, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer10 = new wxStaticBoxSizer(wxHORIZONTAL, Panel3, _("Population parameters"));
+ BoxSizer25 = new wxBoxSizer(wxVERTICAL);
+ StaticText35 = new wxStaticText(Panel3, ID_STATICTEXT35, _("Sub-population size"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT35"));
+ BoxSizer25->Add(StaticText35, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText34 = new wxStaticText(Panel3, ID_STATICTEXT34, _("Sub-population quantity"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT34"));
+ BoxSizer25->Add(StaticText34, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText36 = new wxStaticText(Panel3, ID_STATICTEXT36, _("Elites per generation"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT36"));
+ BoxSizer25->Add(StaticText36, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer10->Add(BoxSizer25, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer26 = new wxBoxSizer(wxVERTICAL);
+ TextCtrl22 = new wxTextCtrl(Panel3, ID_TEXTCTRL22, _("20"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL22"));
+ BoxSizer26->Add(TextCtrl22, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl23 = new wxTextCtrl(Panel3, ID_TEXTCTRL23, _("20"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL23"));
+ BoxSizer26->Add(TextCtrl23, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl24 = new wxTextCtrl(Panel3, ID_TEXTCTRL24, _("40"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL24"));
+ BoxSizer26->Add(TextCtrl24, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer10->Add(BoxSizer26, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer20->Add(StaticBoxSizer10, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer9 = new wxStaticBoxSizer(wxHORIZONTAL, Panel3, _("Fitness bonuses"));
+ BoxSizer23 = new wxBoxSizer(wxVERTICAL);
+ StaticText28 = new wxStaticText(Panel3, ID_STATICTEXT28, _("Per pellet"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT28"));
+ BoxSizer23->Add(StaticText28, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText30 = new wxStaticText(Panel3, ID_STATICTEXT30, _("Per guppy"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT30"));
+ BoxSizer23->Add(StaticText30, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText29 = new wxStaticText(Panel3, ID_STATICTEXT29, _("Per corpse (max)"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT29"));
+ BoxSizer23->Add(StaticText29, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer9->Add(BoxSizer23, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer24 = new wxBoxSizer(wxVERTICAL);
+ TextCtrl19 = new wxTextCtrl(Panel3, ID_TEXTCTRL19, _("9000"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL19"));
+ BoxSizer24->Add(TextCtrl19, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl20 = new wxTextCtrl(Panel3, ID_TEXTCTRL20, _("36000"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL20"));
+ BoxSizer24->Add(TextCtrl20, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl21 = new wxTextCtrl(Panel3, ID_TEXTCTRL21, _("36000"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL21"));
+ BoxSizer24->Add(TextCtrl21, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer9->Add(BoxSizer24, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer20->Add(StaticBoxSizer9, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer6->Add(BoxSizer20, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer7 = new wxBoxSizer(wxVERTICAL);
+ StaticBoxSizer1 = new wxStaticBoxSizer(wxHORIZONTAL, Panel3, _("Dish parameters"));
+ BoxSizer15 = new wxBoxSizer(wxVERTICAL);
+ StaticText2 = new wxStaticText(Panel3, ID_STATICTEXT2, _("Dish radius"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2"));
+ StaticText2->SetHelpText(_("Size of the circular dish that guppies live in"));
+ BoxSizer15->Add(StaticText2, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer1->Add(BoxSizer15, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer16 = new wxBoxSizer(wxVERTICAL);
+ TextCtrl1 = new wxTextCtrl(Panel3, ID_TEXTCTRL1, _("40"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
+ BoxSizer16->Add(TextCtrl1, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer1->Add(BoxSizer16, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer7->Add(StaticBoxSizer1, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer2 = new wxStaticBoxSizer(wxHORIZONTAL, Panel3, _("Entity parameters"));
+ BoxSizer8 = new wxBoxSizer(wxVERTICAL);
+ StaticText3 = new wxStaticText(Panel3, ID_STATICTEXT3, _("Zapper random force"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT3"));
+ BoxSizer8->Add(StaticText3, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText4 = new wxStaticText(Panel3, ID_STATICTEXT4, _("Zapper random torque"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT4"));
+ BoxSizer8->Add(StaticText4, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText5 = new wxStaticText(Panel3, ID_STATICTEXT5, _("Zapper quantity"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT5"));
+ BoxSizer8->Add(StaticText5, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText6 = new wxStaticText(Panel3, ID_STATICTEXT6, _("Pellet quantity"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT6"));
+ BoxSizer8->Add(StaticText6, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText7 = new wxStaticText(Panel3, ID_STATICTEXT7, _("Pellet creation delay"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT7"));
+ BoxSizer8->Add(StaticText7, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText8 = new wxStaticText(Panel3, ID_STATICTEXT8, _("Start scarce"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT8"));
+ BoxSizer8->Add(StaticText8, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText9 = new wxStaticText(Panel3, ID_STATICTEXT9, _("Corpse decay"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT9"));
+ BoxSizer8->Add(StaticText9, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText10 = new wxStaticText(Panel3, ID_STATICTEXT10, _("Corpse decay rate"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT10"));
+ BoxSizer8->Add(StaticText10, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer2->Add(BoxSizer8, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer9 = new wxBoxSizer(wxVERTICAL);
+ TextCtrl2 = new wxTextCtrl(Panel3, ID_TEXTCTRL2, _("50"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL2"));
+ BoxSizer9->Add(TextCtrl2, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl3 = new wxTextCtrl(Panel3, ID_TEXTCTRL3, _("150"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL3"));
+ BoxSizer9->Add(TextCtrl3, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl4 = new wxTextCtrl(Panel3, ID_TEXTCTRL4, _("20"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL4"));
+ BoxSizer9->Add(TextCtrl4, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl5 = new wxTextCtrl(Panel3, ID_TEXTCTRL5, _("400"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL5"));
+ BoxSizer9->Add(TextCtrl5, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl6 = new wxTextCtrl(Panel3, ID_TEXTCTRL6, _("150"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL6"));
+ BoxSizer9->Add(TextCtrl6, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ CheckBox1 = new wxCheckBox(Panel3, ID_CHECKBOX1, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX1"));
+ CheckBox1->SetValue(false);
+ BoxSizer9->Add(CheckBox1, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ CheckBox2 = new wxCheckBox(Panel3, ID_CHECKBOX2, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX2"));
+ CheckBox2->SetValue(true);
+ BoxSizer9->Add(CheckBox2, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl8 = new wxTextCtrl(Panel3, ID_TEXTCTRL8, _("3600"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL8"));
+ BoxSizer9->Add(TextCtrl8, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer2->Add(BoxSizer9, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer7->Add(StaticBoxSizer2, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer5 = new wxStaticBoxSizer(wxHORIZONTAL, Panel3, _("Colors"));
+ BoxSizer17 = new wxBoxSizer(wxVERTICAL);
+ StaticText22 = new wxStaticText(Panel3, ID_STATICTEXT22, _("Background"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT22"));
+ BoxSizer17->Add(StaticText22, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText23 = new wxStaticText(Panel3, ID_STATICTEXT23, _("Dish fill (fog)"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT23"));
+ BoxSizer17->Add(StaticText23, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText24 = new wxStaticText(Panel3, ID_STATICTEXT24, _("Zappers"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT24"));
+ BoxSizer17->Add(StaticText24, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText25 = new wxStaticText(Panel3, ID_STATICTEXT25, _("Pellets"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT25"));
+ BoxSizer17->Add(StaticText25, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText26 = new wxStaticText(Panel3, ID_STATICTEXT26, _("Corpses"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT26"));
+ BoxSizer17->Add(StaticText26, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText27 = new wxStaticText(Panel3, ID_STATICTEXT27, _("Guppies"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT27"));
+ BoxSizer17->Add(StaticText27, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer5->Add(BoxSizer17, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer18 = new wxBoxSizer(wxVERTICAL);
+ ColourPickerCtrl1 = new wxColourPickerCtrl(Panel3, ID_COLOURPICKERCTRL1, wxColour(15,15,15), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_COLOURPICKERCTRL1"));
+ BoxSizer18->Add(ColourPickerCtrl1, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
+ ColourPickerCtrl2 = new wxColourPickerCtrl(Panel3, ID_COLOURPICKERCTRL2, wxColour(0,0,0), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_COLOURPICKERCTRL2"));
+ BoxSizer18->Add(ColourPickerCtrl2, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
+ ColourPickerCtrl3 = new wxColourPickerCtrl(Panel3, ID_COLOURPICKERCTRL3, wxColour(0,0,255), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_COLOURPICKERCTRL3"));
+ BoxSizer18->Add(ColourPickerCtrl3, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
+ ColourPickerCtrl4 = new wxColourPickerCtrl(Panel3, ID_COLOURPICKERCTRL4, wxColour(0,255,0), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_COLOURPICKERCTRL4"));
+ BoxSizer18->Add(ColourPickerCtrl4, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
+ ColourPickerCtrl5 = new wxColourPickerCtrl(Panel3, ID_COLOURPICKERCTRL5, wxColour(255,0,0), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_COLOURPICKERCTRL5"));
+ BoxSizer18->Add(ColourPickerCtrl5, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
+ ColourPickerCtrl6 = new wxColourPickerCtrl(Panel3, ID_COLOURPICKERCTRL6, wxColour(255,0,0), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_COLOURPICKERCTRL6"));
+ BoxSizer18->Add(ColourPickerCtrl6, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer5->Add(BoxSizer18, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer7->Add(StaticBoxSizer5, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer6->Add(BoxSizer7, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer10 = new wxBoxSizer(wxVERTICAL);
+ StaticBoxSizer3 = new wxStaticBoxSizer(wxHORIZONTAL, Panel3, _("Guppy parameters"));
+ BoxSizer11 = new wxBoxSizer(wxVERTICAL);
+ StaticText11 = new wxStaticText(Panel3, ID_STATICTEXT11, _("Activation delay"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT11"));
+ BoxSizer11->Add(StaticText11, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText12 = new wxStaticText(Panel3, ID_STATICTEXT12, _("Thrust force"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT12"));
+ BoxSizer11->Add(StaticText12, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText13 = new wxStaticText(Panel3, ID_STATICTEXT13, _("Thrust radius"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT13"));
+ BoxSizer11->Add(StaticText13, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText14 = new wxStaticText(Panel3, ID_STATICTEXT14, _("Initial energy"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT14"));
+ BoxSizer11->Add(StaticText14, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText15 = new wxStaticText(Panel3, ID_STATICTEXT15, _("Max energy"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT15"));
+ BoxSizer11->Add(StaticText15, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText16 = new wxStaticText(Panel3, ID_STATICTEXT16, _("Aging rate"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT16"));
+ BoxSizer11->Add(StaticText16, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText17 = new wxStaticText(Panel3, ID_STATICTEXT17, _("Leave corpse"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT17"));
+ BoxSizer11->Add(StaticText17, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer3->Add(BoxSizer11, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer12 = new wxBoxSizer(wxVERTICAL);
+ TextCtrl7 = new wxTextCtrl(Panel3, ID_TEXTCTRL7, _("120"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL7"));
+ BoxSizer12->Add(TextCtrl7, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl9 = new wxTextCtrl(Panel3, ID_TEXTCTRL9, _("5"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL9"));
+ BoxSizer12->Add(TextCtrl9, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl10 = new wxTextCtrl(Panel3, ID_TEXTCTRL10, _("0.05"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL10"));
+ BoxSizer12->Add(TextCtrl10, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl11 = new wxTextCtrl(Panel3, ID_TEXTCTRL11, _("60"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL11"));
+ BoxSizer12->Add(TextCtrl11, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl12 = new wxTextCtrl(Panel3, ID_TEXTCTRL12, _("180"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL12"));
+ BoxSizer12->Add(TextCtrl12, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl13 = new wxTextCtrl(Panel3, ID_TEXTCTRL13, _("600"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL13"));
+ BoxSizer12->Add(TextCtrl13, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ CheckBox3 = new wxCheckBox(Panel3, ID_CHECKBOX3, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX3"));
+ CheckBox3->SetValue(true);
+ BoxSizer12->Add(CheckBox3, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer3->Add(BoxSizer12, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer10->Add(StaticBoxSizer3, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer4 = new wxStaticBoxSizer(wxHORIZONTAL, Panel3, _("Energy transfers"));
+ BoxSizer13 = new wxBoxSizer(wxVERTICAL);
+ StaticText18 = new wxStaticText(Panel3, ID_STATICTEXT18, _("From zappers"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT18"));
+ BoxSizer13->Add(StaticText18, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText19 = new wxStaticText(Panel3, ID_STATICTEXT19, _("From pellets"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT19"));
+ BoxSizer13->Add(StaticText19, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText20 = new wxStaticText(Panel3, ID_STATICTEXT20, _("From other guppies"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT20"));
+ BoxSizer13->Add(StaticText20, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticText21 = new wxStaticText(Panel3, ID_STATICTEXT21, _("From corpses (max)"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT21"));
+ BoxSizer13->Add(StaticText21, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer4->Add(BoxSizer13, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer14 = new wxBoxSizer(wxVERTICAL);
+ TextCtrl14 = new wxTextCtrl(Panel3, ID_TEXTCTRL14, _("-20"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL14"));
+ BoxSizer14->Add(TextCtrl14, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl15 = new wxTextCtrl(Panel3, ID_TEXTCTRL15, _("15"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL15"));
+ BoxSizer14->Add(TextCtrl15, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl16 = new wxTextCtrl(Panel3, ID_TEXTCTRL16, _("60"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL16"));
+ BoxSizer14->Add(TextCtrl16, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ TextCtrl17 = new wxTextCtrl(Panel3, ID_TEXTCTRL17, _("60"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL17"));
+ BoxSizer14->Add(TextCtrl17, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer4->Add(BoxSizer14, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer10->Add(StaticBoxSizer4, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer6 = new wxStaticBoxSizer(wxHORIZONTAL, Panel3, _("Load parameters"));
+ FilePickerCtrl2 = new wxFilePickerCtrl(Panel3, ID_FILEPICKERCTRL2, _T("prms/"), _("Load parameters"), _T("*.prms"), wxDefaultPosition, wxDefaultSize, wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL, wxDefaultValidator, _T("ID_FILEPICKERCTRL2"));
+ StaticBoxSizer6->Add(FilePickerCtrl2, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer10->Add(StaticBoxSizer6, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ StaticBoxSizer7 = new wxStaticBoxSizer(wxHORIZONTAL, Panel3, _("Save parameters"));
+ FilePickerCtrl3 = new wxFilePickerCtrl(Panel3, ID_FILEPICKERCTRL3, _T("prms/"), _("Save parameters"), _T("*.prms"), wxDefaultPosition, wxDefaultSize, wxFLP_OVERWRITE_PROMPT|wxFLP_SAVE, wxDefaultValidator, _T("ID_FILEPICKERCTRL3"));
+ StaticBoxSizer7->Add(FilePickerCtrl3, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ Button5 = new wxButton(Panel3, ID_BUTTON5, _("Save as default"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON5"));
+ StaticBoxSizer7->Add(Button5, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer10->Add(StaticBoxSizer7, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer19 = new wxBoxSizer(wxHORIZONTAL);
+ Button2 = new wxButton(Panel3, ID_BUTTON2, _("Begin new simulation"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2"));
+ BoxSizer19->Add(Button2, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ BoxSizer10->Add(BoxSizer19, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 10);
+ BoxSizer6->Add(BoxSizer10, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ Panel3->SetSizer(BoxSizer6);
+ BoxSizer6->Fit(Panel3);
+ BoxSizer6->SetSizeHints(Panel3);
+ Notebook1->AddPage(Panel4, _("Welcome"), false);
+ Notebook1->AddPage(Panel2, _("Load simulation"), false);
+ Notebook1->AddPage(Panel3, _("New simulation"), false);
+ BoxSizer2->Add(Notebook1, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+ Panel1->SetSizer(BoxSizer2);
+ BoxSizer2->Fit(Panel1);
+ BoxSizer2->SetSizeHints(Panel1);
+ BoxSizer1->Add(Panel1, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
+ SetSizer(BoxSizer1);
+ BoxSizer1->Fit(this);
+ BoxSizer1->SetSizeHints(this);
+ Center();
+
+ Connect(ID_BUTTON4,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&Guppies1_0Dialog::OnButton4Click);
+ Connect(ID_BUTTON3,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&Guppies1_0Dialog::OnButton3Click);
+ Connect(ID_CHECKBOX2,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&Guppies1_0Dialog::OnCheckBox2Click);
+ Connect(ID_FILEPICKERCTRL2,wxEVT_COMMAND_FILEPICKER_CHANGED,(wxObjectEventFunction)&Guppies1_0Dialog::OnFilePickerCtrl2FileChanged);
+ Connect(ID_FILEPICKERCTRL3,wxEVT_COMMAND_FILEPICKER_CHANGED,(wxObjectEventFunction)&Guppies1_0Dialog::OnFilePickerCtrl3FileChanged);
+ Connect(ID_BUTTON2,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&Guppies1_0Dialog::OnBeginNewSimulation);
+ Connect(ID_NOTEBOOK1,wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED,(wxObjectEventFunction)&Guppies1_0Dialog::OnNotebook1PageChanged);
+ Connect(wxID_ANY,wxEVT_INIT_DIALOG,(wxObjectEventFunction)&Guppies1_0Dialog::OnInit);
+ //*)
+
+ SetIcon(wxICON(aaaa));
+}
+
+Guppies1_0Dialog::~Guppies1_0Dialog()
+{
+ //(*Destroy(Guppies1_0Dialog)
+ //*)
+}
+
+void Guppies1_0Dialog::OnQuit(wxCommandEvent& event)
+{
+ Close();
+}
+
+void Guppies1_0Dialog::OnAbout(wxCommandEvent& event)
+{
+ wxString msg = wxbuildinfo(long_f);
+ wxMessageBox(msg, _("Welcome to..."));
+}
+
+void Guppies1_0Dialog::OnNotebook1PageChanged(wxNotebookEvent& event)
+{
+}
+
+void Guppies1_0Dialog::OnInit(wxInitDialogEvent& event)
+{
+}
+
+void Guppies1_0Dialog::OnButton4Click(wxCommandEvent& event)
+{
+ Notebook1->SetSelection(1);
+}
+
+void Guppies1_0Dialog::OnButton3Click(wxCommandEvent& event)
+{
+ Notebook1->SetSelection(2);
+}
+
+void Guppies1_0Dialog::OnCheckBox2Click(wxCommandEvent& event)
+{
+ if (CheckBox2->IsChecked())
+ {
+ TextCtrl8->Enable();
+ }
+ else
+ {
+ TextCtrl8->Disable();
+ }
+}
+
+
+// APLICATION STARTUP POINT ////////////////////////////////////////////////////
+#include "Simulation/GuppiesInclude.hpp"
+
+void Guppies1_0Dialog::OnBeginNewSimulation(wxCommandEvent& event)
+{
+ Params params;
+
+ // Neural network parameters
+ switch(Choice1->GetCurrentSelection())
+ {
+ case 0:
+ params.netClass = SINGLE_MLP;
+ break;
+ case 1:
+ params.netClass = DUAL_MLP;
+ break;
+ case 2:
+ params.netClass = SIMPLE_RN;
+ break;
+ case 3:
+ params.netClass = FULLY_RN;
+ break;
+ }
+
+ switch (Choice2->GetCurrentSelection())
+ {
+ case 0:
+ params.nodeClass = NEURON;
+ break;
+ case 1:
+ params.nodeClass = MEMORY_CELL;
+ break;
+ }
+
+ unsigned npHiddenLayer = strtoul(TextCtrl18->GetLineText(0).mb_str(), nullptr, 0);
+ params.npHiddenLayer = npHiddenLayer;
+
+ // Population parameters
+ unsigned popSize = strtoul(TextCtrl22->GetLineText(0).mb_str(), nullptr, 0);
+ params.popSize = popSize;
+
+ unsigned popQtty = strtoul(TextCtrl23->GetLineText(0).mb_str(), nullptr, 0);
+ params.popQtty = popQtty;
+
+ unsigned elites = strtoul(TextCtrl24->GetLineText(0).mb_str(), nullptr, 0);
+ params.elites = elites;
+
+ // Fitness bonuses
+ int forPellet = strtol(TextCtrl19->GetLineText(0).mb_str(), nullptr, 0);
+ params.forPellet = forPellet;
+
+ int forGuppie = strtol(TextCtrl20->GetLineText(0).mb_str(), nullptr, 0);
+ params.forGuppie = forGuppie;
+
+ int forCorpse = strtol(TextCtrl21->GetLineText(0).mb_str(), nullptr, 0);
+ params.forCorpse = forCorpse;
+
+ // World (dish) parameters
+ float worldRad = strtof(TextCtrl1->GetLineText(0).mb_str(), nullptr);
+ params.worldRad = worldRad;
+
+ // Entity parameters
+ float zapperForce = strtof(TextCtrl2->GetLineText(0).mb_str(), nullptr);
+ params.zapperForce = zapperForce;
+
+ float zapperTorque = strtof(TextCtrl3->GetLineText(0).mb_str(), nullptr);
+ params.zapperTorque = zapperTorque;
+
+ unsigned zapperQtty = strtoul(TextCtrl4->GetLineText(0).mb_str(), nullptr, 0);
+ params.zapperQtty = zapperQtty;
+
+ unsigned pelletQtty = strtoul(TextCtrl5->GetLineText(0).mb_str(), nullptr, 0);
+ params.pelletQtty = pelletQtty;
+
+ unsigned pelletCreationDelay = strtoul(TextCtrl6->GetLineText(0).mb_str(), nullptr, 0);
+ params.pelletCreationDelay = pelletCreationDelay;
+
+ params.startScarce = CheckBox1->IsChecked();
+ params.corpseDecay = CheckBox2->IsChecked();
+
+ unsigned corpseDecayTime = strtoul(TextCtrl8->GetLineText(0).mb_str(), nullptr, 0);
+ params.corpseDecayTime = corpseDecayTime;
+
+ // Colors
+ params.clearColor.r = ColourPickerCtrl1->GetColour().Red();
+ params.clearColor.g = ColourPickerCtrl1->GetColour().Green();
+ params.clearColor.b = ColourPickerCtrl1->GetColour().Blue();
+
+ params.worldColor.r = ColourPickerCtrl2->GetColour().Red();
+ params.worldColor.g = ColourPickerCtrl2->GetColour().Green();
+ params.worldColor.b = ColourPickerCtrl2->GetColour().Blue();
+
+ params.zapperColor.r = ColourPickerCtrl3->GetColour().Red();
+ params.zapperColor.g = ColourPickerCtrl3->GetColour().Green();
+ params.zapperColor.b = ColourPickerCtrl3->GetColour().Blue();
+
+ params.pelletColor.r = ColourPickerCtrl4->GetColour().Red();
+ params.pelletColor.g = ColourPickerCtrl4->GetColour().Green();
+ params.pelletColor.b = ColourPickerCtrl4->GetColour().Blue();
+
+ params.corpseColor.r = ColourPickerCtrl5->GetColour().Red();
+ params.corpseColor.g = ColourPickerCtrl5->GetColour().Green();
+ params.corpseColor.b = ColourPickerCtrl5->GetColour().Blue();
+
+ params.guppieColorI.r = ColourPickerCtrl6->GetColour().Red();
+ params.guppieColorI.g = ColourPickerCtrl6->GetColour().Green();
+ params.guppieColorI.b = ColourPickerCtrl6->GetColour().Blue();
+
+ // Guppie parameters
+ unsigned activationDelay = strtoul(TextCtrl7->GetLineText(0).mb_str(), nullptr, 0);
+ params.activationDelay = activationDelay;
+
+ float thrustForce = strtof(TextCtrl9->GetLineText(0).mb_str(), nullptr);
+ params.thrustForce = thrustForce;
+
+ float thrustRadius = strtof(TextCtrl10->GetLineText(0).mb_str(), nullptr);
+ params.thrustRadius = thrustRadius;
+
+ float initEnergy = strtof(TextCtrl11->GetLineText(0).mb_str(), nullptr);
+ params.initEnergy = initEnergy;
+
+ float maxEnergy = strtof(TextCtrl12->GetLineText(0).mb_str(), nullptr);
+ params.maxEnergy = maxEnergy;
+
+ float agingRate = strtof(TextCtrl13->GetLineText(0).mb_str(), nullptr);
+ params.agingRate = agingRate;
+
+ params.leaveCorpse = CheckBox3->IsChecked();
+
+ // Energy transfers
+ float etFromZapper = strtof(TextCtrl14->GetLineText(0).mb_str(), nullptr);
+ params.etFromZapper = etFromZapper;
+
+ float etFromPellet = strtof(TextCtrl15->GetLineText(0).mb_str(), nullptr);
+ params.etFromPellet = etFromPellet;
+
+ float etFromGuppie = strtof(TextCtrl16->GetLineText(0).mb_str(), nullptr);
+ params.etFromGuppie = etFromGuppie;
+
+ float etFromCorpse = strtof(TextCtrl17->GetLineText(0).mb_str(), nullptr);
+ params.etFromCorpse = etFromCorpse;
+
+ // BEGIN SIMULATION ======================================================//
+ Close();
+
+ SimFitness simulation;
+ simulation.createNew(params);
+ simulation.execute();
+}
+
+void Guppies1_0Dialog::OnFilePickerCtrl2FileChanged(wxFileDirPickerEvent& event)
+{
+}
+
+void Guppies1_0Dialog::OnFilePickerCtrl3FileChanged(wxFileDirPickerEvent& event)
+{
+ wxTextFile file(FilePickerCtrl3->GetPath());
+ file.Create();
+
+ file.AddLine("[BEGIN PARAMS]");
+
+ file.AddLine(wxString::Format(("%i"), (int)Choice1->GetCurrentSelection()));
+ file.AddLine(wxString::Format(("%i"), (int)Choice2->GetCurrentSelection()));
+
+ file.AddLine(TextCtrl18->GetLineText(0));
+
+ file.AddLine(TextCtrl22->GetLineText(0));
+ file.AddLine(TextCtrl23->GetLineText(0));
+ file.AddLine(TextCtrl24->GetLineText(0));
+
+ file.AddLine(TextCtrl19->GetLineText(0));
+ file.AddLine(TextCtrl20->GetLineText(0));
+ file.AddLine(TextCtrl21->GetLineText(0));
+
+ file.AddLine(TextCtrl1->GetLineText(0));
+
+ file.AddLine(TextCtrl2->GetLineText(0));
+ file.AddLine(TextCtrl3->GetLineText(0));
+ file.AddLine(TextCtrl4->GetLineText(0));
+ file.AddLine(TextCtrl5->GetLineText(0));
+ file.AddLine(TextCtrl6->GetLineText(0));
+
+ file.AddLine(wxString::Format(("%i"), (int)CheckBox1->IsChecked()));
+ file.AddLine(wxString::Format(("%i"), (int)CheckBox2->IsChecked()));
+
+ file.AddLine(TextCtrl8->GetLineText(0));
+
+ file.AddLine(ColourPickerCtrl1->GetColour().GetAsString());
+ file.AddLine(ColourPickerCtrl2->GetColour().GetAsString());
+ file.AddLine(ColourPickerCtrl3->GetColour().GetAsString());
+ file.AddLine(ColourPickerCtrl4->GetColour().GetAsString());
+ file.AddLine(ColourPickerCtrl5->GetColour().GetAsString());
+ file.AddLine(ColourPickerCtrl6->GetColour().GetAsString());
+
+ file.AddLine(TextCtrl7->GetLineText(0));
+ file.AddLine(TextCtrl9->GetLineText(0));
+ file.AddLine(TextCtrl10->GetLineText(0));
+ file.AddLine(TextCtrl11->GetLineText(0));
+ file.AddLine(TextCtrl12->GetLineText(0));
+ file.AddLine(TextCtrl13->GetLineText(0));
+
+ file.AddLine(wxString::Format(("%i"), (int)CheckBox3->IsChecked()));
+
+ file.AddLine(TextCtrl14->GetLineText(0));
+ file.AddLine(TextCtrl15->GetLineText(0));
+ file.AddLine(TextCtrl16->GetLineText(0));
+ file.AddLine(TextCtrl17->GetLineText(0));
+
+ file.AddLine("[END PARAMS]");
+
+ file.Write();
+ file.Close();
+}
diff --git a/Guppies1_0Main.h b/Guppies1_0Main.h
new file mode 100644
index 0000000..9cef6cd
--- /dev/null
+++ b/Guppies1_0Main.h
@@ -0,0 +1,246 @@
+/***************************************************************
+ * Name: Guppies1_0Main.h
+ * Purpose: Defines Application Frame
+ * Author: Paul T. Oliver (nino.trullen@gmail.com)
+ * Created: 2012-11-13
+ * Copyright: Paul T. Oliver ()
+ * License:
+ **************************************************************/
+
+#ifndef GUPPIES1_0MAIN_H
+#define GUPPIES1_0MAIN_H
+
+//(*Headers(Guppies1_0Dialog)
+#include <wx/notebook.h>
+#include <wx/sizer.h>
+#include <wx/stattext.h>
+#include <wx/textctrl.h>
+#include <wx/checkbox.h>
+#include <wx/filepicker.h>
+#include <wx/statline.h>
+#include <wx/panel.h>
+#include <wx/hyperlink.h>
+#include <wx/choice.h>
+#include <wx/statbmp.h>
+#include <wx/button.h>
+#include <wx/dialog.h>
+#include <wx/clrpicker.h>
+//*)
+
+class Guppies1_0Dialog: public wxDialog
+{
+ public:
+
+ Guppies1_0Dialog(wxWindow* parent,wxWindowID id = -1);
+ virtual ~Guppies1_0Dialog();
+
+ private:
+
+ //(*Handlers(Guppies1_0Dialog)
+ void OnQuit(wxCommandEvent& event);
+ void OnAbout(wxCommandEvent& event);
+ void OnNotebook1PageChanged(wxNotebookEvent& event);
+ void OnInit(wxInitDialogEvent& event);
+ void OnButton4Click(wxCommandEvent& event);
+ void OnButton3Click(wxCommandEvent& event);
+ void OnBeginNewSimulation(wxCommandEvent& event);
+ void OnCheckBox2Click(wxCommandEvent& event);
+ void OnFilePickerCtrl2FileChanged(wxFileDirPickerEvent& event);
+ void OnFilePickerCtrl3FileChanged(wxFileDirPickerEvent& event);
+ //*)
+
+ //(*Identifiers(Guppies1_0Dialog)
+ static const long ID_STATICBITMAP1;
+ static const long ID_STATICLINE3;
+ static const long ID_STATICTEXT37;
+ static const long ID_STATICTEXT39;
+ static const long ID_HYPERLINKCTRL1;
+ static const long ID_BUTTON4;
+ static const long ID_BUTTON3;
+ static const long ID_STATICTEXT38;
+ static const long ID_PANEL4;
+ static const long ID_FILEPICKERCTRL1;
+ static const long ID_STATICLINE1;
+ static const long ID_STATICTEXT1;
+ static const long ID_STATICLINE2;
+ static const long ID_BUTTON1;
+ static const long ID_PANEL2;
+ static const long ID_STATICTEXT31;
+ static const long ID_STATICTEXT32;
+ static const long ID_STATICTEXT33;
+ static const long ID_CHOICE1;
+ static const long ID_CHOICE2;
+ static const long ID_TEXTCTRL18;
+ static const long ID_STATICTEXT35;
+ static const long ID_STATICTEXT34;
+ static const long ID_STATICTEXT36;
+ static const long ID_TEXTCTRL22;
+ static const long ID_TEXTCTRL23;
+ static const long ID_TEXTCTRL24;
+ static const long ID_STATICTEXT28;
+ static const long ID_STATICTEXT30;
+ static const long ID_STATICTEXT29;
+ static const long ID_TEXTCTRL19;
+ static const long ID_TEXTCTRL20;
+ static const long ID_TEXTCTRL21;
+ static const long ID_STATICTEXT2;
+ static const long ID_TEXTCTRL1;
+ static const long ID_STATICTEXT3;
+ static const long ID_STATICTEXT4;
+ static const long ID_STATICTEXT5;
+ static const long ID_STATICTEXT6;
+ static const long ID_STATICTEXT7;
+ static const long ID_STATICTEXT8;
+ static const long ID_STATICTEXT9;
+ static const long ID_STATICTEXT10;
+ static const long ID_TEXTCTRL2;
+ static const long ID_TEXTCTRL3;
+ static const long ID_TEXTCTRL4;
+ static const long ID_TEXTCTRL5;
+ static const long ID_TEXTCTRL6;
+ static const long ID_CHECKBOX1;
+ static const long ID_CHECKBOX2;
+ static const long ID_TEXTCTRL8;
+ static const long ID_STATICTEXT22;
+ static const long ID_STATICTEXT23;
+ static const long ID_STATICTEXT24;
+ static const long ID_STATICTEXT25;
+ static const long ID_STATICTEXT26;
+ static const long ID_STATICTEXT27;
+ static const long ID_COLOURPICKERCTRL1;
+ static const long ID_COLOURPICKERCTRL2;
+ static const long ID_COLOURPICKERCTRL3;
+ static const long ID_COLOURPICKERCTRL4;
+ static const long ID_COLOURPICKERCTRL5;
+ static const long ID_COLOURPICKERCTRL6;
+ static const long ID_STATICTEXT11;
+ static const long ID_STATICTEXT12;
+ static const long ID_STATICTEXT13;
+ static const long ID_STATICTEXT14;
+ static const long ID_STATICTEXT15;
+ static const long ID_STATICTEXT16;
+ static const long ID_STATICTEXT17;
+ static const long ID_TEXTCTRL7;
+ static const long ID_TEXTCTRL9;
+ static const long ID_TEXTCTRL10;
+ static const long ID_TEXTCTRL11;
+ static const long ID_TEXTCTRL12;
+ static const long ID_TEXTCTRL13;
+ static const long ID_CHECKBOX3;
+ static const long ID_STATICTEXT18;
+ static const long ID_STATICTEXT19;
+ static const long ID_STATICTEXT20;
+ static const long ID_STATICTEXT21;
+ static const long ID_TEXTCTRL14;
+ static const long ID_TEXTCTRL15;
+ static const long ID_TEXTCTRL16;
+ static const long ID_TEXTCTRL17;
+ static const long ID_FILEPICKERCTRL2;
+ static const long ID_FILEPICKERCTRL3;
+ static const long ID_BUTTON5;
+ static const long ID_BUTTON2;
+ static const long ID_PANEL3;
+ static const long ID_NOTEBOOK1;
+ static const long ID_PANEL1;
+ //*)
+
+ //(*Declarations(Guppies1_0Dialog)
+ wxStaticText* StaticText10;
+ wxStaticText* StaticText22;
+ wxStaticText* StaticText9;
+ wxStaticText* StaticText20;
+ wxTextCtrl* TextCtrl4;
+ wxButton* Button4;
+ wxStaticText* StaticText29;
+ wxNotebook* Notebook1;
+ wxStaticText* StaticText37;
+ wxFilePickerCtrl* FilePickerCtrl1;
+ wxStaticText* StaticText13;
+ wxStaticText* StaticText33;
+ wxStaticText* StaticText2;
+ wxPanel* Panel4;
+ wxStaticText* StaticText14;
+ wxStaticText* StaticText30;
+ wxButton* Button1;
+ wxTextCtrl* TextCtrl16;
+ wxStaticText* StaticText26;
+ wxStaticText* StaticText6;
+ wxTextCtrl* TextCtrl6;
+ wxStaticBitmap* StaticBitmap1;
+ wxStaticText* StaticText19;
+ wxStaticText* StaticText32;
+ wxStaticText* StaticText8;
+ wxStaticText* StaticText38;
+ wxStaticText* StaticText11;
+ wxCheckBox* CheckBox3;
+ wxStaticText* StaticText18;
+ wxTextCtrl* TextCtrl19;
+ wxCheckBox* CheckBox2;
+ wxPanel* Panel1;
+ wxStaticText* StaticText31;
+ wxStaticText* StaticText1;
+ wxStaticText* StaticText27;
+ wxColourPickerCtrl* ColourPickerCtrl1;
+ wxStaticText* StaticText3;
+ wxHyperlinkCtrl* HyperlinkCtrl1;
+ wxButton* Button2;
+ wxPanel* Panel3;
+ wxStaticText* StaticText21;
+ wxCheckBox* CheckBox1;
+ wxTextCtrl* TextCtrl18;
+ wxStaticText* StaticText39;
+ wxStaticLine* StaticLine2;
+ wxColourPickerCtrl* ColourPickerCtrl6;
+ wxColourPickerCtrl* ColourPickerCtrl3;
+ wxStaticText* StaticText23;
+ wxStaticText* StaticText24;
+ wxButton* Button5;
+ wxTextCtrl* TextCtrl17;
+ wxTextCtrl* TextCtrl24;
+ wxTextCtrl* TextCtrl14;
+ wxButton* Button3;
+ wxTextCtrl* TextCtrl15;
+ wxStaticText* StaticText5;
+ wxStaticText* StaticText34;
+ wxStaticText* StaticText7;
+ wxTextCtrl* TextCtrl13;
+ wxColourPickerCtrl* ColourPickerCtrl4;
+ wxTextCtrl* TextCtrl21;
+ wxTextCtrl* TextCtrl20;
+ wxTextCtrl* TextCtrl22;
+ wxStaticLine* StaticLine3;
+ wxTextCtrl* TextCtrl8;
+ wxStaticLine* StaticLine1;
+ wxTextCtrl* TextCtrl2;
+ wxColourPickerCtrl* ColourPickerCtrl2;
+ wxTextCtrl* TextCtrl7;
+ wxStaticText* StaticText28;
+ wxBoxSizer* BoxSizer1;
+ wxTextCtrl* TextCtrl1;
+ wxStaticText* StaticText15;
+ wxStaticText* StaticText12;
+ wxTextCtrl* TextCtrl9;
+ wxStaticText* StaticText35;
+ wxPanel* Panel2;
+ wxTextCtrl* TextCtrl5;
+ wxTextCtrl* TextCtrl23;
+ wxColourPickerCtrl* ColourPickerCtrl5;
+ wxStaticText* StaticText25;
+ wxStaticText* StaticText17;
+ wxStaticText* StaticText4;
+ wxStaticText* StaticText36;
+ wxTextCtrl* TextCtrl3;
+ wxTextCtrl* TextCtrl10;
+ wxTextCtrl* TextCtrl12;
+ wxChoice* Choice1;
+ wxFilePickerCtrl* FilePickerCtrl2;
+ wxTextCtrl* TextCtrl11;
+ wxStaticText* StaticText16;
+ wxChoice* Choice2;
+ wxFilePickerCtrl* FilePickerCtrl3;
+ //*)
+
+ DECLARE_EVENT_TABLE()
+};
+
+#endif // GUPPIES1_0MAIN_H
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7c28661
--- /dev/null
+++ b/README.md
@@ -0,0 +1,20 @@
+Neural Guppies is a NeuroEvolution experiment that evolves virtual creatures
+into intelligent beings. It is a personal project aimed to test several
+concepts that interest me, so I thought I should share it with the
+community. However, it has no guaranty and has not been tested in any other
+system but mine. Thus, if you run this on your system, you must do it at your
+own risk. To see a brief introduction on Neural Guppies, visit the following
+links:
+
+- [YouTube Playlist](https://www.youtube.com/watch?v=tCPzYM7B338&list=PLrEmYrpTcDJZZHZP8Qz4JN9PXY6-8O1HZ)
+
+Program is far from finished and can only begin Simulations from scratch
+(loading and saving simulations will be implemented soon). If you close the
+window the simulation will be lost. I've been able to successfully resume
+simulations after putting the computer to Sleep or Hibernate, (without
+closing the simulation window) but this may not work on all systems.
+
+Main concepts tested on this program are:
++ Artificial Neural Networks
++ Genetic Algorithms
++ Neuro-evolution \ No newline at end of file
diff --git a/Simulation/Camera.cpp b/Simulation/Camera.cpp
new file mode 100644
index 0000000..84b98a8
--- /dev/null
+++ b/Simulation/Camera.cpp
@@ -0,0 +1,241 @@
+#include "Camera.hpp"
+#include "SimBase.hpp"
+
+void Camera::create(SimBase *sim)
+{
+ hSim = sim;
+
+ defaultZoom = hSim->prms.worldRad / 200.f;
+ zoom = defaultZoom;
+ prevZoom = zoom;
+ trgtZoom = zoom;
+
+ step = 1;
+ update();
+}
+
+
+void Camera::onResize()
+{
+ sf::View view = hSim->window.getView();
+ sf::Vector2u winSize = hSim->window.getSize();
+ view.setSize(winSize.x * zoom, winSize.y * zoom);
+ view.setCenter(currentCrds);
+ hSim->window.setView(view);
+}
+
+
+void Camera::onClick()
+{
+ prevZoom = zoom;
+ trgtZoom = zoom;
+
+ prevCrds = currentCrds;
+
+ sf::Vector2f mousePos = hSim->window.mapPixelToCoords(sf::Mouse::getPosition(hSim->window));
+ b2Vec2 b2MousePos(mousePos.x, mousePos.y);
+ b2Vec2 additive(0.001f, 0.001f);
+ b2AABB aabb;
+ aabb.upperBound = b2MousePos + additive;
+ aabb.lowerBound = b2MousePos - additive;
+
+ QueryCallback callback;
+ callback.m_point = b2MousePos;
+ hSim->tank.world.QueryAABB(&callback, aabb);
+
+ if (callback.m_fixture)
+ {
+ trgtBody = callback.m_fixture->GetBody();
+ }
+ else
+ {
+ trgtCrds = mousePos;
+ trgtBody = nullptr;
+ }
+
+ isOnFollow = false;
+ step = Params::CAM_STEPS;
+}
+
+
+void Camera::shift(const sf::Vector2f &newTrgtCrds, int zoomInOut, bool release)
+{
+ if (!release && trgtBody)
+ {
+ prevCrds = sf::Vector2f(trgtBody->GetPosition().x, trgtBody->GetPosition().y);
+ currentCrds = sf::Vector2f(trgtBody->GetPosition().x, trgtBody->GetPosition().y);
+ trgtCrds = sf::Vector2f(trgtBody->GetPosition().x, trgtBody->GetPosition().y);
+ isOnFollow = true;
+ }
+ else
+ {
+ trgtBody = nullptr;
+ prevCrds = currentCrds;
+ trgtCrds = newTrgtCrds;
+ isOnFollow = false;
+ }
+
+ prevZoom = zoom;
+ if (zoomInOut)
+ {
+ if (zoomInOut == 1)
+ {
+ trgtZoom = zoom - 0.2f * zoom;
+ }
+ else if (zoomInOut == -1)
+ {
+ trgtZoom = zoom + 0.2f * zoom;
+ }
+ else if (zoomInOut == -2)
+ {
+ trgtZoom = defaultZoom;
+ }
+ }
+ else
+ {
+ trgtZoom = zoom;
+ }
+
+ step = Params::CAM_STEPS;
+}
+
+void Camera::update()
+{
+ if (trgtBody || step)
+ {
+ if (!step)
+ {
+ currentCrds = sf::Vector2f(trgtBody->GetPosition().x, trgtBody->GetPosition().y);
+ }
+ else
+ {
+ if (trgtBody)
+ {
+ trgtCrds = sf::Vector2f(trgtBody->GetPosition().x, trgtBody->GetPosition().y);
+ if (isOnFollow)
+ {
+ prevCrds = trgtCrds;
+ }
+ }
+
+ float f1 = (step - 1.f) / (float)Params::CAM_STEPS;
+ float f2 = 1.f - f1;
+
+ currentCrds = prevCrds * f1 + trgtCrds * f2;
+ zoom = prevZoom * f1 + trgtZoom * f2;
+
+ if (currentCrds.x * currentCrds.x + currentCrds.y * currentCrds.y > hSim->prms.worldRad * hSim->prms.worldRad)
+ {
+ float angle = atanf(currentCrds.y / currentCrds.x);
+ currentCrds.y = sinf(angle) * hSim->prms.worldRad * (currentCrds.x > 1.f ? 1.f : -1.f);
+ currentCrds.x = cosf(angle) * hSim->prms.worldRad * (currentCrds.x > 1.f ? 1.f : -1.f);
+ }
+
+ if (zoom > defaultZoom)
+ {
+ zoom = defaultZoom;
+ }
+ if (zoom < Params::MAX_ZOOM)
+ {
+ zoom = Params::MAX_ZOOM;
+ }
+
+ --step;
+ }
+
+ sf::View view = hSim->window.getView();
+ view.setCenter(currentCrds);
+ view.setSize(hSim->window.getSize().x * zoom, hSim->window.getSize().y * zoom);
+ hSim->window.setView(view);
+ }
+
+ // Prepare low zoom graphics
+ hSim->tank.worldEdges.setOutlineThickness(zoom * 2.f);
+
+ if (zoom > Params::ZAPPER_RAD / 2.f)
+ {
+ if (zoom > Params::ZAPPER_RAD * 2.f)
+ {
+ setCenterRad(hSim->zapperPoint, zoom);
+ hSim->zapperPoint.setFillColor(hSim->prms.zapperColor);
+ }
+ else
+ {
+ setCenterRad(hSim->zapperPoint, Params::ZAPPER_RAD);
+ hSim->zapperPoint.setFillColor(hSim->prms.zapperColor);
+ }
+ }
+ else
+ {
+ setCenterRad(hSim->zapperShell, hSim->prms.ZAPPER_RAD - zoom * 2.f);
+ hSim->zapperShell.setOutlineThickness(zoom * 2.f);
+ }
+
+ if (zoom > Params::PELLET_RAD / 2.f)
+ {
+ if (zoom > Params::PELLET_RAD * 2.f)
+ {
+ setCenterRad(hSim->pelletPoint, zoom);
+ hSim->pelletPoint.setFillColor(hSim->prms.pelletColor);
+ }
+ else
+ {
+ setCenterRad(hSim->pelletPoint, Params::PELLET_RAD);
+ hSim->pelletPoint.setFillColor(hSim->prms.pelletColor);
+ }
+ }
+ else
+ {
+ setCenterRad(hSim->pelletShell, hSim->prms.PELLET_RAD - zoom * 2.f);
+ hSim->pelletShell.setOutlineThickness(zoom * 2.f);
+ }
+
+ if (zoom > Params::CORPSE_RAD / 2.f)
+ {
+ if (zoom > Params::CORPSE_RAD * 2.f)
+ {
+ setCenterRad(hSim->corpsePoint, zoom);
+ hSim->corpsePoint.setFillColor(hSim->prms.corpseColor);
+ }
+ else
+ {
+ setCenterRad(hSim->corpsePoint, Params::CORPSE_RAD);
+ hSim->corpsePoint.setFillColor(hSim->prms.corpseColor);
+ }
+ }
+ else
+ {
+ setCenterRad(hSim->corpseShell, hSim->prms.CORPSE_RAD - zoom * 2.f);
+ hSim->corpseShell.setOutlineThickness(zoom * 2.f);
+ }
+
+ if (zoom > Params::EGG_RAD / 2.f)
+ {
+ if (zoom > Params::EGG_RAD * 2.f)
+ {
+ setCenterRad(hSim->eggPoint, zoom);
+ hSim->eggPoint.setFillColor(hSim->guppN);
+ }
+ else
+ {
+ setCenterRad(hSim->eggPoint, Params::EGG_RAD);
+ hSim->eggPoint.setFillColor(hSim->guppN);
+ }
+ }
+ else
+ {
+ setCenterRad(hSim->guppieEgg, hSim->prms.EGG_RAD - zoom * 2.f);
+ hSim->guppieEgg.setOutlineThickness(zoom * 2.f);
+ }
+
+ if (zoom > Params::GUPPIE_RAD)
+ {
+ setCenterRad(hSim->guppiePoint, zoom);
+ }
+
+ else if (zoom > 0.02f)
+ {
+ setCenterRad(hSim->guppieShell, Params::GUPPIE_RAD - zoom);
+ hSim->guppieShell.setOutlineThickness(zoom);
+ }
+}
diff --git a/Simulation/Camera.hpp b/Simulation/Camera.hpp
new file mode 100644
index 0000000..b6ee8a9
--- /dev/null
+++ b/Simulation/Camera.hpp
@@ -0,0 +1,42 @@
+#ifndef __CAMERA_HPP__
+#define __CAMERA_HPP__
+
+#include <SFML/Graphics.hpp>
+#include <Box2D.h>
+
+class SimBase;
+
+class Camera
+{
+public:
+ void create(SimBase *sim);
+ void onResize();
+ void onClick();
+ void shift(const sf::Vector2f &newTrgtCrds, int zoomInOut = 0, bool release = true);
+ void update();
+
+ sf::Vector2f getCrds() const { return currentCrds; }
+ float getZoom() const { return zoom; }
+
+private:
+ SimBase *hSim = nullptr;
+
+ float defaultZoom = 0.f;
+ float zoom = 0.f;
+ float prevZoom = 0.f;
+ float trgtZoom = 0.f;
+ sf::Vector2f currentCrds = { 0.f, 0.f };
+ sf::Vector2f prevCrds = { 0.f, 0.f };
+ sf::Vector2f trgtCrds = { 0.f, 0.f };
+ unsigned step = 0;
+ bool isOnFollow = false;
+ b2Body *trgtBody = nullptr;
+
+ friend class ContactListener;
+ friend class Zapper;
+ friend class Pellet;
+ friend class Guppie;
+ friend class Corpse;
+};
+
+#endif // __CAMERA_HPP__
diff --git a/Simulation/ContactListener.cpp b/Simulation/ContactListener.cpp
new file mode 100644
index 0000000..6c42365
--- /dev/null
+++ b/Simulation/ContactListener.cpp
@@ -0,0 +1,168 @@
+#include "ContactListener.hpp"
+#include "SimBase.hpp"
+
+void ContactListener::PreSolve(b2Contact *contact, const b2Manifold *oldManifold)
+{
+ b2Body *bodyA = contact->GetFixtureA()->GetBody();
+ b2Body *bodyB = contact->GetFixtureB()->GetBody();
+
+ Guppie *gp1 = nullptr;
+ Guppie *gp2 = nullptr;
+
+ if (bodyA->GetType() == b2_dynamicBody)
+ {
+ if (((Entity *)bodyA->GetUserData())->radius == Params::GUPPIE_RAD)
+ {
+ if (((Guppie *)bodyA->GetUserData())->isActive)
+ {
+ gp1 = (Guppie *)bodyA->GetUserData();
+ }
+ }
+ }
+ if (bodyB->GetType() == b2_dynamicBody)
+ {
+ if (((Entity *)bodyB->GetUserData())->radius == Params::GUPPIE_RAD)
+ {
+ if (((Guppie *)bodyB->GetUserData())->isActive)
+ {
+ gp2 = (Guppie *)bodyB->GetUserData();
+ }
+ }
+ }
+
+ // If only one body is a Guppie
+ if ((gp1 && !gp2) || (!gp1 && gp2))
+ {
+ Guppie *gp = gp1 ? gp1 : gp2;
+ b2Body *bd = gp1 ? bodyB : bodyA;
+
+ if (bd->GetType() == b2_staticBody)
+ {
+ gp->lastContactStep = hSim->prms.contactSteps;
+ gp->lastContact = Guppie::ZAPPER;
+ gp->energy += hSim->prms.etFromZapper;
+ }
+ else
+ {
+ if (((Entity *)bd->GetUserData())->radius == Params::ZAPPER_RAD)
+ {
+ gp->lastContactStep = hSim->prms.contactSteps;
+ gp->lastContact = Guppie::ZAPPER;
+ gp->energy += hSim->prms.etFromZapper;
+ }
+ else
+ {
+ sf::Transform trans;
+ trans.translate(gp->body->GetPosition().x, gp->body->GetPosition().y);
+ trans.rotate(gp->body->GetAngle() * Params::RAD_DGRS);
+ sf::Vector2f beak1 = trans.transformPoint(hSim->beak1.getPoint(1));
+ sf::Vector2f beak2 = trans.transformPoint(hSim->beak2.getPoint(1));
+ float cateteX1 = beak1.x - bd->GetPosition().x;
+ float cateteY1 = beak1.y - bd->GetPosition().y;
+ float cateteX2 = beak2.x - bd->GetPosition().x;
+ float cateteY2 = beak2.y - bd->GetPosition().y;
+ if (((Entity *)bd->GetUserData())->radius == Params::PELLET_RAD)
+ {
+ if (cateteX1 * cateteX1 + cateteY1 * cateteY1 < hSim->prms.PELLET_RAD * hSim->prms.PELLET_RAD ||
+ cateteX2 * cateteX2 + cateteY2 * cateteY2 < hSim->prms.PELLET_RAD * hSim->prms.PELLET_RAD)
+ {
+ gp->lastContactStep = hSim->prms.contactSteps;
+ gp->lastContact = Guppie::PELLET;
+ gp->energy += hSim->prms.etFromPellet;
+ gp->fitness += hSim->prms.forPellet;
+ ((Pellet *)bd->GetUserData())->toBeDestroyed = true;
+ if (hSim->camera.trgtBody == bd)
+ {
+ hSim->camera.prevCrds = hSim->camera.currentCrds;
+ hSim->camera.step = Params::CAM_STEPS;
+ hSim->camera.trgtBody = gp->body;
+ }
+ }
+ }
+ else if (((Entity *)bd->GetUserData())->radius == Params::CORPSE_RAD)
+ {
+ if (cateteX1 * cateteX1 + cateteY1 * cateteY1 < hSim->prms.CORPSE_RAD * hSim->prms.CORPSE_RAD ||
+ cateteX2 * cateteX2 + cateteY2 * cateteY2 < hSim->prms.CORPSE_RAD * hSim->prms.CORPSE_RAD)
+ {
+ gp->lastContactStep = hSim->prms.contactSteps;
+ gp->lastContact = Guppie::CORPSE;
+ gp->energy += ((Corpse *)bd->GetUserData())->energy;
+ gp->fitness += hSim->prms.forCorpse * (((Corpse *)bd->GetUserData())->energy / hSim->prms.etFromCorpse);
+ ((Corpse *)bd->GetUserData())->toBeDestroyed = true;
+ if (hSim->camera.trgtBody == bd)
+ {
+ hSim->camera.prevCrds = hSim->camera.currentCrds;
+ hSim->camera.step = Params::CAM_STEPS;
+ hSim->camera.trgtBody = gp->body;
+ }
+ }
+ }
+ }
+ }
+
+ if (gp->energy > hSim->prms.maxEnergy)
+ {
+ gp->energy = hSim->prms.maxEnergy;
+ }
+ }
+ // If both bodies are guppies
+ else if (gp1 && gp2)
+ {
+ sf::Transform trans1;
+ sf::Transform trans2;
+ trans1.translate(gp1->body->GetPosition().x, gp1->body->GetPosition().y);
+ trans1.rotate(gp1->body->GetAngle() * Params::RAD_DGRS);
+ trans2.translate(gp2->body->GetPosition().x, gp2->body->GetPosition().y);
+ trans2.rotate(gp2->body->GetAngle() * Params::RAD_DGRS);
+
+ sf::Vector2f beak1_1 = trans1.transformPoint(hSim->beak1.getPoint(1));
+ sf::Vector2f beak1_2 = trans1.transformPoint(hSim->beak2.getPoint(1));
+ sf::Vector2f beak2_1 = trans2.transformPoint(hSim->beak1.getPoint(1));
+ sf::Vector2f beak2_2 = trans2.transformPoint(hSim->beak2.getPoint(1));
+
+ float cateteX1_1 = beak1_1.x - gp2->body->GetPosition().x;
+ float cateteY1_1 = beak1_1.y - gp2->body->GetPosition().y;
+ float cateteX2_1 = beak2_1.x - gp2->body->GetPosition().x;
+ float cateteY2_1 = beak2_1.y - gp2->body->GetPosition().y;
+ float cateteX1_2 = beak1_2.x - gp1->body->GetPosition().x;
+ float cateteY1_2 = beak1_2.y - gp1->body->GetPosition().y;
+ float cateteX2_2 = beak2_2.x - gp1->body->GetPosition().x;
+ float cateteY2_2 = beak2_2.y - gp1->body->GetPosition().y;
+
+ if (cateteX1_1 * cateteX1_1 + cateteY1_1 * cateteY1_1 < hSim->prms.GUPPIE_RAD * hSim->prms.GUPPIE_RAD ||
+ cateteX2_1 * cateteX2_1 + cateteY2_1 * cateteY2_1 < hSim->prms.GUPPIE_RAD * hSim->prms.GUPPIE_RAD)
+ {
+ gp1->lastContactStep = hSim->prms.contactSteps;
+ gp1->lastContact = Guppie::GUPPIE;
+ gp1->energy += hSim->prms.etFromGuppie;
+ gp1->fitness += hSim->prms.forGuppie;
+
+ gp2->lastContactStep = hSim->prms.contactSteps;
+ gp2->lastContact = Guppie::GUPPIE;
+ gp2->energy -= hSim->prms.etFromGuppie;
+ }
+
+ if (cateteX1_2 * cateteX1_2 + cateteY1_2 * cateteY1_2 < hSim->prms.GUPPIE_RAD * hSim->prms.GUPPIE_RAD ||
+ cateteX2_2 * cateteX2_2 + cateteY2_2 * cateteY2_2 < hSim->prms.GUPPIE_RAD * hSim->prms.GUPPIE_RAD)
+ {
+ gp1->lastContactStep = hSim->prms.contactSteps;
+ gp1->lastContact = Guppie::GUPPIE;
+ gp1->energy -= hSim->prms.etFromGuppie;
+
+ gp2->lastContactStep = hSim->prms.contactSteps;
+ gp2->lastContact = Guppie::GUPPIE;
+ gp2->energy += hSim->prms.etFromGuppie;
+ gp2->fitness += hSim->prms.forGuppie;
+ }
+
+ if (gp1->energy > hSim->prms.maxEnergy)
+ {
+ gp1->energy = hSim->prms.maxEnergy;
+ }
+
+ if (gp2->energy > hSim->prms.maxEnergy)
+ {
+ gp2->energy = hSim->prms.maxEnergy;
+ }
+ }
+}
diff --git a/Simulation/ContactListener.hpp b/Simulation/ContactListener.hpp
new file mode 100644
index 0000000..4b4d472
--- /dev/null
+++ b/Simulation/ContactListener.hpp
@@ -0,0 +1,16 @@
+#ifndef __CONTACTLISTENER_HPP__
+#define __CONTACTLISTENER_HPP__
+
+#include <Box2D.h>
+
+class SimBase;
+
+class ContactListener : public b2ContactListener
+{
+public:
+ void PreSolve(b2Contact *contact, const b2Manifold *oldManifold);
+
+ SimBase *hSim = nullptr;
+};
+
+#endif // __CONTACTLISTENER_HPP__
diff --git a/Simulation/Corpse.cpp b/Simulation/Corpse.cpp
new file mode 100644
index 0000000..82879ed
--- /dev/null
+++ b/Simulation/Corpse.cpp
@@ -0,0 +1,99 @@
+#include "Corpse.hpp"
+#include "SimBase.hpp"
+
+void Corpse::startup(SimBase *sim)
+{
+ hSim = sim;
+ radius = Params::CORPSE_RAD;
+}
+
+void Corpse::setup(b2Vec2 pos, b2Vec2 lVel, float angle, float aVel)
+{
+ if (!body)
+ {
+ return;
+ }
+
+ lifetime = hSim->prms.corpseDecayTime;
+ energy = hSim->prms.etFromCorpse;
+
+ body->SetTransform(pos, angle);
+ body->SetLinearVelocity(lVel);
+ body->SetAngularVelocity(aVel);
+}
+
+
+void Corpse::update()
+{
+ if (!body)
+ {
+ return;
+ }
+
+ if (hSim->prms.corpseDecay)
+ {
+ --lifetime;
+ energy = hSim->prms.etFromCorpse * ((float)lifetime / (float)hSim->prms.corpseDecayTime);
+ }
+
+ if (!lifetime || toBeDestroyed)
+ {
+ destroy();
+ }
+}
+
+
+void Corpse::destroy()
+{
+ if (hSim->camera.trgtBody == body)
+ {
+ hSim->camera.prevCrds = hSim->camera.currentCrds;
+ hSim->camera.trgtCrds = hSim->camera.currentCrds;
+ hSim->camera.step = 0;
+ hSim->camera.trgtBody = nullptr;
+ }
+
+ toBeDestroyed = false;
+ hSim->tank.world.DestroyBody(body);
+ body = nullptr;
+
+ --hSim->corpseCount;
+ hSim->text.corpseCnt.setString("Corpse count: " + nts(hSim->corpseCount));
+}
+
+
+void Corpse::draw()
+{
+ if (!body)
+ {
+ return;
+ }
+
+ sf::Vector2f vSize = hSim->window.getView().getSize();
+ sf::Vector2f vCent = hSim->window.getView().getCenter();
+ if ( body->GetPosition().x + radius < vCent.x - vSize.x / 2.f ||
+ body->GetPosition().y + radius < vCent.y - vSize.y / 2.f ||
+ body->GetPosition().x - radius > vCent.x + vSize.x / 2.f ||
+ body->GetPosition().y - radius > vCent.y + vSize.y / 2.f )
+ {
+ return;
+ }
+
+ sf::Color corpseColor = mix(hSim->prms.corpseColor, hSim->prms.worldColor, ((float)lifetime / (float)hSim->prms.corpseDecayTime));
+ if (hSim->camera.zoom > Params::CORPSE_RAD / 2.f)
+ {
+ hSim->corpsePoint.setFillColor(corpseColor);
+ hSim->corpsePoint.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->window.draw(hSim->corpsePoint);
+ }
+ else
+ {
+ hSim->corpseShell.setOutlineColor(corpseColor);
+ hSim->corpseShell.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->corpseNucleus.setFillColor(corpseColor);
+ hSim->corpseNucleus.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->corpseNucleus.setRotation(body->GetAngle() * Params::RAD_DGRS);
+ hSim->window.draw(hSim->corpseShell);
+ hSim->window.draw(hSim->corpseNucleus);
+ }
+}
diff --git a/Simulation/Corpse.hpp b/Simulation/Corpse.hpp
new file mode 100644
index 0000000..0153c24
--- /dev/null
+++ b/Simulation/Corpse.hpp
@@ -0,0 +1,28 @@
+#ifndef __CORPSE_HPP__
+#define __CORPSE_HPP__
+
+#include "Entity.hpp"
+
+class Corpse : public Entity
+{
+public:
+ void startup(SimBase *sim);
+ void update();
+ void draw();
+
+ bool isCreated() const { return body ? true : false; }
+ bool toBeDestroyed = false;
+
+ void setup(b2Vec2 pos, b2Vec2 lVel, float angle, float aVel);
+
+private:
+ void destroy();
+
+ unsigned lifetime = 0;
+ float energy = 0.f;
+
+ friend class ContactListener;
+ friend class Guppie;
+};
+
+#endif // __CORPSE_HPP__
diff --git a/Simulation/Entity.cpp b/Simulation/Entity.cpp
new file mode 100644
index 0000000..d5ccb75
--- /dev/null
+++ b/Simulation/Entity.cpp
@@ -0,0 +1,59 @@
+#include "Entity.hpp"
+#include "SimBase.hpp"
+
+void Entity::create()
+{
+ if (!hSim || body || !radius)
+ {
+ return;
+ }
+
+ b2BodyDef bodyDef;
+ bodyDef.type = b2_dynamicBody;
+ bodyDef.position = { hSim->prms.worldRad, hSim->prms.worldRad };
+ float hypotenuse = hSim->prms.worldRad - radius;
+ while (bodyDef.position.x * bodyDef.position.x + bodyDef.position.y * bodyDef.position.y > hypotenuse * hypotenuse)
+ {
+ bodyDef.position.x = realRand(-hSim->prms.worldRad, hSim->prms.worldRad);
+ bodyDef.position.y = realRand(-hSim->prms.worldRad, hSim->prms.worldRad);
+ }
+ bodyDef.angle = realRand(0.f, 360.f / Params::RAD_DGRS);
+ bodyDef.linearDamping = 0.1f;
+ bodyDef.angularDamping = 0.1f;
+ bodyDef.allowSleep = true;
+ bodyDef.userData = this;
+
+ body = hSim->tank.world.CreateBody(&bodyDef);
+
+ b2CircleShape shape;
+ shape.m_radius = radius;
+
+ b2FixtureDef fixture;
+ fixture.shape = &shape;
+ fixture.friction = 1.f;
+ fixture.restitution = 1.f;
+ fixture.density = 1.f;
+
+ body->CreateFixture(&fixture);
+
+ if (radius == Params::PELLET_RAD)
+ {
+ ++hSim->pelletCount;
+ hSim->text.pelletCnt.setString("Pellet count: " + nts(hSim->pelletCount) + " / " + nts(hSim->prms.pelletQtty));
+ }
+ else if (radius == Params::CORPSE_RAD)
+ {
+ ++hSim->corpseCount;
+ hSim->text.corpseCnt.setString("Corpse count: " + nts(hSim->corpseCount));
+ }
+ else if (radius == Params::GUPPIE_RAD)
+ {
+ ++hSim->guppieCount;
+ hSim->text.guppieCnt.setString("Guppie count: " + nts(hSim->guppieCount));
+ ((Guppie *)this)->energy = hSim->prms.initEnergy;
+ body->SetLinearDamping(2.f);
+ body->SetAngularDamping(2.f);
+
+ ((b2CircleShape *)body->GetFixtureList()->GetShape())->m_radius = hSim->prms.EGG_RAD;
+ }
+}
diff --git a/Simulation/Entity.hpp b/Simulation/Entity.hpp
new file mode 100644
index 0000000..0374611
--- /dev/null
+++ b/Simulation/Entity.hpp
@@ -0,0 +1,34 @@
+#ifndef __ENTITY_HPP__
+#define __ENTITY_HPP__
+
+#include <SFML/Graphics.hpp>
+#include <Box2D.h>
+
+class SimBase;
+
+class Entity
+{
+public:
+ virtual void startup(SimBase *sim) = 0;
+
+ void create();
+ void destroy();
+
+ virtual void update() = 0;
+ virtual void draw() = 0;
+
+ float getRadius() const { return radius; }
+
+protected:
+ SimBase *hSim = nullptr;
+
+ b2Body *body = nullptr;
+ float radius = 0.f;
+ float resistance = 0.f;
+
+ friend class ContactListener;
+ friend class Guppie;
+ friend class Camera;
+};
+
+#endif // __ENTITY_HPP__
diff --git a/Simulation/GraphicObjs.hpp b/Simulation/GraphicObjs.hpp
new file mode 100644
index 0000000..8fab10e
--- /dev/null
+++ b/Simulation/GraphicObjs.hpp
@@ -0,0 +1,56 @@
+#ifndef __GRAPHICOBJS_HPP__
+#define __GRAPHICOBJS_HPP__
+
+#include <SFML/Graphics.hpp>
+
+class GraphicObjs
+{
+protected:
+ sf::CircleShape zapperPoint = sf::CircleShape(0, 12);
+ sf::CircleShape zapperShell;
+ sf::CircleShape zapperNucleus = sf::CircleShape(0, 5);
+
+ sf::CircleShape pelletPoint = sf::CircleShape(0, 6);
+ sf::CircleShape pelletShell;
+ sf::CircleShape pelletNucleus = sf::CircleShape(0, 3);
+
+ sf::CircleShape guppiePoint = sf::CircleShape(0, 6);
+ sf::CircleShape guppieShell = sf::CircleShape(0, 30);
+ ///////////////
+ sf::CircleShape eggPoint = sf::CircleShape(0, 6);
+ sf::CircleShape guppieEgg = sf::CircleShape(0, 60);
+ ///////////////
+ sf::Color guppN;
+ sf::Vector2f visionCone[31];
+ sf::Vector2f skinRadius[180];
+ sf::Vector2f senseRadius[180];
+ /////////////////////////////
+ sf::CircleShape gOuterSkin;
+ ///////////////////////////
+ sf::ConvexShape beak1;
+ sf::ConvexShape beak2;
+ ///////////////////////////
+ sf::ConvexShape touchCells[30];
+ sf::ConvexShape smellCells[30];
+ sf::ConvexShape tailMask;
+ //////////////////////////////
+ sf::CircleShape innerBodyMask;
+ /////////////////////////////
+ sf::ConvexShape thrusters[4];
+ sf::ConvexShape thrusterMask;
+ sf::ConvexShape heart;
+ sf::ConvexShape heartMask;
+ sf::ConvexShape heartTop;
+ sf::ConvexShape heartTri;
+ sf::ConvexShape glandMask;
+ sf::ConvexShape gland;
+ sf::ConvexShape eyeMask;
+ sf::ConvexShape eyeCells[15];
+ sf::ConvexShape eyeCavity;
+
+ sf::CircleShape corpsePoint = sf::CircleShape(0, 6);
+ sf::CircleShape corpseShell;
+ sf::CircleShape corpseNucleus = sf::CircleShape(0, 4);
+};
+
+#endif // __GRAPHICOBJS_HPP__
diff --git a/Simulation/Guppie.cpp b/Simulation/Guppie.cpp
new file mode 100644
index 0000000..91788c2
--- /dev/null
+++ b/Simulation/Guppie.cpp
@@ -0,0 +1,584 @@
+#include "Guppie.hpp"
+#include "SimFitness.hpp"
+
+void Guppie::startup(SimBase *sim)
+{
+ hSim = sim;
+ radius = Params::GUPPIE_RAD;
+}
+
+void Guppie::update()
+{
+ if (!body)
+ {
+ return;
+ }
+
+ // Update states
+ ++lifetime;
+
+ if (lifetime < hSim->prms.activationDelay)
+ {
+ return;
+ }
+
+ if (lifetime == hSim->prms.activationDelay)
+ {
+ isActive = true;
+ skinColor = hSim->guppN;
+ glandState = ALPHA;
+
+ ((b2CircleShape *)body->GetFixtureList()->GetShape())->m_radius = hSim->prms.GUPPIE_RAD;
+ }
+
+ fitness += energy;
+
+ energy -= (1.f / 60.f) + (float)lifetime / (hSim->prms.agingRate * 3600.f);
+
+ if (energy < 0.f)
+ {
+ destroy();
+ return;
+ }
+
+ if (lastContactStep)
+ {
+ --lastContactStep;
+ }
+
+ if (skinColor.r)
+ {
+ skinColor.r -= 1;
+ }
+ if (skinColor.g)
+ {
+ skinColor.g -= 1;
+ }
+ if (skinColor.b)
+ {
+ skinColor.b -= 1;
+ }
+
+ // Update sensors
+ sf::Transform trans;
+ trans.translate(body->GetPosition().x, body->GetPosition().y);
+ trans.rotate(body->GetAngle() * Params::RAD_DGRS);
+ // Eye sensors
+ sf::Vector2f eyePoint = trans.transformPoint(hSim->visionCone[30]);
+ for (int i = 0; i < 15; ++i)
+ {
+ RayCastCallback points[2];
+ sf::Color colors[2];
+ for (int j = 0; j < 2; ++j)
+ {
+ colors[j] = hSim->prms.worldColor;
+ sf::Vector2f eyeLine = trans.transformPoint(hSim->visionCone[i * 2 + j]);
+ hSim->tank.world.RayCast(&points[j], b2Vec2(eyePoint.x, eyePoint.y), b2Vec2(eyeLine.x, eyeLine.y));
+ if (points[j].m_fixture)
+ {
+ if (points[j].m_fixture->GetBody()->GetType() == b2_staticBody)
+ {
+ colors[j] = mix(hSim->prms.worldColor, hSim->prms.zapperColor, points[j].m_fraction);
+ }
+ else
+ {
+ Entity *entity = (Entity *)points[j].m_fixture->GetBody()->GetUserData();
+ if (entity->radius == Params::ZAPPER_RAD)
+ {
+ colors[j] = mix(hSim->prms.worldColor, hSim->prms.zapperColor, points[j].m_fraction);
+ }
+ else if (entity->radius == Params::EGG_RAD)
+ {
+ colors[j] = mix(hSim->prms.worldColor, hSim->guppN, points[j].m_fraction);
+ }
+ else if (entity->radius == Params::PELLET_RAD)
+ {
+ colors[j] = mix(hSim->prms.worldColor, hSim->prms.pelletColor, points[j].m_fraction);
+ }
+ else if (entity->radius == Params::CORPSE_RAD)
+ {
+ sf::Color corpseColor = mix(hSim->prms.corpseColor, hSim->prms.worldColor, ((float)((Corpse *)entity)->lifetime / (float)hSim->prms.corpseDecayTime));
+ colors[j] = mix(hSim->prms.worldColor, corpseColor, points[j].m_fraction);
+ }
+ else if (entity->radius == Params::GUPPIE_RAD)
+ {
+ if (!((Guppie *)entity)->isActive)
+ {
+ colors[j] = mix(hSim->prms.worldColor, hSim->guppN, points[j].m_fraction);
+ }
+ else
+ {
+ colors[j] = mix(hSim->prms.worldColor, ((Guppie *)entity)->skinColor, points[j].m_fraction);
+ }
+ }
+ }
+ }
+ }
+
+ sf::Color sum = mix(colors[0], colors[1], 0.5f);
+ eyeR[i] = (float)sum.r / 256.f;
+ eyeG[i] = (float)sum.g / 256.f;
+ eyeB[i] = (float)sum.b / 256.f;
+ }
+ // Skin sensors
+ for (int i = 0; i < 30; ++i)
+ {
+ RayCastCallback points[6];
+ float valueTouch = 0.f;
+// float valueSmell = 0.f;
+ for (int j = 0; j < 6; ++j)
+ {
+ sf::Vector2f skinPoint = trans.transformPoint(hSim->skinRadius[i * 6 + j]);
+ sf::Vector2f senseLine = trans.transformPoint(hSim->senseRadius[i * 6 + j]);
+ hSim->tank.world.RayCast(&points[j], b2Vec2(skinPoint.x, skinPoint.y), b2Vec2(senseLine.x, senseLine.y));
+ if (points[j].m_fixture)
+ {
+ valueTouch += 1.f - points[j].m_fraction;
+ // FOR SWARM SIMULATION STYLE
+// if (points[j].m_fixture->GetBody()->GetType() == b2_dynamicBody)
+// {
+// Entity *entity = (Entity *)points[j].m_fixture->GetBody()->GetUserData();
+// if (entity->radius == Params::GUPPIE_RAD)
+// {
+// if (((Guppie *)entity)->isActive)
+// {
+// if (((Guppie *)entity)->glandState == glandState)
+// {
+// valueSmell += 1.f - points[j].m_fraction;
+// }
+// }
+// }
+// }
+ }
+ }
+
+ touch[i] = valueTouch / 6.f;
+// smell[i] = valueSmell / 6.f;
+ }
+ // Current color sensor
+ cColorR = (float)skinColor.r / 255.f;
+ cColorG = (float)skinColor.g / 255.f;
+ cColorB = (float)skinColor.b / 255.f;
+ // Current gland color sensor
+// cGland1 = 0.f;
+// cGland2 = 0.f;
+// cGland3 = 0.f;
+// if (glandState == ALPHA)
+// {
+// cGland1 = 1.f;
+// }
+// else if (glandState == BETTA)
+// {
+// cGland2 = 1.f;
+// }
+// else
+// {
+// cGland3 = 1.f;
+// }
+ // Speed sensors
+ b2Vec2 axisSpeed = body->GetLinearVelocity();
+ sf::Transform rotat;
+ rotat.rotate(body->GetAngle() * Params::RAD_DGRS);
+ sf::Vector2f fwdDirect = rotat.transformPoint(sf::Vector2f(0.f, -1.f));
+ sf::Vector2f sdeDirect = rotat.transformPoint(sf::Vector2f(1.f, 0.f));
+ fwdSpeed = sigmoid(axisSpeed.x * fwdDirect.x + axisSpeed.y * fwdDirect.y);
+ sideSpeed = sigmoid(axisSpeed.x * sdeDirect.x + axisSpeed.y * sdeDirect.y);
+ // Rotation sensor
+ rotation = sigmoid(body->GetAngularVelocity());
+ // Low energy sensor
+ lowEnergy = sigmoid(energy / 10.f) * 2.f - 1.f;
+
+ // Merge inputs and get response from neural net
+ std::vector<float> inputs;
+ inputs.insert(inputs.end(), eyeR.begin(), eyeR.end());
+ inputs.insert(inputs.end(), eyeG.begin(), eyeG.end());
+ inputs.insert(inputs.end(), eyeB.begin(), eyeB.end());
+ inputs.insert(inputs.end(), touch.begin(), touch.end());
+// inputs.insert(inputs.end(), smell.begin(), smell.end());
+ inputs.push_back(cColorR);
+ inputs.push_back(cColorG);
+ inputs.push_back(cColorB);
+// inputs.push_back(cGland1);
+// inputs.push_back(cGland2);
+// inputs.push_back(cGland3);
+ inputs.push_back(fwdSpeed);
+ inputs.push_back(sideSpeed);
+ inputs.push_back(rotation);
+ inputs.push_back(lowEnergy);
+
+ std::vector<float> outputs = neuralNet->io(inputs);
+
+ // Apply outputs
+ thruster1 = outputs[0];
+ thruster2 = outputs[1];
+ addClrR = outputs[2];
+ addClrG = outputs[3];
+ addClrB = outputs[4];
+// addGln1 = outputs[5];
+// addGln2 = outputs[6];
+// addGln3 = outputs[7];
+
+ // Handle outputs
+ // Guppies gain fitness by going straight forward
+ if (thruster1 + thruster2 > 1.f)
+ {
+ float forwardness = thruster1 + thruster2 - 1.f;
+ fitness += forwardness * hSim->prms.forGoingStraight;
+ }
+
+ // Apply thrust
+ sf::Vector2f leftThrustPoint = trans.transformPoint(-hSim->prms.thrustRadius, 0.f);
+ sf::Vector2f rightThrustPoint = trans.transformPoint(hSim->prms.thrustRadius, 0.f);
+
+ thruster1 = thruster1 * 2.f - 1.f;
+ sf::Vector2f thrLeft = rotat.transformPoint(-hSim->prms.thrustRadius, thruster1 * hSim->prms.thrustForce);
+ body->ApplyForce(b2Vec2(thrLeft.x, thrLeft.y), b2Vec2(leftThrustPoint.x, leftThrustPoint.y));
+
+ thruster2 = thruster2 * 2.f - 1.f;
+ sf::Vector2f thrRight = rotat.transformPoint(hSim->prms.thrustRadius, thruster2 * hSim->prms.thrustForce);
+ body->ApplyForce(b2Vec2(thrRight.x, thrRight.y), b2Vec2(rightThrustPoint.x, rightThrustPoint.y));
+ // Substract energy
+// energy -= fabsf(thruster1 / 60.f);
+// energy -= fabsf(thruster2 / 60.f);
+
+ // Apply color change
+ float temp = 0.f;
+ if ((temp = skinColor.r + addClrR * 8.f) < 255)
+ {
+ skinColor.r += temp;
+ }
+ else
+ {
+ skinColor.r = 255;
+ }
+ if ((temp = skinColor.g + addClrG * 8.f) < 255)
+ {
+ skinColor.g += temp;
+ }
+ else
+ {
+ skinColor.g = 255;
+ }
+ if ((temp = skinColor.b + addClrB * 8.f) < 255)
+ {
+ skinColor.b += temp;
+ }
+ else
+ {
+ skinColor.b = 255;
+ }
+ // Substract energy
+// energy -= addClrR / 60.f;
+// energy -= addClrG / 60.f;
+// energy -= addClrB / 60.f;
+ // Apply gland change
+// nGland1 += addGln1;
+// nGland2 += addGln2;
+// nGland3 += addGln3;
+// bool changeGln = false;
+// if (nGland1 > 30.f)
+// {
+// glandState = ALPHA;
+// changeGln = true;
+// }
+// else if (nGland2 > 30.f)
+// {
+// glandState = BETTA;
+// changeGln = true;
+// }
+// else if (nGland3 > 30.f)
+// {
+// glandState = GAMMA;
+// changeGln = true;
+// }
+// if (changeGln)
+// {
+// nGland1 = 0.f;
+// nGland2 = 0.f;
+// nGland3 = 0.f;
+// }
+// // Substract energy
+// energy -= addGln1 / 60.f;
+// energy -= addGln2 / 60.f;
+// energy -= addGln3 / 60.f;
+
+ if (hSim->prms.simStyle == SELECTION_BY_FITNESS)
+ {
+ if (fitness > ((SimFitness *)hSim)->fitnessRecord)
+ {
+ ((SimFitness *)hSim)->fitnessRecord = fitness;
+ hSim->text.longestLife.setString("Fitness record: " + nts(((SimFitness *)hSim)->fitnessRecord));
+ }
+ }
+}
+
+
+void Guppie::destroy()
+{
+ if (!body)
+ {
+ return;
+ }
+
+ --hSim->guppieCount;
+ hSim->text.guppieCnt.setString("Guppie count: " + nts(hSim->guppieCount));
+
+ // Place a corpse
+ if (hSim->prms.leaveCorpse)
+ {
+ bool vacant = false;
+ for (auto &i : hSim->corpses)
+ {
+ if (!i.isCreated())
+ {
+ i.create();
+ i.setup(body->GetPosition(), body->GetLinearVelocity(), body->GetAngle(), body->GetAngularVelocity());
+ if (hSim->camera.trgtBody == body)
+ {
+ hSim->camera.trgtBody = i.body;
+ }
+ vacant = true;
+ break;
+ }
+ }
+ if (!vacant)
+ {
+ hSim->corpses.push_back(Corpse());
+ hSim->corpses.back().startup(hSim);
+ hSim->corpses.back().create();
+ hSim->corpses.back().setup(body->GetPosition(), body->GetLinearVelocity(), body->GetAngle(), body->GetAngularVelocity());
+ if (hSim->camera.trgtBody == body)
+ {
+ hSim->camera.trgtBody = hSim->corpses.back().body;
+ }
+ }
+ }
+ else if (hSim->camera.trgtBody == body)
+ {
+ hSim->camera.trgtBody = nullptr;
+ }
+
+ hSim->tank.world.DestroyBody(body);
+ body = nullptr;
+}
+
+
+void Guppie::draw()
+{
+ if (!body)
+ {
+ return;
+ }
+
+ sf::Vector2f vSize = hSim->window.getView().getSize();
+ sf::Vector2f vCent = hSim->window.getView().getCenter();
+ if ( body->GetPosition().x + radius < vCent.x - vSize.x / 2.f ||
+ body->GetPosition().y + radius < vCent.y - vSize.y / 2.f ||
+ body->GetPosition().x - radius > vCent.x + vSize.x / 2.f ||
+ body->GetPosition().y - radius > vCent.y + vSize.y / 2.f )
+ {
+ return;
+ }
+
+ if (hSim->camera.zoom > Params::GUPPIE_RAD)
+ {
+ float blend = sigmoid((hSim->camera.zoom - Params::GUPPIE_RAD) * 8.f);
+ if (isActive)
+ {
+ hSim->guppiePoint.setFillColor(mix(hSim->prms.worldColor, skinColor, blend));
+ }
+ else
+ {
+ hSim->guppiePoint.setFillColor(mix(hSim->prms.worldColor, hSim->guppN, blend));
+ }
+
+ hSim->guppiePoint.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->window.draw(hSim->guppiePoint);
+ return;
+ }
+
+ // Position and rotate
+ float posX = body->GetPosition().x;
+ float posY = body->GetPosition().y;
+ float rot = body->GetAngle() * Params::RAD_DGRS;
+ sf::ConvexShape *shape = nullptr;
+
+ hSim->gOuterSkin.setPosition(posX, posY);
+ for (shape = &hSim->beak1; shape <= &hSim->tailMask; ++shape)
+ {
+ shape->setPosition(posX, posY);
+ shape->setRotation(rot);
+ }
+ hSim->innerBodyMask.setPosition(posX, posY);
+ hSim->innerBodyMask.setRotation(rot);
+ for (shape = hSim->thrusters; shape <= &hSim->eyeCavity; ++shape)
+ {
+ shape->setPosition(posX, posY);
+ shape->setRotation(rot);
+ }
+
+ // Apply colors
+ // When inactive
+ if (!isActive)
+ {
+ // Skin
+ hSim->beak1.setFillColor(hSim->guppN);
+ hSim->beak2.setFillColor(hSim->guppN);
+ hSim->gOuterSkin.setFillColor(hSim->guppN);
+ for (int i = 0; i < 15; ++i)
+ {
+ hSim->eyeCells[i].setFillColor(hSim->prms.worldColor);
+ }
+ for (int i = 0; i < 30; ++i)
+ {
+ hSim->touchCells[i].setFillColor(hSim->guppN);
+ hSim->smellCells[i].setFillColor(hSim->guppN);
+ }
+ // Thrusters
+ for (int i = 0; i < 4; ++i)
+ {
+ hSim->thrusters[i].setFillColor(hSim->guppN);
+ }
+ // Heart
+ hSim->heart.setFillColor(hSim->guppN);
+ hSim->heartTop.setFillColor(hSim->guppN);
+ hSim->heartTri.setFillColor(hSim->guppN);
+ hSim->heartMask.setFillColor(hSim->guppN);
+ // Gland
+ hSim->gland.setFillColor(hSim->guppN);
+ }
+ // When active
+ else
+ {
+ // Outer skin
+ hSim->beak1.setFillColor(skinColor);
+ hSim->beak2.setFillColor(skinColor);
+ hSim->gOuterSkin.setFillColor(skinColor);
+ // Eye cells
+ for (int i = 0; i < 15; ++i)
+ {
+ sf::Color cellColor;
+ cellColor.r = eyeR[i] * 255.f;
+ cellColor.g = eyeG[i] * 255.f;
+ cellColor.b = eyeB[i] * 255.f;
+ hSim->eyeCells[i].setFillColor(cellColor);
+ }
+ // Skin cells
+ for (int i = 0; i < 30; ++i)
+ {
+ hSim->touchCells[i].setFillColor(mix(hSim->prms.guppieColorI, hSim->guppN, touch[i]));
+// hSim->smellCells[i].setFillColor(mix(hSim->prms.guppieColorI, hSim->guppN, smell[i]));
+ }
+ // Thrusters
+ if (thruster1 > 0.f)
+ {
+ hSim->thrusters[3].setFillColor(mix(hSim->prms.guppieColorI, hSim->guppN, thruster1));
+ hSim->thrusters[1].setFillColor(hSim->guppN);
+ }
+ else
+ {
+ hSim->thrusters[1].setFillColor(mix(hSim->prms.guppieColorI, hSim->guppN, -thruster1));
+ hSim->thrusters[3].setFillColor(hSim->guppN);
+ }
+
+ if (thruster2 > 0.f)
+ {
+ hSim->thrusters[2].setFillColor(mix(hSim->prms.guppieColorI, hSim->guppN, thruster2));
+ hSim->thrusters[0].setFillColor(hSim->guppN);
+ }
+ else
+ {
+ hSim->thrusters[0].setFillColor(mix(hSim->prms.guppieColorI, hSim->guppN, -thruster2));
+ hSim->thrusters[2].setFillColor(hSim->guppN);
+ }
+ // Heart beat
+ sf::Color beat = mix(hSim->guppN, hSim->prms.guppieColorI, sinf(((float)lifetime * (1.f + (1.f - lowEnergy))) / 15.f) / 2.f + 0.5f);
+ hSim->heart.setFillColor(beat);
+ hSim->heartTop.setFillColor(beat);
+ hSim->heartTri.setFillColor(beat);
+ // Stomach
+ if (lastContactStep)
+ {
+ if (lastContact == ZAPPER)
+ {
+ hSim->heartMask.setFillColor(mix(hSim->prms.zapperColor, hSim->guppN, (float)lastContactStep / (float)hSim->prms.contactSteps));
+ }
+ else if (lastContact == PELLET)
+ {
+ hSim->heartMask.setFillColor(mix(hSim->prms.pelletColor, hSim->guppN, (float)lastContactStep / (float)hSim->prms.contactSteps));
+ }
+ else if (lastContact == CORPSE)
+ {
+ hSim->heartMask.setFillColor(mix(hSim->prms.corpseColor, hSim->guppN, (float)lastContactStep / (float)hSim->prms.contactSteps));
+ }
+ else
+ {
+ hSim->heartMask.setFillColor(mix(hSim->prms.guppieColorI, hSim->guppN, (float)lastContactStep / (float)hSim->prms.contactSteps));
+ }
+ }
+ else
+ {
+ hSim->heartMask.setFillColor(hSim->guppN);
+ }
+ // Gland
+ if (glandState == ALPHA)
+ {
+ hSim->gland.setFillColor(hSim->prms.glandColor1);
+ }
+ else if (glandState == BETTA)
+ {
+ hSim->gland.setFillColor(hSim->prms.glandColor2);
+ }
+ else
+ {
+ hSim->gland.setFillColor(hSim->prms.glandColor3);
+ }
+ }
+
+ // Draw
+ hSim->window.draw(hSim->gOuterSkin);
+ for (shape = &hSim->beak1; shape <= &hSim->tailMask; ++shape)
+ {
+ hSim->window.draw(*shape);
+ }
+ hSim->window.draw(hSim->innerBodyMask);
+ for (shape = hSim->thrusters; shape <= &hSim->eyeCavity; ++shape)
+ {
+ hSim->window.draw(*shape);
+ }
+
+ if (hSim->camera.zoom > 0.02f)
+ {
+ if (isActive)
+ {
+ hSim->guppieShell.setOutlineColor(skinColor);
+ }
+ else
+ {
+ hSim->guppieShell.setOutlineColor(hSim->guppN);
+ }
+
+ hSim->guppieShell.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->window.draw(hSim->guppieShell);
+ }
+
+ if (!isActive)
+ {
+ hSim->guppieEgg.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->window.draw(hSim->guppieEgg);
+ }
+}
+
+
+void Guppie::clean()
+{
+ isActive = false;
+ lifetime = 0;
+ fitness = 0.;
+ energy = 0.f;
+ skinColor = hSim->guppN;
+// nGland1 = 0.f;
+// nGland2 = 0.f;
+// nGland3 = 0.f;
+ lastContactStep = 0;
+}
diff --git a/Simulation/Guppie.hpp b/Simulation/Guppie.hpp
new file mode 100644
index 0000000..14770ff
--- /dev/null
+++ b/Simulation/Guppie.hpp
@@ -0,0 +1,58 @@
+#ifndef __GUPPIE_HPP__
+#define __GUPPIE_HPP__
+
+#include <NeuralNet.hpp>
+#include "Entity.hpp"
+
+class Guppie : public Entity
+{
+public:
+ void startup(SimBase *sim);
+ void update();
+ void draw();
+
+private:
+ void destroy();
+ void clean();
+
+ // State variables
+ bool isActive = false;
+ unsigned lifetime = 0;
+ double fitness = 0;
+ float energy = 0.f;
+ sf::Color skinColor;
+ enum gs { ALPHA = 0, BETTA = 1, GAMMA = 2 } glandState;
+// float nGland1 = 0.f;
+// float nGland2 = 0.f;
+// float nGland3 = 0.f;
+ enum lc { ZAPPER, PELLET, CORPSE, GUPPIE } lastContact;
+ unsigned lastContactStep = 0;
+
+ // Sensors
+ std::vector<float> eyeR = std::vector<float>(15, 0.f);
+ std::vector<float> eyeG = std::vector<float>(15, 0.f);
+ std::vector<float> eyeB = std::vector<float>(15, 0.f);
+ std::vector<float> touch = std::vector<float>(30, 0.f);
+// std::vector<float> smell = std::vector<float>(30, 0.f);
+ float cColorR = 0.f, cColorG = 0.f, cColorB = 0.f;
+// float cGland1 = 0.f, cGland2 = 0.f, cGland3 = 0.f;
+ float fwdSpeed = 0.f;
+ float sideSpeed = 0.f;
+ float rotation = 0.f;
+ float lowEnergy = 0.f;
+
+ // Neural net
+ std::shared_ptr<NeuralNet> neuralNet;
+
+ // Outputs
+ float thruster1 = 0.f, thruster2 = 0.f;
+ float addClrR = 0.f, addClrG = 0.f, addClrB = 0.f;
+// float addGln1 = 0.f, addGln2 = 0.f, addGln3 = 0.f;
+
+ friend class ContactListener;
+ friend class SimFitness;
+ friend class Entity;
+ friend class Camera;
+};
+
+#endif // __GUPPIE_HPP__
diff --git a/Simulation/GuppiesInclude.hpp b/Simulation/GuppiesInclude.hpp
new file mode 100644
index 0000000..4a7bf94
--- /dev/null
+++ b/Simulation/GuppiesInclude.hpp
@@ -0,0 +1,6 @@
+#ifndef __GUPPIESINCLUDE_HPP__
+#define __GUPPIESINCLUDE_HPP__
+
+#include "SimFitness.hpp"
+
+#endif // __GUPPIESINCLUDE_HPP__
diff --git a/Simulation/Params.hpp b/Simulation/Params.hpp
new file mode 100644
index 0000000..979cd4e
--- /dev/null
+++ b/Simulation/Params.hpp
@@ -0,0 +1,172 @@
+#ifndef __PARAMS_HPP__
+#define __PARAMS_HPP__
+
+#include <sstream>
+#include <cmath>
+
+#include <SFML/Graphics.hpp>
+#include <Box2D.h>
+
+#include <NeuralNetworks.hpp>
+
+
+enum SimStyle
+{
+ SELECTION_BY_FITNESS
+};
+
+struct Params
+{
+ // Variable parameters must be defined before simulation starts
+
+ // Simulation params
+ SimStyle simStyle = SELECTION_BY_FITNESS;
+ // If selection by fitness
+ NeuralNetClass netClass = SIMPLE_RN;
+ NodeClass nodeClass = MEMORY_CELL;
+ unsigned npHiddenLayer = 80;
+ unsigned popSize = 30;
+ unsigned popQtty = 10;
+ unsigned elites = 30;
+
+ // World params
+ float worldRad = 40.f;
+
+ // Entity params
+ float zapperForce = 50.f;//100
+ float zapperTorque = 150.f;//300
+ unsigned zapperQtty = 20;
+ unsigned pelletQtty = 400;
+ unsigned pelletCreationDelay = 150;
+ bool startScarce = false;
+ bool corpseDecay = true;
+ float corpseDecayTime = 3600.f;
+
+ // Goopy params
+ unsigned activationDelay = 120;
+ unsigned contactSteps = 15;
+ float thrustForce = 5.f;
+ float thrustRadius = 0.05f;
+ float initEnergy = 60.f;
+ float maxEnergy = 180.f;
+ float agingRate = 600.f;
+ bool leaveCorpse = true;
+
+ // Energy transfers
+ float etFromZapper = -20.f;
+ float etFromPellet = 15.f;
+ float etFromGuppie = 60.f;
+ float etFromCorpse = 60.f;
+
+ // Fitness bonus
+ float forPellet = 9000.f;
+ float forGuppie = 36000.f;
+ float forCorpse = 36000.f;
+ float forGoingStraight = 12.f;
+
+ // Colors
+ sf::Color clearColor = { 0, 0, 10 };
+ sf::Color worldColor = { 0, 0, 0 };
+ sf::Color textColor = { 191, 191, 191 };
+ sf::Color zapperColor = { 0, 0, 255 };
+ sf::Color pelletColor = { 0, 255, 0 };
+ sf::Color corpseColor = { 0, 255, 0 };
+ sf::Color guppieColorI = { 255, 0, 0 };
+ sf::Color glandColor1 = { 255, 127, 0 };
+ sf::Color glandColor2 = { 0, 255, 127 };
+ sf::Color glandColor3 = { 127, 0, 255 };
+
+
+ // Constant values cant be changed
+ constexpr static unsigned WIN_WIDTH = 800;
+ constexpr static unsigned WIN_HEIGHT = 600;
+ constexpr static unsigned ANTIALIAS = 8;
+ constexpr static unsigned CAM_STEPS = 8;
+ constexpr static float ZAPPER_RAD = 5.f;
+ constexpr static float GUPPIE_RAD = 0.5f;
+ constexpr static float EGG_RAD = 1.5f;
+ constexpr static float CORPSE_RAD = 0.25f;
+ constexpr static float PELLET_RAD = 0.1f;
+ constexpr static float TXT_SIZE = 12.f;
+ constexpr static float MAX_ZOOM = 0.002f;
+ constexpr static float RAD_DGRS = 57.2957795f;
+};
+
+
+// Utility functions
+template <class T>
+inline std::string nts(T num)
+{
+ std::ostringstream ss;
+ ss << num;
+ return ss.str();
+}
+
+
+inline sf::Vector2f vecMult(const sf::Vector2f &v1, const sf::Vector2f &v2)
+{
+ return sf::Vector2f(v1.x * v2.x, v1.y * v2.y);
+}
+
+
+inline void setCenterRad(sf::CircleShape &circle, float radius)
+{
+ circle.setRadius(radius);
+ circle.setOrigin(radius, radius);
+}
+
+
+inline sf::Color mix(const sf::Color &clr1, const sf::Color &clr2, float f1 = 0.2f)
+{
+ sf::Color result;
+ float f2 = 1.f - f1;
+
+ result.r = clr1.r * f1 + clr2.r * f2;
+ result.g = clr1.g * f1 + clr2.g * f2;
+ result.b = clr1.b * f1 + clr2.b * f2;
+
+ return result;
+}
+
+
+// Utility classes
+class QueryCallback : public b2QueryCallback
+{
+public:
+ bool ReportFixture(b2Fixture* fixture)
+ {
+ b2Body* body = fixture->GetBody();
+ if (body->GetType() != b2_staticBody)
+ {
+ bool inside = fixture->TestPoint(m_point);
+ if (inside)
+ {
+ m_fixture = fixture;
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ b2Vec2 m_point;
+ b2Fixture *m_fixture = nullptr;
+};
+
+
+class RayCastCallback : public b2RayCastCallback
+{
+public:
+ float32 ReportFixture(b2Fixture *fixture, const b2Vec2 &point, const b2Vec2 &normal, float32 fraction)
+ {
+ m_fixture = fixture;
+ m_fraction = fraction;
+
+ return fraction;
+ }
+
+ float m_fraction = 0.f;
+ b2Fixture *m_fixture = nullptr;
+};
+
+#endif // __PARAMS_HPP__
diff --git a/Simulation/Pellet.cpp b/Simulation/Pellet.cpp
new file mode 100644
index 0000000..1a911ff
--- /dev/null
+++ b/Simulation/Pellet.cpp
@@ -0,0 +1,66 @@
+#include "Pellet.hpp"
+#include "SimBase.hpp"
+
+void Pellet::startup(SimBase *sim)
+{
+ hSim = sim;
+ radius = Params::PELLET_RAD;
+}
+
+
+void Pellet::update()
+{
+ if (!body)
+ {
+ return;
+ }
+
+ if (toBeDestroyed)
+ {
+ destroy();
+ }
+}
+
+
+void Pellet::destroy()
+{
+ toBeDestroyed = false;
+ hSim->tank.world.DestroyBody(body);
+ body = nullptr;
+
+ --hSim->pelletCount;
+ hSim->text.pelletCnt.setString("Pellet count: " + nts(hSim->pelletCount) + " / " + nts(hSim->prms.pelletQtty));
+}
+
+
+void Pellet::draw()
+{
+ if (!body)
+ {
+ return;
+ }
+
+ sf::Vector2f vSize = hSim->window.getView().getSize();
+ sf::Vector2f vCent = hSim->window.getView().getCenter();
+ if ( body->GetPosition().x + radius < vCent.x - vSize.x / 2.f ||
+ body->GetPosition().y + radius < vCent.y - vSize.y / 2.f ||
+ body->GetPosition().x - radius > vCent.x + vSize.x / 2.f ||
+ body->GetPosition().y - radius > vCent.y + vSize.y / 2.f )
+ {
+ return;
+ }
+
+ if (hSim->camera.zoom > Params::PELLET_RAD / 2.f)
+ {
+ hSim->pelletPoint.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->window.draw(hSim->pelletPoint);
+ }
+ else
+ {
+ hSim->pelletShell.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->pelletNucleus.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->pelletNucleus.setRotation(body->GetAngle() * hSim->prms.RAD_DGRS);
+ hSim->window.draw(hSim->pelletShell);
+ hSim->window.draw(hSim->pelletNucleus);
+ }
+}
diff --git a/Simulation/Pellet.hpp b/Simulation/Pellet.hpp
new file mode 100644
index 0000000..f3c31f8
--- /dev/null
+++ b/Simulation/Pellet.hpp
@@ -0,0 +1,20 @@
+#ifndef __PELLET_HPP__
+#define __PELLET_HPP__
+
+#include "Entity.hpp"
+
+class Pellet : public Entity
+{
+public:
+ void startup(SimBase *sim);
+ void update();
+ void draw();
+
+ bool isCreated() const { return body ? true : false; }
+ bool toBeDestroyed = false;
+
+private:
+ void destroy();
+};
+
+#endif // __PELLET_HPP__
diff --git a/Simulation/SimBase.hpp b/Simulation/SimBase.hpp
new file mode 100644
index 0000000..83e7f4c
--- /dev/null
+++ b/Simulation/SimBase.hpp
@@ -0,0 +1,70 @@
+#ifndef __SIMBASE_HPP__
+#define __SIMBASE_HPP__
+
+//#include <fstream>
+#include <list>
+
+#include "Params.hpp"
+#include "GraphicObjs.hpp"
+
+#include "Camera.hpp"
+#include "Tank.hpp"
+#include "TextDisplay.hpp"
+#include "Zapper.hpp"
+#include "Pellet.hpp"
+#include "Guppie.hpp"
+#include "Corpse.hpp"
+
+class SimBase : public GraphicObjs
+{
+public:
+ bool createNew(const Params &usrPrms);
+ //bool load(const std::ifstream &file);
+ void execute();
+
+protected:
+ void prepareGraphics();
+ void update();
+ void draw();
+
+ virtual bool startSpecs() = 0;
+ virtual void updateSpecs() = 0;
+ //void onClose();
+
+ Params prms;
+ sf::RenderWindow window;
+ Camera camera;
+ Tank tank;
+ TextDisplay text;
+
+ sf::Clock timer;
+ unsigned frameCounter = 0;
+
+ bool paused = false;
+ bool gfx = true;
+ bool displayText = true;
+ bool vSync = true;
+ bool fullscreen = false;
+ unsigned step = 0;
+
+ unsigned pelletCount = 0;
+ unsigned guppieCount = 0;
+ unsigned corpseCount = 0;
+
+ std::list<Zapper> zappers;
+ std::list<Pellet> pellets;
+ std::list<Guppie> guppies;
+ std::list<Corpse> corpses;
+
+ friend class Camera;
+ friend class Tank;
+ friend class ContactListener;
+ friend class TextDisplay;
+ friend class Entity;
+ friend class Zapper;
+ friend class Pellet;
+ friend class Corpse;
+ friend class Guppie;
+};
+
+#endif // __SIMBASE_HPP__
diff --git a/Simulation/SimBase_CreateNew.cpp b/Simulation/SimBase_CreateNew.cpp
new file mode 100644
index 0000000..de752aa
--- /dev/null
+++ b/Simulation/SimBase_CreateNew.cpp
@@ -0,0 +1,49 @@
+#include "SimBase.hpp"
+
+bool SimBase::createNew(const Params &usrPrms)
+{
+ prms = usrPrms;
+
+ seedRand();
+
+ sf::VideoMode vmd = sf::VideoMode(prms.WIN_WIDTH, prms.WIN_HEIGHT);
+ sf::ContextSettings ctx = sf::ContextSettings(0, 0, prms.ANTIALIAS, 2, 0);
+ window.create(vmd, "Neural Guppies - 0.1 beta", sf::Style::Default, ctx);
+ window.setVerticalSyncEnabled(vSync);
+
+ sf::Image icon;
+ icon.loadFromFile("gfx/icon.png");
+ window.setIcon(32, 32, icon.getPixelsPtr());
+
+ prepareGraphics();
+
+ camera.create(this);
+ tank.create(this);
+
+ zappers.resize(prms.zapperQtty);
+ for (auto &i : zappers)
+ {
+ i.startup(this);
+ i.create();
+ }
+
+ pellets.resize(prms.pelletQtty);
+ for (auto &i : pellets)
+ {
+ i.startup(this);
+ }
+ if (!prms.startScarce)
+ {
+ for (auto &i : pellets)
+ {
+ i.create();
+ }
+ }
+
+ if (!startSpecs())
+ {
+ return false;
+ }
+
+ return true;
+}
diff --git a/Simulation/SimBase_Draw.cpp b/Simulation/SimBase_Draw.cpp
new file mode 100644
index 0000000..0bfe915
--- /dev/null
+++ b/Simulation/SimBase_Draw.cpp
@@ -0,0 +1,40 @@
+#include "SimBase.hpp"
+
+void SimBase::draw()
+{
+ window.clear(prms.clearColor);
+
+ camera.update();
+
+ if (gfx)
+ {
+ tank.draw();
+
+ for (auto &i : zappers)
+ {
+ i.draw();
+ }
+
+ for (auto &i : pellets)
+ {
+ i.draw();
+ }
+
+ for (auto &i : guppies)
+ {
+ i.draw();
+ }
+
+ for (auto &i : corpses)
+ {
+ i.draw();
+ }
+ }
+
+ if (displayText)
+ {
+ text.print();
+ }
+
+ window.display();
+}
diff --git a/Simulation/SimBase_Execute.cpp b/Simulation/SimBase_Execute.cpp
new file mode 100644
index 0000000..eb3166a
--- /dev/null
+++ b/Simulation/SimBase_Execute.cpp
@@ -0,0 +1,152 @@
+#include "SimBase.hpp"
+
+void SimBase::execute()
+{
+ while (window.isOpen())
+ {
+ update();
+
+ sf::Event event;
+ while (window.pollEvent(event))
+ {
+ if (event.type == sf::Event::Closed)
+ {
+ window.close();
+ }
+
+ if (event.type == sf::Event::Resized)
+ {
+ camera.onResize();
+ }
+
+ if (event.type == sf::Event::MouseButtonPressed)
+ {
+ if (event.mouseButton.button == sf::Mouse::Button::Left)
+ {
+ camera.onClick();
+ }
+ }
+
+ if (event.type == sf::Event::MouseWheelMoved)
+ {
+ sf::Vector2f mousePos = window.mapPixelToCoords(sf::Mouse::getPosition(window));
+ float f1 = 2.f / 10.f;
+ float f2 = 1.f - f1;
+
+ if (event.mouseWheel.delta > 0)
+ {
+ sf::Vector2f target = camera.getCrds() * f2 + mousePos * f1;
+ camera.shift(target, 1);
+ }
+ else
+ {
+ mousePos = camera.getCrds() * 2.f - mousePos;
+ sf::Vector2f target = camera.getCrds() * f2 + mousePos * f1;
+ camera.shift(target, -1);
+ }
+ }
+
+ if (event.type == sf::Event::KeyPressed)
+ {
+ if (event.key.code == sf::Keyboard::Escape)
+ {
+ window.close();
+ }
+
+ if (event.key.code == sf::Keyboard::Space)
+ {
+ paused = !paused;
+ text.simState.setString("Sim. state: " + std::string(paused ? "PAUSED" : "RUNNING"));
+ }
+
+ if (event.key.code == sf::Keyboard::G)
+ {
+ gfx = !gfx;
+ text.gfx.setString("Graphics: " + std::string(gfx ? "ON" : "OFF"));
+ }
+
+ if (event.key.code == sf::Keyboard::T)
+ {
+ displayText = !displayText;
+ }
+
+ if (event.key.code == sf::Keyboard::V)
+ {
+ vSync = !vSync;
+ window.setVerticalSyncEnabled(vSync);
+ text.vSync.setString("V. Sync: " + std::string(vSync ? "ON" : "OFF"));
+ }
+
+ if (event.key.code == sf::Keyboard::Z)
+ {
+ camera.shift(sf::Vector2f(), -2);
+ }
+
+ if (event.key.code == sf::Keyboard::F11)
+ {
+ sf::ContextSettings ctx = window.getSettings();
+ std::string title = "Neural Guppies - 0.1 beta";
+
+ if (fullscreen)
+ {
+ fullscreen = false;
+ window.create(sf::VideoMode(prms.WIN_WIDTH, prms.WIN_HEIGHT), title, sf::Style::Default, ctx);
+ sf::Image icon;
+ icon.loadFromFile("gfx/icon.png");
+ window.setIcon(32, 32, icon.getPixelsPtr());
+ }
+ else
+ {
+ fullscreen = true;
+ window.create(sf::VideoMode::getDesktopMode(), title, sf::Style::Fullscreen, ctx);
+ }
+
+ window.setVerticalSyncEnabled(vSync);
+ camera.onResize();
+ }
+
+ if (event.key.code == sf::Keyboard::I)
+ {
+ camera.shift(camera.getCrds(), 1, false);
+ }
+
+ if (event.key.code == sf::Keyboard::O)
+ {
+ camera.shift(camera.getCrds(), -1, false);
+ }
+
+ if ( event.key.code == sf::Keyboard::W ||
+ event.key.code == sf::Keyboard::A ||
+ event.key.code == sf::Keyboard::S ||
+ event.key.code == sf::Keyboard::D )
+ {
+ float shift = 30.f * camera.getZoom();
+ sf::Vector2f shiftVec;
+
+ if (event.key.code == sf::Keyboard::W)
+ {
+ shiftVec.y = -shift;
+ }
+ else if (event.key.code == sf::Keyboard::A)
+ {
+ shiftVec.x = -shift;
+ }
+ else if (event.key.code == sf::Keyboard::S)
+ {
+ shiftVec.y = shift;
+ }
+ else if (event.key.code == sf::Keyboard::D)
+ {
+ shiftVec.x = shift;
+ }
+
+ camera.shift(camera.getCrds() + shiftVec);
+ }
+ }
+ }
+
+ draw();
+ }
+
+ //onClose();
+}
diff --git a/Simulation/SimBase_PrepareGraphics.cpp b/Simulation/SimBase_PrepareGraphics.cpp
new file mode 100644
index 0000000..ba7b56d
--- /dev/null
+++ b/Simulation/SimBase_PrepareGraphics.cpp
@@ -0,0 +1,269 @@
+#include "SimBase.hpp"
+
+void SimBase::prepareGraphics()
+{
+ // Prepare zappers
+ setCenterRad(zapperShell, prms.ZAPPER_RAD);
+ zapperShell.setPointCount(180);
+ zapperShell.setFillColor(mix(prms.zapperColor, prms.worldColor));
+ zapperShell.setOutlineColor(prms.zapperColor);
+ setCenterRad(zapperNucleus, prms.ZAPPER_RAD);
+ zapperNucleus.setFillColor(prms.zapperColor);
+
+ // Prepare pellets
+ setCenterRad(pelletShell, prms.PELLET_RAD);
+ pelletShell.setPointCount(60);
+ pelletShell.setFillColor(mix(prms.pelletColor, prms.worldColor));
+ pelletShell.setOutlineColor(prms.pelletColor);
+ setCenterRad(pelletNucleus, prms.PELLET_RAD);
+ pelletNucleus.setFillColor(prms.pelletColor);
+
+ // Prepare corpses
+ setCenterRad(corpseShell, prms.CORPSE_RAD);
+ corpseShell.setPointCount(60);
+ corpseShell.setFillColor(mix(prms.corpseColor, prms.worldColor));
+ corpseShell.setOutlineColor(prms.corpseColor);
+ setCenterRad(corpseNucleus, prms.CORPSE_RAD);
+ corpseNucleus.setFillColor(prms.corpseColor);
+
+ // Prepare guppies
+ guppieShell.setFillColor(sf::Color::Transparent);
+ guppN = mix(prms.guppieColorI, prms.worldColor, 0.1f);
+ // Prepare egg
+ guppieEgg.setFillColor(sf::Color::Transparent);
+ guppieEgg.setOutlineColor(guppN);
+ guppieEgg.setRadius(prms.EGG_RAD);
+ // Prepare vision cone shape
+ sf::CircleShape fovTempA = sf::CircleShape(10.f, 360);
+ sf::ConvexShape fovTemp;
+ fovTemp.setPointCount(360);
+ for (int i = 0; i < 360; ++i)
+ {
+ fovTemp.setPoint(i, fovTempA.getPoint(i) - sf::Vector2f(10.f, 10.f + prms.GUPPIE_RAD));
+ }
+ for (int i = 0; i < 15; ++i)
+ {
+ visionCone[i] = fovTemp.getPoint(i * 2 + 331);
+ }
+ for (int i = 0; i < 15; ++i)
+ {
+ visionCone[i + 15] = fovTemp.getPoint(i * 2 + 1);
+ }
+ visionCone[30] = sf::Vector2f(0.f, -prms.GUPPIE_RAD);
+ // Prepare beaks
+ beak1.setPointCount(3);
+ beak1.setPoint(0, sf::Vector2f(0.f, -0.5f));
+ beak1.setPoint(1, sf::Vector2f(0.0116f, -0.5201f));
+ beak1.setPoint(2, sf::Vector2f(0.0236f, -0.4994f));
+ beak2.setPointCount(3);
+ beak2.setPoint(0, sf::Vector2f(0.f, -0.5f));
+ beak2.setPoint(1, sf::Vector2f(-0.0116f, -0.5201f));
+ beak2.setPoint(2, sf::Vector2f(-0.0236f, -0.4994f));
+ // Prepare skin radius shape
+ sf::CircleShape sknTempA = sf::CircleShape(prms.GUPPIE_RAD, 360);
+ sf::ConvexShape sknTemp;
+ sknTemp.setPointCount(360);
+ for (int i = 0; i < 360; ++i)
+ {
+ sknTemp.setPoint(i, sknTempA.getPoint(i) - sf::Vector2f(prms.GUPPIE_RAD, prms.GUPPIE_RAD));
+ }
+ for (int i = 0; i < 180; ++i)
+ {
+ skinRadius[i] = sknTemp.getPoint(i * 2 + 1);
+ }
+ // Prepare sense radius shape
+ sf::CircleShape snsTempA = sf::CircleShape(10.f, 360);
+ sf::ConvexShape snsTemp;
+ snsTemp.setPointCount(360);
+ for (int i = 0; i < 360; ++i)
+ {
+ snsTemp.setPoint(i, snsTempA.getPoint(i) - sf::Vector2f(10.f, 10.f));
+ }
+ for (int i = 0; i < 180; ++i)
+ {
+ senseRadius[i] = snsTemp.getPoint(i * 2 + 1);
+ }
+ // Draw skin
+ gOuterSkin.setPointCount(180);
+ setCenterRad(gOuterSkin, prms.GUPPIE_RAD);
+ // Draw touch and smell cells
+ sf::CircleShape tcTemp = sf::CircleShape(prms.GUPPIE_RAD - 0.04f, 180);
+ tcTemp.setOrigin(prms.GUPPIE_RAD - 0.04f, prms.GUPPIE_RAD - 0.04f);
+ sf::CircleShape scTemp = sf::CircleShape(prms.GUPPIE_RAD - 0.06f, 180);
+ scTemp.setOrigin(prms.GUPPIE_RAD - 0.06f, prms.GUPPIE_RAD - 0.06f);
+ for (int i = 0; i < 30; ++i)
+ {
+ touchCells[i].setPointCount(8);
+ smellCells[i].setPointCount(8);
+ for (int j = 0; j < 7; ++j)
+ {
+ touchCells[i].setPoint(j, tcTemp.getPoint((i * 6 + j) % 180));
+ smellCells[i].setPoint(j, scTemp.getPoint((i * 6 + j) % 180));
+ }
+ touchCells[i].setPoint(7, tcTemp.getOrigin());
+ touchCells[i].setOrigin(tcTemp.getOrigin());
+ smellCells[i].setPoint(7, scTemp.getOrigin());
+ smellCells[i].setOrigin(scTemp.getOrigin());
+ smellCells[i].setFillColor(guppN);
+ }
+ // Draw inner body masks
+ tailMask.setFillColor(guppN);
+ tailMask.setPointCount(3);
+ tailMask.setPoint(0, sf::Vector2f(0.f, 0.5f));
+ tailMask.setPoint(1, sf::Vector2f(-0.0478f, 0.4173f));
+ tailMask.setPoint(2, sf::Vector2f( 0.0478f, 0.4173f));
+ innerBodyMask.setFillColor(guppN);
+ innerBodyMask.setPointCount(180);
+ setCenterRad(innerBodyMask, prms.GUPPIE_RAD - 0.08f);
+ // Draw thrusters
+ sf::CircleShape thTemp = sf::CircleShape(prms.GUPPIE_RAD - 0.1f, 180);
+ for (int i = 0; i < 4; ++i)
+ {
+ thrusters[i].setPointCount(41);
+ thrusters[i].setOrigin(prms.GUPPIE_RAD - 0.1f, prms.GUPPIE_RAD - 0.1f);
+ }
+ thrusters[0].setPoint(0, sf::Vector2f(0.4863f, 0.0094f));
+ for (int i = 0; i < 38; ++i)
+ {
+ thrusters[0].setPoint(i + 1, thTemp.getPoint(i + 7));
+ }
+ thrusters[0].setPoint(39, sf::Vector2f(0.7999f, 0.39f));
+ thrusters[0].setPoint(40, sf::Vector2f(prms.GUPPIE_RAD - 0.1f, 0.39f));
+ for (int i = 0; i < 41; ++i)
+ {
+ sf::Vector2f p1 = vecMult(thrusters[0].getPoint(i), sf::Vector2f(-1.f, 1.f)) + sf::Vector2f((prms.GUPPIE_RAD - 0.1f) * 2.f, 0.f);
+ sf::Vector2f p2 = vecMult(thrusters[0].getPoint(i), sf::Vector2f(1.f, -1.f)) + sf::Vector2f(0.f, (prms.GUPPIE_RAD - 0.1f) * 2.f);
+ sf::Vector2f p3 = vecMult(thrusters[0].getPoint(i), sf::Vector2f(-1.f, -1.f)) + sf::Vector2f((prms.GUPPIE_RAD - 0.1f) * 2.f, (prms.GUPPIE_RAD - 0.1f) * 2.f);
+ thrusters[1].setPoint(i, p1);
+ thrusters[2].setPoint(i, p2);
+ thrusters[3].setPoint(i, p3);
+ }
+ // Draw thruster mask
+ thrusterMask.setFillColor(guppN);
+ thrusterMask.setPointCount(48);
+ thrusterMask.setPoint(0, sf::Vector2f(0.0863f, -0.3906f));
+ thrusterMask.setPoint(1, sf::Vector2f(0.214f, -0.1694f));
+ thrusterMask.setPoint(2, sf::Vector2f(0.2148f, -0.1679f));
+ thrusterMask.setPoint(3, sf::Vector2f(0.2237f, -0.1509f));
+ thrusterMask.setPoint(4, sf::Vector2f(0.2313f, -0.1335f));
+ thrusterMask.setPoint(5, sf::Vector2f(0.2377f, -0.1159f));
+ thrusterMask.setPoint(6, sf::Vector2f(0.2429f, -0.0981f));
+ thrusterMask.setPoint(7, sf::Vector2f(0.2471f, -0.0803f));
+ thrusterMask.setPoint(8, sf::Vector2f(0.2504f, -0.0624f));
+ thrusterMask.setPoint(9, sf::Vector2f(0.2527f, -0.0446f));
+ thrusterMask.setPoint(10, sf::Vector2f(0.2542f, -0.0267f));
+ thrusterMask.setPoint(11, sf::Vector2f(0.2549f, -0.01f));
+ for (int i = 0; i < 12; ++i)
+ {
+ thrusterMask.setPoint(i + 12, vecMult(thrusterMask.getPoint(11 - i), sf::Vector2f(1.f, -1.f)));
+ }
+ for (int i = 0; i < 24; ++i)
+ {
+ thrusterMask.setPoint(i + 24, vecMult(thrusterMask.getPoint(23 - i), sf::Vector2f(-1.f, 1.f)));
+ }
+ // Draw heart
+ heart.setPointCount(43);
+ heart.setPoint(0, sf::Vector2f(0.1883f, -0.1321f));
+ heart.setPoint(1, sf::Vector2f(0.1901f, -0.1282f));
+ heart.setPoint(2, sf::Vector2f(0.1962f, -0.1133f));
+ heart.setPoint(3, sf::Vector2f(0.2013f, -0.0982f));
+ heart.setPoint(4, sf::Vector2f(0.2055f, -0.0830f));
+ heart.setPoint(5, sf::Vector2f(0.2088f, -0.0679f));
+ heart.setPoint(6, sf::Vector2f(0.2114f, -0.0527f));
+ heart.setPoint(7, sf::Vector2f(0.2132f, -0.0376f));
+ heart.setPoint(8, sf::Vector2f(0.2144f, -0.0225f));
+ heart.setPoint(9, sf::Vector2f(0.2149f, -0.0075f));
+ for (int i = 0; i < 9; ++i)
+ {
+ heart.setPoint(i + 10, vecMult(heart.getPoint(9 - i), sf::Vector2f(1.f, -1.f)));
+ }
+ heart.setPoint(19, sf::Vector2f(0.1829f, 0.1429f));
+ heart.setPoint(20, sf::Vector2f(0.1793f, 0.1494f));
+ heart.setPoint(21, sf::Vector2f(0.f, 0.46f));
+ for (int i = 0; i < 21; ++i)
+ {
+ heart.setPoint(i + 22, vecMult(heart.getPoint(20 - i), sf::Vector2f(-1.f, 1.f)));
+ }
+ // Draw heart mask
+ heartMask.setFillColor(guppN);
+ heartMask.setPointCount(37);
+ heartMask.setPoint(0, sf::Vector2f(0.1655f, -0.078f));
+ heartMask.setPoint(1, sf::Vector2f(0.168f, -0.0679f));
+ heartMask.setPoint(2, sf::Vector2f(0.1705f, -0.0554f));
+ heartMask.setPoint(3, sf::Vector2f(0.1723f, -0.043f));
+ heartMask.setPoint(4, sf::Vector2f(0.1737f, -0.0306f));
+ heartMask.setPoint(5, sf::Vector2f(0.1745f, -0.0183f));
+ heartMask.setPoint(6, sf::Vector2f(0.1749f, -0.0061f));
+ for (int i = 0; i < 6; ++i)
+ {
+ heartMask.setPoint(i + 7, vecMult(heartMask.getPoint(6 - i), sf::Vector2f(1.f, -1.f)));
+ }
+ heartMask.setPoint(13, sf::Vector2f(0.1648f, 0.0804f));
+ heartMask.setPoint(14, sf::Vector2f(0.1610f, 0.093f));
+ heartMask.setPoint(15, sf::Vector2f(0.1563f, 0.1055f));
+ heartMask.setPoint(16, sf::Vector2f(0.1508f, 0.1178f));
+ heartMask.setPoint(17, sf::Vector2f(0.1447f, 0.1294f));
+ heartMask.setPoint(18, sf::Vector2f(0.f, 0.38f));
+ for (int i = 0; i < 18; ++i)
+ {
+ heartMask.setPoint(i + 19, vecMult(heartMask.getPoint(17 - i), sf::Vector2f(-1.f, 1.f)));
+ }
+ // Draw heart top
+ heartTop.setPointCount(8);
+ heartTop.setPoint(0, sf::Vector2f(-0.1655f, -0.0780f));
+ heartTop.setPoint(1, sf::Vector2f(-0.1401f, -0.0689f));
+ heartTop.setPoint(2, sf::Vector2f(-0.1097f, -0.0601f));
+ heartTop.setPoint(3, sf::Vector2f(-0.1025f, -0.0584f));
+ for (int i = 0; i < 4; ++i)
+ {
+ heartTop.setPoint(i + 4, vecMult(heartTop.getPoint(3 - i), sf::Vector2f(-1.f, 1.f)));
+ }
+ // Draw heart triangle
+ heartTri.setPointCount(3);
+ heartTri.setPoint(0, sf::Vector2f(-0.1025f, -0.0584f));
+ heartTri.setPoint(1, sf::Vector2f(0.f, 0.0935f));
+ heartTri.setPoint(2, sf::Vector2f(0.1025f, -0.0584f));
+ // Draw gland mask
+ glandMask.setFillColor(guppN);
+ glandMask.setPointCount(3);
+ glandMask.setPoint(0, sf::Vector2f(-0.0783f, -0.0942f));
+ glandMask.setPoint(1, sf::Vector2f(0.f, 0.022f));
+ glandMask.setPoint(2, sf::Vector2f(0.0783f, -0.0942f));
+ // Draw gland
+ gland.setPointCount(3);
+ gland.setPoint(0, sf::Vector2f(-0.0513f, -0.0899f));
+ gland.setPoint(1, sf::Vector2f(0.f, -0.0138f));
+ gland.setPoint(2, sf::Vector2f(0.0513f, -0.0899f));
+ // Draw eye mask
+ sf::CircleShape emTemp = sf::CircleShape(0.4133f, 180);
+ eyeMask.setFillColor(guppN);
+ eyeMask.setOrigin(0.4133f, 0.9133f);
+ eyeMask.setPointCount(32);
+ for (int i = 0; i < 31; ++i)
+ {
+ eyeMask.setPoint(i, emTemp.getPoint(i + 75));
+ }
+ eyeMask.setPoint(31, sf::Vector2f(0.4133f, 0.4133f));
+ // Draw eye cells
+ sf::CircleShape ecTemp = sf::CircleShape(0.3933f, 180);
+ for (int i = 0; i < 15; ++i)
+ {
+ eyeCells[i].setPointCount(4);
+ eyeCells[i].setOrigin(0.3933f, 0.8933f);
+ for (int j = 0; j < 3; ++j)
+ {
+ eyeCells[i].setPoint(j, ecTemp.getPoint(i * 2 + j + 75));
+ }
+ eyeCells[i].setPoint(3, sf::Vector2f(0.3933f, 0.3933f));
+ }
+ // Draw eye cavity
+ sf::CircleShape ekTemp = sf::CircleShape(0.3333f, 180);
+ eyeCavity.setPointCount(32);
+ eyeCavity.setFillColor(prms.worldColor);
+ eyeCavity.setOrigin(0.3333f, 0.8333f);
+ for (int i = 0; i < 31; ++i)
+ {
+ eyeCavity.setPoint(i, ekTemp.getPoint(i + 75));
+ }
+ eyeCavity.setPoint(31, sf::Vector2f(0.3333f, 0.3333f));
+}
diff --git a/Simulation/SimBase_Update.cpp b/Simulation/SimBase_Update.cpp
new file mode 100644
index 0000000..fc50c58
--- /dev/null
+++ b/Simulation/SimBase_Update.cpp
@@ -0,0 +1,55 @@
+#include "SimBase.hpp"
+
+void SimBase::update()
+{
+ if (paused)
+ {
+ camera.update();
+ return;
+ }
+
+ ++step;
+ text.steps.setString("Steps: " + nts(step));
+
+ if (timer.getElapsedTime().asSeconds() > 1.f)
+ {
+ timer.restart();
+ text.fps.setString("FPS: " + nts(frameCounter));
+ frameCounter = 0;
+ }
+ else
+ {
+ ++frameCounter;
+ }
+
+ for (auto &i : zappers)
+ {
+ i.update();
+ }
+
+ // Create new pellet if needed
+ if (pelletCount < prms.pelletQtty && !(step % prms.pelletCreationDelay))
+ {
+ for (auto &i : pellets)
+ {
+ if (!i.isCreated())
+ {
+ i.create();
+ break;
+ }
+ }
+ }
+ for (auto &i : pellets)
+ {
+ i.update();
+ }
+
+ for (auto &i : corpses)
+ {
+ i.update();
+ }
+
+ updateSpecs();
+
+ tank.updateAllPhysics();
+}
diff --git a/Simulation/SimFitness.hpp b/Simulation/SimFitness.hpp
new file mode 100644
index 0000000..7eb7974
--- /dev/null
+++ b/Simulation/SimFitness.hpp
@@ -0,0 +1,26 @@
+#ifndef __SIMFITNESS_HPP__
+#define __SIMFITNESS_HPP__
+
+#include <Population.hpp>
+#include <SingleMLP.hpp>
+#include <DualMLP.hpp>
+#include <SimpleRN.hpp>
+#include <FullyRN.hpp>
+
+#include "SimBase.hpp"
+
+class SimFitness : public SimBase
+{
+ bool startSpecs();
+ void updateSpecs();
+
+ std::unique_ptr<Population> population;
+
+ unsigned currentPopulation = 0;
+ unsigned currentGeneration = 0;
+ unsigned fitnessRecord = 0;
+
+ friend class Guppie;
+};
+
+#endif // __SIMFITNESS_HPP__
diff --git a/Simulation/SimFitness_StartSpecs.cpp b/Simulation/SimFitness_StartSpecs.cpp
new file mode 100644
index 0000000..8fe1a41
--- /dev/null
+++ b/Simulation/SimFitness_StartSpecs.cpp
@@ -0,0 +1,60 @@
+#include "SimFitness.hpp"
+
+bool SimFitness::startSpecs()
+{
+ if (!text.startup(this, SELECTION_BY_FITNESS))
+ {
+ return false;
+ }
+
+ std::unique_ptr<NeuralNet> dummy;
+ if (prms.netClass == SINGLE_MLP)
+ {
+ dummy = std::unique_ptr<NeuralNet>(new SingleMLP(82, prms.npHiddenLayer, 5, prms.nodeClass, true));
+ }
+ else if (prms.netClass == DUAL_MLP)
+ {
+ dummy = std::unique_ptr<NeuralNet>(new DualMLP(82, prms.npHiddenLayer, 5, prms.nodeClass, true));
+ }
+ else if (prms.netClass == SIMPLE_RN)
+ {
+ dummy = std::unique_ptr<NeuralNet>(new SimpleRN(82, prms.npHiddenLayer, 5, prms.nodeClass, true));
+ }
+ else if (prms.netClass == FULLY_RN)
+ {
+ dummy = std::unique_ptr<NeuralNet>(new FullyRN(82, prms.npHiddenLayer, 5, prms.nodeClass, true));
+ }
+ unsigned chromosomeSize = dummy->getChromosomeSize();
+ population = std::unique_ptr<Population>(new Population(prms.popQtty * prms.popSize, prms.elites, chromosomeSize));
+
+ // Set first population
+ guppies.resize(prms.popSize);
+ unsigned index = 0;
+ for (auto &i : guppies)
+ {
+ i.startup(this);
+ if (prms.netClass == SINGLE_MLP)
+ {
+ i.neuralNet = std::shared_ptr<NeuralNet>(new SingleMLP(82, prms.npHiddenLayer, 5, prms.nodeClass, true));
+ }
+ else if (prms.netClass == DUAL_MLP)
+ {
+ i.neuralNet = std::shared_ptr<NeuralNet>(new DualMLP(82, prms.npHiddenLayer, 5, prms.nodeClass, true));
+ }
+ else if (prms.netClass == SIMPLE_RN)
+ {
+ i.neuralNet = std::shared_ptr<SimpleRN>(new SimpleRN(82, prms.npHiddenLayer, 5, prms.nodeClass, true));
+ }
+ else if (prms.netClass == FULLY_RN)
+ {
+ i.neuralNet = std::shared_ptr<FullyRN>(new FullyRN(82, prms.npHiddenLayer, 5, prms.nodeClass, true));
+ }
+ i.create();
+ // Set neural net initial random weights
+ i.neuralNet->setChromosome(population->getChromosome(index));
+
+ ++index;
+ }
+
+ return true;
+}
diff --git a/Simulation/SimFitness_UpdateSpecs.cpp b/Simulation/SimFitness_UpdateSpecs.cpp
new file mode 100644
index 0000000..3919914
--- /dev/null
+++ b/Simulation/SimFitness_UpdateSpecs.cpp
@@ -0,0 +1,40 @@
+#include "SimFitness.hpp"
+
+void SimFitness::updateSpecs()
+{
+ for (auto &i : guppies)
+ {
+ i.update();
+ }
+
+ if (!guppieCount)
+ {
+ unsigned soul = 0;
+ for (auto &i : guppies)
+ {
+ population->setFitness(currentPopulation * prms.popSize + soul, (unsigned)i.fitness);
+ ++soul;
+ }
+
+ ++currentPopulation;
+ if (currentPopulation == prms.popQtty)
+ {
+ population->roulleteWheel();
+
+ currentPopulation = 0;
+ ++currentGeneration;
+ }
+
+ unsigned index = 0;
+ for (auto &i : guppies)
+ {
+ i.clean();
+ i.create();
+ i.neuralNet->setChromosome(population->getChromosome(currentPopulation * prms.popSize + index));
+ ++index;
+ }
+
+ text.currentPop.setString("Current population: " + nts(currentPopulation + 1) + " / " + nts(prms.popQtty));
+ text.currentGen.setString("Current generation: " + nts(currentGeneration + 1));
+ }
+}
diff --git a/Simulation/Tank.cpp b/Simulation/Tank.cpp
new file mode 100644
index 0000000..7d0c6d1
--- /dev/null
+++ b/Simulation/Tank.cpp
@@ -0,0 +1,52 @@
+#include "Tank.hpp"
+#include "SimBase.hpp"
+
+void Tank::create(SimBase *sim)
+{
+ hSim = sim;
+
+ // Prepare tank graphics
+ setCenterRad(worldEdges, hSim->prms.worldRad);
+ worldEdges.setPointCount(360);
+ worldEdges.setFillColor(hSim->prms.worldColor);
+ worldEdges.setOutlineColor(hSim->prms.zapperColor);
+ worldEdges.setOutlineThickness(hSim->prms.worldRad / 100.f);
+
+ // Prepare tank physics
+ world.SetAllowSleeping(true);
+ contactListener.hSim = hSim;
+ world.SetContactListener(&contactListener);
+
+ // Create edge of the world
+ b2BodyDef worldDef;
+ worldDef.type = b2_staticBody;
+
+ tankEdge = world.CreateBody(&worldDef);
+
+ b2ChainShape shape;
+ b2Vec2 vrtx[360];
+ for (int dgr = 0; dgr < 360; ++dgr)
+ {
+ vrtx[dgr].Set(cosf((float)dgr / Params::RAD_DGRS), sinf((float)dgr / Params::RAD_DGRS)),
+ vrtx[dgr] *= hSim->prms.worldRad;
+ }
+ shape.CreateLoop(vrtx, 360);
+
+ b2FixtureDef worldFix;
+ worldFix.shape = &shape;
+ worldFix.friction = 1.f;
+
+ tankEdge->CreateFixture(&worldFix);
+}
+
+
+void Tank::updateAllPhysics()
+{
+ world.Step(1.f / 60.f, 8, 3);
+}
+
+
+void Tank::draw()
+{
+ hSim->window.draw(worldEdges);
+}
diff --git a/Simulation/Tank.hpp b/Simulation/Tank.hpp
new file mode 100644
index 0000000..f11d42b
--- /dev/null
+++ b/Simulation/Tank.hpp
@@ -0,0 +1,34 @@
+#ifndef __TANK_HPP__
+#define __TANK_HPP__
+
+#include <SFML/Graphics.hpp>
+#include <Box2d.h>
+
+#include "ContactListener.hpp"
+
+class SimBase;
+
+class Tank
+{
+public:
+ void create(SimBase *sim);
+ void updateAllPhysics();
+ void draw();
+
+private:
+ SimBase *hSim = nullptr;
+
+ b2World world = b2World(b2Vec2(0.f, 0.f));
+ sf::CircleShape worldEdges;
+ b2Body *tankEdge = nullptr;
+
+ ContactListener contactListener;
+
+ friend class Camera;
+ friend class Entity;
+ friend class Pellet;
+ friend class Guppie;
+ friend class Corpse;
+};
+
+#endif // __TANK_HPP__
diff --git a/Simulation/TextDisplay.cpp b/Simulation/TextDisplay.cpp
new file mode 100644
index 0000000..6cdd1ad
--- /dev/null
+++ b/Simulation/TextDisplay.cpp
@@ -0,0 +1,136 @@
+#include "TextDisplay.hpp"
+#include "SimBase.hpp"
+
+#include <sstream>
+
+bool TextDisplay::startup(SimBase *sim, SimStyle style)
+{
+ hSim = sim;
+ sStyle = style;
+
+ if (!font.loadFromFile("gfx\\font.ttf"))
+ {
+ return false;
+ }
+
+ const float TXT_MARGIN = Params::TXT_SIZE / 2.f;
+
+ // RIGHT PANEL
+ // Prepare left panel text
+ simState = sf::Text("Sim. state: RUNNING", font, Params::TXT_SIZE);
+ steps = sf::Text("Steps: 0", font, Params::TXT_SIZE);
+ // Separator
+ fps = sf::Text("FPS: 0", font, Params::TXT_SIZE);
+ gfx = sf::Text("Graphics: ON", font, Params::TXT_SIZE);
+ vSync = sf::Text("V. Sync: ON", font, Params::TXT_SIZE);
+ // Separator
+ worldRad = sf::Text("World radius: " + nts(hSim->prms.worldRad), font, Params::TXT_SIZE);
+ // Separator
+ zapperCnt = sf::Text("Zapper count: " + nts(hSim->prms.zapperQtty), font, Params::TXT_SIZE);
+ pelletCnt = sf::Text("Pellet count: " + nts(hSim->pelletCount) + " / " + nts(hSim->prms.pelletQtty), font, Params::TXT_SIZE);
+ guppieCnt = sf::Text("Guppie count: 0", font, Params::TXT_SIZE);
+ corpseCnt = sf::Text("Corpse count: 0", font, Params::TXT_SIZE);
+ if (sStyle == SELECTION_BY_FITNESS)
+ {
+ simStyle = sf::Text("Sim. style: FITNESS SELECTION", font, Params::TXT_SIZE);
+ currentPop = sf::Text("Current population: 1 / " + nts(hSim->prms.popQtty), font, Params::TXT_SIZE);
+ currentGen = sf::Text("Current generation: 1", font, Params::TXT_SIZE);
+ // Separator
+ longestLife = sf::Text("Fitness record: 0", font, Params::TXT_SIZE);
+ }
+ // Position and color text items
+ sf::Text *line = nullptr;
+ float posX = TXT_MARGIN * 2.f;
+ float posY = TXT_MARGIN * 2.f - Params::TXT_SIZE / 4.f;
+ for (line = &simState; line <= &corpseCnt; ++line)
+ {
+ line->setPosition(posX, posY);
+ line->setColor(hSim->prms.textColor);
+ posY += Params::TXT_SIZE;
+ if (line == &steps || line == &vSync || line == &worldRad || line == &corpseCnt)
+ {
+ posY += Params::TXT_SIZE;
+ }
+ }
+ if (sStyle == SELECTION_BY_FITNESS)
+ {
+ for (line = &simStyle; line <= &longestLife; ++line)
+ {
+ line->setPosition(posX, posY);
+ line->setColor(hSim->prms.textColor);
+ posY += Params::TXT_SIZE;
+ if (line == &currentGen)
+ {
+ posY += Params::TXT_SIZE;
+ }
+ }
+ }
+ // Prepare left panel
+ float lpTxtWidth = 0.f;
+ float lpTxtHeight = 0.f;
+ for (line = &simState; line <= &corpseCnt; ++line)
+ {
+ line->getGlobalBounds().width > lpTxtWidth ? lpTxtWidth = line->getGlobalBounds().width : lpTxtWidth = lpTxtWidth;
+ }
+ if (sStyle == SELECTION_BY_FITNESS)
+ {
+ for (line = &simStyle; line <= &longestLife; ++line)
+ {
+ line->getGlobalBounds().width > lpTxtWidth ? lpTxtWidth = line->getGlobalBounds().width : lpTxtWidth = lpTxtWidth;
+ }
+ lpTxtHeight = (longestLife.getGlobalBounds().height + longestLife.getPosition().y) - simState.getPosition().y;
+ }
+ leftPanel.setSize(sf::Vector2f(lpTxtWidth + TXT_MARGIN * 2.f, lpTxtHeight + TXT_MARGIN * 2.f));
+ leftPanel.setPosition(TXT_MARGIN, TXT_MARGIN);
+ leftPanel.setOutlineThickness(1.f);
+ leftPanel.setFillColor(sf::Color(0, 0, 0, 191));
+ leftPanel.setOutlineColor(hSim->prms.textColor);
+ // Append left panel separators
+ for (int i = 0; i < 5; ++i)
+ {
+ sepLP[i].setSize(sf::Vector2f(lpTxtWidth, 1.f));
+ sepLP[i].setFillColor(hSim->prms.textColor);
+ }
+ sepLP[0].setPosition(posX, fps.getPosition().y - TXT_MARGIN * 2.f / 3.f);
+ sepLP[1].setPosition(posX, worldRad.getPosition().y - TXT_MARGIN * 2.f / 3.f);
+ sepLP[2].setPosition(posX, zapperCnt.getPosition().y - TXT_MARGIN * 2.f / 3.f);
+ if (sStyle == SELECTION_BY_FITNESS)
+ {
+ sepLP[3].setPosition(posX, simStyle.getPosition().y - TXT_MARGIN * 2.f / 3.f);
+ sepLP[4].setPosition(posX, longestLife.getPosition().y - TXT_MARGIN * 2.f / 3.f);
+ }
+
+ return true;
+}
+
+
+void TextDisplay::print()
+{
+ sf::View textView = sf::View(sf::Vector2f(hSim->window.getSize().x / 2.f, hSim->window.getSize().y / 2.f), sf::Vector2f(hSim->window.getSize().x, hSim->window.getSize().y));
+ sf::View crntView = hSim->window.getView();
+
+ hSim->window.setView(textView);
+
+ // Print left panel
+ hSim->window.draw(leftPanel);
+ sf::Text *line = nullptr;
+ for (line = &simState; line <= &simStyle; ++line)
+ {
+ hSim->window.draw(*line);
+ }
+ if (sStyle == SELECTION_BY_FITNESS)
+ {
+ for (line = &currentPop; line <= &longestLife; ++line)
+ {
+ hSim->window.draw(*line);
+ }
+ }
+ for (int i = 0; i < 5; ++i)
+ {
+ hSim->window.draw(sepLP[i]);
+ }
+
+ // Print right panel
+
+ hSim->window.setView(crntView);
+}
diff --git a/Simulation/TextDisplay.hpp b/Simulation/TextDisplay.hpp
new file mode 100644
index 0000000..b46cefb
--- /dev/null
+++ b/Simulation/TextDisplay.hpp
@@ -0,0 +1,55 @@
+#ifndef __TEXTDISPLAY_HPP__
+#define __TEXTDISPLAY_HPP__
+
+#include <SFML/Graphics.hpp>
+
+#include "Params.hpp"
+
+class SimBase;
+
+class TextDisplay
+{
+public:
+ bool startup(SimBase *sim, SimStyle style);
+ void print();
+
+private:
+ SimBase *hSim = nullptr;
+ SimStyle sStyle;
+
+ sf::Font font;
+ sf::RectangleShape leftPanel;
+
+ // ON LEFT PANEL
+ sf::Text simState;
+ sf::Text steps;
+ // Separator
+ sf::Text fps;
+ sf::Text gfx;
+ sf::Text vSync;
+ // Separator
+ sf::Text worldRad;
+ // Separator
+ sf::Text zapperCnt;
+ sf::Text pelletCnt;
+ sf::Text guppieCnt;
+ sf::Text corpseCnt;
+ // Separator
+ sf::Text simStyle;
+ // If sim. style == sel. by fitness
+ sf::Text currentPop;
+ sf::Text currentGen;
+ // Separator
+ sf::Text longestLife;
+ // Left panel separators
+ sf::RectangleShape sepLP[5];
+
+ friend class SimBase;
+ friend class SimFitness;
+ friend class Entity;
+ friend class Pellet;
+ friend class Guppie;
+ friend class Corpse;
+};
+
+#endif // __TEXTDISPLAY_HPP__
diff --git a/Simulation/Zapper.cpp b/Simulation/Zapper.cpp
new file mode 100644
index 0000000..f31b996
--- /dev/null
+++ b/Simulation/Zapper.cpp
@@ -0,0 +1,46 @@
+#include "Zapper.hpp"
+#include "SimBase.hpp"
+
+void Zapper::startup(SimBase *sim)
+{
+ hSim = sim;
+ radius = Params::ZAPPER_RAD;
+}
+
+
+void Zapper::update()
+{
+ float forceX = realRand(-hSim->prms.zapperForce, hSim->prms.zapperForce);
+ float forceY = realRand(-hSim->prms.zapperForce, hSim->prms.zapperForce);
+ body->ApplyForceToCenter(b2Vec2(forceX, forceY));
+ float torque = realRand(-hSim->prms.zapperTorque, hSim->prms.zapperTorque);
+ body->ApplyTorque(torque);
+}
+
+
+void Zapper::draw()
+{
+ sf::Vector2f vSize = hSim->window.getView().getSize();
+ sf::Vector2f vCent = hSim->window.getView().getCenter();
+ if ( body->GetPosition().x + radius < vCent.x - vSize.x / 2.f ||
+ body->GetPosition().y + radius < vCent.y - vSize.y / 2.f ||
+ body->GetPosition().x - radius > vCent.x + vSize.x / 2.f ||
+ body->GetPosition().y - radius > vCent.y + vSize.y / 2.f )
+ {
+ return;
+ }
+
+ if (hSim->camera.zoom > Params::ZAPPER_RAD / 2.f)
+ {
+ hSim->zapperPoint.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->window.draw(hSim->zapperPoint);
+ }
+ else
+ {
+ hSim->zapperShell.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->zapperNucleus.setPosition(body->GetPosition().x, body->GetPosition().y);
+ hSim->zapperNucleus.setRotation(body->GetAngle() * hSim->prms.RAD_DGRS);
+ hSim->window.draw(hSim->zapperShell);
+ hSim->window.draw(hSim->zapperNucleus);
+ }
+}
diff --git a/Simulation/Zapper.hpp b/Simulation/Zapper.hpp
new file mode 100644
index 0000000..e71ff82
--- /dev/null
+++ b/Simulation/Zapper.hpp
@@ -0,0 +1,14 @@
+#ifndef __ZAPPER_HPP__
+#define __ZAPPER_HPP__
+
+#include "Entity.hpp"
+
+class Zapper : public Entity
+{
+public:
+ void startup(SimBase *sim);
+ void update();
+ void draw();
+};
+
+#endif // __ZAPPER_HPP__
diff --git a/bin/Release/Guppies.exe b/bin/Release/Guppies.exe
new file mode 100644
index 0000000..073fffb
--- /dev/null
+++ b/bin/Release/Guppies.exe
Binary files differ
diff --git a/bin/Release/Instructions.txt b/bin/Release/Instructions.txt
new file mode 100644
index 0000000..c7b48c0
--- /dev/null
+++ b/bin/Release/Instructions.txt
@@ -0,0 +1,255 @@
+================================================================================
+NEURAL GUPPIES -v0.1 beta
+Author: Paul T. Oliver (paul.t.oliver.design@gmail.com)
+================================================================================
+
+================================================================================
+Index:
+
+I. Disclaimer
+II. Usage instructions
+III. Parameters
+IV. Controls
+
+================================================================================
+
+================================================================================
+I. DISCLAIMER:
+
+Neural Guppies is a NeuroEvolution experiment that evolves virtual creatures
+into intelligent beings. It is a personal project aimed to test several
+concepts that interest me, so I thought I should share it with the
+community. However, it has no guaranty and has not been tested in any other
+system but mine. Thus, if you run this on your system, you must do it at your
+own risk. To see a brief introduction on Neural Guppies, visit the following
+links:
+
+http://www.youtube.com/watch?v=tCPzYM7B338
+http://www.youtube.com/watch?v=N-HjfS4P6r4
+http://www.youtube.com/watch?v=X7qUH8mSyUE
+http://forum.codecall.net/topic/72637-goopies-evolving-neural-networks-wip/
+
+Program is far from finished and can only begin Simulations from scratch
+(loading and saving simulations will be implemented soon). If you close the
+window the simulation will be lost. I've been able to successfully resume
+simulations after putting the computer to Sleep or Hibernate, (without
+closing the simulation window) but this may not work on all systems.
+
+Main concepts tested on this program are:
+ - Artificial Neural Networks
+ - Genetic Algorithms
+ - Neuro-evolution
+
+================================================================================
+
+================================================================================
+II. USAGE INSTRUCTIONS:
+
+1) Extract NeuralGuppies-v0.1beta.zip to your preferred directory.
+
+2) To begin a new simulation simply run Guppies.exe.
+
+3) Click on NEW SIMULATION.
+
+4) Set simulation parameters (see below to see what each parameter means).
+
+5) Click on Begin new simulation.
+
+================================================================================
+
+================================================================================
+III. PARAMETERS:
+
+The program comes with default parameters built in. You should use those as a
+starting point and experiment by tweaking them as much as you like. No control
+is set to the inputed parameters, so you must take care that they make sense to
+the program (for example, you should not make a world so small that objects
+don't fit on it!).
+
+What follows is a list of all the tweak-able parameters and what they mean.
+After the name of each numerical parameter is the type of number that it
+expects (positive integer, integer, positive floating point or floating point).
+My recommendation is to change them in small gaps you you can see how each of
+them affects the simulation.
+
+1) NETWORK STRUCTURE:
+ Defines the main topology of the Neural Network (i.e. the way that Nodes
+ connect with each other). The four possible choices (in order of
+ complexity) are:
+
+ a) Single MultiLayer Perceptron:
+ A FeedForward network with 1 hidden layer. Information flows
+ unidirectionally from input nodes to output nodes (and not the
+ other way around).
+
+ b) Dual MultiLayer Perceptron:
+ Same as above, but with two hidden layers instead of one.
+
+ c) Simple Recurrent Network (Elman Network):
+ This type of recurrent network has a set of "context" units that
+ store the output of the (single) hidden layer and feeds it back
+ to the input layer on the next time-step, giving it a kind of
+ "temporal" perception.
+
+ d) Fully Recurrent Network:
+ All Nodes in this network are connected to each other. It's the
+ most complex (and processor intensive) network of the four.
+
+2) NODE STRUCTURE:
+ Defines the structure of each network node. The two choices are:
+
+ a) Neuron:
+ Each neuron computes its outputs from a given set of inputs. Output
+ equals the weighted sum of all inputs.
+
+ b) Memory Cell:
+ This kind of node is based in the Long-Short Term Memory recurrent
+ network model. It contains 4 neurons, 3 of them act as "gates" that
+ allow it to block input, store it and output it, thus being able to
+ hold in information or "memories" for a long time span. It's the
+ most complex (and processor intensive) type of node.
+
+3) NODES PER HIDDEN LAYER (expects a positive integer):
+ Number of nodes that reside on each hidden layer. SingleMLPs, SimpleRNs and
+ FullyRNs have one hidden layer. DualMLPs have two (thus, their number of
+ hidden nodes is "this value" x 2). The more nodes, the more complex the
+ Neural Networks of the Guppies are (and the more time it'll take to evolve
+ them) but the more "intelligent" they can become (theoretically).
+
+4) SUB POPULATION SIZE (expects a positive integer):
+ Populations of Guppies are divided into sub-populations of individuals that
+ are placed on the Dish simultaneously. If you experience a slow frame rate,
+ you can make this sub-populations smaller in order to reduce processor
+ overhead. However, the bigger the sub-populations, the more chance the
+ Guppies have to interact with each other.
+
+5) SUB POPULATION QUANTITY (expects a positive integer):
+ Number of sub-populations (or population divisions). Thus, total population
+ of Guppies equals "sub-population qtty" x "this number". Larger populations
+ give the genetic algorithm more information (genes) to mix, thus they will
+ likely result in more "intelligent" Guppies. However, the larger the
+ population, the more cycles (time) the GA will need in order to evolve
+ intelligence.
+
+6) FITNESS BONUSES (expects a positive floating point value):
+ Bonus fitness points each Guppy receives for eating a food pellet (remember
+ that the more fitness points a Guppy makes during its life, the more
+ chance it has to reproduce).
+
+7) FITNESS BONUS PER GUPPY (expects a positive floating point value):
+ Bonus fitness points each Guppy receives for attacking another Guppy.
+
+8) FITNESS BONUS PER CORPSE max (expects a positive floating point value):
+ Bonus fitness points each Guppy receives for eating a corpse. Since corpses
+ "decay" this is the MAX value of a "fresh" corpse.
+
+9) DISH SIZE (expects a positive floating point value):
+ Size of the world.
+
+10) ZAPPER RANDOM FORCE (expects a positive floating point value):
+ Random movement force applied to Zappers each frame.
+
+11) ZAPPER RANDOM TORQUE (expects a positive floating point value):
+ Random rotation force applied to Zappers each frame.
+
+12) ZAPPER QUANTITY (expects a positive integer):
+ Number of Zappers (does not change).
+
+13) PELLET QUANTITY (expects a positive integer):
+ Max number of food pellets that can exist on any given time.
+
+14) PELLET CREATION DELAY (expects a positive integer):
+ Time it takes (in frames) for a new Pellet to be spawned in the world.
+
+15) START SCARCE:
+ Begin simulation with no Pellets in the world.
+
+16) CORPSE DECAY:
+ Corpses have a limited lifetime after they are created, after which they
+ disappear.
+
+17) CORPSE DECAY RATE (expects a positive integer):
+ Time it takes (in frames) for a corpse to decay.
+
+18) COLORS:
+ Colors of the entities in the world. Remember that Guppies "see" in three
+ colors (RED, GREEN and BLUE). Entities with similar colors would be
+ difficult to distinguish for a Guppy.
+
+19) ACTIVATION DELAY (expects a positive integer):
+ Time it takes for a Guppy to pass from being an "Egg" to being an adult.
+ It's important to leave this value a bit high (above 100) so to prevent a
+ Guppy from being born too near to another entity.
+
+20) THRUST FORCE (expects a positive floating point value):
+ Strength of Guppy thrust force. The higher the force, the higher the speed.
+
+21) THRUST RADIUS (expects a positive floating point value):
+ The higher this value, the faster the Guppies can "turn". Too high they
+ might not be able to control themselves. Default value provides a good
+ balance.
+
+22) INITIAL ENERGY (expects a positive floating point value):
+ Initial energy Guppies begin their life with. Each "energy point"
+ represents at most one second (60 frames) of life.
+
+23) MAX ENERGY (expects a positive floating point value):
+ Maximum energy points a Guppy can have at any given time.
+
+24) AGING RATE (expects a positive integer):
+ Rate at which Guppies "age". Aging for a Guppy means that it consumes
+ energy points faster (thus, it gets harder to stay alive the longer a Guppy
+ lives). This value being "x", each Guppy consumes 1 additional energy point
+ per second every "x" seconds it has lived. In other words, the smaller this
+ value is, the faster Guppies age.
+
+25) LEAVE CORPSE:
+ Guppy leaves a corpse behind when it dies.
+
+26) ENERGY TRANSFERS (expects floating point values):
+ Quantity of energy points transfered from entity to Guppy during collision.
+ Zappers should have a negative value so that they "steal" energy from the
+ Guppies whenever they touch. Other entities transfer their energy whenever
+ a Guppy attacks them head on (i.e. when they hit them with their frontal
+ "beak"). This should be made positive, so that they give the Guppy
+ additional lifetime.
+
+================================================================================
+
+================================================================================
+IV. CONTROLS:
+
+Once you hit the "Begin new simulation" button the parameter window will close
+and the simulation window will pop up.
+
+You can resize, minimize or maximize this window at any time, but if you close
+it the simulation will be lost! Next is a list of controls so you can navigate
+around the Dish and take a close look at th Guppies:
+
+I) Zoom in.
+O) Zoom out.
+Z) Zoom out completely.
+
+W) Shift camera up.
+A) Shift camera left.
+S) Shift camera down.
+D) Shift camera right.
+
+F11) Switch to Fullscreen.
+
+SPACE) Pause simulation.
+
+V) Turn on/off vSync (when turned off, rendering will be done at max speed).
+G) Turn on/off graphics (simulation goes faster when graphics are turned off).
+T) Turn on/off text display.
+
+MOUSE WHEEL UP/DOWN) Zoom in/out on cursor position.
+
+MOUSE CLICK) Shift camera to cursor position. If you click on an entity, that
+ will cause the camera to "follow" it around.
+
+* To accelerate the simulation to the max you should disable vSync, Graphics
+ and text rendering all at once. That way evolution can happen faster while
+ you're not directly looking at it.
+
+================================================================================ \ No newline at end of file
diff --git a/bin/Release/gfx/Thumbs.db b/bin/Release/gfx/Thumbs.db
new file mode 100644
index 0000000..ed02542
--- /dev/null
+++ b/bin/Release/gfx/Thumbs.db
Binary files differ
diff --git a/bin/Release/gfx/font.ttf b/bin/Release/gfx/font.ttf
new file mode 100644
index 0000000..53d8f2e
--- /dev/null
+++ b/bin/Release/gfx/font.ttf
Binary files differ
diff --git a/bin/Release/gfx/icon.png b/bin/Release/gfx/icon.png
new file mode 100644
index 0000000..6d3fafa
--- /dev/null
+++ b/bin/Release/gfx/icon.png
Binary files differ
diff --git a/bin/Release/gfx/icon_big.png b/bin/Release/gfx/icon_big.png
new file mode 100644
index 0000000..b23423a
--- /dev/null
+++ b/bin/Release/gfx/icon_big.png
Binary files differ
diff --git a/bin/Release/gfx/logo.png b/bin/Release/gfx/logo.png
new file mode 100644
index 0000000..91f7ff6
--- /dev/null
+++ b/bin/Release/gfx/logo.png
Binary files differ
diff --git a/gfx/Thumbs.db b/gfx/Thumbs.db
new file mode 100644
index 0000000..e0984dd
--- /dev/null
+++ b/gfx/Thumbs.db
Binary files differ
diff --git a/gfx/font.ttf b/gfx/font.ttf
new file mode 100644
index 0000000..53d8f2e
--- /dev/null
+++ b/gfx/font.ttf
Binary files differ
diff --git a/gfx/icon.png b/gfx/icon.png
new file mode 100644
index 0000000..6d3fafa
--- /dev/null
+++ b/gfx/icon.png
Binary files differ
diff --git a/gfx/icon_big.png b/gfx/icon_big.png
new file mode 100644
index 0000000..b23423a
--- /dev/null
+++ b/gfx/icon_big.png
Binary files differ
diff --git a/gfx/logo.png b/gfx/logo.png
new file mode 100644
index 0000000..91f7ff6
--- /dev/null
+++ b/gfx/logo.png
Binary files differ
diff --git a/icon.ico b/icon.ico
new file mode 100644
index 0000000..9c73e10
--- /dev/null
+++ b/icon.ico
Binary files differ
diff --git a/obj/Release/Simulation/.keep b/obj/Release/Simulation/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/obj/Release/Simulation/.keep
diff --git a/obj/Release/resource.res b/obj/Release/resource.res
new file mode 100644
index 0000000..fd7ddf2
--- /dev/null
+++ b/obj/Release/resource.res
Binary files differ
diff --git a/prms/test.prms b/prms/test.prms
new file mode 100644
index 0000000..8780150
--- /dev/null
+++ b/prms/test.prms
@@ -0,0 +1,37 @@
+[BEGIN PARAMS]
+0
+0
+80
+20
+20
+40
+9000
+36000
+36000
+40
+50
+150
+20
+400
+150
+0
+1
+3600
+rgb(15, 15, 15)
+black
+blue
+green
+red
+red
+120
+5
+0.05
+60
+180
+600
+1
+-20
+15
+60
+60
+[END PARAMS]
diff --git a/resource.rc b/resource.rc
new file mode 100644
index 0000000..7cbfc37
--- /dev/null
+++ b/resource.rc
@@ -0,0 +1,3 @@
+aaaa ICON "icon.ico"
+
+#include "wx/msw/wx.rc"
diff --git a/wxsmith/Guppies1_0dialog.wxs b/wxsmith/Guppies1_0dialog.wxs
new file mode 100644
index 0000000..f21dbd5
--- /dev/null
+++ b/wxsmith/Guppies1_0dialog.wxs
@@ -0,0 +1,1038 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<wxsmith>
+ <object class="wxDialog" name="Guppies1_0Dialog">
+ <title>Neural Guppies - 0.1 beta</title>
+ <centered>1</centered>
+ <id_arg>0</id_arg>
+ <style>wxDEFAULT_DIALOG_STYLE|wxMINIMIZE_BOX</style>
+ <handler function="OnInit" entry="EVT_INIT_DIALOG" />
+ <object class="wxBoxSizer" variable="BoxSizer1" member="yes">
+ <object class="sizeritem">
+ <object class="wxPanel" name="ID_PANEL1" variable="Panel1" member="yes">
+ <object class="wxBoxSizer" variable="BoxSizer2" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxNotebook" name="ID_NOTEBOOK1" variable="Notebook1" member="yes">
+ <handler function="OnNotebook1PageChanged" entry="EVT_NOTEBOOK_PAGE_CHANGED" />
+ <object class="notebookpage">
+ <object class="wxPanel" name="ID_PANEL4" variable="Panel4" member="yes">
+ <bg>wxSYS_COLOUR_BTNHIGHLIGHT</bg>
+ <object class="wxBoxSizer" variable="BoxSizer27" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticBitmap" name="ID_STATICBITMAP1" variable="StaticBitmap1" member="yes">
+ <bitmap>gfx\logo.png</bitmap>
+ <style>0</style>
+ </object>
+ <flag>wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticLine" name="ID_STATICLINE3" variable="StaticLine3" member="yes">
+ <size>10,-1</size>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT37" variable="StaticText37" member="yes">
+ <label>&#x0A;Version -0.1 beta 20121220&#x0A;&#x0A;By: Paul T. Oliver</label>
+ <font>
+ <size>11</size>
+ <style>normal</style>
+ <weight>normal</weight>
+ <underlined>0</underlined>
+ <family>swiss</family>
+ <face>DejaVu Sans Mono</face>
+ </font>
+ <style>wxALIGN_CENTRE</style>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT39" variable="StaticText39" member="yes">
+ <label>paul.t.oliver.design@gmail.com</label>
+ </object>
+ <flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ </object>
+ <object class="sizeritem">
+ <object class="wxHyperlinkCtrl" name="ID_HYPERLINKCTRL1" variable="HyperlinkCtrl1" member="yes" />
+ <flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>4</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer28" member="no">
+ <object class="sizeritem">
+ <object class="wxButton" name="ID_BUTTON4" variable="Button4" member="yes">
+ <label>Load simulation</label>
+ <font>
+ <size>11</size>
+ <style>normal</style>
+ <weight>normal</weight>
+ <underlined>0</underlined>
+ <family>swiss</family>
+ <face>DejaVu Sans Mono</face>
+ </font>
+ <handler function="OnButton4Click" entry="EVT_BUTTON" />
+ </object>
+ <flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxButton" name="ID_BUTTON3" variable="Button3" member="yes">
+ <label>New simulation</label>
+ <font>
+ <size>11</size>
+ <style>normal</style>
+ <weight>normal</weight>
+ <underlined>0</underlined>
+ <family>swiss</family>
+ <face>DejaVu Sans Mono</face>
+ </font>
+ <handler function="OnButton3Click" entry="EVT_BUTTON" />
+ </object>
+ <flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT38" variable="StaticText38" member="yes">
+ <label></label>
+ <style>wxALIGN_CENTRE</style>
+ </object>
+ <flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ </object>
+ </object>
+ <label>Welcome</label>
+ </object>
+ <object class="notebookpage">
+ <object class="wxPanel" name="ID_PANEL2" variable="Panel2" member="yes">
+ <pos>29,47</pos>
+ <bg>wxSYS_COLOUR_BTNHIGHLIGHT</bg>
+ <object class="wxBoxSizer" variable="BoxSizer3" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer4" member="no">
+ <object class="sizeritem">
+ <object class="wxFilePickerCtrl" name="ID_FILEPICKERCTRL1" variable="FilePickerCtrl1" member="yes">
+ <message>Load simulation</message>
+ <wildcard>*.sim</wildcard>
+ <enabled>0</enabled>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>3</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticLine" name="ID_STATICLINE1" variable="StaticLine1" member="yes">
+ <size>10,-1</size>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT1" variable="StaticText1" member="yes">
+ <label>No simulation loaded.</label>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>10</border>
+ <option>3</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticLine" name="ID_STATICLINE2" variable="StaticLine2" member="yes">
+ <size>10,-1</size>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer5" member="no">
+ <object class="sizeritem">
+ <object class="wxButton" name="ID_BUTTON1" variable="Button1" member="yes">
+ <label>Resume simulation</label>
+ <enabled>0</enabled>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ </object>
+ </object>
+ <label>Load simulation</label>
+ </object>
+ <object class="notebookpage">
+ <object class="wxPanel" name="ID_PANEL3" variable="Panel3" member="yes">
+ <pos>96,8</pos>
+ <bg>wxSYS_COLOUR_BTNHIGHLIGHT</bg>
+ <object class="wxBoxSizer" variable="BoxSizer6" member="no">
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer20" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticBoxSizer" variable="StaticBoxSizer8" member="no">
+ <label>Neural network parameters</label>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer21" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT31" variable="StaticText31" member="yes">
+ <label>Network structure</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT32" variable="StaticText32" member="yes">
+ <label>Node structure</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT33" variable="StaticText33" member="yes">
+ <label>Nodes per hidden layer</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer22" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxChoice" name="ID_CHOICE1" variable="Choice1" member="yes">
+ <content>
+ <item>Single MLP</item>
+ <item>Dual MLP</item>
+ <item>Simple RN</item>
+ <item>Fully RN</item>
+ </content>
+ <selection>0</selection>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxChoice" name="ID_CHOICE2" variable="Choice2" member="yes">
+ <content>
+ <item>Neuron</item>
+ <item>Memory cell</item>
+ </content>
+ <selection>0</selection>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL18" variable="TextCtrl18" member="yes">
+ <value>80</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticBoxSizer" variable="StaticBoxSizer10" member="no">
+ <label>Population parameters</label>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer25" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT35" variable="StaticText35" member="yes">
+ <label>Sub-population size</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT34" variable="StaticText34" member="yes">
+ <label>Sub-population quantity</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT36" variable="StaticText36" member="yes">
+ <label>Elites per generation</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer26" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL22" variable="TextCtrl22" member="yes">
+ <value>20</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL23" variable="TextCtrl23" member="yes">
+ <value>20</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL24" variable="TextCtrl24" member="yes">
+ <value>40</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticBoxSizer" variable="StaticBoxSizer9" member="no">
+ <label>Fitness bonuses</label>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer23" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT28" variable="StaticText28" member="yes">
+ <label>Per pellet</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT30" variable="StaticText30" member="yes">
+ <label>Per guppy</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT29" variable="StaticText29" member="yes">
+ <label>Per corpse (max)</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer24" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL19" variable="TextCtrl19" member="yes">
+ <value>9000</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL20" variable="TextCtrl20" member="yes">
+ <value>36000</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL21" variable="TextCtrl21" member="yes">
+ <value>36000</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer7" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticBoxSizer" variable="StaticBoxSizer1" member="no">
+ <label>Dish parameters</label>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer15" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT2" variable="StaticText2" member="yes">
+ <label>Dish radius</label>
+ <help>Size of the circular dish that guppies live in</help>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer16" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL1" variable="TextCtrl1" member="yes">
+ <value>40</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticBoxSizer" variable="StaticBoxSizer2" member="no">
+ <label>Entity parameters</label>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer8" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT3" variable="StaticText3" member="yes">
+ <label>Zapper random force</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT4" variable="StaticText4" member="yes">
+ <label>Zapper random torque</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT5" variable="StaticText5" member="yes">
+ <label>Zapper quantity</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT6" variable="StaticText6" member="yes">
+ <label>Pellet quantity</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT7" variable="StaticText7" member="yes">
+ <label>Pellet creation delay</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT8" variable="StaticText8" member="yes">
+ <label>Start scarce</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT9" variable="StaticText9" member="yes">
+ <label>Corpse decay</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT10" variable="StaticText10" member="yes">
+ <label>Corpse decay rate</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer9" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL2" variable="TextCtrl2" member="yes">
+ <value>50</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL3" variable="TextCtrl3" member="yes">
+ <value>150</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL4" variable="TextCtrl4" member="yes">
+ <value>20</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL5" variable="TextCtrl5" member="yes">
+ <value>400</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL6" variable="TextCtrl6" member="yes">
+ <value>150</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxCheckBox" name="ID_CHECKBOX1" variable="CheckBox1" member="yes" />
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxCheckBox" name="ID_CHECKBOX2" variable="CheckBox2" member="yes">
+ <checked>1</checked>
+ <handler function="OnCheckBox2Click" entry="EVT_CHECKBOX" />
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL8" variable="TextCtrl8" member="yes">
+ <value>3600</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticBoxSizer" variable="StaticBoxSizer5" member="no">
+ <label>Colors</label>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer17" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT22" variable="StaticText22" member="yes">
+ <label>Background</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT23" variable="StaticText23" member="yes">
+ <label>Dish fill (fog)</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT24" variable="StaticText24" member="yes">
+ <label>Zappers</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT25" variable="StaticText25" member="yes">
+ <label>Pellets</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT26" variable="StaticText26" member="yes">
+ <label>Corpses</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT27" variable="StaticText27" member="yes">
+ <label>Guppies</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer18" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxColourPickerCtrl" name="ID_COLOURPICKERCTRL1" variable="ColourPickerCtrl1" member="yes">
+ <colour>#0F0F0F</colour>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxColourPickerCtrl" name="ID_COLOURPICKERCTRL2" variable="ColourPickerCtrl2" member="yes">
+ <colour>#000000</colour>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxColourPickerCtrl" name="ID_COLOURPICKERCTRL3" variable="ColourPickerCtrl3" member="yes">
+ <colour>#0000FF</colour>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxColourPickerCtrl" name="ID_COLOURPICKERCTRL4" variable="ColourPickerCtrl4" member="yes">
+ <colour>#00FF00</colour>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxColourPickerCtrl" name="ID_COLOURPICKERCTRL5" variable="ColourPickerCtrl5" member="yes">
+ <colour>#FF0000</colour>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxColourPickerCtrl" name="ID_COLOURPICKERCTRL6" variable="ColourPickerCtrl6" member="yes">
+ <colour>#FF0000</colour>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer10" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticBoxSizer" variable="StaticBoxSizer3" member="no">
+ <label>Guppy parameters</label>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer11" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT11" variable="StaticText11" member="yes">
+ <label>Activation delay</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT12" variable="StaticText12" member="yes">
+ <label>Thrust force</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT13" variable="StaticText13" member="yes">
+ <label>Thrust radius</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT14" variable="StaticText14" member="yes">
+ <label>Initial energy</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT15" variable="StaticText15" member="yes">
+ <label>Max energy</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT16" variable="StaticText16" member="yes">
+ <label>Aging rate</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT17" variable="StaticText17" member="yes">
+ <label>Leave corpse</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer12" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL7" variable="TextCtrl7" member="yes">
+ <value>120</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL9" variable="TextCtrl9" member="yes">
+ <value>5</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL10" variable="TextCtrl10" member="yes">
+ <value>0.05</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL11" variable="TextCtrl11" member="yes">
+ <value>60</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL12" variable="TextCtrl12" member="yes">
+ <value>180</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL13" variable="TextCtrl13" member="yes">
+ <value>600</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxCheckBox" name="ID_CHECKBOX3" variable="CheckBox3" member="yes">
+ <checked>1</checked>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticBoxSizer" variable="StaticBoxSizer4" member="no">
+ <label>Energy transfers</label>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer13" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT18" variable="StaticText18" member="yes">
+ <label>From zappers</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT19" variable="StaticText19" member="yes">
+ <label>From pellets</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT20" variable="StaticText20" member="yes">
+ <label>From other guppies</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="ID_STATICTEXT21" variable="StaticText21" member="yes">
+ <label>From corpses (max)</label>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer14" member="no">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL14" variable="TextCtrl14" member="yes">
+ <value>-20</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL15" variable="TextCtrl15" member="yes">
+ <value>15</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL16" variable="TextCtrl16" member="yes">
+ <value>60</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="ID_TEXTCTRL17" variable="TextCtrl17" member="yes">
+ <value>60</value>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticBoxSizer" variable="StaticBoxSizer6" member="no">
+ <label>Load parameters</label>
+ <object class="sizeritem">
+ <object class="wxFilePickerCtrl" name="ID_FILEPICKERCTRL2" variable="FilePickerCtrl2" member="yes">
+ <message>Load parameters</message>
+ <path>prms/</path>
+ <wildcard>*.prms</wildcard>
+ <handler function="OnFilePickerCtrl2FileChanged" entry="EVT_FILEPICKER_CHANGED" />
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticBoxSizer" variable="StaticBoxSizer7" member="no">
+ <label>Save parameters</label>
+ <object class="sizeritem">
+ <object class="wxFilePickerCtrl" name="ID_FILEPICKERCTRL3" variable="FilePickerCtrl3" member="yes">
+ <message>Save parameters</message>
+ <path>prms/</path>
+ <wildcard>*.prms</wildcard>
+ <extra_code>wxFLP__SMALL</extra_code>
+ <style>wxFLP_OVERWRITE_PROMPT|wxFLP_SAVE</style>
+ <handler function="OnFilePickerCtrl3FileChanged" entry="EVT_FILEPICKER_CHANGED" />
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ <object class="sizeritem">
+ <object class="wxButton" name="ID_BUTTON5" variable="Button5" member="yes">
+ <label>Save as default</label>
+ </object>
+ <flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer" variable="BoxSizer19" member="no">
+ <object class="sizeritem">
+ <object class="wxButton" name="ID_BUTTON2" variable="Button2" member="yes">
+ <label>Begin new simulation</label>
+ <handler function="OnBeginNewSimulation" entry="EVT_BUTTON" />
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>10</border>
+ <option>1</option>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ </object>
+ <label>New simulation</label>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <border>5</border>
+ <option>1</option>
+ </object>
+ </object>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+ <option>1</option>
+ </object>
+ </object>
+ </object>
+</wxsmith>