Your message dated Fri, 11 Jan 2013 09:08:45 +0000 with message-id <1357895325.32456.7.camel@jacala.jungle.funky-badger.org> and subject line Re: Bug#685913: unblock: warzone2100/3.1~rc2-1 has caused the Debian Bug report #685913, regarding RM: warzone2100/3.1~beta11-2 to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) -- 685913: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=685913 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: unblock: warzone2100/3.1~rc2-1
- From: Paul Wise <pabs@debian.org>
- Date: Sun, 26 Aug 2012 13:51:47 +0800
- Message-id: <1345960306.9944.4.camel@chianamo>
Package: release.debian.org Severity: normal User: release.debian.org@packages.debian.org Usertags: unblock I would like to find out if it would be possible for the release team to review and unblock warzone2100 3.1~rc2-1. Here are some thoughts: * it is a leaf package and a game so it won't affect other packages, except via maintainers playing it too much ;) * it bumps the netcode version number so not having it in would mean that wheezy wz would be incompatible with the final wz 3.1 release and any other distributions that include 3.1. The alternative here is to remove it from wheezy altogether. * it fixes some memory leaks, crashes and other important issues that were found by upstream in 3.1 beta 11. * if I revert the two upstream commits that changed all the whitespace in a few files, ignore all changes to translations, data and non-Linux platforms then the diffstat size looks semi-reasonable, I've pasted the diffstat below and attached the filtered output. * Upstream switched the source tarball from gz to xz, hope that is ok. * I've uploaded the package to experimental in case you want to review the full diff including the style commits. The only changes to the Debian directory are the changelog and removal of the FTBFS fixing patch that was merged upstream. pabs@chianamo ~/devel/games/warzone2100 ((v3.1_rc2_style_changes_reverted)) $ git diff v3.1_beta11..v3.1_rc2_style_changes_reverted | filterdiff -x '*/po/*.po' -x '*/win32/*' -x '*/macosx/*' -x '*/data/*' | grep -v 'Binary files' | diffstat .gitignore | 6 ChangeLog | 17 + configure.ac | 7 icons/warzone2100.desktop | 6 lib/exceptionhandler/exceptionhandler.cpp | 8 lib/framework/crc.cpp | 28 + lib/framework/crc.h | 1 lib/framework/debug.cpp | 4 lib/framework/frameresource.cpp | 4 lib/framework/i18n.cpp | 54 +-- lib/framework/treap.cpp | 2 lib/ivis_opengl/bitimage.cpp | 239 +++++++++++++--- lib/ivis_opengl/bitimage.h | 24 - lib/ivis_opengl/ivisdef.h | 16 - lib/ivis_opengl/pieblitfunc.cpp | 29 -- lib/ivis_opengl/piedef.h | 1 lib/ivis_opengl/piedraw.cpp | 8 lib/ivis_opengl/piestate.cpp | 16 + lib/ivis_opengl/piestate.h | 2 lib/ivis_opengl/png_util.cpp | 8 lib/ivis_opengl/screen.cpp | 10 lib/netplay/netplay.cpp | 18 - lib/netplay/netplay.h | 3 lib/qtgame/wzapp_qt.cpp | 51 +-- lib/qtgame/wzapp_qt.h | 4 src/combat.cpp | 2 src/configuration.cpp | 40 +- src/display.cpp | 427 +++++++++--------------------- src/display.h | 13 src/display3d.cpp | 19 - src/droid.cpp | 39 -- src/droid.h | 3 src/edit3d.cpp | 5 src/frend.h | 2 src/frontend.cpp | 17 - src/frontend.h | 2 src/game.cpp | 51 +-- src/hci.cpp | 27 + src/init.cpp | 1 src/levels.cpp | 47 +++ src/levels.h | 1 src/loop.cpp | 1 src/main.cpp | 25 + src/map.cpp | 23 - src/mission.cpp | 20 - src/missiondef.h | 3 src/movedef.h | 6 src/multiint.cpp | 20 - src/multiopt.cpp | 6 src/multiplay.cpp | 11 src/qtscriptfuncs.cpp | 29 ++ src/radar.cpp | 3 src/researchdef.h | 1 src/scriptfuncs.cpp | 3 src/structure.cpp | 119 ++------ src/structure.h | 3 src/template.cpp | 48 ++- src/template.h | 2 src/transporter.cpp | 1 src/version.cpp | 2 src/warzoneconfig.h | 5 src/weapondef.h | 1 62 files changed, 832 insertions(+), 762 deletions(-) -- bye, pabs http://wiki.debian.org/PaulWisediff --git a/.gitignore b/.gitignore index ae9bddb..225de7e 100644 --- a/.gitignore +++ b/.gitignore @@ -213,7 +213,7 @@ tools/qwzm/ui_qwzm.h macosx/Warzone.xcodeproj/xcuserdata/* macosx/Warzone.xcodeproj/project.xcworkspace/xcuserdata/* macosx/Warzone.xcworkspace/xcuserdata/* -macosx/configs/codeident +macosx/configs/CS-ID.xcconfig # build folders /macosx/build/ @@ -268,10 +268,6 @@ warzone*.*build # profiler stuff win32/CodeAnalyst -# Split img files -data/base/images/frontend/ -data/base/images/intfac/ - # Tests /tests/jslist.txt /tests/maplist.txt diff --git a/ChangeLog b/ChangeLog index 363460e..1f39aa1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2012-08-05: Version 3.1 rc1 + * General: + * Change: Allow multiple AIs with similar names (commit:ee95d785bdfd72a490863d7cdb3f504f88f9eecd) + * Change: Increase the maximum number of terrain tiles (commit:ab44eafb7bd1daa2d0f4efe367673b4c2985a05d) + * Change: No longer save last map played (ticket:3618, commit:398f77ede082063bd1bc607d5814e9630f663967) + * Fix: Saving the game might crash it (ticket:3620, commit:fdb1c0b52153d3368ae79e8f0befdd2744b43692) + * Fix: Qt backend compatibility with Qt 4.8.2 (ticket:3562, commit:df32833ab8b17e6db5815b7eca9f5fe01a5b7f8f) + * Fix: Scavengers in challenges were always disabled (ticket:3630, commit:95677b02b9959b05372e7dc10286fe184bfd6cdd) + * Fix: Moving repair delivery points (ticket:3581, commit:caabd96741fb3113dc96127ae32826ada643992a) + * Fix: Destroyed research lab can no longer block research (ticket:3570, commit:6a04b6ad677678e1d824209dda45a70f85b64a96) + * Fix: Do not halt production on template becoming redundant (commit:7621581c8f76f3b7a774182cd3b5eee8e26b7954) + * Fix: Do not require texture_env_crossbar for shaders (ticket:3575, ticket:3629, commit:64a3cc13deda9a59aae2cf0705c68dbe3eadeaa8) + * Fix: Various memory issues (commit:032956e649e69aa51edd80787c9c94bf2c08d164, commit:88e94391669e54808b2d6f40cba994d3501efb08) + * Fix: Possible crash when delivery points are removed (commit:6382bbb08ea7e6ca93a0ba83fdb65952778c962a, ticket:2041) + * Fix: Fix loading of campaign savegames (commit:1461b3a5a81b72381bc3cc3dbc57bbd2f5ce22a7, commit:9784c655af2a66bd541268e2c9e6f19fcd1ac200) + * Fix: Terrain rendering should now be more visually accurate (ticket:3621, commit:087ab8c5058730925c747dcdf14c8319319b3929) + 2012-06-20: Version 3.1 beta11 * General: * Change: CB sensor also defends allies (commit:313738ed235c69c64c83eb9b987d63efc95d8782) diff --git a/configure.ac b/configure.ac index 3c97d4d..2bc68c7 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,10 @@ AC_PREREQ([2.56]) -AC_INIT([Warzone 2100],[3.1_beta11],[http://wz2100.net/],[warzone2100]) +AC_INIT([Warzone 2100],[3.1_rc2],[http://wz2100.net/],[warzone2100]) -AM_INIT_AUTOMAKE([1.10 tar-ustar]) +AM_INIT_AUTOMAKE([1.10 tar-ustar no-dist-gzip dist-xz]) + +# Set to the default or stupid automake will use the much slower but useless -e(xtreme!!!) option. +AC_SUBST([XZ_OPT], ["-6"]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([lib/framework/frame.cpp]) diff --git a/data/base/images/frontend.img b/data/base/images/frontend.img index ba06618..88b8db0 100644 diff --git a/data/base/images/frontend/image_115200.png b/data/base/images/frontend/image_115200.png new file mode 100644 index 0000000..47fe3a9 Binary files /dev/null and b/data/base/images/frontend/image_115200.png differ diff --git a/data/base/images/frontend/image_115200_hi.png b/data/base/images/frontend/image_115200_hi.png new file mode 100644 index 0000000..1b5f7a2 Binary files /dev/null and b/data/base/images/frontend/image_115200_hi.png differ diff --git a/data/base/images/frontend/image_14400.png b/data/base/images/frontend/image_14400.png new file mode 100644 index 0000000..465c878 Binary files /dev/null and b/data/base/images/frontend/image_14400.png differ diff --git a/data/base/images/frontend/image_14400_hi.png b/data/base/images/frontend/image_14400_hi.png new file mode 100644 index 0000000..faa5b88 Binary files /dev/null and b/data/base/images/frontend/image_14400_hi.png differ diff --git a/data/base/images/frontend/image_19200.png b/data/base/images/frontend/image_19200.png new file mode 100644 index 0000000..4076035 Binary files /dev/null and b/data/base/images/frontend/image_19200.png differ diff --git a/data/base/images/frontend/image_19200_hi.png b/data/base/images/frontend/image_19200_hi.png new file mode 100644 index 0000000..7667f08 Binary files /dev/null and b/data/base/images/frontend/image_19200_hi.png differ diff --git a/data/base/images/frontend/image_56000.png b/data/base/images/frontend/image_56000.png new file mode 100644 index 0000000..01aca97 Binary files /dev/null and b/data/base/images/frontend/image_56000.png differ diff --git a/data/base/images/frontend/image_56000_hi.png b/data/base/images/frontend/image_56000_hi.png new file mode 100644 index 0000000..f42a69c Binary files /dev/null and b/data/base/images/frontend/image_56000_hi.png differ diff --git a/data/base/images/frontend/image_alli.png b/data/base/images/frontend/image_alli.png new file mode 100644 index 0000000..93bbd38 Binary files /dev/null and b/data/base/images/frontend/image_alli.png differ diff --git a/data/base/images/frontend/image_alli_hi.png b/data/base/images/frontend/image_alli_hi.png new file mode 100644 index 0000000..37d6887 Binary files /dev/null and b/data/base/images/frontend/image_alli_hi.png differ diff --git a/data/base/images/frontend/image_alli_teams.png b/data/base/images/frontend/image_alli_teams.png new file mode 100644 index 0000000..40e617d Binary files /dev/null and b/data/base/images/frontend/image_alli_teams.png differ diff --git a/data/base/images/frontend/image_alli_teams_hi.png b/data/base/images/frontend/image_alli_teams_hi.png new file mode 100644 index 0000000..80f92a9 Binary files /dev/null and b/data/base/images/frontend/image_alli_teams_hi.png differ diff --git a/data/base/images/frontend/image_arena.png b/data/base/images/frontend/image_arena.png new file mode 100644 index 0000000..946472e Binary files /dev/null and b/data/base/images/frontend/image_arena.png differ diff --git a/data/base/images/frontend/image_arena_hi.png b/data/base/images/frontend/image_arena_hi.png new file mode 100644 index 0000000..17abcae Binary files /dev/null and b/data/base/images/frontend/image_arena_hi.png differ diff --git a/data/base/images/frontend/image_arena_over.png b/data/base/images/frontend/image_arena_over.png new file mode 100644 index 0000000..d1302f1 Binary files /dev/null and b/data/base/images/frontend/image_arena_over.png differ diff --git a/data/base/images/frontend/image_campaign.png b/data/base/images/frontend/image_campaign.png new file mode 100644 index 0000000..95c60f5 Binary files /dev/null and b/data/base/images/frontend/image_campaign.png differ diff --git a/data/base/images/frontend/image_campaign_hi.png b/data/base/images/frontend/image_campaign_hi.png new file mode 100644 index 0000000..739f8a2 Binary files /dev/null and b/data/base/images/frontend/image_campaign_hi.png differ diff --git a/data/base/images/frontend/image_campaign_over.png b/data/base/images/frontend/image_campaign_over.png new file mode 100644 index 0000000..c781b58 Binary files /dev/null and b/data/base/images/frontend/image_campaign_over.png differ diff --git a/data/base/images/frontend/image_check_off.png b/data/base/images/frontend/image_check_off.png new file mode 100644 index 0000000..bc136fe Binary files /dev/null and b/data/base/images/frontend/image_check_off.png differ diff --git a/data/base/images/frontend/image_check_off_hi.png b/data/base/images/frontend/image_check_off_hi.png new file mode 100644 index 0000000..70c0b26 Binary files /dev/null and b/data/base/images/frontend/image_check_off_hi.png differ diff --git a/data/base/images/frontend/image_check_on.png b/data/base/images/frontend/image_check_on.png new file mode 100644 index 0000000..fb31222 Binary files /dev/null and b/data/base/images/frontend/image_check_on.png differ diff --git a/data/base/images/frontend/image_check_on_hi.png b/data/base/images/frontend/image_check_on_hi.png new file mode 100644 index 0000000..4d7bba7 Binary files /dev/null and b/data/base/images/frontend/image_check_on_hi.png differ diff --git a/data/base/images/frontend/image_clearforce.png b/data/base/images/frontend/image_clearforce.png new file mode 100644 index 0000000..d50959d Binary files /dev/null and b/data/base/images/frontend/image_clearforce.png differ diff --git a/data/base/images/frontend/image_com1.png b/data/base/images/frontend/image_com1.png new file mode 100644 index 0000000..548da1a Binary files /dev/null and b/data/base/images/frontend/image_com1.png differ diff --git a/data/base/images/frontend/image_com1_hi.png b/data/base/images/frontend/image_com1_hi.png new file mode 100644 index 0000000..bb3b8fe Binary files /dev/null and b/data/base/images/frontend/image_com1_hi.png differ diff --git a/data/base/images/frontend/image_com2.png b/data/base/images/frontend/image_com2.png new file mode 100644 index 0000000..6c536f2 Binary files /dev/null and b/data/base/images/frontend/image_com2.png differ diff --git a/data/base/images/frontend/image_com2_hi.png b/data/base/images/frontend/image_com2_hi.png new file mode 100644 index 0000000..2485490 Binary files /dev/null and b/data/base/images/frontend/image_com2_hi.png differ diff --git a/data/base/images/frontend/image_com3.png b/data/base/images/frontend/image_com3.png new file mode 100644 index 0000000..a0fa369 Binary files /dev/null and b/data/base/images/frontend/image_com3.png differ diff --git a/data/base/images/frontend/image_com3_hi.png b/data/base/images/frontend/image_com3_hi.png new file mode 100644 index 0000000..c53b691 Binary files /dev/null and b/data/base/images/frontend/image_com3_hi.png differ diff --git a/data/base/images/frontend/image_com4.png b/data/base/images/frontend/image_com4.png new file mode 100644 index 0000000..36ba2d1 Binary files /dev/null and b/data/base/images/frontend/image_com4.png differ diff --git a/data/base/images/frontend/image_com4_hi.png b/data/base/images/frontend/image_com4_hi.png new file mode 100644 index 0000000..5cc6055 Binary files /dev/null and b/data/base/images/frontend/image_com4_hi.png differ diff --git a/data/base/images/frontend/image_computer_n.png b/data/base/images/frontend/image_computer_n.png new file mode 100644 index 0000000..6d02c3d Binary files /dev/null and b/data/base/images/frontend/image_computer_n.png differ diff --git a/data/base/images/frontend/image_computer_n_hi.png b/data/base/images/frontend/image_computer_n_hi.png new file mode 100644 index 0000000..a12e605 Binary files /dev/null and b/data/base/images/frontend/image_computer_n_hi.png differ diff --git a/data/base/images/frontend/image_computer_y.png b/data/base/images/frontend/image_computer_y.png new file mode 100644 index 0000000..c01f200 Binary files /dev/null and b/data/base/images/frontend/image_computer_y.png differ diff --git a/data/base/images/frontend/image_computer_y_hi.png b/data/base/images/frontend/image_computer_y_hi.png new file mode 100644 index 0000000..36d5af7 Binary files /dev/null and b/data/base/images/frontend/image_computer_y_hi.png differ diff --git a/data/base/images/frontend/image_cyborg.png b/data/base/images/frontend/image_cyborg.png new file mode 100644 index 0000000..e79b65b Binary files /dev/null and b/data/base/images/frontend/image_cyborg.png differ diff --git a/data/base/images/frontend/image_dark_locked.png b/data/base/images/frontend/image_dark_locked.png new file mode 100644 index 0000000..a9e2a83 Binary files /dev/null and b/data/base/images/frontend/image_dark_locked.png differ diff --git a/data/base/images/frontend/image_dark_unlocked.png b/data/base/images/frontend/image_dark_unlocked.png new file mode 100644 index 0000000..8bf1b44 Binary files /dev/null and b/data/base/images/frontend/image_dark_unlocked.png differ diff --git a/data/base/images/frontend/image_defaultforce.png b/data/base/images/frontend/image_defaultforce.png new file mode 100644 index 0000000..dd6489d Binary files /dev/null and b/data/base/images/frontend/image_defaultforce.png differ diff --git a/data/base/images/frontend/image_easy.png b/data/base/images/frontend/image_easy.png new file mode 100644 index 0000000..ae7e03e Binary files /dev/null and b/data/base/images/frontend/image_easy.png differ diff --git a/data/base/images/frontend/image_edit_force.png b/data/base/images/frontend/image_edit_force.png new file mode 100644 index 0000000..a227f6e Binary files /dev/null and b/data/base/images/frontend/image_edit_force.png differ diff --git a/data/base/images/frontend/image_edit_game.png b/data/base/images/frontend/image_edit_game.png new file mode 100644 index 0000000..3471ccf Binary files /dev/null and b/data/base/images/frontend/image_edit_game.png differ diff --git a/data/base/images/frontend/image_edit_game_hi.png b/data/base/images/frontend/image_edit_game_hi.png new file mode 100644 index 0000000..5c3280f Binary files /dev/null and b/data/base/images/frontend/image_edit_game_hi.png differ diff --git a/data/base/images/frontend/image_edit_map.png b/data/base/images/frontend/image_edit_map.png new file mode 100644 index 0000000..dfda51d Binary files /dev/null and b/data/base/images/frontend/image_edit_map.png differ diff --git a/data/base/images/frontend/image_edit_map_hi.png b/data/base/images/frontend/image_edit_map_hi.png new file mode 100644 index 0000000..0303f40 Binary files /dev/null and b/data/base/images/frontend/image_edit_map_hi.png differ diff --git a/data/base/images/frontend/image_edit_player.png b/data/base/images/frontend/image_edit_player.png new file mode 100644 index 0000000..470fb13 Binary files /dev/null and b/data/base/images/frontend/image_edit_player.png differ diff --git a/data/base/images/frontend/image_edit_player_hi.png b/data/base/images/frontend/image_edit_player_hi.png new file mode 100644 index 0000000..425bce2 Binary files /dev/null and b/data/base/images/frontend/image_edit_player_hi.png differ diff --git a/data/base/images/frontend/image_fe_logo.png b/data/base/images/frontend/image_fe_logo.png new file mode 100644 index 0000000..868e1ac Binary files /dev/null and b/data/base/images/frontend/image_fe_logo.png differ diff --git a/data/base/images/frontend/image_fog_off.png b/data/base/images/frontend/image_fog_off.png new file mode 100644 index 0000000..8982729 Binary files /dev/null and b/data/base/images/frontend/image_fog_off.png differ diff --git a/data/base/images/frontend/image_fog_off_hi.png b/data/base/images/frontend/image_fog_off_hi.png new file mode 100644 index 0000000..cac6e9b Binary files /dev/null and b/data/base/images/frontend/image_fog_off_hi.png differ diff --git a/data/base/images/frontend/image_fog_on.png b/data/base/images/frontend/image_fog_on.png new file mode 100644 index 0000000..49c6cee Binary files /dev/null and b/data/base/images/frontend/image_fog_on.png differ diff --git a/data/base/images/frontend/image_fog_on_hi.png b/data/base/images/frontend/image_fog_on_hi.png new file mode 100644 index 0000000..961e9bb Binary files /dev/null and b/data/base/images/frontend/image_fog_on_hi.png differ diff --git a/data/base/images/frontend/image_fraglimit.png b/data/base/images/frontend/image_fraglimit.png new file mode 100644 index 0000000..fbaeecb Binary files /dev/null and b/data/base/images/frontend/image_fraglimit.png differ diff --git a/data/base/images/frontend/image_fraglimit_hi.png b/data/base/images/frontend/image_fraglimit_hi.png new file mode 100644 index 0000000..7d3b902 Binary files /dev/null and b/data/base/images/frontend/image_fraglimit_hi.png differ diff --git a/data/base/images/frontend/image_hard.png b/data/base/images/frontend/image_hard.png new file mode 100644 index 0000000..3737807 Binary files /dev/null and b/data/base/images/frontend/image_hard.png differ diff --git a/data/base/images/frontend/image_hi23.png b/data/base/images/frontend/image_hi23.png new file mode 100644 index 0000000..03efe1e Binary files /dev/null and b/data/base/images/frontend/image_hi23.png differ diff --git a/data/base/images/frontend/image_hi31.png b/data/base/images/frontend/image_hi31.png new file mode 100644 index 0000000..c41782d Binary files /dev/null and b/data/base/images/frontend/image_hi31.png differ diff --git a/data/base/images/frontend/image_hi34.png b/data/base/images/frontend/image_hi34.png new file mode 100644 index 0000000..32acd58 Binary files /dev/null and b/data/base/images/frontend/image_hi34.png differ diff --git a/data/base/images/frontend/image_hi39.png b/data/base/images/frontend/image_hi39.png new file mode 100644 index 0000000..d71948c Binary files /dev/null and b/data/base/images/frontend/image_hi39.png differ diff --git a/data/base/images/frontend/image_hi41.png b/data/base/images/frontend/image_hi41.png new file mode 100644 index 0000000..900bc87 Binary files /dev/null and b/data/base/images/frontend/image_hi41.png differ diff --git a/data/base/images/frontend/image_hi56.png b/data/base/images/frontend/image_hi56.png new file mode 100644 index 0000000..5587fe4 Binary files /dev/null and b/data/base/images/frontend/image_hi56.png differ diff --git a/data/base/images/frontend/image_hi64.png b/data/base/images/frontend/image_hi64.png new file mode 100644 index 0000000..a09db8d Binary files /dev/null and b/data/base/images/frontend/image_hi64.png differ diff --git a/data/base/images/frontend/image_host.png b/data/base/images/frontend/image_host.png new file mode 100644 index 0000000..ca7d2f9 Binary files /dev/null and b/data/base/images/frontend/image_host.png differ diff --git a/data/base/images/frontend/image_host_hi.png b/data/base/images/frontend/image_host_hi.png new file mode 100644 index 0000000..9e373e9 Binary files /dev/null and b/data/base/images/frontend/image_host_hi.png differ diff --git a/data/base/images/frontend/image_insane.png b/data/base/images/frontend/image_insane.png new file mode 100644 index 0000000..88214a8 Binary files /dev/null and b/data/base/images/frontend/image_insane.png differ diff --git a/data/base/images/frontend/image_keymap_default.png b/data/base/images/frontend/image_keymap_default.png new file mode 100644 index 0000000..e0639b9 Binary files /dev/null and b/data/base/images/frontend/image_keymap_default.png differ diff --git a/data/base/images/frontend/image_keymap_default_hi.png b/data/base/images/frontend/image_keymap_default_hi.png new file mode 100644 index 0000000..e07ed41 Binary files /dev/null and b/data/base/images/frontend/image_keymap_default_hi.png differ diff --git a/data/base/images/frontend/image_kick.png b/data/base/images/frontend/image_kick.png new file mode 100644 index 0000000..4fdf57c Binary files /dev/null and b/data/base/images/frontend/image_kick.png differ diff --git a/data/base/images/frontend/image_kick_trans.png b/data/base/images/frontend/image_kick_trans.png new file mode 100644 index 0000000..ee9379f Binary files /dev/null and b/data/base/images/frontend/image_kick_trans.png differ diff --git a/data/base/images/frontend/image_lamp_amber.png b/data/base/images/frontend/image_lamp_amber.png new file mode 100644 index 0000000..30eaab2 Binary files /dev/null and b/data/base/images/frontend/image_lamp_amber.png differ diff --git a/data/base/images/frontend/image_lamp_green.png b/data/base/images/frontend/image_lamp_green.png new file mode 100644 index 0000000..1b9fddd Binary files /dev/null and b/data/base/images/frontend/image_lamp_green.png differ diff --git a/data/base/images/frontend/image_lamp_red.png b/data/base/images/frontend/image_lamp_red.png new file mode 100644 index 0000000..a90617f Binary files /dev/null and b/data/base/images/frontend/image_lamp_red.png differ diff --git a/data/base/images/frontend/image_lbase.png b/data/base/images/frontend/image_lbase.png new file mode 100644 index 0000000..0a0cc97 Binary files /dev/null and b/data/base/images/frontend/image_lbase.png differ diff --git a/data/base/images/frontend/image_lbase_hi.png b/data/base/images/frontend/image_lbase_hi.png new file mode 100644 index 0000000..d8464f9 Binary files /dev/null and b/data/base/images/frontend/image_lbase_hi.png differ diff --git a/data/base/images/frontend/image_loadforce.png b/data/base/images/frontend/image_loadforce.png new file mode 100644 index 0000000..b2ed3be Binary files /dev/null and b/data/base/images/frontend/image_loadforce.png differ diff --git a/data/base/images/frontend/image_lock_blue.png b/data/base/images/frontend/image_lock_blue.png new file mode 100644 index 0000000..55fb2ec Binary files /dev/null and b/data/base/images/frontend/image_lock_blue.png differ diff --git a/data/base/images/frontend/image_locked_nobg.png b/data/base/images/frontend/image_locked_nobg.png new file mode 100644 index 0000000..7557975 Binary files /dev/null and b/data/base/images/frontend/image_locked_nobg.png differ diff --git a/data/base/images/frontend/image_medal_bronze.png b/data/base/images/frontend/image_medal_bronze.png new file mode 100644 index 0000000..cf09a92 Binary files /dev/null and b/data/base/images/frontend/image_medal_bronze.png differ diff --git a/data/base/images/frontend/image_medal_dummy.png b/data/base/images/frontend/image_medal_dummy.png new file mode 100644 index 0000000..707d604 Binary files /dev/null and b/data/base/images/frontend/image_medal_dummy.png differ diff --git a/data/base/images/frontend/image_medal_gold.png b/data/base/images/frontend/image_medal_gold.png new file mode 100644 index 0000000..731d547 Binary files /dev/null and b/data/base/images/frontend/image_medal_gold.png differ diff --git a/data/base/images/frontend/image_medal_silver.png b/data/base/images/frontend/image_medal_silver.png new file mode 100644 index 0000000..71e8774 Binary files /dev/null and b/data/base/images/frontend/image_medal_silver.png differ diff --git a/data/base/images/frontend/image_medium.png b/data/base/images/frontend/image_medium.png new file mode 100644 index 0000000..ffb21d0 Binary files /dev/null and b/data/base/images/frontend/image_medium.png differ diff --git a/data/base/images/frontend/image_multirank1.png b/data/base/images/frontend/image_multirank1.png new file mode 100644 index 0000000..bbea64c Binary files /dev/null and b/data/base/images/frontend/image_multirank1.png differ diff --git a/data/base/images/frontend/image_multirank2.png b/data/base/images/frontend/image_multirank2.png new file mode 100644 index 0000000..71962eb Binary files /dev/null and b/data/base/images/frontend/image_multirank2.png differ diff --git a/data/base/images/frontend/image_multirank3.png b/data/base/images/frontend/image_multirank3.png new file mode 100644 index 0000000..7867b0a Binary files /dev/null and b/data/base/images/frontend/image_multirank3.png differ diff --git a/data/base/images/frontend/image_no.png b/data/base/images/frontend/image_no.png new file mode 100644 index 0000000..341819f Binary files /dev/null and b/data/base/images/frontend/image_no.png differ diff --git a/data/base/images/frontend/image_no_cyborg.png b/data/base/images/frontend/image_no_cyborg.png new file mode 100644 index 0000000..e51b421 Binary files /dev/null and b/data/base/images/frontend/image_no_cyborg.png differ diff --git a/data/base/images/frontend/image_no_lassat.png b/data/base/images/frontend/image_no_lassat.png new file mode 100644 index 0000000..3b05a0f Binary files /dev/null and b/data/base/images/frontend/image_no_lassat.png differ diff --git a/data/base/images/frontend/image_no_tank.png b/data/base/images/frontend/image_no_tank.png new file mode 100644 index 0000000..d724e80 Binary files /dev/null and b/data/base/images/frontend/image_no_tank.png differ diff --git a/data/base/images/frontend/image_no_uplink.png b/data/base/images/frontend/image_no_uplink.png new file mode 100644 index 0000000..20dfa1b Binary files /dev/null and b/data/base/images/frontend/image_no_uplink.png differ diff --git a/data/base/images/frontend/image_no_vtol.png b/data/base/images/frontend/image_no_vtol.png new file mode 100644 index 0000000..9dd6034 Binary files /dev/null and b/data/base/images/frontend/image_no_vtol.png differ diff --git a/data/base/images/frontend/image_noalli.png b/data/base/images/frontend/image_noalli.png new file mode 100644 index 0000000..05c6d0a Binary files /dev/null and b/data/base/images/frontend/image_noalli.png differ diff --git a/data/base/images/frontend/image_noalli_hi.png b/data/base/images/frontend/image_noalli_hi.png new file mode 100644 index 0000000..637c457 Binary files /dev/null and b/data/base/images/frontend/image_noalli_hi.png differ diff --git a/data/base/images/frontend/image_nobase.png b/data/base/images/frontend/image_nobase.png new file mode 100644 index 0000000..d14a4dc Binary files /dev/null and b/data/base/images/frontend/image_nobase.png differ diff --git a/data/base/images/frontend/image_nobase_hi.png b/data/base/images/frontend/image_nobase_hi.png new file mode 100644 index 0000000..2c5a323 Binary files /dev/null and b/data/base/images/frontend/image_nobase_hi.png differ diff --git a/data/base/images/frontend/image_nojoin.png b/data/base/images/frontend/image_nojoin.png new file mode 100644 index 0000000..34cae74 Binary files /dev/null and b/data/base/images/frontend/image_nojoin.png differ diff --git a/data/base/images/frontend/image_nojoin_full.png b/data/base/images/frontend/image_nojoin_full.png new file mode 100644 index 0000000..a199c5b Binary files /dev/null and b/data/base/images/frontend/image_nojoin_full.png differ diff --git a/data/base/images/frontend/image_nojoin_mod.png b/data/base/images/frontend/image_nojoin_mod.png new file mode 100644 index 0000000..f8ae75f Binary files /dev/null and b/data/base/images/frontend/image_nojoin_mod.png differ diff --git a/data/base/images/frontend/image_nolimit.png b/data/base/images/frontend/image_nolimit.png new file mode 100644 index 0000000..3e414fb Binary files /dev/null and b/data/base/images/frontend/image_nolimit.png differ diff --git a/data/base/images/frontend/image_nolimit_hi.png b/data/base/images/frontend/image_nolimit_hi.png new file mode 100644 index 0000000..2d316ed Binary files /dev/null and b/data/base/images/frontend/image_nolimit_hi.png differ diff --git a/data/base/images/frontend/image_nopencil.png b/data/base/images/frontend/image_nopencil.png new file mode 100644 index 0000000..299ff79 Binary files /dev/null and b/data/base/images/frontend/image_nopencil.png differ diff --git a/data/base/images/frontend/image_offalli.png b/data/base/images/frontend/image_offalli.png new file mode 100644 index 0000000..95f41a0 Binary files /dev/null and b/data/base/images/frontend/image_offalli.png differ diff --git a/data/base/images/frontend/image_offalli_hi.png b/data/base/images/frontend/image_offalli_hi.png new file mode 100644 index 0000000..8c17195 Binary files /dev/null and b/data/base/images/frontend/image_offalli_hi.png differ diff --git a/data/base/images/frontend/image_ok.png b/data/base/images/frontend/image_ok.png new file mode 100644 index 0000000..d7fa506 Binary files /dev/null and b/data/base/images/frontend/image_ok.png differ diff --git a/data/base/images/frontend/image_pencil.png b/data/base/images/frontend/image_pencil.png new file mode 100644 index 0000000..ca04f92 Binary files /dev/null and b/data/base/images/frontend/image_pencil.png differ diff --git a/data/base/images/frontend/image_player0.png b/data/base/images/frontend/image_player0.png new file mode 100644 index 0000000..42f1d77 Binary files /dev/null and b/data/base/images/frontend/image_player0.png differ diff --git a/data/base/images/frontend/image_player0_hi.png b/data/base/images/frontend/image_player0_hi.png new file mode 100644 index 0000000..40604af Binary files /dev/null and b/data/base/images/frontend/image_player0_hi.png differ diff --git a/data/base/images/frontend/image_player1.png b/data/base/images/frontend/image_player1.png new file mode 100644 index 0000000..f62112e Binary files /dev/null and b/data/base/images/frontend/image_player1.png differ diff --git a/data/base/images/frontend/image_player10.png b/data/base/images/frontend/image_player10.png new file mode 100644 index 0000000..6d2d960 Binary files /dev/null and b/data/base/images/frontend/image_player10.png differ diff --git a/data/base/images/frontend/image_player10_hi.png b/data/base/images/frontend/image_player10_hi.png new file mode 100644 index 0000000..31790d2 Binary files /dev/null and b/data/base/images/frontend/image_player10_hi.png differ diff --git a/data/base/images/frontend/image_player1_hi.png b/data/base/images/frontend/image_player1_hi.png new file mode 100644 index 0000000..eb86215 Binary files /dev/null and b/data/base/images/frontend/image_player1_hi.png differ diff --git a/data/base/images/frontend/image_player2.png b/data/base/images/frontend/image_player2.png new file mode 100644 index 0000000..cf2e187 Binary files /dev/null and b/data/base/images/frontend/image_player2.png differ diff --git a/data/base/images/frontend/image_player2_hi.png b/data/base/images/frontend/image_player2_hi.png new file mode 100644 index 0000000..04e652b Binary files /dev/null and b/data/base/images/frontend/image_player2_hi.png differ diff --git a/data/base/images/frontend/image_player3.png b/data/base/images/frontend/image_player3.png new file mode 100644 index 0000000..e303b6a Binary files /dev/null and b/data/base/images/frontend/image_player3.png differ diff --git a/data/base/images/frontend/image_player3_hi.png b/data/base/images/frontend/image_player3_hi.png new file mode 100644 index 0000000..4cf5f6f Binary files /dev/null and b/data/base/images/frontend/image_player3_hi.png differ diff --git a/data/base/images/frontend/image_player4.png b/data/base/images/frontend/image_player4.png new file mode 100644 index 0000000..c9e9fd2 Binary files /dev/null and b/data/base/images/frontend/image_player4.png differ diff --git a/data/base/images/frontend/image_player4_hi.png b/data/base/images/frontend/image_player4_hi.png new file mode 100644 index 0000000..55b3461 Binary files /dev/null and b/data/base/images/frontend/image_player4_hi.png differ diff --git a/data/base/images/frontend/image_player5.png b/data/base/images/frontend/image_player5.png new file mode 100644 index 0000000..ee09255 Binary files /dev/null and b/data/base/images/frontend/image_player5.png differ diff --git a/data/base/images/frontend/image_player5_hi.png b/data/base/images/frontend/image_player5_hi.png new file mode 100644 index 0000000..1bfba6d Binary files /dev/null and b/data/base/images/frontend/image_player5_hi.png differ diff --git a/data/base/images/frontend/image_player6.png b/data/base/images/frontend/image_player6.png new file mode 100644 index 0000000..340a99f Binary files /dev/null and b/data/base/images/frontend/image_player6.png differ diff --git a/data/base/images/frontend/image_player6_hi.png b/data/base/images/frontend/image_player6_hi.png new file mode 100644 index 0000000..049de7b Binary files /dev/null and b/data/base/images/frontend/image_player6_hi.png differ diff --git a/data/base/images/frontend/image_player7.png b/data/base/images/frontend/image_player7.png new file mode 100644 index 0000000..cbd40d5 Binary files /dev/null and b/data/base/images/frontend/image_player7.png differ diff --git a/data/base/images/frontend/image_player7_hi.png b/data/base/images/frontend/image_player7_hi.png new file mode 100644 index 0000000..9c29d8d Binary files /dev/null and b/data/base/images/frontend/image_player7_hi.png differ diff --git a/data/base/images/frontend/image_player8.png b/data/base/images/frontend/image_player8.png new file mode 100644 index 0000000..f0ef182 Binary files /dev/null and b/data/base/images/frontend/image_player8.png differ diff --git a/data/base/images/frontend/image_player8_hi.png b/data/base/images/frontend/image_player8_hi.png new file mode 100644 index 0000000..2e7094c Binary files /dev/null and b/data/base/images/frontend/image_player8_hi.png differ diff --git a/data/base/images/frontend/image_player9.png b/data/base/images/frontend/image_player9.png new file mode 100644 index 0000000..7ebf037 Binary files /dev/null and b/data/base/images/frontend/image_player9.png differ diff --git a/data/base/images/frontend/image_player9_hi.png b/data/base/images/frontend/image_player9_hi.png new file mode 100644 index 0000000..ff8ff97 Binary files /dev/null and b/data/base/images/frontend/image_player9_hi.png differ diff --git a/data/base/images/frontend/image_player_pc.png b/data/base/images/frontend/image_player_pc.png new file mode 100644 index 0000000..828215b Binary files /dev/null and b/data/base/images/frontend/image_player_pc.png differ diff --git a/data/base/images/frontend/image_playern.png b/data/base/images/frontend/image_playern.png new file mode 100644 index 0000000..d69d94e Binary files /dev/null and b/data/base/images/frontend/image_playern.png differ diff --git a/data/base/images/frontend/image_playern_hi.png b/data/base/images/frontend/image_playern_hi.png new file mode 100644 index 0000000..2b79f6d Binary files /dev/null and b/data/base/images/frontend/image_playern_hi.png differ diff --git a/data/base/images/frontend/image_playern_hi_tc.png b/data/base/images/frontend/image_playern_hi_tc.png new file mode 100644 index 0000000..84ef8c2 Binary files /dev/null and b/data/base/images/frontend/image_playern_hi_tc.png differ diff --git a/data/base/images/frontend/image_playern_tc.png b/data/base/images/frontend/image_playern_tc.png new file mode 100644 index 0000000..0a73e1a Binary files /dev/null and b/data/base/images/frontend/image_playern_tc.png differ diff --git a/data/base/images/frontend/image_playerx.png b/data/base/images/frontend/image_playerx.png new file mode 100644 index 0000000..322c75b Binary files /dev/null and b/data/base/images/frontend/image_playerx.png differ diff --git a/data/base/images/frontend/image_playerx_tc.png b/data/base/images/frontend/image_playerx_tc.png new file mode 100644 index 0000000..d5718a1 Binary files /dev/null and b/data/base/images/frontend/image_playerx_tc.png differ diff --git a/data/base/images/frontend/image_powhi.png b/data/base/images/frontend/image_powhi.png new file mode 100644 index 0000000..e5bd960 Binary files /dev/null and b/data/base/images/frontend/image_powhi.png differ diff --git a/data/base/images/frontend/image_powhi_hi.png b/data/base/images/frontend/image_powhi_hi.png new file mode 100644 index 0000000..06c74b0 Binary files /dev/null and b/data/base/images/frontend/image_powhi_hi.png differ diff --git a/data/base/images/frontend/image_powlo.png b/data/base/images/frontend/image_powlo.png new file mode 100644 index 0000000..0d44782 Binary files /dev/null and b/data/base/images/frontend/image_powlo.png differ diff --git a/data/base/images/frontend/image_powlo_hi.png b/data/base/images/frontend/image_powlo_hi.png new file mode 100644 index 0000000..33ebef5 Binary files /dev/null and b/data/base/images/frontend/image_powlo_hi.png differ diff --git a/data/base/images/frontend/image_powmed.png b/data/base/images/frontend/image_powmed.png new file mode 100644 index 0000000..0eb59f5 Binary files /dev/null and b/data/base/images/frontend/image_powmed.png differ diff --git a/data/base/images/frontend/image_powmed_hi.png b/data/base/images/frontend/image_powmed_hi.png new file mode 100644 index 0000000..934e77f Binary files /dev/null and b/data/base/images/frontend/image_powmed_hi.png differ diff --git a/data/base/images/frontend/image_question.png b/data/base/images/frontend/image_question.png new file mode 100644 index 0000000..5ae313c Binary files /dev/null and b/data/base/images/frontend/image_question.png differ diff --git a/data/base/images/frontend/image_refresh.png b/data/base/images/frontend/image_refresh.png new file mode 100644 index 0000000..5dbcee5 Binary files /dev/null and b/data/base/images/frontend/image_refresh.png differ diff --git a/data/base/images/frontend/image_return.png b/data/base/images/frontend/image_return.png new file mode 100644 index 0000000..71c2875 Binary files /dev/null and b/data/base/images/frontend/image_return.png differ diff --git a/data/base/images/frontend/image_return_hi.png b/data/base/images/frontend/image_return_hi.png new file mode 100644 index 0000000..d6af365 Binary files /dev/null and b/data/base/images/frontend/image_return_hi.png differ diff --git a/data/base/images/frontend/image_saveforce.png b/data/base/images/frontend/image_saveforce.png new file mode 100644 index 0000000..4f5cbf5 Binary files /dev/null and b/data/base/images/frontend/image_saveforce.png differ diff --git a/data/base/images/frontend/image_sbase.png b/data/base/images/frontend/image_sbase.png new file mode 100644 index 0000000..34232ec Binary files /dev/null and b/data/base/images/frontend/image_sbase.png differ diff --git a/data/base/images/frontend/image_sbase_hi.png b/data/base/images/frontend/image_sbase_hi.png new file mode 100644 index 0000000..b87fe23 Binary files /dev/null and b/data/base/images/frontend/image_sbase_hi.png differ diff --git a/data/base/images/frontend/image_scavengers_off.png b/data/base/images/frontend/image_scavengers_off.png new file mode 100644 index 0000000..52b9492 Binary files /dev/null and b/data/base/images/frontend/image_scavengers_off.png differ diff --git a/data/base/images/frontend/image_scavengers_off_hi.png b/data/base/images/frontend/image_scavengers_off_hi.png new file mode 100644 index 0000000..52d6ef3 Binary files /dev/null and b/data/base/images/frontend/image_scavengers_off_hi.png differ diff --git a/data/base/images/frontend/image_scavengers_on.png b/data/base/images/frontend/image_scavengers_on.png new file mode 100644 index 0000000..16040be Binary files /dev/null and b/data/base/images/frontend/image_scavengers_on.png differ diff --git a/data/base/images/frontend/image_scavengers_on_hi.png b/data/base/images/frontend/image_scavengers_on_hi.png new file mode 100644 index 0000000..9230b5a Binary files /dev/null and b/data/base/images/frontend/image_scavengers_on_hi.png differ diff --git a/data/base/images/frontend/image_skirmish.png b/data/base/images/frontend/image_skirmish.png new file mode 100644 index 0000000..3038562 Binary files /dev/null and b/data/base/images/frontend/image_skirmish.png differ diff --git a/data/base/images/frontend/image_skirmish_hi.png b/data/base/images/frontend/image_skirmish_hi.png new file mode 100644 index 0000000..f6aeb12 Binary files /dev/null and b/data/base/images/frontend/image_skirmish_hi.png differ diff --git a/data/base/images/frontend/image_skirmish_over.png b/data/base/images/frontend/image_skirmish_over.png new file mode 100644 index 0000000..72f61a5 Binary files /dev/null and b/data/base/images/frontend/image_skirmish_over.png differ diff --git a/data/base/images/frontend/image_slim.png b/data/base/images/frontend/image_slim.png new file mode 100644 index 0000000..746a84a Binary files /dev/null and b/data/base/images/frontend/image_slim.png differ diff --git a/data/base/images/frontend/image_slim_hi.png b/data/base/images/frontend/image_slim_hi.png new file mode 100644 index 0000000..49f2642 Binary files /dev/null and b/data/base/images/frontend/image_slim_hi.png differ diff --git a/data/base/images/frontend/image_tank.png b/data/base/images/frontend/image_tank.png new file mode 100644 index 0000000..2b75da0 Binary files /dev/null and b/data/base/images/frontend/image_tank.png differ diff --git a/data/base/images/frontend/image_team.png b/data/base/images/frontend/image_team.png new file mode 100644 index 0000000..564c761 Binary files /dev/null and b/data/base/images/frontend/image_team.png differ diff --git a/data/base/images/frontend/image_team0.png b/data/base/images/frontend/image_team0.png new file mode 100644 index 0000000..f7e3df9 Binary files /dev/null and b/data/base/images/frontend/image_team0.png differ diff --git a/data/base/images/frontend/image_team0_hi.png b/data/base/images/frontend/image_team0_hi.png new file mode 100644 index 0000000..2d1dd56 Binary files /dev/null and b/data/base/images/frontend/image_team0_hi.png differ diff --git a/data/base/images/frontend/image_team1.png b/data/base/images/frontend/image_team1.png new file mode 100644 index 0000000..5c9bece Binary files /dev/null and b/data/base/images/frontend/image_team1.png differ diff --git a/data/base/images/frontend/image_team10.png b/data/base/images/frontend/image_team10.png new file mode 100644 index 0000000..bb10c1a Binary files /dev/null and b/data/base/images/frontend/image_team10.png differ diff --git a/data/base/images/frontend/image_team10_hi.png b/data/base/images/frontend/image_team10_hi.png new file mode 100644 index 0000000..7c5a948 Binary files /dev/null and b/data/base/images/frontend/image_team10_hi.png differ diff --git a/data/base/images/frontend/image_team11.png b/data/base/images/frontend/image_team11.png new file mode 100644 index 0000000..1e20a7c Binary files /dev/null and b/data/base/images/frontend/image_team11.png differ diff --git a/data/base/images/frontend/image_team11_hi.png b/data/base/images/frontend/image_team11_hi.png new file mode 100644 index 0000000..8635337 Binary files /dev/null and b/data/base/images/frontend/image_team11_hi.png differ diff --git a/data/base/images/frontend/image_team12.png b/data/base/images/frontend/image_team12.png new file mode 100644 index 0000000..a83a648 Binary files /dev/null and b/data/base/images/frontend/image_team12.png differ diff --git a/data/base/images/frontend/image_team12_hi.png b/data/base/images/frontend/image_team12_hi.png new file mode 100644 index 0000000..9f6c406 Binary files /dev/null and b/data/base/images/frontend/image_team12_hi.png differ diff --git a/data/base/images/frontend/image_team13.png b/data/base/images/frontend/image_team13.png new file mode 100644 index 0000000..5903b2b Binary files /dev/null and b/data/base/images/frontend/image_team13.png differ diff --git a/data/base/images/frontend/image_team13_hi.png b/data/base/images/frontend/image_team13_hi.png new file mode 100644 index 0000000..ea14e68 Binary files /dev/null and b/data/base/images/frontend/image_team13_hi.png differ diff --git a/data/base/images/frontend/image_team14.png b/data/base/images/frontend/image_team14.png new file mode 100644 index 0000000..617128c Binary files /dev/null and b/data/base/images/frontend/image_team14.png differ diff --git a/data/base/images/frontend/image_team14_hi.png b/data/base/images/frontend/image_team14_hi.png new file mode 100644 index 0000000..ccc49c7 Binary files /dev/null and b/data/base/images/frontend/image_team14_hi.png differ diff --git a/data/base/images/frontend/image_team15.png b/data/base/images/frontend/image_team15.png new file mode 100644 index 0000000..68d47f9 Binary files /dev/null and b/data/base/images/frontend/image_team15.png differ diff --git a/data/base/images/frontend/image_team15_hi.png b/data/base/images/frontend/image_team15_hi.png new file mode 100644 index 0000000..ff09839 Binary files /dev/null and b/data/base/images/frontend/image_team15_hi.png differ diff --git a/data/base/images/frontend/image_team1_hi.png b/data/base/images/frontend/image_team1_hi.png new file mode 100644 index 0000000..dc23093 Binary files /dev/null and b/data/base/images/frontend/image_team1_hi.png differ diff --git a/data/base/images/frontend/image_team2.png b/data/base/images/frontend/image_team2.png new file mode 100644 index 0000000..81327e8 Binary files /dev/null and b/data/base/images/frontend/image_team2.png differ diff --git a/data/base/images/frontend/image_team2_hi.png b/data/base/images/frontend/image_team2_hi.png new file mode 100644 index 0000000..cd8fd8c Binary files /dev/null and b/data/base/images/frontend/image_team2_hi.png differ diff --git a/data/base/images/frontend/image_team3.png b/data/base/images/frontend/image_team3.png new file mode 100644 index 0000000..35dfca6 Binary files /dev/null and b/data/base/images/frontend/image_team3.png differ diff --git a/data/base/images/frontend/image_team3_hi.png b/data/base/images/frontend/image_team3_hi.png new file mode 100644 index 0000000..60992aa Binary files /dev/null and b/data/base/images/frontend/image_team3_hi.png differ diff --git a/data/base/images/frontend/image_team4.png b/data/base/images/frontend/image_team4.png new file mode 100644 index 0000000..7921409 Binary files /dev/null and b/data/base/images/frontend/image_team4.png differ diff --git a/data/base/images/frontend/image_team4_hi.png b/data/base/images/frontend/image_team4_hi.png new file mode 100644 index 0000000..5aee6f1 Binary files /dev/null and b/data/base/images/frontend/image_team4_hi.png differ diff --git a/data/base/images/frontend/image_team5.png b/data/base/images/frontend/image_team5.png new file mode 100644 index 0000000..f9a1d56 Binary files /dev/null and b/data/base/images/frontend/image_team5.png differ diff --git a/data/base/images/frontend/image_team5_hi.png b/data/base/images/frontend/image_team5_hi.png new file mode 100644 index 0000000..bc2fd34 Binary files /dev/null and b/data/base/images/frontend/image_team5_hi.png differ diff --git a/data/base/images/frontend/image_team6.png b/data/base/images/frontend/image_team6.png new file mode 100644 index 0000000..43f2f54 Binary files /dev/null and b/data/base/images/frontend/image_team6.png differ diff --git a/data/base/images/frontend/image_team6_hi.png b/data/base/images/frontend/image_team6_hi.png new file mode 100644 index 0000000..f25642d Binary files /dev/null and b/data/base/images/frontend/image_team6_hi.png differ diff --git a/data/base/images/frontend/image_team7.png b/data/base/images/frontend/image_team7.png new file mode 100644 index 0000000..c8c773b Binary files /dev/null and b/data/base/images/frontend/image_team7.png differ diff --git a/data/base/images/frontend/image_team7_hi.png b/data/base/images/frontend/image_team7_hi.png new file mode 100644 index 0000000..cd5a6b9 Binary files /dev/null and b/data/base/images/frontend/image_team7_hi.png differ diff --git a/data/base/images/frontend/image_team8.png b/data/base/images/frontend/image_team8.png new file mode 100644 index 0000000..7029c42 Binary files /dev/null and b/data/base/images/frontend/image_team8.png differ diff --git a/data/base/images/frontend/image_team8_hi.png b/data/base/images/frontend/image_team8_hi.png new file mode 100644 index 0000000..1adaf8a Binary files /dev/null and b/data/base/images/frontend/image_team8_hi.png differ diff --git a/data/base/images/frontend/image_team9.png b/data/base/images/frontend/image_team9.png new file mode 100644 index 0000000..87c4fcd Binary files /dev/null and b/data/base/images/frontend/image_team9.png differ diff --git a/data/base/images/frontend/image_team9_hi.png b/data/base/images/frontend/image_team9_hi.png new file mode 100644 index 0000000..31e8198 Binary files /dev/null and b/data/base/images/frontend/image_team9_hi.png differ diff --git a/data/base/images/frontend/image_team_hi.png b/data/base/images/frontend/image_team_hi.png new file mode 100644 index 0000000..22a3569 Binary files /dev/null and b/data/base/images/frontend/image_team_hi.png differ diff --git a/data/base/images/frontend/image_team_over.png b/data/base/images/frontend/image_team_over.png new file mode 100644 index 0000000..a14809e Binary files /dev/null and b/data/base/images/frontend/image_team_over.png differ diff --git a/data/base/images/frontend/image_techhi.png b/data/base/images/frontend/image_techhi.png new file mode 100644 index 0000000..eb32fd6 Binary files /dev/null and b/data/base/images/frontend/image_techhi.png differ diff --git a/data/base/images/frontend/image_techhi_hi.png b/data/base/images/frontend/image_techhi_hi.png new file mode 100644 index 0000000..54cbce3 Binary files /dev/null and b/data/base/images/frontend/image_techhi_hi.png differ diff --git a/data/base/images/frontend/image_techlo.png b/data/base/images/frontend/image_techlo.png new file mode 100644 index 0000000..efd0343 Binary files /dev/null and b/data/base/images/frontend/image_techlo.png differ diff --git a/data/base/images/frontend/image_techlo_hi.png b/data/base/images/frontend/image_techlo_hi.png new file mode 100644 index 0000000..f26b479 Binary files /dev/null and b/data/base/images/frontend/image_techlo_hi.png differ diff --git a/data/base/images/frontend/image_techmed.png b/data/base/images/frontend/image_techmed.png new file mode 100644 index 0000000..dc1c59f Binary files /dev/null and b/data/base/images/frontend/image_techmed.png differ diff --git a/data/base/images/frontend/image_techmed_hi.png b/data/base/images/frontend/image_techmed_hi.png new file mode 100644 index 0000000..eaf4433 Binary files /dev/null and b/data/base/images/frontend/image_techmed_hi.png differ diff --git a/data/base/images/frontend/image_timelimit.png b/data/base/images/frontend/image_timelimit.png new file mode 100644 index 0000000..c2d4020 Binary files /dev/null and b/data/base/images/frontend/image_timelimit.png differ diff --git a/data/base/images/frontend/image_timelimit_hi.png b/data/base/images/frontend/image_timelimit_hi.png new file mode 100644 index 0000000..1f15add Binary files /dev/null and b/data/base/images/frontend/image_timelimit_hi.png differ diff --git a/data/base/images/frontend/image_trans_locked.png b/data/base/images/frontend/image_trans_locked.png new file mode 100644 index 0000000..d6a4d76 Binary files /dev/null and b/data/base/images/frontend/image_trans_locked.png differ diff --git a/data/base/images/frontend/image_trans_unlocked.png b/data/base/images/frontend/image_trans_unlocked.png new file mode 100644 index 0000000..8be6ab0 Binary files /dev/null and b/data/base/images/frontend/image_trans_unlocked.png differ diff --git a/data/base/images/frontend/image_unlock_blue.png b/data/base/images/frontend/image_unlock_blue.png new file mode 100644 index 0000000..2ce5ef5 Binary files /dev/null and b/data/base/images/frontend/image_unlock_blue.png differ diff --git a/data/base/images/frontend/image_unlocked_nobg.png b/data/base/images/frontend/image_unlocked_nobg.png new file mode 100644 index 0000000..399ff6f Binary files /dev/null and b/data/base/images/frontend/image_unlocked_nobg.png differ diff --git a/data/base/images/frontend/image_vtol.png b/data/base/images/frontend/image_vtol.png new file mode 100644 index 0000000..0d91006 Binary files /dev/null and b/data/base/images/frontend/image_vtol.png differ diff --git a/data/base/images/frontend/image_wee_guy.png b/data/base/images/frontend/image_wee_guy.png new file mode 100644 index 0000000..172aacb Binary files /dev/null and b/data/base/images/frontend/image_wee_guy.png differ diff --git a/data/base/images/frontend0.png b/data/base/images/frontend0.png deleted file mode 100644 index 2852692..0000000 Binary files a/data/base/images/frontend0.png and /dev/null differ diff --git a/data/base/images/frontend1.png b/data/base/images/frontend1.png deleted file mode 100644 index 1cd78e7..0000000 Binary files a/data/base/images/frontend1.png and /dev/null differ diff --git a/data/base/images/frontend2.png b/data/base/images/frontend2.png deleted file mode 100644 index e697902..0000000 Binary files a/data/base/images/frontend2.png and /dev/null differ diff --git a/data/base/images/frontend3.png b/data/base/images/frontend3.png deleted file mode 100644 index 2a1578f..0000000 Binary files a/data/base/images/frontend3.png and /dev/null differ diff --git a/data/base/images/frontend4.png b/data/base/images/frontend4.png deleted file mode 100644 index 4f9c9c2..0000000 Binary files a/data/base/images/frontend4.png and /dev/null differ diff --git a/data/base/images/intfac.img b/data/base/images/intfac.img index 96ef3cc..c326464 100644 diff --git a/data/base/images/intfac/image_0.png b/data/base/images/intfac/image_0.png new file mode 100644 index 0000000..1633493 Binary files /dev/null and b/data/base/images/intfac/image_0.png differ diff --git a/data/base/images/intfac/image_1.png b/data/base/images/intfac/image_1.png new file mode 100644 index 0000000..7f31431 Binary files /dev/null and b/data/base/images/intfac/image_1.png differ diff --git a/data/base/images/intfac/image_2.png b/data/base/images/intfac/image_2.png new file mode 100644 index 0000000..05c1db9 Binary files /dev/null and b/data/base/images/intfac/image_2.png differ diff --git a/data/base/images/intfac/image_3.png b/data/base/images/intfac/image_3.png new file mode 100644 index 0000000..73ee66a Binary files /dev/null and b/data/base/images/intfac/image_3.png differ diff --git a/data/base/images/intfac/image_4.png b/data/base/images/intfac/image_4.png new file mode 100644 index 0000000..5fdb5ef Binary files /dev/null and b/data/base/images/intfac/image_4.png differ diff --git a/data/base/images/intfac/image_5.png b/data/base/images/intfac/image_5.png new file mode 100644 index 0000000..79635bd Binary files /dev/null and b/data/base/images/intfac/image_5.png differ diff --git a/data/base/images/intfac/image_6.png b/data/base/images/intfac/image_6.png new file mode 100644 index 0000000..54ec381 Binary files /dev/null and b/data/base/images/intfac/image_6.png differ diff --git a/data/base/images/intfac/image_7.png b/data/base/images/intfac/image_7.png new file mode 100644 index 0000000..7616059 Binary files /dev/null and b/data/base/images/intfac/image_7.png differ diff --git a/data/base/images/intfac/image_8.png b/data/base/images/intfac/image_8.png new file mode 100644 index 0000000..5bb7ef0 Binary files /dev/null and b/data/base/images/intfac/image_8.png differ diff --git a/data/base/images/intfac/image_9.png b/data/base/images/intfac/image_9.png new file mode 100644 index 0000000..eeb8197 Binary files /dev/null and b/data/base/images/intfac/image_9.png differ diff --git a/data/base/images/intfac/image_ally_research.png b/data/base/images/intfac/image_ally_research.png new file mode 100644 index 0000000..bce1e0a Binary files /dev/null and b/data/base/images/intfac/image_ally_research.png differ diff --git a/data/base/images/intfac/image_ally_research_tc.png b/data/base/images/intfac/image_ally_research_tc.png new file mode 100644 index 0000000..42cf50d Binary files /dev/null and b/data/base/images/intfac/image_ally_research_tc.png differ diff --git a/data/base/images/intfac/image_ascii100.png b/data/base/images/intfac/image_ascii100.png new file mode 100644 index 0000000..562c30d Binary files /dev/null and b/data/base/images/intfac/image_ascii100.png differ diff --git a/data/base/images/intfac/image_ascii101.png b/data/base/images/intfac/image_ascii101.png new file mode 100644 index 0000000..39ea1c0 Binary files /dev/null and b/data/base/images/intfac/image_ascii101.png differ diff --git a/data/base/images/intfac/image_ascii102.png b/data/base/images/intfac/image_ascii102.png new file mode 100644 index 0000000..eb9321e Binary files /dev/null and b/data/base/images/intfac/image_ascii102.png differ diff --git a/data/base/images/intfac/image_ascii103.png b/data/base/images/intfac/image_ascii103.png new file mode 100644 index 0000000..b84ad33 Binary files /dev/null and b/data/base/images/intfac/image_ascii103.png differ diff --git a/data/base/images/intfac/image_ascii104.png b/data/base/images/intfac/image_ascii104.png new file mode 100644 index 0000000..dbda0bd Binary files /dev/null and b/data/base/images/intfac/image_ascii104.png differ diff --git a/data/base/images/intfac/image_ascii105.png b/data/base/images/intfac/image_ascii105.png new file mode 100644 index 0000000..111a292 Binary files /dev/null and b/data/base/images/intfac/image_ascii105.png differ diff --git a/data/base/images/intfac/image_ascii106.png b/data/base/images/intfac/image_ascii106.png new file mode 100644 index 0000000..ff9ebce Binary files /dev/null and b/data/base/images/intfac/image_ascii106.png differ diff --git a/data/base/images/intfac/image_ascii107.png b/data/base/images/intfac/image_ascii107.png new file mode 100644 index 0000000..7b4d2d5 Binary files /dev/null and b/data/base/images/intfac/image_ascii107.png differ diff --git a/data/base/images/intfac/image_ascii108.png b/data/base/images/intfac/image_ascii108.png new file mode 100644 index 0000000..85c440c Binary files /dev/null and b/data/base/images/intfac/image_ascii108.png differ diff --git a/data/base/images/intfac/image_ascii109.png b/data/base/images/intfac/image_ascii109.png new file mode 100644 index 0000000..65c0bd0 Binary files /dev/null and b/data/base/images/intfac/image_ascii109.png differ diff --git a/data/base/images/intfac/image_ascii110.png b/data/base/images/intfac/image_ascii110.png new file mode 100644 index 0000000..e37dfe8 Binary files /dev/null and b/data/base/images/intfac/image_ascii110.png differ diff --git a/data/base/images/intfac/image_ascii111.png b/data/base/images/intfac/image_ascii111.png new file mode 100644 index 0000000..e32656d Binary files /dev/null and b/data/base/images/intfac/image_ascii111.png differ diff --git a/data/base/images/intfac/image_ascii112.png b/data/base/images/intfac/image_ascii112.png new file mode 100644 index 0000000..2c08d0d Binary files /dev/null and b/data/base/images/intfac/image_ascii112.png differ diff --git a/data/base/images/intfac/image_ascii113.png b/data/base/images/intfac/image_ascii113.png new file mode 100644 index 0000000..5c48b94 Binary files /dev/null and b/data/base/images/intfac/image_ascii113.png differ diff --git a/data/base/images/intfac/image_ascii114.png b/data/base/images/intfac/image_ascii114.png new file mode 100644 index 0000000..a6ca20c Binary files /dev/null and b/data/base/images/intfac/image_ascii114.png differ diff --git a/data/base/images/intfac/image_ascii115.png b/data/base/images/intfac/image_ascii115.png new file mode 100644 index 0000000..44b6d51 Binary files /dev/null and b/data/base/images/intfac/image_ascii115.png differ diff --git a/data/base/images/intfac/image_ascii116.png b/data/base/images/intfac/image_ascii116.png new file mode 100644 index 0000000..5b92f6a Binary files /dev/null and b/data/base/images/intfac/image_ascii116.png differ diff --git a/data/base/images/intfac/image_ascii117.png b/data/base/images/intfac/image_ascii117.png new file mode 100644 index 0000000..52a2715 Binary files /dev/null and b/data/base/images/intfac/image_ascii117.png differ diff --git a/data/base/images/intfac/image_ascii118.png b/data/base/images/intfac/image_ascii118.png new file mode 100644 index 0000000..a25f905 Binary files /dev/null and b/data/base/images/intfac/image_ascii118.png differ diff --git a/data/base/images/intfac/image_ascii119.png b/data/base/images/intfac/image_ascii119.png new file mode 100644 index 0000000..1d393d2 Binary files /dev/null and b/data/base/images/intfac/image_ascii119.png differ diff --git a/data/base/images/intfac/image_ascii120.png b/data/base/images/intfac/image_ascii120.png new file mode 100644 index 0000000..0dfec86 Binary files /dev/null and b/data/base/images/intfac/image_ascii120.png differ diff --git a/data/base/images/intfac/image_ascii121.png b/data/base/images/intfac/image_ascii121.png new file mode 100644 index 0000000..0321c65 Binary files /dev/null and b/data/base/images/intfac/image_ascii121.png differ diff --git a/data/base/images/intfac/image_ascii122.png b/data/base/images/intfac/image_ascii122.png new file mode 100644 index 0000000..a13a1fc Binary files /dev/null and b/data/base/images/intfac/image_ascii122.png differ diff --git a/data/base/images/intfac/image_ascii123.png b/data/base/images/intfac/image_ascii123.png new file mode 100644 index 0000000..d1e60a6 Binary files /dev/null and b/data/base/images/intfac/image_ascii123.png differ diff --git a/data/base/images/intfac/image_ascii124.png b/data/base/images/intfac/image_ascii124.png new file mode 100644 index 0000000..6286590 Binary files /dev/null and b/data/base/images/intfac/image_ascii124.png differ diff --git a/data/base/images/intfac/image_ascii125.png b/data/base/images/intfac/image_ascii125.png new file mode 100644 index 0000000..f8c8d86 Binary files /dev/null and b/data/base/images/intfac/image_ascii125.png differ diff --git a/data/base/images/intfac/image_ascii126.png b/data/base/images/intfac/image_ascii126.png new file mode 100644 index 0000000..ea686f8 Binary files /dev/null and b/data/base/images/intfac/image_ascii126.png differ diff --git a/data/base/images/intfac/image_ascii131.png b/data/base/images/intfac/image_ascii131.png new file mode 100644 index 0000000..120c831 Binary files /dev/null and b/data/base/images/intfac/image_ascii131.png differ diff --git a/data/base/images/intfac/image_ascii161.png b/data/base/images/intfac/image_ascii161.png new file mode 100644 index 0000000..20a0659 Binary files /dev/null and b/data/base/images/intfac/image_ascii161.png differ diff --git a/data/base/images/intfac/image_ascii188.png b/data/base/images/intfac/image_ascii188.png new file mode 100644 index 0000000..4856bea Binary files /dev/null and b/data/base/images/intfac/image_ascii188.png differ diff --git a/data/base/images/intfac/image_ascii189.png b/data/base/images/intfac/image_ascii189.png new file mode 100644 index 0000000..f0e3209 Binary files /dev/null and b/data/base/images/intfac/image_ascii189.png differ diff --git a/data/base/images/intfac/image_ascii191.png b/data/base/images/intfac/image_ascii191.png new file mode 100644 index 0000000..7bee0dc Binary files /dev/null and b/data/base/images/intfac/image_ascii191.png differ diff --git a/data/base/images/intfac/image_ascii192.png b/data/base/images/intfac/image_ascii192.png new file mode 100644 index 0000000..cc458ec Binary files /dev/null and b/data/base/images/intfac/image_ascii192.png differ diff --git a/data/base/images/intfac/image_ascii193.png b/data/base/images/intfac/image_ascii193.png new file mode 100644 index 0000000..0887f2f Binary files /dev/null and b/data/base/images/intfac/image_ascii193.png differ diff --git a/data/base/images/intfac/image_ascii194.png b/data/base/images/intfac/image_ascii194.png new file mode 100644 index 0000000..cfb7aaf Binary files /dev/null and b/data/base/images/intfac/image_ascii194.png differ diff --git a/data/base/images/intfac/image_ascii195.png b/data/base/images/intfac/image_ascii195.png new file mode 100644 index 0000000..32bc1cf Binary files /dev/null and b/data/base/images/intfac/image_ascii195.png differ diff --git a/data/base/images/intfac/image_ascii196.png b/data/base/images/intfac/image_ascii196.png new file mode 100644 index 0000000..1d236b5 Binary files /dev/null and b/data/base/images/intfac/image_ascii196.png differ diff --git a/data/base/images/intfac/image_ascii197.png b/data/base/images/intfac/image_ascii197.png new file mode 100644 index 0000000..1717f22 Binary files /dev/null and b/data/base/images/intfac/image_ascii197.png differ diff --git a/data/base/images/intfac/image_ascii198.png b/data/base/images/intfac/image_ascii198.png new file mode 100644 index 0000000..195e316 Binary files /dev/null and b/data/base/images/intfac/image_ascii198.png differ diff --git a/data/base/images/intfac/image_ascii200.png b/data/base/images/intfac/image_ascii200.png new file mode 100644 index 0000000..3f7fff9 Binary files /dev/null and b/data/base/images/intfac/image_ascii200.png differ diff --git a/data/base/images/intfac/image_ascii201.png b/data/base/images/intfac/image_ascii201.png new file mode 100644 index 0000000..eb2ef79 Binary files /dev/null and b/data/base/images/intfac/image_ascii201.png differ diff --git a/data/base/images/intfac/image_ascii202.png b/data/base/images/intfac/image_ascii202.png new file mode 100644 index 0000000..fcf52d6 Binary files /dev/null and b/data/base/images/intfac/image_ascii202.png differ diff --git a/data/base/images/intfac/image_ascii203.png b/data/base/images/intfac/image_ascii203.png new file mode 100644 index 0000000..b9ee7d5 Binary files /dev/null and b/data/base/images/intfac/image_ascii203.png differ diff --git a/data/base/images/intfac/image_ascii204.png b/data/base/images/intfac/image_ascii204.png new file mode 100644 index 0000000..b007869 Binary files /dev/null and b/data/base/images/intfac/image_ascii204.png differ diff --git a/data/base/images/intfac/image_ascii205.png b/data/base/images/intfac/image_ascii205.png new file mode 100644 index 0000000..1e50bae Binary files /dev/null and b/data/base/images/intfac/image_ascii205.png differ diff --git a/data/base/images/intfac/image_ascii206.png b/data/base/images/intfac/image_ascii206.png new file mode 100644 index 0000000..3146a44 Binary files /dev/null and b/data/base/images/intfac/image_ascii206.png differ diff --git a/data/base/images/intfac/image_ascii207.png b/data/base/images/intfac/image_ascii207.png new file mode 100644 index 0000000..c194ac5 Binary files /dev/null and b/data/base/images/intfac/image_ascii207.png differ diff --git a/data/base/images/intfac/image_ascii208.png b/data/base/images/intfac/image_ascii208.png new file mode 100644 index 0000000..fb8002b Binary files /dev/null and b/data/base/images/intfac/image_ascii208.png differ diff --git a/data/base/images/intfac/image_ascii210.png b/data/base/images/intfac/image_ascii210.png new file mode 100644 index 0000000..1371c27 Binary files /dev/null and b/data/base/images/intfac/image_ascii210.png differ diff --git a/data/base/images/intfac/image_ascii211.png b/data/base/images/intfac/image_ascii211.png new file mode 100644 index 0000000..e4f10dc Binary files /dev/null and b/data/base/images/intfac/image_ascii211.png differ diff --git a/data/base/images/intfac/image_ascii212.png b/data/base/images/intfac/image_ascii212.png new file mode 100644 index 0000000..6f14ba2 Binary files /dev/null and b/data/base/images/intfac/image_ascii212.png differ diff --git a/data/base/images/intfac/image_ascii213.png b/data/base/images/intfac/image_ascii213.png new file mode 100644 index 0000000..baa47e7 Binary files /dev/null and b/data/base/images/intfac/image_ascii213.png differ diff --git a/data/base/images/intfac/image_ascii214.png b/data/base/images/intfac/image_ascii214.png new file mode 100644 index 0000000..c9a6b33 Binary files /dev/null and b/data/base/images/intfac/image_ascii214.png differ diff --git a/data/base/images/intfac/image_ascii216.png b/data/base/images/intfac/image_ascii216.png new file mode 100644 index 0000000..66df5b8 Binary files /dev/null and b/data/base/images/intfac/image_ascii216.png differ diff --git a/data/base/images/intfac/image_ascii217.png b/data/base/images/intfac/image_ascii217.png new file mode 100644 index 0000000..fa47e27 Binary files /dev/null and b/data/base/images/intfac/image_ascii217.png differ diff --git a/data/base/images/intfac/image_ascii218.png b/data/base/images/intfac/image_ascii218.png new file mode 100644 index 0000000..3ada08c Binary files /dev/null and b/data/base/images/intfac/image_ascii218.png differ diff --git a/data/base/images/intfac/image_ascii219.png b/data/base/images/intfac/image_ascii219.png new file mode 100644 index 0000000..5c59786 Binary files /dev/null and b/data/base/images/intfac/image_ascii219.png differ diff --git a/data/base/images/intfac/image_ascii220.png b/data/base/images/intfac/image_ascii220.png new file mode 100644 index 0000000..9ac238c Binary files /dev/null and b/data/base/images/intfac/image_ascii220.png differ diff --git a/data/base/images/intfac/image_ascii221.png b/data/base/images/intfac/image_ascii221.png new file mode 100644 index 0000000..947046a Binary files /dev/null and b/data/base/images/intfac/image_ascii221.png differ diff --git a/data/base/images/intfac/image_ascii223.png b/data/base/images/intfac/image_ascii223.png new file mode 100644 index 0000000..0cd22dc Binary files /dev/null and b/data/base/images/intfac/image_ascii223.png differ diff --git a/data/base/images/intfac/image_ascii224.png b/data/base/images/intfac/image_ascii224.png new file mode 100644 index 0000000..877aea1 Binary files /dev/null and b/data/base/images/intfac/image_ascii224.png differ diff --git a/data/base/images/intfac/image_ascii225.png b/data/base/images/intfac/image_ascii225.png new file mode 100644 index 0000000..235eb72 Binary files /dev/null and b/data/base/images/intfac/image_ascii225.png differ diff --git a/data/base/images/intfac/image_ascii226.png b/data/base/images/intfac/image_ascii226.png new file mode 100644 index 0000000..06afeb8 Binary files /dev/null and b/data/base/images/intfac/image_ascii226.png differ diff --git a/data/base/images/intfac/image_ascii227.png b/data/base/images/intfac/image_ascii227.png new file mode 100644 index 0000000..d63386d Binary files /dev/null and b/data/base/images/intfac/image_ascii227.png differ diff --git a/data/base/images/intfac/image_ascii228.png b/data/base/images/intfac/image_ascii228.png new file mode 100644 index 0000000..ab9f04f Binary files /dev/null and b/data/base/images/intfac/image_ascii228.png differ diff --git a/data/base/images/intfac/image_ascii229.png b/data/base/images/intfac/image_ascii229.png new file mode 100644 index 0000000..ae1e246 Binary files /dev/null and b/data/base/images/intfac/image_ascii229.png differ diff --git a/data/base/images/intfac/image_ascii230.png b/data/base/images/intfac/image_ascii230.png new file mode 100644 index 0000000..05543a6 Binary files /dev/null and b/data/base/images/intfac/image_ascii230.png differ diff --git a/data/base/images/intfac/image_ascii231.png b/data/base/images/intfac/image_ascii231.png new file mode 100644 index 0000000..fa176d6 Binary files /dev/null and b/data/base/images/intfac/image_ascii231.png differ diff --git a/data/base/images/intfac/image_ascii232.png b/data/base/images/intfac/image_ascii232.png new file mode 100644 index 0000000..f630bb6 Binary files /dev/null and b/data/base/images/intfac/image_ascii232.png differ diff --git a/data/base/images/intfac/image_ascii233.png b/data/base/images/intfac/image_ascii233.png new file mode 100644 index 0000000..7520413 Binary files /dev/null and b/data/base/images/intfac/image_ascii233.png differ diff --git a/data/base/images/intfac/image_ascii234.png b/data/base/images/intfac/image_ascii234.png new file mode 100644 index 0000000..e72ee0e Binary files /dev/null and b/data/base/images/intfac/image_ascii234.png differ diff --git a/data/base/images/intfac/image_ascii235.png b/data/base/images/intfac/image_ascii235.png new file mode 100644 index 0000000..af59c0d Binary files /dev/null and b/data/base/images/intfac/image_ascii235.png differ diff --git a/data/base/images/intfac/image_ascii236.png b/data/base/images/intfac/image_ascii236.png new file mode 100644 index 0000000..717a569 Binary files /dev/null and b/data/base/images/intfac/image_ascii236.png differ diff --git a/data/base/images/intfac/image_ascii237.png b/data/base/images/intfac/image_ascii237.png new file mode 100644 index 0000000..b884db2 Binary files /dev/null and b/data/base/images/intfac/image_ascii237.png differ diff --git a/data/base/images/intfac/image_ascii238.png b/data/base/images/intfac/image_ascii238.png new file mode 100644 index 0000000..1df4760 Binary files /dev/null and b/data/base/images/intfac/image_ascii238.png differ diff --git a/data/base/images/intfac/image_ascii239.png b/data/base/images/intfac/image_ascii239.png new file mode 100644 index 0000000..8e3de4a Binary files /dev/null and b/data/base/images/intfac/image_ascii239.png differ diff --git a/data/base/images/intfac/image_ascii241.png b/data/base/images/intfac/image_ascii241.png new file mode 100644 index 0000000..d35ac7b Binary files /dev/null and b/data/base/images/intfac/image_ascii241.png differ diff --git a/data/base/images/intfac/image_ascii242.png b/data/base/images/intfac/image_ascii242.png new file mode 100644 index 0000000..8b5585d Binary files /dev/null and b/data/base/images/intfac/image_ascii242.png differ diff --git a/data/base/images/intfac/image_ascii243.png b/data/base/images/intfac/image_ascii243.png new file mode 100644 index 0000000..a651443 Binary files /dev/null and b/data/base/images/intfac/image_ascii243.png differ diff --git a/data/base/images/intfac/image_ascii244.png b/data/base/images/intfac/image_ascii244.png new file mode 100644 index 0000000..537cf07 Binary files /dev/null and b/data/base/images/intfac/image_ascii244.png differ diff --git a/data/base/images/intfac/image_ascii245.png b/data/base/images/intfac/image_ascii245.png new file mode 100644 index 0000000..60a8540 Binary files /dev/null and b/data/base/images/intfac/image_ascii245.png differ diff --git a/data/base/images/intfac/image_ascii246.png b/data/base/images/intfac/image_ascii246.png new file mode 100644 index 0000000..7e34ea3 Binary files /dev/null and b/data/base/images/intfac/image_ascii246.png differ diff --git a/data/base/images/intfac/image_ascii248.png b/data/base/images/intfac/image_ascii248.png new file mode 100644 index 0000000..9432ce1 Binary files /dev/null and b/data/base/images/intfac/image_ascii248.png differ diff --git a/data/base/images/intfac/image_ascii249.png b/data/base/images/intfac/image_ascii249.png new file mode 100644 index 0000000..380e5d8 Binary files /dev/null and b/data/base/images/intfac/image_ascii249.png differ diff --git a/data/base/images/intfac/image_ascii250.png b/data/base/images/intfac/image_ascii250.png new file mode 100644 index 0000000..4c7972e Binary files /dev/null and b/data/base/images/intfac/image_ascii250.png differ diff --git a/data/base/images/intfac/image_ascii251.png b/data/base/images/intfac/image_ascii251.png new file mode 100644 index 0000000..2752953 Binary files /dev/null and b/data/base/images/intfac/image_ascii251.png differ diff --git a/data/base/images/intfac/image_ascii252.png b/data/base/images/intfac/image_ascii252.png new file mode 100644 index 0000000..8badd92 Binary files /dev/null and b/data/base/images/intfac/image_ascii252.png differ diff --git a/data/base/images/intfac/image_ascii253.png b/data/base/images/intfac/image_ascii253.png new file mode 100644 index 0000000..b3ed692 Binary files /dev/null and b/data/base/images/intfac/image_ascii253.png differ diff --git a/data/base/images/intfac/image_ascii33.png b/data/base/images/intfac/image_ascii33.png new file mode 100644 index 0000000..e7a9afe Binary files /dev/null and b/data/base/images/intfac/image_ascii33.png differ diff --git a/data/base/images/intfac/image_ascii34.png b/data/base/images/intfac/image_ascii34.png new file mode 100644 index 0000000..fe28332 Binary files /dev/null and b/data/base/images/intfac/image_ascii34.png differ diff --git a/data/base/images/intfac/image_ascii35.png b/data/base/images/intfac/image_ascii35.png new file mode 100644 index 0000000..6312e86 Binary files /dev/null and b/data/base/images/intfac/image_ascii35.png differ diff --git a/data/base/images/intfac/image_ascii36.png b/data/base/images/intfac/image_ascii36.png new file mode 100644 index 0000000..7010b0a Binary files /dev/null and b/data/base/images/intfac/image_ascii36.png differ diff --git a/data/base/images/intfac/image_ascii37.png b/data/base/images/intfac/image_ascii37.png new file mode 100644 index 0000000..2d1e079 Binary files /dev/null and b/data/base/images/intfac/image_ascii37.png differ diff --git a/data/base/images/intfac/image_ascii38.png b/data/base/images/intfac/image_ascii38.png new file mode 100644 index 0000000..d710b45 Binary files /dev/null and b/data/base/images/intfac/image_ascii38.png differ diff --git a/data/base/images/intfac/image_ascii39.png b/data/base/images/intfac/image_ascii39.png new file mode 100644 index 0000000..382f91b Binary files /dev/null and b/data/base/images/intfac/image_ascii39.png differ diff --git a/data/base/images/intfac/image_ascii40.png b/data/base/images/intfac/image_ascii40.png new file mode 100644 index 0000000..9cf64b0 Binary files /dev/null and b/data/base/images/intfac/image_ascii40.png differ diff --git a/data/base/images/intfac/image_ascii41.png b/data/base/images/intfac/image_ascii41.png new file mode 100644 index 0000000..9b786ed Binary files /dev/null and b/data/base/images/intfac/image_ascii41.png differ diff --git a/data/base/images/intfac/image_ascii42.png b/data/base/images/intfac/image_ascii42.png new file mode 100644 index 0000000..de8b424 Binary files /dev/null and b/data/base/images/intfac/image_ascii42.png differ diff --git a/data/base/images/intfac/image_ascii43.png b/data/base/images/intfac/image_ascii43.png new file mode 100644 index 0000000..e05abd9 Binary files /dev/null and b/data/base/images/intfac/image_ascii43.png differ diff --git a/data/base/images/intfac/image_ascii44.png b/data/base/images/intfac/image_ascii44.png new file mode 100644 index 0000000..254fa71 Binary files /dev/null and b/data/base/images/intfac/image_ascii44.png differ diff --git a/data/base/images/intfac/image_ascii45.png b/data/base/images/intfac/image_ascii45.png new file mode 100644 index 0000000..75a088f Binary files /dev/null and b/data/base/images/intfac/image_ascii45.png differ diff --git a/data/base/images/intfac/image_ascii46.png b/data/base/images/intfac/image_ascii46.png new file mode 100644 index 0000000..5a59884 Binary files /dev/null and b/data/base/images/intfac/image_ascii46.png differ diff --git a/data/base/images/intfac/image_ascii47.png b/data/base/images/intfac/image_ascii47.png new file mode 100644 index 0000000..be6bcb1 Binary files /dev/null and b/data/base/images/intfac/image_ascii47.png differ diff --git a/data/base/images/intfac/image_ascii48.png b/data/base/images/intfac/image_ascii48.png new file mode 100644 index 0000000..95b6a14 Binary files /dev/null and b/data/base/images/intfac/image_ascii48.png differ diff --git a/data/base/images/intfac/image_ascii49.png b/data/base/images/intfac/image_ascii49.png new file mode 100644 index 0000000..d946d27 Binary files /dev/null and b/data/base/images/intfac/image_ascii49.png differ diff --git a/data/base/images/intfac/image_ascii50.png b/data/base/images/intfac/image_ascii50.png new file mode 100644 index 0000000..848dce5 Binary files /dev/null and b/data/base/images/intfac/image_ascii50.png differ diff --git a/data/base/images/intfac/image_ascii51.png b/data/base/images/intfac/image_ascii51.png new file mode 100644 index 0000000..d66a0ad Binary files /dev/null and b/data/base/images/intfac/image_ascii51.png differ diff --git a/data/base/images/intfac/image_ascii52.png b/data/base/images/intfac/image_ascii52.png new file mode 100644 index 0000000..12d86e5 Binary files /dev/null and b/data/base/images/intfac/image_ascii52.png differ diff --git a/data/base/images/intfac/image_ascii53.png b/data/base/images/intfac/image_ascii53.png new file mode 100644 index 0000000..20f94ce Binary files /dev/null and b/data/base/images/intfac/image_ascii53.png differ diff --git a/data/base/images/intfac/image_ascii54.png b/data/base/images/intfac/image_ascii54.png new file mode 100644 index 0000000..02271f7 Binary files /dev/null and b/data/base/images/intfac/image_ascii54.png differ diff --git a/data/base/images/intfac/image_ascii55.png b/data/base/images/intfac/image_ascii55.png new file mode 100644 index 0000000..ad1e8ba Binary files /dev/null and b/data/base/images/intfac/image_ascii55.png differ diff --git a/data/base/images/intfac/image_ascii56.png b/data/base/images/intfac/image_ascii56.png new file mode 100644 index 0000000..2697e5f Binary files /dev/null and b/data/base/images/intfac/image_ascii56.png differ diff --git a/data/base/images/intfac/image_ascii57.png b/data/base/images/intfac/image_ascii57.png new file mode 100644 index 0000000..a25e56b Binary files /dev/null and b/data/base/images/intfac/image_ascii57.png differ diff --git a/data/base/images/intfac/image_ascii58.png b/data/base/images/intfac/image_ascii58.png new file mode 100644 index 0000000..7917878 Binary files /dev/null and b/data/base/images/intfac/image_ascii58.png differ diff --git a/data/base/images/intfac/image_ascii59.png b/data/base/images/intfac/image_ascii59.png new file mode 100644 index 0000000..8efe7e3 Binary files /dev/null and b/data/base/images/intfac/image_ascii59.png differ diff --git a/data/base/images/intfac/image_ascii60.png b/data/base/images/intfac/image_ascii60.png new file mode 100644 index 0000000..36624f8 Binary files /dev/null and b/data/base/images/intfac/image_ascii60.png differ diff --git a/data/base/images/intfac/image_ascii61.png b/data/base/images/intfac/image_ascii61.png new file mode 100644 index 0000000..7dbafb2 Binary files /dev/null and b/data/base/images/intfac/image_ascii61.png differ diff --git a/data/base/images/intfac/image_ascii62.png b/data/base/images/intfac/image_ascii62.png new file mode 100644 index 0000000..5ab77ff Binary files /dev/null and b/data/base/images/intfac/image_ascii62.png differ diff --git a/data/base/images/intfac/image_ascii63.png b/data/base/images/intfac/image_ascii63.png new file mode 100644 index 0000000..d2564c8 Binary files /dev/null and b/data/base/images/intfac/image_ascii63.png differ diff --git a/data/base/images/intfac/image_ascii64.png b/data/base/images/intfac/image_ascii64.png new file mode 100644 index 0000000..23a1e99 Binary files /dev/null and b/data/base/images/intfac/image_ascii64.png differ diff --git a/data/base/images/intfac/image_ascii65.png b/data/base/images/intfac/image_ascii65.png new file mode 100644 index 0000000..9567a13 Binary files /dev/null and b/data/base/images/intfac/image_ascii65.png differ diff --git a/data/base/images/intfac/image_ascii66.png b/data/base/images/intfac/image_ascii66.png new file mode 100644 index 0000000..0ec608d Binary files /dev/null and b/data/base/images/intfac/image_ascii66.png differ diff --git a/data/base/images/intfac/image_ascii67.png b/data/base/images/intfac/image_ascii67.png new file mode 100644 index 0000000..7683953 Binary files /dev/null and b/data/base/images/intfac/image_ascii67.png differ diff --git a/data/base/images/intfac/image_ascii68.png b/data/base/images/intfac/image_ascii68.png new file mode 100644 index 0000000..ab90840 Binary files /dev/null and b/data/base/images/intfac/image_ascii68.png differ diff --git a/data/base/images/intfac/image_ascii69.png b/data/base/images/intfac/image_ascii69.png new file mode 100644 index 0000000..abb553a Binary files /dev/null and b/data/base/images/intfac/image_ascii69.png differ diff --git a/data/base/images/intfac/image_ascii70.png b/data/base/images/intfac/image_ascii70.png new file mode 100644 index 0000000..fe0f510 Binary files /dev/null and b/data/base/images/intfac/image_ascii70.png differ diff --git a/data/base/images/intfac/image_ascii71.png b/data/base/images/intfac/image_ascii71.png new file mode 100644 index 0000000..f938b87 Binary files /dev/null and b/data/base/images/intfac/image_ascii71.png differ diff --git a/data/base/images/intfac/image_ascii72.png b/data/base/images/intfac/image_ascii72.png new file mode 100644 index 0000000..64ace2c Binary files /dev/null and b/data/base/images/intfac/image_ascii72.png differ diff --git a/data/base/images/intfac/image_ascii73.png b/data/base/images/intfac/image_ascii73.png new file mode 100644 index 0000000..85c440c Binary files /dev/null and b/data/base/images/intfac/image_ascii73.png differ diff --git a/data/base/images/intfac/image_ascii74.png b/data/base/images/intfac/image_ascii74.png new file mode 100644 index 0000000..8caf4eb Binary files /dev/null and b/data/base/images/intfac/image_ascii74.png differ diff --git a/data/base/images/intfac/image_ascii75.png b/data/base/images/intfac/image_ascii75.png new file mode 100644 index 0000000..2f2099c Binary files /dev/null and b/data/base/images/intfac/image_ascii75.png differ diff --git a/data/base/images/intfac/image_ascii76.png b/data/base/images/intfac/image_ascii76.png new file mode 100644 index 0000000..11c5914 Binary files /dev/null and b/data/base/images/intfac/image_ascii76.png differ diff --git a/data/base/images/intfac/image_ascii77.png b/data/base/images/intfac/image_ascii77.png new file mode 100644 index 0000000..3237f27 Binary files /dev/null and b/data/base/images/intfac/image_ascii77.png differ diff --git a/data/base/images/intfac/image_ascii78.png b/data/base/images/intfac/image_ascii78.png new file mode 100644 index 0000000..af2cfd7 Binary files /dev/null and b/data/base/images/intfac/image_ascii78.png differ diff --git a/data/base/images/intfac/image_ascii79.png b/data/base/images/intfac/image_ascii79.png new file mode 100644 index 0000000..2f540a9 Binary files /dev/null and b/data/base/images/intfac/image_ascii79.png differ diff --git a/data/base/images/intfac/image_ascii80.png b/data/base/images/intfac/image_ascii80.png new file mode 100644 index 0000000..0272c9d Binary files /dev/null and b/data/base/images/intfac/image_ascii80.png differ diff --git a/data/base/images/intfac/image_ascii81.png b/data/base/images/intfac/image_ascii81.png new file mode 100644 index 0000000..c3c6f96 Binary files /dev/null and b/data/base/images/intfac/image_ascii81.png differ diff --git a/data/base/images/intfac/image_ascii82.png b/data/base/images/intfac/image_ascii82.png new file mode 100644 index 0000000..ecf9d27 Binary files /dev/null and b/data/base/images/intfac/image_ascii82.png differ diff --git a/data/base/images/intfac/image_ascii83.png b/data/base/images/intfac/image_ascii83.png new file mode 100644 index 0000000..87f7d7a Binary files /dev/null and b/data/base/images/intfac/image_ascii83.png differ diff --git a/data/base/images/intfac/image_ascii84.png b/data/base/images/intfac/image_ascii84.png new file mode 100644 index 0000000..a587fcf Binary files /dev/null and b/data/base/images/intfac/image_ascii84.png differ diff --git a/data/base/images/intfac/image_ascii85.png b/data/base/images/intfac/image_ascii85.png new file mode 100644 index 0000000..2f06067 Binary files /dev/null and b/data/base/images/intfac/image_ascii85.png differ diff --git a/data/base/images/intfac/image_ascii86.png b/data/base/images/intfac/image_ascii86.png new file mode 100644 index 0000000..0e0125d Binary files /dev/null and b/data/base/images/intfac/image_ascii86.png differ diff --git a/data/base/images/intfac/image_ascii87.png b/data/base/images/intfac/image_ascii87.png new file mode 100644 index 0000000..f76de44 Binary files /dev/null and b/data/base/images/intfac/image_ascii87.png differ diff --git a/data/base/images/intfac/image_ascii88.png b/data/base/images/intfac/image_ascii88.png new file mode 100644 index 0000000..93e361a Binary files /dev/null and b/data/base/images/intfac/image_ascii88.png differ diff --git a/data/base/images/intfac/image_ascii89.png b/data/base/images/intfac/image_ascii89.png new file mode 100644 index 0000000..7996f15 Binary files /dev/null and b/data/base/images/intfac/image_ascii89.png differ diff --git a/data/base/images/intfac/image_ascii90.png b/data/base/images/intfac/image_ascii90.png new file mode 100644 index 0000000..adc2828 Binary files /dev/null and b/data/base/images/intfac/image_ascii90.png differ diff --git a/data/base/images/intfac/image_ascii91.png b/data/base/images/intfac/image_ascii91.png new file mode 100644 index 0000000..6befb82 Binary files /dev/null and b/data/base/images/intfac/image_ascii91.png differ diff --git a/data/base/images/intfac/image_ascii92.png b/data/base/images/intfac/image_ascii92.png new file mode 100644 index 0000000..1c554df Binary files /dev/null and b/data/base/images/intfac/image_ascii92.png differ diff --git a/data/base/images/intfac/image_ascii93.png b/data/base/images/intfac/image_ascii93.png new file mode 100644 index 0000000..6876a17 Binary files /dev/null and b/data/base/images/intfac/image_ascii93.png differ diff --git a/data/base/images/intfac/image_ascii94.png b/data/base/images/intfac/image_ascii94.png new file mode 100644 index 0000000..3423012 Binary files /dev/null and b/data/base/images/intfac/image_ascii94.png differ diff --git a/data/base/images/intfac/image_ascii95.png b/data/base/images/intfac/image_ascii95.png new file mode 100644 index 0000000..8bce206 Binary files /dev/null and b/data/base/images/intfac/image_ascii95.png differ diff --git a/data/base/images/intfac/image_ascii96.png b/data/base/images/intfac/image_ascii96.png new file mode 100644 index 0000000..47839a1 Binary files /dev/null and b/data/base/images/intfac/image_ascii96.png differ diff --git a/data/base/images/intfac/image_ascii97.png b/data/base/images/intfac/image_ascii97.png new file mode 100644 index 0000000..3ab3a1f Binary files /dev/null and b/data/base/images/intfac/image_ascii97.png differ diff --git a/data/base/images/intfac/image_ascii98.png b/data/base/images/intfac/image_ascii98.png new file mode 100644 index 0000000..ac8ba46 Binary files /dev/null and b/data/base/images/intfac/image_ascii98.png differ diff --git a/data/base/images/intfac/image_ascii99.png b/data/base/images/intfac/image_ascii99.png new file mode 100644 index 0000000..9fccb24 Binary files /dev/null and b/data/base/images/intfac/image_ascii99.png differ diff --git a/data/base/images/intfac/image_asterisk.png b/data/base/images/intfac/image_asterisk.png new file mode 100644 index 0000000..465ef44 Binary files /dev/null and b/data/base/images/intfac/image_asterisk.png differ diff --git a/data/base/images/intfac/image_audio_lastsample.png b/data/base/images/intfac/image_audio_lastsample.png new file mode 100644 index 0000000..65a80aa Binary files /dev/null and b/data/base/images/intfac/image_audio_lastsample.png differ diff --git a/data/base/images/intfac/image_audio_lastsampleh.png b/data/base/images/intfac/image_audio_lastsampleh.png new file mode 100644 index 0000000..8afa197 Binary files /dev/null and b/data/base/images/intfac/image_audio_lastsampleh.png differ diff --git a/data/base/images/intfac/image_blue1.png b/data/base/images/intfac/image_blue1.png new file mode 100644 index 0000000..fc1fd09 Binary files /dev/null and b/data/base/images/intfac/image_blue1.png differ diff --git a/data/base/images/intfac/image_blue2.png b/data/base/images/intfac/image_blue2.png new file mode 100644 index 0000000..fbb54b2 Binary files /dev/null and b/data/base/images/intfac/image_blue2.png differ diff --git a/data/base/images/intfac/image_blue3.png b/data/base/images/intfac/image_blue3.png new file mode 100644 index 0000000..727ed8a Binary files /dev/null and b/data/base/images/intfac/image_blue3.png differ diff --git a/data/base/images/intfac/image_blue4.png b/data/base/images/intfac/image_blue4.png new file mode 100644 index 0000000..f3d159e Binary files /dev/null and b/data/base/images/intfac/image_blue4.png differ diff --git a/data/base/images/intfac/image_blue5.png b/data/base/images/intfac/image_blue5.png new file mode 100644 index 0000000..392211d Binary files /dev/null and b/data/base/images/intfac/image_blue5.png differ diff --git a/data/base/images/intfac/image_blue6.png b/data/base/images/intfac/image_blue6.png new file mode 100644 index 0000000..231fdd4 Binary files /dev/null and b/data/base/images/intfac/image_blue6.png differ diff --git a/data/base/images/intfac/image_build_down.png b/data/base/images/intfac/image_build_down.png new file mode 100644 index 0000000..adb8c30 Binary files /dev/null and b/data/base/images/intfac/image_build_down.png differ diff --git a/data/base/images/intfac/image_build_up.png b/data/base/images/intfac/image_build_up.png new file mode 100644 index 0000000..36282ed Binary files /dev/null and b/data/base/images/intfac/image_build_up.png differ diff --git a/data/base/images/intfac/image_but0_down.png b/data/base/images/intfac/image_but0_down.png new file mode 100644 index 0000000..9338163 Binary files /dev/null and b/data/base/images/intfac/image_but0_down.png differ diff --git a/data/base/images/intfac/image_but0_up.png b/data/base/images/intfac/image_but0_up.png new file mode 100644 index 0000000..9e594b4 Binary files /dev/null and b/data/base/images/intfac/image_but0_up.png differ diff --git a/data/base/images/intfac/image_but_hilite.png b/data/base/images/intfac/image_but_hilite.png new file mode 100644 index 0000000..8bcf1a6 Binary files /dev/null and b/data/base/images/intfac/image_but_hilite.png differ diff --git a/data/base/images/intfac/image_butb0_down.png b/data/base/images/intfac/image_butb0_down.png new file mode 100644 index 0000000..d9ffe1e Binary files /dev/null and b/data/base/images/intfac/image_butb0_down.png differ diff --git a/data/base/images/intfac/image_butb0_up.png b/data/base/images/intfac/image_butb0_up.png new file mode 100644 index 0000000..22f38ca Binary files /dev/null and b/data/base/images/intfac/image_butb0_up.png differ diff --git a/data/base/images/intfac/image_butb_hilite.png b/data/base/images/intfac/image_butb_hilite.png new file mode 100644 index 0000000..e4be887 Binary files /dev/null and b/data/base/images/intfac/image_butb_hilite.png differ diff --git a/data/base/images/intfac/image_cancel_down.png b/data/base/images/intfac/image_cancel_down.png new file mode 100644 index 0000000..16e107b Binary files /dev/null and b/data/base/images/intfac/image_cancel_down.png differ diff --git a/data/base/images/intfac/image_cancel_hilight.png b/data/base/images/intfac/image_cancel_hilight.png new file mode 100644 index 0000000..5bd4ddf Binary files /dev/null and b/data/base/images/intfac/image_cancel_hilight.png differ diff --git a/data/base/images/intfac/image_cancel_up.png b/data/base/images/intfac/image_cancel_up.png new file mode 100644 index 0000000..16e107b Binary files /dev/null and b/data/base/images/intfac/image_cancel_up.png differ diff --git a/data/base/images/intfac/image_cannon.png b/data/base/images/intfac/image_cannon.png new file mode 100644 index 0000000..8071b74 Binary files /dev/null and b/data/base/images/intfac/image_cannon.png differ diff --git a/data/base/images/intfac/image_cdchange_cancel.png b/data/base/images/intfac/image_cdchange_cancel.png new file mode 100644 index 0000000..849a946 Binary files /dev/null and b/data/base/images/intfac/image_cdchange_cancel.png differ diff --git a/data/base/images/intfac/image_cdchange_ok.png b/data/base/images/intfac/image_cdchange_ok.png new file mode 100644 index 0000000..4729800 Binary files /dev/null and b/data/base/images/intfac/image_cdchange_ok.png differ diff --git a/data/base/images/intfac/image_cdp_down.png b/data/base/images/intfac/image_cdp_down.png new file mode 100644 index 0000000..45cd7a9 Binary files /dev/null and b/data/base/images/intfac/image_cdp_down.png differ diff --git a/data/base/images/intfac/image_cdp_hi.png b/data/base/images/intfac/image_cdp_hi.png new file mode 100644 index 0000000..5e216eb Binary files /dev/null and b/data/base/images/intfac/image_cdp_hi.png differ diff --git a/data/base/images/intfac/image_cdp_up.png b/data/base/images/intfac/image_cdp_up.png new file mode 100644 index 0000000..51bcc98 Binary files /dev/null and b/data/base/images/intfac/image_cdp_up.png differ diff --git a/data/base/images/intfac/image_close.png b/data/base/images/intfac/image_close.png new file mode 100644 index 0000000..6e79889 Binary files /dev/null and b/data/base/images/intfac/image_close.png differ diff --git a/data/base/images/intfac/image_closedown.png b/data/base/images/intfac/image_closedown.png new file mode 100644 index 0000000..a4e3111 Binary files /dev/null and b/data/base/images/intfac/image_closedown.png differ diff --git a/data/base/images/intfac/image_closehilight.png b/data/base/images/intfac/image_closehilight.png new file mode 100644 index 0000000..20d3310 Binary files /dev/null and b/data/base/images/intfac/image_closehilight.png differ diff --git a/data/base/images/intfac/image_cmddroid_exp.png b/data/base/images/intfac/image_cmddroid_exp.png new file mode 100644 index 0000000..465ef44 Binary files /dev/null and b/data/base/images/intfac/image_cmddroid_exp.png differ diff --git a/data/base/images/intfac/image_commanddroid_down.png b/data/base/images/intfac/image_commanddroid_down.png new file mode 100644 index 0000000..2112612 Binary files /dev/null and b/data/base/images/intfac/image_commanddroid_down.png differ diff --git a/data/base/images/intfac/image_commanddroid_up.png b/data/base/images/intfac/image_commanddroid_up.png new file mode 100644 index 0000000..b33148f Binary files /dev/null and b/data/base/images/intfac/image_commanddroid_up.png differ diff --git a/data/base/images/intfac/image_cursor_attach.png b/data/base/images/intfac/image_cursor_attach.png new file mode 100644 index 0000000..3591150 Binary files /dev/null and b/data/base/images/intfac/image_cursor_attach.png differ diff --git a/data/base/images/intfac/image_cursor_attack.png b/data/base/images/intfac/image_cursor_attack.png new file mode 100644 index 0000000..e2680ed Binary files /dev/null and b/data/base/images/intfac/image_cursor_attack.png differ diff --git a/data/base/images/intfac/image_cursor_bomb.png b/data/base/images/intfac/image_cursor_bomb.png new file mode 100644 index 0000000..24cc45d Binary files /dev/null and b/data/base/images/intfac/image_cursor_bomb.png differ diff --git a/data/base/images/intfac/image_cursor_bridge.png b/data/base/images/intfac/image_cursor_bridge.png new file mode 100644 index 0000000..9b965f6 Binary files /dev/null and b/data/base/images/intfac/image_cursor_bridge.png differ diff --git a/data/base/images/intfac/image_cursor_build.png b/data/base/images/intfac/image_cursor_build.png new file mode 100644 index 0000000..f690c34 Binary files /dev/null and b/data/base/images/intfac/image_cursor_build.png differ diff --git a/data/base/images/intfac/image_cursor_default.png b/data/base/images/intfac/image_cursor_default.png new file mode 100644 index 0000000..f391404 Binary files /dev/null and b/data/base/images/intfac/image_cursor_default.png differ diff --git a/data/base/images/intfac/image_cursor_dest.png b/data/base/images/intfac/image_cursor_dest.png new file mode 100644 index 0000000..45d7b7c Binary files /dev/null and b/data/base/images/intfac/image_cursor_dest.png differ diff --git a/data/base/images/intfac/image_cursor_disembark.png b/data/base/images/intfac/image_cursor_disembark.png new file mode 100644 index 0000000..6967e58 Binary files /dev/null and b/data/base/images/intfac/image_cursor_disembark.png differ diff --git a/data/base/images/intfac/image_cursor_ecm.png b/data/base/images/intfac/image_cursor_ecm.png new file mode 100644 index 0000000..59fcb3d Binary files /dev/null and b/data/base/images/intfac/image_cursor_ecm.png differ diff --git a/data/base/images/intfac/image_cursor_embark.png b/data/base/images/intfac/image_cursor_embark.png new file mode 100644 index 0000000..fe9212c Binary files /dev/null and b/data/base/images/intfac/image_cursor_embark.png differ diff --git a/data/base/images/intfac/image_cursor_fix.png b/data/base/images/intfac/image_cursor_fix.png new file mode 100644 index 0000000..a7379a1 Binary files /dev/null and b/data/base/images/intfac/image_cursor_fix.png differ diff --git a/data/base/images/intfac/image_cursor_guard.png b/data/base/images/intfac/image_cursor_guard.png new file mode 100644 index 0000000..4579114 Binary files /dev/null and b/data/base/images/intfac/image_cursor_guard.png differ diff --git a/data/base/images/intfac/image_cursor_lockon.png b/data/base/images/intfac/image_cursor_lockon.png new file mode 100644 index 0000000..3210d62 Binary files /dev/null and b/data/base/images/intfac/image_cursor_lockon.png differ diff --git a/data/base/images/intfac/image_cursor_move.png b/data/base/images/intfac/image_cursor_move.png new file mode 100644 index 0000000..3fae499 Binary files /dev/null and b/data/base/images/intfac/image_cursor_move.png differ diff --git a/data/base/images/intfac/image_cursor_notpos.png b/data/base/images/intfac/image_cursor_notpos.png new file mode 100644 index 0000000..58b9493 Binary files /dev/null and b/data/base/images/intfac/image_cursor_notpos.png differ diff --git a/data/base/images/intfac/image_cursor_pickup.png b/data/base/images/intfac/image_cursor_pickup.png new file mode 100644 index 0000000..acf2df3 Binary files /dev/null and b/data/base/images/intfac/image_cursor_pickup.png differ diff --git a/data/base/images/intfac/image_cursor_repair.png b/data/base/images/intfac/image_cursor_repair.png new file mode 100644 index 0000000..daf4b04 Binary files /dev/null and b/data/base/images/intfac/image_cursor_repair.png differ diff --git a/data/base/images/intfac/image_cursor_scout.png b/data/base/images/intfac/image_cursor_scout.png new file mode 100644 index 0000000..7606d9a Binary files /dev/null and b/data/base/images/intfac/image_cursor_scout.png differ diff --git a/data/base/images/intfac/image_cursor_select.png b/data/base/images/intfac/image_cursor_select.png new file mode 100644 index 0000000..34302b4 Binary files /dev/null and b/data/base/images/intfac/image_cursor_select.png differ diff --git a/data/base/images/intfac/image_des_armour_explosive.png b/data/base/images/intfac/image_des_armour_explosive.png new file mode 100644 index 0000000..b3d9748 Binary files /dev/null and b/data/base/images/intfac/image_des_armour_explosive.png differ diff --git a/data/base/images/intfac/image_des_armour_kinetic.png b/data/base/images/intfac/image_des_armour_kinetic.png new file mode 100644 index 0000000..4103be6 Binary files /dev/null and b/data/base/images/intfac/image_des_armour_kinetic.png differ diff --git a/data/base/images/intfac/image_des_back.png b/data/base/images/intfac/image_des_back.png new file mode 100644 index 0000000..1947166 Binary files /dev/null and b/data/base/images/intfac/image_des_back.png differ diff --git a/data/base/images/intfac/image_des_barback.png b/data/base/images/intfac/image_des_barback.png new file mode 100644 index 0000000..80a5854 Binary files /dev/null and b/data/base/images/intfac/image_des_barback.png differ diff --git a/data/base/images/intfac/image_des_barblue.png b/data/base/images/intfac/image_des_barblue.png new file mode 100644 index 0000000..d6ca842 Binary files /dev/null and b/data/base/images/intfac/image_des_barblue.png differ diff --git a/data/base/images/intfac/image_des_barred.png b/data/base/images/intfac/image_des_barred.png new file mode 100644 index 0000000..855bb6a Binary files /dev/null and b/data/base/images/intfac/image_des_barred.png differ diff --git a/data/base/images/intfac/image_des_baryellow.png b/data/base/images/intfac/image_des_baryellow.png new file mode 100644 index 0000000..6f9ddb5 Binary files /dev/null and b/data/base/images/intfac/image_des_baryellow.png differ diff --git a/data/base/images/intfac/image_des_bin.png b/data/base/images/intfac/image_des_bin.png new file mode 100644 index 0000000..4da29f5 Binary files /dev/null and b/data/base/images/intfac/image_des_bin.png differ diff --git a/data/base/images/intfac/image_des_binh.png b/data/base/images/intfac/image_des_binh.png new file mode 100644 index 0000000..f7af04d Binary files /dev/null and b/data/base/images/intfac/image_des_binh.png differ diff --git a/data/base/images/intfac/image_des_body.png b/data/base/images/intfac/image_des_body.png new file mode 100644 index 0000000..f5fc92b Binary files /dev/null and b/data/base/images/intfac/image_des_body.png differ diff --git a/data/base/images/intfac/image_des_bodyh.png b/data/base/images/intfac/image_des_bodyh.png new file mode 100644 index 0000000..3268c2b Binary files /dev/null and b/data/base/images/intfac/image_des_bodyh.png differ diff --git a/data/base/images/intfac/image_des_bodypoints.png b/data/base/images/intfac/image_des_bodypoints.png new file mode 100644 index 0000000..f75508f Binary files /dev/null and b/data/base/images/intfac/image_des_bodypoints.png differ diff --git a/data/base/images/intfac/image_des_buildrate.png b/data/base/images/intfac/image_des_buildrate.png new file mode 100644 index 0000000..13df68f Binary files /dev/null and b/data/base/images/intfac/image_des_buildrate.png differ diff --git a/data/base/images/intfac/image_des_command.png b/data/base/images/intfac/image_des_command.png new file mode 100644 index 0000000..b1432b4 Binary files /dev/null and b/data/base/images/intfac/image_des_command.png differ diff --git a/data/base/images/intfac/image_des_commanddown.png b/data/base/images/intfac/image_des_commanddown.png new file mode 100644 index 0000000..f19abf6 Binary files /dev/null and b/data/base/images/intfac/image_des_commanddown.png differ diff --git a/data/base/images/intfac/image_des_crosscountry.png b/data/base/images/intfac/image_des_crosscountry.png new file mode 100644 index 0000000..f79793c Binary files /dev/null and b/data/base/images/intfac/image_des_crosscountry.png differ diff --git a/data/base/images/intfac/image_des_damage.png b/data/base/images/intfac/image_des_damage.png new file mode 100644 index 0000000..f5b5b99 Binary files /dev/null and b/data/base/images/intfac/image_des_damage.png differ diff --git a/data/base/images/intfac/image_des_delete.png b/data/base/images/intfac/image_des_delete.png new file mode 100644 index 0000000..7cc5f74 Binary files /dev/null and b/data/base/images/intfac/image_des_delete.png differ diff --git a/data/base/images/intfac/image_des_deleteh.png b/data/base/images/intfac/image_des_deleteh.png new file mode 100644 index 0000000..b7710e8 Binary files /dev/null and b/data/base/images/intfac/image_des_deleteh.png differ diff --git a/data/base/images/intfac/image_des_editboxleft.png b/data/base/images/intfac/image_des_editboxleft.png new file mode 100644 index 0000000..795fb89 Binary files /dev/null and b/data/base/images/intfac/image_des_editboxleft.png differ diff --git a/data/base/images/intfac/image_des_editboxlefth.png b/data/base/images/intfac/image_des_editboxlefth.png new file mode 100644 index 0000000..040d946 Binary files /dev/null and b/data/base/images/intfac/image_des_editboxlefth.png differ diff --git a/data/base/images/intfac/image_des_editboxmid.png b/data/base/images/intfac/image_des_editboxmid.png new file mode 100644 index 0000000..0d97cba Binary files /dev/null and b/data/base/images/intfac/image_des_editboxmid.png differ diff --git a/data/base/images/intfac/image_des_editboxmidh.png b/data/base/images/intfac/image_des_editboxmidh.png new file mode 100644 index 0000000..73c3a8f Binary files /dev/null and b/data/base/images/intfac/image_des_editboxmidh.png differ diff --git a/data/base/images/intfac/image_des_editboxright.png b/data/base/images/intfac/image_des_editboxright.png new file mode 100644 index 0000000..4d9f971 Binary files /dev/null and b/data/base/images/intfac/image_des_editboxright.png differ diff --git a/data/base/images/intfac/image_des_editboxrighth.png b/data/base/images/intfac/image_des_editboxrighth.png new file mode 100644 index 0000000..7b945d1 Binary files /dev/null and b/data/base/images/intfac/image_des_editboxrighth.png differ diff --git a/data/base/images/intfac/image_des_extrahi.png b/data/base/images/intfac/image_des_extrahi.png new file mode 100644 index 0000000..592a382 Binary files /dev/null and b/data/base/images/intfac/image_des_extrahi.png differ diff --git a/data/base/images/intfac/image_des_firerate.png b/data/base/images/intfac/image_des_firerate.png new file mode 100644 index 0000000..419f8d3 Binary files /dev/null and b/data/base/images/intfac/image_des_firerate.png differ diff --git a/data/base/images/intfac/image_des_hilight.png b/data/base/images/intfac/image_des_hilight.png new file mode 100644 index 0000000..07222e6 Binary files /dev/null and b/data/base/images/intfac/image_des_hilight.png differ diff --git a/data/base/images/intfac/image_des_hover.png b/data/base/images/intfac/image_des_hover.png new file mode 100644 index 0000000..f4882df Binary files /dev/null and b/data/base/images/intfac/image_des_hover.png differ diff --git a/data/base/images/intfac/image_des_power.png b/data/base/images/intfac/image_des_power.png new file mode 100644 index 0000000..54c82b0 Binary files /dev/null and b/data/base/images/intfac/image_des_power.png differ diff --git a/data/base/images/intfac/image_des_powerback.png b/data/base/images/intfac/image_des_powerback.png new file mode 100644 index 0000000..b0742c8 Binary files /dev/null and b/data/base/images/intfac/image_des_powerback.png differ diff --git a/data/base/images/intfac/image_des_powerbar_left.png b/data/base/images/intfac/image_des_powerbar_left.png new file mode 100644 index 0000000..69ea223 Binary files /dev/null and b/data/base/images/intfac/image_des_powerbar_left.png differ diff --git a/data/base/images/intfac/image_des_powerbar_right.png b/data/base/images/intfac/image_des_powerbar_right.png new file mode 100644 index 0000000..ac1c022 Binary files /dev/null and b/data/base/images/intfac/image_des_powerbar_right.png differ diff --git a/data/base/images/intfac/image_des_powercurr.png b/data/base/images/intfac/image_des_powercurr.png new file mode 100644 index 0000000..ff29d46 Binary files /dev/null and b/data/base/images/intfac/image_des_powercurr.png differ diff --git a/data/base/images/intfac/image_des_propulsion.png b/data/base/images/intfac/image_des_propulsion.png new file mode 100644 index 0000000..482dc98 Binary files /dev/null and b/data/base/images/intfac/image_des_propulsion.png differ diff --git a/data/base/images/intfac/image_des_propulsionh.png b/data/base/images/intfac/image_des_propulsionh.png new file mode 100644 index 0000000..fc7d41f Binary files /dev/null and b/data/base/images/intfac/image_des_propulsionh.png differ diff --git a/data/base/images/intfac/image_des_range.png b/data/base/images/intfac/image_des_range.png new file mode 100644 index 0000000..25c6083 Binary files /dev/null and b/data/base/images/intfac/image_des_range.png differ diff --git a/data/base/images/intfac/image_des_road.png b/data/base/images/intfac/image_des_road.png new file mode 100644 index 0000000..d561b23 Binary files /dev/null and b/data/base/images/intfac/image_des_road.png differ diff --git a/data/base/images/intfac/image_des_save.png b/data/base/images/intfac/image_des_save.png new file mode 100644 index 0000000..fb8605c Binary files /dev/null and b/data/base/images/intfac/image_des_save.png differ diff --git a/data/base/images/intfac/image_des_saveh.png b/data/base/images/intfac/image_des_saveh.png new file mode 100644 index 0000000..015ccab Binary files /dev/null and b/data/base/images/intfac/image_des_saveh.png differ diff --git a/data/base/images/intfac/image_des_statbackleft.png b/data/base/images/intfac/image_des_statbackleft.png new file mode 100644 index 0000000..79131e5 Binary files /dev/null and b/data/base/images/intfac/image_des_statbackleft.png differ diff --git a/data/base/images/intfac/image_des_statbackmid.png b/data/base/images/intfac/image_des_statbackmid.png new file mode 100644 index 0000000..c5adfe1 Binary files /dev/null and b/data/base/images/intfac/image_des_statbackmid.png differ diff --git a/data/base/images/intfac/image_des_statbackright.png b/data/base/images/intfac/image_des_statbackright.png new file mode 100644 index 0000000..c19314f Binary files /dev/null and b/data/base/images/intfac/image_des_statbackright.png differ diff --git a/data/base/images/intfac/image_des_statsback.png b/data/base/images/intfac/image_des_statsback.png new file mode 100644 index 0000000..ca0b667 Binary files /dev/null and b/data/base/images/intfac/image_des_statsback.png differ diff --git a/data/base/images/intfac/image_des_statscomp.png b/data/base/images/intfac/image_des_statscomp.png new file mode 100644 index 0000000..b58db1b Binary files /dev/null and b/data/base/images/intfac/image_des_statscomp.png differ diff --git a/data/base/images/intfac/image_des_statscurr.png b/data/base/images/intfac/image_des_statscurr.png new file mode 100644 index 0000000..2debd17 Binary files /dev/null and b/data/base/images/intfac/image_des_statscurr.png differ diff --git a/data/base/images/intfac/image_des_systems.png b/data/base/images/intfac/image_des_systems.png new file mode 100644 index 0000000..ebeacc8 Binary files /dev/null and b/data/base/images/intfac/image_des_systems.png differ diff --git a/data/base/images/intfac/image_des_systemsdown.png b/data/base/images/intfac/image_des_systemsdown.png new file mode 100644 index 0000000..4d1afe9 Binary files /dev/null and b/data/base/images/intfac/image_des_systemsdown.png differ diff --git a/data/base/images/intfac/image_des_tabweapon.png b/data/base/images/intfac/image_des_tabweapon.png new file mode 100644 index 0000000..487ce41 Binary files /dev/null and b/data/base/images/intfac/image_des_tabweapon.png differ diff --git a/data/base/images/intfac/image_des_tabweapondown.png b/data/base/images/intfac/image_des_tabweapondown.png new file mode 100644 index 0000000..b466a47 Binary files /dev/null and b/data/base/images/intfac/image_des_tabweapondown.png differ diff --git a/data/base/images/intfac/image_des_turret.png b/data/base/images/intfac/image_des_turret.png new file mode 100644 index 0000000..7802b56 Binary files /dev/null and b/data/base/images/intfac/image_des_turret.png differ diff --git a/data/base/images/intfac/image_des_turreth.png b/data/base/images/intfac/image_des_turreth.png new file mode 100644 index 0000000..24dc5bd Binary files /dev/null and b/data/base/images/intfac/image_des_turreth.png differ diff --git a/data/base/images/intfac/image_des_weapons.png b/data/base/images/intfac/image_des_weapons.png new file mode 100644 index 0000000..7eda446 Binary files /dev/null and b/data/base/images/intfac/image_des_weapons.png differ diff --git a/data/base/images/intfac/image_des_weaponsdown.png b/data/base/images/intfac/image_des_weaponsdown.png new file mode 100644 index 0000000..ae8e879 Binary files /dev/null and b/data/base/images/intfac/image_des_weaponsdown.png differ diff --git a/data/base/images/intfac/image_des_weight.png b/data/base/images/intfac/image_des_weight.png new file mode 100644 index 0000000..65f45d7 Binary files /dev/null and b/data/base/images/intfac/image_des_weight.png differ diff --git a/data/base/images/intfac/image_design_down.png b/data/base/images/intfac/image_design_down.png new file mode 100644 index 0000000..fa321c6 Binary files /dev/null and b/data/base/images/intfac/image_design_down.png differ diff --git a/data/base/images/intfac/image_design_up.png b/data/base/images/intfac/image_design_up.png new file mode 100644 index 0000000..2f14c72 Binary files /dev/null and b/data/base/images/intfac/image_design_up.png differ diff --git a/data/base/images/intfac/image_desync_hi.png b/data/base/images/intfac/image_desync_hi.png new file mode 100644 index 0000000..cf8f434 Binary files /dev/null and b/data/base/images/intfac/image_desync_hi.png differ diff --git a/data/base/images/intfac/image_desync_lo.png b/data/base/images/intfac/image_desync_lo.png new file mode 100644 index 0000000..9c41fa1 Binary files /dev/null and b/data/base/images/intfac/image_desync_lo.png differ diff --git a/data/base/images/intfac/image_disconnect_hi.png b/data/base/images/intfac/image_disconnect_hi.png new file mode 100644 index 0000000..e269865 Binary files /dev/null and b/data/base/images/intfac/image_disconnect_hi.png differ diff --git a/data/base/images/intfac/image_disconnect_lo.png b/data/base/images/intfac/image_disconnect_lo.png new file mode 100644 index 0000000..3b9b363 Binary files /dev/null and b/data/base/images/intfac/image_disconnect_lo.png differ diff --git a/data/base/images/intfac/image_ecm.png b/data/base/images/intfac/image_ecm.png new file mode 100644 index 0000000..884dbbe Binary files /dev/null and b/data/base/images/intfac/image_ecm.png differ diff --git a/data/base/images/intfac/image_edit_build_down.png b/data/base/images/intfac/image_edit_build_down.png new file mode 100644 index 0000000..d032f97 Binary files /dev/null and b/data/base/images/intfac/image_edit_build_down.png differ diff --git a/data/base/images/intfac/image_edit_build_up.png b/data/base/images/intfac/image_edit_build_up.png new file mode 100644 index 0000000..bc53b4a Binary files /dev/null and b/data/base/images/intfac/image_edit_build_up.png differ diff --git a/data/base/images/intfac/image_edit_design_down.png b/data/base/images/intfac/image_edit_design_down.png new file mode 100644 index 0000000..35541a1 Binary files /dev/null and b/data/base/images/intfac/image_edit_design_down.png differ diff --git a/data/base/images/intfac/image_edit_design_up.png b/data/base/images/intfac/image_edit_design_up.png new file mode 100644 index 0000000..a1ab711 Binary files /dev/null and b/data/base/images/intfac/image_edit_design_up.png differ diff --git a/data/base/images/intfac/image_edit_manufacture_down.png b/data/base/images/intfac/image_edit_manufacture_down.png new file mode 100644 index 0000000..db2a477 Binary files /dev/null and b/data/base/images/intfac/image_edit_manufacture_down.png differ diff --git a/data/base/images/intfac/image_edit_manufacture_up.png b/data/base/images/intfac/image_edit_manufacture_up.png new file mode 100644 index 0000000..a13bcdc Binary files /dev/null and b/data/base/images/intfac/image_edit_manufacture_up.png differ diff --git a/data/base/images/intfac/image_edit_options_down.png b/data/base/images/intfac/image_edit_options_down.png new file mode 100644 index 0000000..f61abb9 Binary files /dev/null and b/data/base/images/intfac/image_edit_options_down.png differ diff --git a/data/base/images/intfac/image_edit_options_up.png b/data/base/images/intfac/image_edit_options_up.png new file mode 100644 index 0000000..9bb23ba Binary files /dev/null and b/data/base/images/intfac/image_edit_options_up.png differ diff --git a/data/base/images/intfac/image_edit_research_down.png b/data/base/images/intfac/image_edit_research_down.png new file mode 100644 index 0000000..62cd7b9 Binary files /dev/null and b/data/base/images/intfac/image_edit_research_down.png differ diff --git a/data/base/images/intfac/image_edit_research_up.png b/data/base/images/intfac/image_edit_research_up.png new file mode 100644 index 0000000..df84e8e Binary files /dev/null and b/data/base/images/intfac/image_edit_research_up.png differ diff --git a/data/base/images/intfac/image_edit_tiles_down.png b/data/base/images/intfac/image_edit_tiles_down.png new file mode 100644 index 0000000..ba4b007 Binary files /dev/null and b/data/base/images/intfac/image_edit_tiles_down.png differ diff --git a/data/base/images/intfac/image_edit_tiles_up.png b/data/base/images/intfac/image_edit_tiles_up.png new file mode 100644 index 0000000..c301aad Binary files /dev/null and b/data/base/images/intfac/image_edit_tiles_up.png differ diff --git a/data/base/images/intfac/image_fdp_down.png b/data/base/images/intfac/image_fdp_down.png new file mode 100644 index 0000000..d873b6d Binary files /dev/null and b/data/base/images/intfac/image_fdp_down.png differ diff --git a/data/base/images/intfac/image_fdp_hi.png b/data/base/images/intfac/image_fdp_hi.png new file mode 100644 index 0000000..e02c1b2 Binary files /dev/null and b/data/base/images/intfac/image_fdp_hi.png differ diff --git a/data/base/images/intfac/image_fdp_up.png b/data/base/images/intfac/image_fdp_up.png new file mode 100644 index 0000000..e327ad3 Binary files /dev/null and b/data/base/images/intfac/image_fdp_up.png differ diff --git a/data/base/images/intfac/image_frame_c0.png b/data/base/images/intfac/image_frame_c0.png new file mode 100644 index 0000000..0dc93fd Binary files /dev/null and b/data/base/images/intfac/image_frame_c0.png differ diff --git a/data/base/images/intfac/image_frame_c1.png b/data/base/images/intfac/image_frame_c1.png new file mode 100644 index 0000000..8bca8f4 Binary files /dev/null and b/data/base/images/intfac/image_frame_c1.png differ diff --git a/data/base/images/intfac/image_frame_c2.png b/data/base/images/intfac/image_frame_c2.png new file mode 100644 index 0000000..b9e2144 Binary files /dev/null and b/data/base/images/intfac/image_frame_c2.png differ diff --git a/data/base/images/intfac/image_frame_c3.png b/data/base/images/intfac/image_frame_c3.png new file mode 100644 index 0000000..dc57ebf Binary files /dev/null and b/data/base/images/intfac/image_frame_c3.png differ diff --git a/data/base/images/intfac/image_frame_hb.png b/data/base/images/intfac/image_frame_hb.png new file mode 100644 index 0000000..cd13d18 Binary files /dev/null and b/data/base/images/intfac/image_frame_hb.png differ diff --git a/data/base/images/intfac/image_frame_hb2.png b/data/base/images/intfac/image_frame_hb2.png new file mode 100644 index 0000000..bf7e49c Binary files /dev/null and b/data/base/images/intfac/image_frame_hb2.png differ diff --git a/data/base/images/intfac/image_frame_hbh.png b/data/base/images/intfac/image_frame_hbh.png new file mode 100644 index 0000000..be6b74b Binary files /dev/null and b/data/base/images/intfac/image_frame_hbh.png differ diff --git a/data/base/images/intfac/image_frame_hc0.png b/data/base/images/intfac/image_frame_hc0.png new file mode 100644 index 0000000..ea7a142 Binary files /dev/null and b/data/base/images/intfac/image_frame_hc0.png differ diff --git a/data/base/images/intfac/image_frame_hc1.png b/data/base/images/intfac/image_frame_hc1.png new file mode 100644 index 0000000..4775e2b Binary files /dev/null and b/data/base/images/intfac/image_frame_hc1.png differ diff --git a/data/base/images/intfac/image_frame_hc2.png b/data/base/images/intfac/image_frame_hc2.png new file mode 100644 index 0000000..2146a39 Binary files /dev/null and b/data/base/images/intfac/image_frame_hc2.png differ diff --git a/data/base/images/intfac/image_frame_hc3.png b/data/base/images/intfac/image_frame_hc3.png new file mode 100644 index 0000000..b06de6c Binary files /dev/null and b/data/base/images/intfac/image_frame_hc3.png differ diff --git a/data/base/images/intfac/image_frame_ht.png b/data/base/images/intfac/image_frame_ht.png new file mode 100644 index 0000000..cd13d18 Binary files /dev/null and b/data/base/images/intfac/image_frame_ht.png differ diff --git a/data/base/images/intfac/image_frame_ht2.png b/data/base/images/intfac/image_frame_ht2.png new file mode 100644 index 0000000..4ce446b Binary files /dev/null and b/data/base/images/intfac/image_frame_ht2.png differ diff --git a/data/base/images/intfac/image_frame_hth.png b/data/base/images/intfac/image_frame_hth.png new file mode 100644 index 0000000..50252b8 Binary files /dev/null and b/data/base/images/intfac/image_frame_hth.png differ diff --git a/data/base/images/intfac/image_frame_vc0.png b/data/base/images/intfac/image_frame_vc0.png new file mode 100644 index 0000000..c4c9576 Binary files /dev/null and b/data/base/images/intfac/image_frame_vc0.png differ diff --git a/data/base/images/intfac/image_frame_vc1.png b/data/base/images/intfac/image_frame_vc1.png new file mode 100644 index 0000000..6b6446c Binary files /dev/null and b/data/base/images/intfac/image_frame_vc1.png differ diff --git a/data/base/images/intfac/image_frame_vc2.png b/data/base/images/intfac/image_frame_vc2.png new file mode 100644 index 0000000..4db4e80 Binary files /dev/null and b/data/base/images/intfac/image_frame_vc2.png differ diff --git a/data/base/images/intfac/image_frame_vc3.png b/data/base/images/intfac/image_frame_vc3.png new file mode 100644 index 0000000..67fd312 Binary files /dev/null and b/data/base/images/intfac/image_frame_vc3.png differ diff --git a/data/base/images/intfac/image_frame_vl.png b/data/base/images/intfac/image_frame_vl.png new file mode 100644 index 0000000..c3314f6 Binary files /dev/null and b/data/base/images/intfac/image_frame_vl.png differ diff --git a/data/base/images/intfac/image_frame_vl2.png b/data/base/images/intfac/image_frame_vl2.png new file mode 100644 index 0000000..617f3fb Binary files /dev/null and b/data/base/images/intfac/image_frame_vl2.png differ diff --git a/data/base/images/intfac/image_frame_vlh.png b/data/base/images/intfac/image_frame_vlh.png new file mode 100644 index 0000000..c4c047d Binary files /dev/null and b/data/base/images/intfac/image_frame_vlh.png differ diff --git a/data/base/images/intfac/image_frame_vr.png b/data/base/images/intfac/image_frame_vr.png new file mode 100644 index 0000000..c3314f6 Binary files /dev/null and b/data/base/images/intfac/image_frame_vr.png differ diff --git a/data/base/images/intfac/image_frame_vr2.png b/data/base/images/intfac/image_frame_vr2.png new file mode 100644 index 0000000..d9a2c68 Binary files /dev/null and b/data/base/images/intfac/image_frame_vr2.png differ diff --git a/data/base/images/intfac/image_frame_vrh.png b/data/base/images/intfac/image_frame_vrh.png new file mode 100644 index 0000000..89543b4 Binary files /dev/null and b/data/base/images/intfac/image_frame_vrh.png differ diff --git a/data/base/images/intfac/image_generic_tank.png b/data/base/images/intfac/image_generic_tank.png new file mode 100644 index 0000000..90ab362 Binary files /dev/null and b/data/base/images/intfac/image_generic_tank.png differ diff --git a/data/base/images/intfac/image_generic_tank_tc.png b/data/base/images/intfac/image_generic_tank_tc.png new file mode 100644 index 0000000..1c32375 Binary files /dev/null and b/data/base/images/intfac/image_generic_tank_tc.png differ diff --git a/data/base/images/intfac/image_gn_0.png b/data/base/images/intfac/image_gn_0.png new file mode 100644 index 0000000..663b4f8 Binary files /dev/null and b/data/base/images/intfac/image_gn_0.png differ diff --git a/data/base/images/intfac/image_gn_1.png b/data/base/images/intfac/image_gn_1.png new file mode 100644 index 0000000..d2537b4 Binary files /dev/null and b/data/base/images/intfac/image_gn_1.png differ diff --git a/data/base/images/intfac/image_gn_10.png b/data/base/images/intfac/image_gn_10.png new file mode 100644 index 0000000..1e4f9ba Binary files /dev/null and b/data/base/images/intfac/image_gn_10.png differ diff --git a/data/base/images/intfac/image_gn_11.png b/data/base/images/intfac/image_gn_11.png new file mode 100644 index 0000000..d4bae2c Binary files /dev/null and b/data/base/images/intfac/image_gn_11.png differ diff --git a/data/base/images/intfac/image_gn_12.png b/data/base/images/intfac/image_gn_12.png new file mode 100644 index 0000000..cc433cf Binary files /dev/null and b/data/base/images/intfac/image_gn_12.png differ diff --git a/data/base/images/intfac/image_gn_13.png b/data/base/images/intfac/image_gn_13.png new file mode 100644 index 0000000..31c6926 Binary files /dev/null and b/data/base/images/intfac/image_gn_13.png differ diff --git a/data/base/images/intfac/image_gn_14.png b/data/base/images/intfac/image_gn_14.png new file mode 100644 index 0000000..759a55a Binary files /dev/null and b/data/base/images/intfac/image_gn_14.png differ diff --git a/data/base/images/intfac/image_gn_15.png b/data/base/images/intfac/image_gn_15.png new file mode 100644 index 0000000..67bcf1b Binary files /dev/null and b/data/base/images/intfac/image_gn_15.png differ diff --git a/data/base/images/intfac/image_gn_2.png b/data/base/images/intfac/image_gn_2.png new file mode 100644 index 0000000..38c9c79 Binary files /dev/null and b/data/base/images/intfac/image_gn_2.png differ diff --git a/data/base/images/intfac/image_gn_3.png b/data/base/images/intfac/image_gn_3.png new file mode 100644 index 0000000..0801e6a Binary files /dev/null and b/data/base/images/intfac/image_gn_3.png differ diff --git a/data/base/images/intfac/image_gn_4.png b/data/base/images/intfac/image_gn_4.png new file mode 100644 index 0000000..f019d7c Binary files /dev/null and b/data/base/images/intfac/image_gn_4.png differ diff --git a/data/base/images/intfac/image_gn_5.png b/data/base/images/intfac/image_gn_5.png new file mode 100644 index 0000000..8a73c33 Binary files /dev/null and b/data/base/images/intfac/image_gn_5.png differ diff --git a/data/base/images/intfac/image_gn_6.png b/data/base/images/intfac/image_gn_6.png new file mode 100644 index 0000000..58f51dd Binary files /dev/null and b/data/base/images/intfac/image_gn_6.png differ diff --git a/data/base/images/intfac/image_gn_7.png b/data/base/images/intfac/image_gn_7.png new file mode 100644 index 0000000..c39530b Binary files /dev/null and b/data/base/images/intfac/image_gn_7.png differ diff --git a/data/base/images/intfac/image_gn_8.png b/data/base/images/intfac/image_gn_8.png new file mode 100644 index 0000000..8e4e95b Binary files /dev/null and b/data/base/images/intfac/image_gn_8.png differ diff --git a/data/base/images/intfac/image_gn_9.png b/data/base/images/intfac/image_gn_9.png new file mode 100644 index 0000000..1cfbea3 Binary files /dev/null and b/data/base/images/intfac/image_gn_9.png differ diff --git a/data/base/images/intfac/image_gn_star.png b/data/base/images/intfac/image_gn_star.png new file mode 100644 index 0000000..a20fb2b Binary files /dev/null and b/data/base/images/intfac/image_gn_star.png differ diff --git a/data/base/images/intfac/image_hovercraft.png b/data/base/images/intfac/image_hovercraft.png new file mode 100644 index 0000000..4e43351 Binary files /dev/null and b/data/base/images/intfac/image_hovercraft.png differ diff --git a/data/base/images/intfac/image_infinite_down.png b/data/base/images/intfac/image_infinite_down.png new file mode 100644 index 0000000..b0e0d9b Binary files /dev/null and b/data/base/images/intfac/image_infinite_down.png differ diff --git a/data/base/images/intfac/image_infinite_hi.png b/data/base/images/intfac/image_infinite_hi.png new file mode 100644 index 0000000..163a41e Binary files /dev/null and b/data/base/images/intfac/image_infinite_hi.png differ diff --git a/data/base/images/intfac/image_infinite_up.png b/data/base/images/intfac/image_infinite_up.png new file mode 100644 index 0000000..f83d302 Binary files /dev/null and b/data/base/images/intfac/image_infinite_up.png differ diff --git a/data/base/images/intfac/image_intel_campaign.png b/data/base/images/intfac/image_intel_campaign.png new file mode 100644 index 0000000..5f793f5 Binary files /dev/null and b/data/base/images/intfac/image_intel_campaign.png differ diff --git a/data/base/images/intfac/image_intel_campaigndown.png b/data/base/images/intfac/image_intel_campaigndown.png new file mode 100644 index 0000000..e5b03a6 Binary files /dev/null and b/data/base/images/intfac/image_intel_campaigndown.png differ diff --git a/data/base/images/intfac/image_intel_mission.png b/data/base/images/intfac/image_intel_mission.png new file mode 100644 index 0000000..b8b14aa Binary files /dev/null and b/data/base/images/intfac/image_intel_mission.png differ diff --git a/data/base/images/intfac/image_intel_missiondown.png b/data/base/images/intfac/image_intel_missiondown.png new file mode 100644 index 0000000..a673617 Binary files /dev/null and b/data/base/images/intfac/image_intel_missiondown.png differ diff --git a/data/base/images/intfac/image_intel_research.png b/data/base/images/intfac/image_intel_research.png new file mode 100644 index 0000000..57cec84 Binary files /dev/null and b/data/base/images/intfac/image_intel_research.png differ diff --git a/data/base/images/intfac/image_intel_researchdown.png b/data/base/images/intfac/image_intel_researchdown.png new file mode 100644 index 0000000..41c6f56 Binary files /dev/null and b/data/base/images/intfac/image_intel_researchdown.png differ diff --git a/data/base/images/intfac/image_intelmap_down.png b/data/base/images/intfac/image_intelmap_down.png new file mode 100644 index 0000000..70333b7 Binary files /dev/null and b/data/base/images/intfac/image_intelmap_down.png differ diff --git a/data/base/images/intfac/image_intelmap_up.png b/data/base/images/intfac/image_intelmap_up.png new file mode 100644 index 0000000..a13d9f6 Binary files /dev/null and b/data/base/images/intfac/image_intelmap_up.png differ diff --git a/data/base/images/intfac/image_launchdown.png b/data/base/images/intfac/image_launchdown.png new file mode 100644 index 0000000..2602940 Binary files /dev/null and b/data/base/images/intfac/image_launchdown.png differ diff --git a/data/base/images/intfac/image_launchup.png b/data/base/images/intfac/image_launchup.png new file mode 100644 index 0000000..cb90535 Binary files /dev/null and b/data/base/images/intfac/image_launchup.png differ diff --git a/data/base/images/intfac/image_lev_0.png b/data/base/images/intfac/image_lev_0.png new file mode 100644 index 0000000..ac37436 Binary files /dev/null and b/data/base/images/intfac/image_lev_0.png differ diff --git a/data/base/images/intfac/image_lev_1.png b/data/base/images/intfac/image_lev_1.png new file mode 100644 index 0000000..7d3433e Binary files /dev/null and b/data/base/images/intfac/image_lev_1.png differ diff --git a/data/base/images/intfac/image_lev_2.png b/data/base/images/intfac/image_lev_2.png new file mode 100644 index 0000000..3edc288 Binary files /dev/null and b/data/base/images/intfac/image_lev_2.png differ diff --git a/data/base/images/intfac/image_lev_3.png b/data/base/images/intfac/image_lev_3.png new file mode 100644 index 0000000..5410961 Binary files /dev/null and b/data/base/images/intfac/image_lev_3.png differ diff --git a/data/base/images/intfac/image_lev_4.png b/data/base/images/intfac/image_lev_4.png new file mode 100644 index 0000000..67d6240 Binary files /dev/null and b/data/base/images/intfac/image_lev_4.png differ diff --git a/data/base/images/intfac/image_lev_5.png b/data/base/images/intfac/image_lev_5.png new file mode 100644 index 0000000..2e7e61e Binary files /dev/null and b/data/base/images/intfac/image_lev_5.png differ diff --git a/data/base/images/intfac/image_lev_6.png b/data/base/images/intfac/image_lev_6.png new file mode 100644 index 0000000..4008e0a Binary files /dev/null and b/data/base/images/intfac/image_lev_6.png differ diff --git a/data/base/images/intfac/image_lev_7.png b/data/base/images/intfac/image_lev_7.png new file mode 100644 index 0000000..a897216 Binary files /dev/null and b/data/base/images/intfac/image_lev_7.png differ diff --git a/data/base/images/intfac/image_lfttab.png b/data/base/images/intfac/image_lfttab.png new file mode 100644 index 0000000..7f11afc Binary files /dev/null and b/data/base/images/intfac/image_lfttab.png differ diff --git a/data/base/images/intfac/image_lfttabd.png b/data/base/images/intfac/image_lfttabd.png new file mode 100644 index 0000000..574feff Binary files /dev/null and b/data/base/images/intfac/image_lfttabd.png differ diff --git a/data/base/images/intfac/image_lfttabh.png b/data/base/images/intfac/image_lfttabh.png new file mode 100644 index 0000000..81ff5f0 Binary files /dev/null and b/data/base/images/intfac/image_lfttabh.png differ diff --git a/data/base/images/intfac/image_loop_down.png b/data/base/images/intfac/image_loop_down.png new file mode 100644 index 0000000..ba4fb95 Binary files /dev/null and b/data/base/images/intfac/image_loop_down.png differ diff --git a/data/base/images/intfac/image_loop_hi.png b/data/base/images/intfac/image_loop_hi.png new file mode 100644 index 0000000..5e4c048 Binary files /dev/null and b/data/base/images/intfac/image_loop_hi.png differ diff --git a/data/base/images/intfac/image_loop_up.png b/data/base/images/intfac/image_loop_up.png new file mode 100644 index 0000000..f2e3c71 Binary files /dev/null and b/data/base/images/intfac/image_loop_up.png differ diff --git a/data/base/images/intfac/image_manufacture_down.png b/data/base/images/intfac/image_manufacture_down.png new file mode 100644 index 0000000..5448414 Binary files /dev/null and b/data/base/images/intfac/image_manufacture_down.png differ diff --git a/data/base/images/intfac/image_manufacture_up.png b/data/base/images/intfac/image_manufacture_up.png new file mode 100644 index 0000000..fbe0846 Binary files /dev/null and b/data/base/images/intfac/image_manufacture_up.png differ diff --git a/data/base/images/intfac/image_mission_clock.png b/data/base/images/intfac/image_mission_clock.png new file mode 100644 index 0000000..6cd4ce2 Binary files /dev/null and b/data/base/images/intfac/image_mission_clock.png differ diff --git a/data/base/images/intfac/image_mission_clock_up.png b/data/base/images/intfac/image_mission_clock_up.png new file mode 100644 index 0000000..8ba54fd Binary files /dev/null and b/data/base/images/intfac/image_mission_clock_up.png differ diff --git a/data/base/images/intfac/image_multi_al.png b/data/base/images/intfac/image_multi_al.png new file mode 100644 index 0000000..b3cad61 Binary files /dev/null and b/data/base/images/intfac/image_multi_al.png differ diff --git a/data/base/images/intfac/image_multi_al_hi.png b/data/base/images/intfac/image_multi_al_hi.png new file mode 100644 index 0000000..c328403 Binary files /dev/null and b/data/base/images/intfac/image_multi_al_hi.png differ diff --git a/data/base/images/intfac/image_multi_chan.png b/data/base/images/intfac/image_multi_chan.png new file mode 100644 index 0000000..51bd898 Binary files /dev/null and b/data/base/images/intfac/image_multi_chan.png differ diff --git a/data/base/images/intfac/image_multi_dro.png b/data/base/images/intfac/image_multi_dro.png new file mode 100644 index 0000000..034c966 Binary files /dev/null and b/data/base/images/intfac/image_multi_dro.png differ diff --git a/data/base/images/intfac/image_multi_dro_hi.png b/data/base/images/intfac/image_multi_dro_hi.png new file mode 100644 index 0000000..b7f93ef Binary files /dev/null and b/data/base/images/intfac/image_multi_dro_hi.png differ diff --git a/data/base/images/intfac/image_multi_noal.png b/data/base/images/intfac/image_multi_noal.png new file mode 100644 index 0000000..01876e1 Binary files /dev/null and b/data/base/images/intfac/image_multi_noal.png differ diff --git a/data/base/images/intfac/image_multi_noal_hi.png b/data/base/images/intfac/image_multi_noal_hi.png new file mode 100644 index 0000000..f4510cb Binary files /dev/null and b/data/base/images/intfac/image_multi_noal_hi.png differ diff --git a/data/base/images/intfac/image_multi_nochan.png b/data/base/images/intfac/image_multi_nochan.png new file mode 100644 index 0000000..f2ad002 Binary files /dev/null and b/data/base/images/intfac/image_multi_nochan.png differ diff --git a/data/base/images/intfac/image_multi_offal.png b/data/base/images/intfac/image_multi_offal.png new file mode 100644 index 0000000..000c4ae Binary files /dev/null and b/data/base/images/intfac/image_multi_offal.png differ diff --git a/data/base/images/intfac/image_multi_offal_hi.png b/data/base/images/intfac/image_multi_offal_hi.png new file mode 100644 index 0000000..4062a23 Binary files /dev/null and b/data/base/images/intfac/image_multi_offal_hi.png differ diff --git a/data/base/images/intfac/image_multi_pow.png b/data/base/images/intfac/image_multi_pow.png new file mode 100644 index 0000000..dcc0814 Binary files /dev/null and b/data/base/images/intfac/image_multi_pow.png differ diff --git a/data/base/images/intfac/image_multi_pow_hi.png b/data/base/images/intfac/image_multi_pow_hi.png new file mode 100644 index 0000000..4c2e952 Binary files /dev/null and b/data/base/images/intfac/image_multi_pow_hi.png differ diff --git a/data/base/images/intfac/image_multi_tek.png b/data/base/images/intfac/image_multi_tek.png new file mode 100644 index 0000000..88c3072 Binary files /dev/null and b/data/base/images/intfac/image_multi_tek.png differ diff --git a/data/base/images/intfac/image_multi_tek_hi.png b/data/base/images/intfac/image_multi_tek_hi.png new file mode 100644 index 0000000..3fd6235 Binary files /dev/null and b/data/base/images/intfac/image_multi_tek_hi.png differ diff --git a/data/base/images/intfac/image_multi_vis.png b/data/base/images/intfac/image_multi_vis.png new file mode 100644 index 0000000..fdf20d7 Binary files /dev/null and b/data/base/images/intfac/image_multi_vis.png differ diff --git a/data/base/images/intfac/image_multi_vis_hi.png b/data/base/images/intfac/image_multi_vis_hi.png new file mode 100644 index 0000000..8ef1e12 Binary files /dev/null and b/data/base/images/intfac/image_multi_vis_hi.png differ diff --git a/data/base/images/intfac/image_nadda.png b/data/base/images/intfac/image_nadda.png new file mode 100644 index 0000000..e85795d Binary files /dev/null and b/data/base/images/intfac/image_nadda.png differ diff --git a/data/base/images/intfac/image_nruter.png b/data/base/images/intfac/image_nruter.png new file mode 100644 index 0000000..fe70d07 Binary files /dev/null and b/data/base/images/intfac/image_nruter.png differ diff --git a/data/base/images/intfac/image_ord_circledown.png b/data/base/images/intfac/image_ord_circledown.png new file mode 100644 index 0000000..906aa58 Binary files /dev/null and b/data/base/images/intfac/image_ord_circledown.png differ diff --git a/data/base/images/intfac/image_ord_circleup.png b/data/base/images/intfac/image_ord_circleup.png new file mode 100644 index 0000000..3bb364a Binary files /dev/null and b/data/base/images/intfac/image_ord_circleup.png differ diff --git a/data/base/images/intfac/image_ord_destruct1down.png b/data/base/images/intfac/image_ord_destruct1down.png new file mode 100644 index 0000000..6a5bead Binary files /dev/null and b/data/base/images/intfac/image_ord_destruct1down.png differ diff --git a/data/base/images/intfac/image_ord_destruct1up.png b/data/base/images/intfac/image_ord_destruct1up.png new file mode 100644 index 0000000..df6ae25 Binary files /dev/null and b/data/base/images/intfac/image_ord_destruct1up.png differ diff --git a/data/base/images/intfac/image_ord_destruct2down.png b/data/base/images/intfac/image_ord_destruct2down.png new file mode 100644 index 0000000..62d36ce Binary files /dev/null and b/data/base/images/intfac/image_ord_destruct2down.png differ diff --git a/data/base/images/intfac/image_ord_destruct2grey.png b/data/base/images/intfac/image_ord_destruct2grey.png new file mode 100644 index 0000000..26d5733 Binary files /dev/null and b/data/base/images/intfac/image_ord_destruct2grey.png differ diff --git a/data/base/images/intfac/image_ord_destruct2up.png b/data/base/images/intfac/image_ord_destruct2up.png new file mode 100644 index 0000000..2bf7c80 Binary files /dev/null and b/data/base/images/intfac/image_ord_destruct2up.png differ diff --git a/data/base/images/intfac/image_ord_embarkdown.png b/data/base/images/intfac/image_ord_embarkdown.png new file mode 100644 index 0000000..270a790 Binary files /dev/null and b/data/base/images/intfac/image_ord_embarkdown.png differ diff --git a/data/base/images/intfac/image_ord_embarkup.png b/data/base/images/intfac/image_ord_embarkup.png new file mode 100644 index 0000000..b130fd2 Binary files /dev/null and b/data/base/images/intfac/image_ord_embarkup.png differ diff --git a/data/base/images/intfac/image_ord_fac1down.png b/data/base/images/intfac/image_ord_fac1down.png new file mode 100644 index 0000000..1a78a6e Binary files /dev/null and b/data/base/images/intfac/image_ord_fac1down.png differ diff --git a/data/base/images/intfac/image_ord_fac1up.png b/data/base/images/intfac/image_ord_fac1up.png new file mode 100644 index 0000000..626de47 Binary files /dev/null and b/data/base/images/intfac/image_ord_fac1up.png differ diff --git a/data/base/images/intfac/image_ord_fac2down.png b/data/base/images/intfac/image_ord_fac2down.png new file mode 100644 index 0000000..96b12f2 Binary files /dev/null and b/data/base/images/intfac/image_ord_fac2down.png differ diff --git a/data/base/images/intfac/image_ord_fac2up.png b/data/base/images/intfac/image_ord_fac2up.png new file mode 100644 index 0000000..9062fd0 Binary files /dev/null and b/data/base/images/intfac/image_ord_fac2up.png differ diff --git a/data/base/images/intfac/image_ord_fac3down.png b/data/base/images/intfac/image_ord_fac3down.png new file mode 100644 index 0000000..0cca787 Binary files /dev/null and b/data/base/images/intfac/image_ord_fac3down.png differ diff --git a/data/base/images/intfac/image_ord_fac3up.png b/data/base/images/intfac/image_ord_fac3up.png new file mode 100644 index 0000000..44f9788 Binary files /dev/null and b/data/base/images/intfac/image_ord_fac3up.png differ diff --git a/data/base/images/intfac/image_ord_fac4down.png b/data/base/images/intfac/image_ord_fac4down.png new file mode 100644 index 0000000..ddea3b4 Binary files /dev/null and b/data/base/images/intfac/image_ord_fac4down.png differ diff --git a/data/base/images/intfac/image_ord_fac4up.png b/data/base/images/intfac/image_ord_fac4up.png new file mode 100644 index 0000000..f32c57d Binary files /dev/null and b/data/base/images/intfac/image_ord_fac4up.png differ diff --git a/data/base/images/intfac/image_ord_fac5down.png b/data/base/images/intfac/image_ord_fac5down.png new file mode 100644 index 0000000..fb021b4 Binary files /dev/null and b/data/base/images/intfac/image_ord_fac5down.png differ diff --git a/data/base/images/intfac/image_ord_fac5up.png b/data/base/images/intfac/image_ord_fac5up.png new file mode 100644 index 0000000..341296c Binary files /dev/null and b/data/base/images/intfac/image_ord_fac5up.png differ diff --git a/data/base/images/intfac/image_ord_fachilite.png b/data/base/images/intfac/image_ord_fachilite.png new file mode 100644 index 0000000..ba4694d Binary files /dev/null and b/data/base/images/intfac/image_ord_fachilite.png differ diff --git a/data/base/images/intfac/image_ord_fatwilldown.png b/data/base/images/intfac/image_ord_fatwilldown.png new file mode 100644 index 0000000..3b3f4d4 Binary files /dev/null and b/data/base/images/intfac/image_ord_fatwilldown.png differ diff --git a/data/base/images/intfac/image_ord_fatwillup.png b/data/base/images/intfac/image_ord_fatwillup.png new file mode 100644 index 0000000..fbab405 Binary files /dev/null and b/data/base/images/intfac/image_ord_fatwillup.png differ diff --git a/data/base/images/intfac/image_ord_firedes_down.png b/data/base/images/intfac/image_ord_firedes_down.png new file mode 100644 index 0000000..a677f78 Binary files /dev/null and b/data/base/images/intfac/image_ord_firedes_down.png differ diff --git a/data/base/images/intfac/image_ord_firedes_up.png b/data/base/images/intfac/image_ord_firedes_up.png new file mode 100644 index 0000000..c80c711 Binary files /dev/null and b/data/base/images/intfac/image_ord_firedes_up.png differ diff --git a/data/base/images/intfac/image_ord_gotohqdown.png b/data/base/images/intfac/image_ord_gotohqdown.png new file mode 100644 index 0000000..ecf6430 Binary files /dev/null and b/data/base/images/intfac/image_ord_gotohqdown.png differ diff --git a/data/base/images/intfac/image_ord_gotohqup.png b/data/base/images/intfac/image_ord_gotohqup.png new file mode 100644 index 0000000..796c6c2 Binary files /dev/null and b/data/base/images/intfac/image_ord_gotohqup.png differ diff --git a/data/base/images/intfac/image_ord_guarddown.png b/data/base/images/intfac/image_ord_guarddown.png new file mode 100644 index 0000000..abb4860 Binary files /dev/null and b/data/base/images/intfac/image_ord_guarddown.png differ diff --git a/data/base/images/intfac/image_ord_guardup.png b/data/base/images/intfac/image_ord_guardup.png new file mode 100644 index 0000000..8853e9c Binary files /dev/null and b/data/base/images/intfac/image_ord_guardup.png differ diff --git a/data/base/images/intfac/image_ord_haltdown.png b/data/base/images/intfac/image_ord_haltdown.png new file mode 100644 index 0000000..eb43fea Binary files /dev/null and b/data/base/images/intfac/image_ord_haltdown.png differ diff --git a/data/base/images/intfac/image_ord_haltup.png b/data/base/images/intfac/image_ord_haltup.png new file mode 100644 index 0000000..f396cfd Binary files /dev/null and b/data/base/images/intfac/image_ord_haltup.png differ diff --git a/data/base/images/intfac/image_ord_holdfiredown.png b/data/base/images/intfac/image_ord_holdfiredown.png new file mode 100644 index 0000000..7182ba5 Binary files /dev/null and b/data/base/images/intfac/image_ord_holdfiredown.png differ diff --git a/data/base/images/intfac/image_ord_holdfireup.png b/data/base/images/intfac/image_ord_holdfireup.png new file mode 100644 index 0000000..6fc249f Binary files /dev/null and b/data/base/images/intfac/image_ord_holdfireup.png differ diff --git a/data/base/images/intfac/image_ord_patroldown.png b/data/base/images/intfac/image_ord_patroldown.png new file mode 100644 index 0000000..320e82b Binary files /dev/null and b/data/base/images/intfac/image_ord_patroldown.png differ diff --git a/data/base/images/intfac/image_ord_patrolup.png b/data/base/images/intfac/image_ord_patrolup.png new file mode 100644 index 0000000..02e2015 Binary files /dev/null and b/data/base/images/intfac/image_ord_patrolup.png differ diff --git a/data/base/images/intfac/image_ord_pursuedown.png b/data/base/images/intfac/image_ord_pursuedown.png new file mode 100644 index 0000000..91bfac0 Binary files /dev/null and b/data/base/images/intfac/image_ord_pursuedown.png differ diff --git a/data/base/images/intfac/image_ord_pursueup.png b/data/base/images/intfac/image_ord_pursueup.png new file mode 100644 index 0000000..033a0a7 Binary files /dev/null and b/data/base/images/intfac/image_ord_pursueup.png differ diff --git a/data/base/images/intfac/image_ord_range1down.png b/data/base/images/intfac/image_ord_range1down.png new file mode 100644 index 0000000..8974812 Binary files /dev/null and b/data/base/images/intfac/image_ord_range1down.png differ diff --git a/data/base/images/intfac/image_ord_range1up.png b/data/base/images/intfac/image_ord_range1up.png new file mode 100644 index 0000000..4c21d18 Binary files /dev/null and b/data/base/images/intfac/image_ord_range1up.png differ diff --git a/data/base/images/intfac/image_ord_range2down.png b/data/base/images/intfac/image_ord_range2down.png new file mode 100644 index 0000000..aff21af Binary files /dev/null and b/data/base/images/intfac/image_ord_range2down.png differ diff --git a/data/base/images/intfac/image_ord_range2up.png b/data/base/images/intfac/image_ord_range2up.png new file mode 100644 index 0000000..601805c Binary files /dev/null and b/data/base/images/intfac/image_ord_range2up.png differ diff --git a/data/base/images/intfac/image_ord_range3down.png b/data/base/images/intfac/image_ord_range3down.png new file mode 100644 index 0000000..9f0a608 Binary files /dev/null and b/data/base/images/intfac/image_ord_range3down.png differ diff --git a/data/base/images/intfac/image_ord_range3up.png b/data/base/images/intfac/image_ord_range3up.png new file mode 100644 index 0000000..480d659 Binary files /dev/null and b/data/base/images/intfac/image_ord_range3up.png differ diff --git a/data/base/images/intfac/image_ord_repair1down.png b/data/base/images/intfac/image_ord_repair1down.png new file mode 100644 index 0000000..328c5b2 Binary files /dev/null and b/data/base/images/intfac/image_ord_repair1down.png differ diff --git a/data/base/images/intfac/image_ord_repair1up.png b/data/base/images/intfac/image_ord_repair1up.png new file mode 100644 index 0000000..55f689a Binary files /dev/null and b/data/base/images/intfac/image_ord_repair1up.png differ diff --git a/data/base/images/intfac/image_ord_repair2down.png b/data/base/images/intfac/image_ord_repair2down.png new file mode 100644 index 0000000..1f869c9 Binary files /dev/null and b/data/base/images/intfac/image_ord_repair2down.png differ diff --git a/data/base/images/intfac/image_ord_repair2up.png b/data/base/images/intfac/image_ord_repair2up.png new file mode 100644 index 0000000..ca573ed Binary files /dev/null and b/data/base/images/intfac/image_ord_repair2up.png differ diff --git a/data/base/images/intfac/image_ord_repair3down.png b/data/base/images/intfac/image_ord_repair3down.png new file mode 100644 index 0000000..8bc4cde Binary files /dev/null and b/data/base/images/intfac/image_ord_repair3down.png differ diff --git a/data/base/images/intfac/image_ord_repair3up.png b/data/base/images/intfac/image_ord_repair3up.png new file mode 100644 index 0000000..1a19d5a Binary files /dev/null and b/data/base/images/intfac/image_ord_repair3up.png differ diff --git a/data/base/images/intfac/image_ord_retfiredown.png b/data/base/images/intfac/image_ord_retfiredown.png new file mode 100644 index 0000000..cbc7f5f Binary files /dev/null and b/data/base/images/intfac/image_ord_retfiredown.png differ diff --git a/data/base/images/intfac/image_ord_retfireup.png b/data/base/images/intfac/image_ord_retfireup.png new file mode 100644 index 0000000..6db7b1c Binary files /dev/null and b/data/base/images/intfac/image_ord_retfireup.png differ diff --git a/data/base/images/intfac/image_ord_rtrdown.png b/data/base/images/intfac/image_ord_rtrdown.png new file mode 100644 index 0000000..c3971f2 Binary files /dev/null and b/data/base/images/intfac/image_ord_rtrdown.png differ diff --git a/data/base/images/intfac/image_ord_rtrup.png b/data/base/images/intfac/image_ord_rtrup.png new file mode 100644 index 0000000..8595111 Binary files /dev/null and b/data/base/images/intfac/image_ord_rtrup.png differ diff --git a/data/base/images/intfac/image_origin_commander.png b/data/base/images/intfac/image_origin_commander.png new file mode 100644 index 0000000..a57e563 Binary files /dev/null and b/data/base/images/intfac/image_origin_commander.png differ diff --git a/data/base/images/intfac/image_origin_radar_detector.png b/data/base/images/intfac/image_origin_radar_detector.png new file mode 100644 index 0000000..1958c10 Binary files /dev/null and b/data/base/images/intfac/image_origin_radar_detector.png differ diff --git a/data/base/images/intfac/image_origin_sensor_airdef.png b/data/base/images/intfac/image_origin_sensor_airdef.png new file mode 100644 index 0000000..25a7338 Binary files /dev/null and b/data/base/images/intfac/image_origin_sensor_airdef.png differ diff --git a/data/base/images/intfac/image_origin_sensor_cb.png b/data/base/images/intfac/image_origin_sensor_cb.png new file mode 100644 index 0000000..437d6b7 Binary files /dev/null and b/data/base/images/intfac/image_origin_sensor_cb.png differ diff --git a/data/base/images/intfac/image_origin_sensor_standard.png b/data/base/images/intfac/image_origin_sensor_standard.png new file mode 100644 index 0000000..4875372 Binary files /dev/null and b/data/base/images/intfac/image_origin_sensor_standard.png differ diff --git a/data/base/images/intfac/image_origin_visual.png b/data/base/images/intfac/image_origin_visual.png new file mode 100644 index 0000000..da8b11a Binary files /dev/null and b/data/base/images/intfac/image_origin_visual.png differ diff --git a/data/base/images/intfac/image_pbar_avail.png b/data/base/images/intfac/image_pbar_avail.png new file mode 100644 index 0000000..0fd3b77 Binary files /dev/null and b/data/base/images/intfac/image_pbar_avail.png differ diff --git a/data/base/images/intfac/image_pbar_bottom.png b/data/base/images/intfac/image_pbar_bottom.png new file mode 100644 index 0000000..e5939eb Binary files /dev/null and b/data/base/images/intfac/image_pbar_bottom.png differ diff --git a/data/base/images/intfac/image_pbar_empty.png b/data/base/images/intfac/image_pbar_empty.png new file mode 100644 index 0000000..4c53e06 Binary files /dev/null and b/data/base/images/intfac/image_pbar_empty.png differ diff --git a/data/base/images/intfac/image_pbar_required.png b/data/base/images/intfac/image_pbar_required.png new file mode 100644 index 0000000..e22bc52 Binary files /dev/null and b/data/base/images/intfac/image_pbar_required.png differ diff --git a/data/base/images/intfac/image_pbar_top.png b/data/base/images/intfac/image_pbar_top.png new file mode 100644 index 0000000..77ae5c2 Binary files /dev/null and b/data/base/images/intfac/image_pbar_top.png differ diff --git a/data/base/images/intfac/image_pbar_used.png b/data/base/images/intfac/image_pbar_used.png new file mode 100644 index 0000000..2763f57 Binary files /dev/null and b/data/base/images/intfac/image_pbar_used.png differ diff --git a/data/base/images/intfac/image_plascrete.png b/data/base/images/intfac/image_plascrete.png new file mode 100644 index 0000000..0429fd4 Binary files /dev/null and b/data/base/images/intfac/image_plascrete.png differ diff --git a/data/base/images/intfac/image_player_left_hi.png b/data/base/images/intfac/image_player_left_hi.png new file mode 100644 index 0000000..5f3ba8c Binary files /dev/null and b/data/base/images/intfac/image_player_left_hi.png differ diff --git a/data/base/images/intfac/image_player_left_lo.png b/data/base/images/intfac/image_player_left_lo.png new file mode 100644 index 0000000..161fb60 Binary files /dev/null and b/data/base/images/intfac/image_player_left_lo.png differ diff --git a/data/base/images/intfac/image_question_mark.png b/data/base/images/intfac/image_question_mark.png new file mode 100644 index 0000000..11b6cb8 Binary files /dev/null and b/data/base/images/intfac/image_question_mark.png differ diff --git a/data/base/images/intfac/image_rad_art1.png b/data/base/images/intfac/image_rad_art1.png new file mode 100644 index 0000000..5c6203a Binary files /dev/null and b/data/base/images/intfac/image_rad_art1.png differ diff --git a/data/base/images/intfac/image_rad_art2.png b/data/base/images/intfac/image_rad_art2.png new file mode 100644 index 0000000..3285f79 Binary files /dev/null and b/data/base/images/intfac/image_rad_art2.png differ diff --git a/data/base/images/intfac/image_rad_art3.png b/data/base/images/intfac/image_rad_art3.png new file mode 100644 index 0000000..fcf5170 Binary files /dev/null and b/data/base/images/intfac/image_rad_art3.png differ diff --git a/data/base/images/intfac/image_rad_artread.png b/data/base/images/intfac/image_rad_artread.png new file mode 100644 index 0000000..2343529 Binary files /dev/null and b/data/base/images/intfac/image_rad_artread.png differ diff --git a/data/base/images/intfac/image_rad_burnres1.png b/data/base/images/intfac/image_rad_burnres1.png new file mode 100644 index 0000000..f78c943 Binary files /dev/null and b/data/base/images/intfac/image_rad_burnres1.png differ diff --git a/data/base/images/intfac/image_rad_burnres2.png b/data/base/images/intfac/image_rad_burnres2.png new file mode 100644 index 0000000..71e9d61 Binary files /dev/null and b/data/base/images/intfac/image_rad_burnres2.png differ diff --git a/data/base/images/intfac/image_rad_burnres3.png b/data/base/images/intfac/image_rad_burnres3.png new file mode 100644 index 0000000..e83beb6 Binary files /dev/null and b/data/base/images/intfac/image_rad_burnres3.png differ diff --git a/data/base/images/intfac/image_rad_burnres4.png b/data/base/images/intfac/image_rad_burnres4.png new file mode 100644 index 0000000..65e3733 Binary files /dev/null and b/data/base/images/intfac/image_rad_burnres4.png differ diff --git a/data/base/images/intfac/image_rad_burnres5.png b/data/base/images/intfac/image_rad_burnres5.png new file mode 100644 index 0000000..09dcb48 Binary files /dev/null and b/data/base/images/intfac/image_rad_burnres5.png differ diff --git a/data/base/images/intfac/image_rad_burnres6.png b/data/base/images/intfac/image_rad_burnres6.png new file mode 100644 index 0000000..14098ce Binary files /dev/null and b/data/base/images/intfac/image_rad_burnres6.png differ diff --git a/data/base/images/intfac/image_rad_burnresread.png b/data/base/images/intfac/image_rad_burnresread.png new file mode 100644 index 0000000..1ed7d3a Binary files /dev/null and b/data/base/images/intfac/image_rad_burnresread.png differ diff --git a/data/base/images/intfac/image_rad_enm1.png b/data/base/images/intfac/image_rad_enm1.png new file mode 100644 index 0000000..9a35991 Binary files /dev/null and b/data/base/images/intfac/image_rad_enm1.png differ diff --git a/data/base/images/intfac/image_rad_enm2.png b/data/base/images/intfac/image_rad_enm2.png new file mode 100644 index 0000000..ee5b2ab Binary files /dev/null and b/data/base/images/intfac/image_rad_enm2.png differ diff --git a/data/base/images/intfac/image_rad_enm3.png b/data/base/images/intfac/image_rad_enm3.png new file mode 100644 index 0000000..0418f31 Binary files /dev/null and b/data/base/images/intfac/image_rad_enm3.png differ diff --git a/data/base/images/intfac/image_rad_enmread.png b/data/base/images/intfac/image_rad_enmread.png new file mode 100644 index 0000000..4311d3f Binary files /dev/null and b/data/base/images/intfac/image_rad_enmread.png differ diff --git a/data/base/images/intfac/image_rad_res1.png b/data/base/images/intfac/image_rad_res1.png new file mode 100644 index 0000000..fd1c00f Binary files /dev/null and b/data/base/images/intfac/image_rad_res1.png differ diff --git a/data/base/images/intfac/image_rad_res2.png b/data/base/images/intfac/image_rad_res2.png new file mode 100644 index 0000000..238791c Binary files /dev/null and b/data/base/images/intfac/image_rad_res2.png differ diff --git a/data/base/images/intfac/image_rad_res3.png b/data/base/images/intfac/image_rad_res3.png new file mode 100644 index 0000000..1a5f399 Binary files /dev/null and b/data/base/images/intfac/image_rad_res3.png differ diff --git a/data/base/images/intfac/image_rad_resread.png b/data/base/images/intfac/image_rad_resread.png new file mode 100644 index 0000000..b1362cc Binary files /dev/null and b/data/base/images/intfac/image_rad_resread.png differ diff --git a/data/base/images/intfac/image_res_computertech.png b/data/base/images/intfac/image_res_computertech.png new file mode 100644 index 0000000..45f5d52 Binary files /dev/null and b/data/base/images/intfac/image_res_computertech.png differ diff --git a/data/base/images/intfac/image_res_cyborgtech.png b/data/base/images/intfac/image_res_cyborgtech.png new file mode 100644 index 0000000..fd29351 Binary files /dev/null and b/data/base/images/intfac/image_res_cyborgtech.png differ diff --git a/data/base/images/intfac/image_res_defence.png b/data/base/images/intfac/image_res_defence.png new file mode 100644 index 0000000..5d88a39 Binary files /dev/null and b/data/base/images/intfac/image_res_defence.png differ diff --git a/data/base/images/intfac/image_res_droidtech.png b/data/base/images/intfac/image_res_droidtech.png new file mode 100644 index 0000000..8d6393f Binary files /dev/null and b/data/base/images/intfac/image_res_droidtech.png differ diff --git a/data/base/images/intfac/image_res_grpacc.png b/data/base/images/intfac/image_res_grpacc.png new file mode 100644 index 0000000..265c66b Binary files /dev/null and b/data/base/images/intfac/image_res_grpacc.png differ diff --git a/data/base/images/intfac/image_res_grpdam.png b/data/base/images/intfac/image_res_grpdam.png new file mode 100644 index 0000000..8ba5224 Binary files /dev/null and b/data/base/images/intfac/image_res_grpdam.png differ diff --git a/data/base/images/intfac/image_res_grprep.png b/data/base/images/intfac/image_res_grprep.png new file mode 100644 index 0000000..5b4cfa3 Binary files /dev/null and b/data/base/images/intfac/image_res_grprep.png differ diff --git a/data/base/images/intfac/image_res_grprof.png b/data/base/images/intfac/image_res_grprof.png new file mode 100644 index 0000000..0c5193f Binary files /dev/null and b/data/base/images/intfac/image_res_grprof.png differ diff --git a/data/base/images/intfac/image_res_grpupg.png b/data/base/images/intfac/image_res_grpupg.png new file mode 100644 index 0000000..8a1c44e Binary files /dev/null and b/data/base/images/intfac/image_res_grpupg.png differ diff --git a/data/base/images/intfac/image_res_major_electronic.png b/data/base/images/intfac/image_res_major_electronic.png new file mode 100644 index 0000000..452cabd Binary files /dev/null and b/data/base/images/intfac/image_res_major_electronic.png differ diff --git a/data/base/images/intfac/image_res_major_heavywep.png b/data/base/images/intfac/image_res_major_heavywep.png new file mode 100644 index 0000000..0837296 Binary files /dev/null and b/data/base/images/intfac/image_res_major_heavywep.png differ diff --git a/data/base/images/intfac/image_res_major_hover.png b/data/base/images/intfac/image_res_major_hover.png new file mode 100644 index 0000000..7bcf333 Binary files /dev/null and b/data/base/images/intfac/image_res_major_hover.png differ diff --git a/data/base/images/intfac/image_res_major_plascrete.png b/data/base/images/intfac/image_res_major_plascrete.png new file mode 100644 index 0000000..643d6bf Binary files /dev/null and b/data/base/images/intfac/image_res_major_plascrete.png differ diff --git a/data/base/images/intfac/image_res_major_rocket.png b/data/base/images/intfac/image_res_major_rocket.png new file mode 100644 index 0000000..e48dc6c Binary files /dev/null and b/data/base/images/intfac/image_res_major_rocket.png differ diff --git a/data/base/images/intfac/image_res_minor_autoweapons.png b/data/base/images/intfac/image_res_minor_autoweapons.png new file mode 100644 index 0000000..9bc136a Binary files /dev/null and b/data/base/images/intfac/image_res_minor_autoweapons.png differ diff --git a/data/base/images/intfac/image_res_minor_plassteel.png b/data/base/images/intfac/image_res_minor_plassteel.png new file mode 100644 index 0000000..50c56ba Binary files /dev/null and b/data/base/images/intfac/image_res_minor_plassteel.png differ diff --git a/data/base/images/intfac/image_res_minor_radar.png b/data/base/images/intfac/image_res_minor_radar.png new file mode 100644 index 0000000..98f1e36 Binary files /dev/null and b/data/base/images/intfac/image_res_minor_radar.png differ diff --git a/data/base/images/intfac/image_res_powertech.png b/data/base/images/intfac/image_res_powertech.png new file mode 100644 index 0000000..2210241 Binary files /dev/null and b/data/base/images/intfac/image_res_powertech.png differ diff --git a/data/base/images/intfac/image_res_questionmark.png b/data/base/images/intfac/image_res_questionmark.png new file mode 100644 index 0000000..87db1eb Binary files /dev/null and b/data/base/images/intfac/image_res_questionmark.png differ diff --git a/data/base/images/intfac/image_res_structuretech.png b/data/base/images/intfac/image_res_structuretech.png new file mode 100644 index 0000000..d494fdc Binary files /dev/null and b/data/base/images/intfac/image_res_structuretech.png differ diff --git a/data/base/images/intfac/image_res_systemtech.png b/data/base/images/intfac/image_res_systemtech.png new file mode 100644 index 0000000..5d31878 Binary files /dev/null and b/data/base/images/intfac/image_res_systemtech.png differ diff --git a/data/base/images/intfac/image_res_weapontech.png b/data/base/images/intfac/image_res_weapontech.png new file mode 100644 index 0000000..db6b581 Binary files /dev/null and b/data/base/images/intfac/image_res_weapontech.png differ diff --git a/data/base/images/intfac/image_research_down.png b/data/base/images/intfac/image_research_down.png new file mode 100644 index 0000000..62cd7b9 Binary files /dev/null and b/data/base/images/intfac/image_research_down.png differ diff --git a/data/base/images/intfac/image_research_up.png b/data/base/images/intfac/image_research_up.png new file mode 100644 index 0000000..df84e8e Binary files /dev/null and b/data/base/images/intfac/image_research_up.png differ diff --git a/data/base/images/intfac/image_reticule_butdown.png b/data/base/images/intfac/image_reticule_butdown.png new file mode 100644 index 0000000..9aeb68d Binary files /dev/null and b/data/base/images/intfac/image_reticule_butdown.png differ diff --git a/data/base/images/intfac/image_reticule_grey.png b/data/base/images/intfac/image_reticule_grey.png new file mode 100644 index 0000000..f59a5ff Binary files /dev/null and b/data/base/images/intfac/image_reticule_grey.png differ diff --git a/data/base/images/intfac/image_reticule_hilight.png b/data/base/images/intfac/image_reticule_hilight.png new file mode 100644 index 0000000..fedf567 Binary files /dev/null and b/data/base/images/intfac/image_reticule_hilight.png differ diff --git a/data/base/images/intfac/image_rgttab.png b/data/base/images/intfac/image_rgttab.png new file mode 100644 index 0000000..540a6cd Binary files /dev/null and b/data/base/images/intfac/image_rgttab.png differ diff --git a/data/base/images/intfac/image_rgttabd.png b/data/base/images/intfac/image_rgttabd.png new file mode 100644 index 0000000..64e8723 Binary files /dev/null and b/data/base/images/intfac/image_rgttabd.png differ diff --git a/data/base/images/intfac/image_rgttabh.png b/data/base/images/intfac/image_rgttabh.png new file mode 100644 index 0000000..e85795d Binary files /dev/null and b/data/base/images/intfac/image_rgttabh.png differ diff --git a/data/base/images/intfac/image_rocket.png b/data/base/images/intfac/image_rocket.png new file mode 100644 index 0000000..598db5b Binary files /dev/null and b/data/base/images/intfac/image_rocket.png differ diff --git a/data/base/images/intfac/image_sidetab.png b/data/base/images/intfac/image_sidetab.png new file mode 100644 index 0000000..bd7c03c Binary files /dev/null and b/data/base/images/intfac/image_sidetab.png differ diff --git a/data/base/images/intfac/image_sidetabdown.png b/data/base/images/intfac/image_sidetabdown.png new file mode 100644 index 0000000..118f5c3 Binary files /dev/null and b/data/base/images/intfac/image_sidetabdown.png differ diff --git a/data/base/images/intfac/image_sidetabhi.png b/data/base/images/intfac/image_sidetabhi.png new file mode 100644 index 0000000..640f03f Binary files /dev/null and b/data/base/images/intfac/image_sidetabhi.png differ diff --git a/data/base/images/intfac/image_sidetabsel.png b/data/base/images/intfac/image_sidetabsel.png new file mode 100644 index 0000000..118f5c3 Binary files /dev/null and b/data/base/images/intfac/image_sidetabsel.png differ diff --git a/data/base/images/intfac/image_slider_ai.png b/data/base/images/intfac/image_slider_ai.png new file mode 100644 index 0000000..4fe675e Binary files /dev/null and b/data/base/images/intfac/image_slider_ai.png differ diff --git a/data/base/images/intfac/image_slider_back.png b/data/base/images/intfac/image_slider_back.png new file mode 100644 index 0000000..3421dcf Binary files /dev/null and b/data/base/images/intfac/image_slider_back.png differ diff --git a/data/base/images/intfac/image_slider_big.png b/data/base/images/intfac/image_slider_big.png new file mode 100644 index 0000000..c80087d Binary files /dev/null and b/data/base/images/intfac/image_slider_big.png differ diff --git a/data/base/images/intfac/image_slider_bigbut.png b/data/base/images/intfac/image_slider_bigbut.png new file mode 100644 index 0000000..02d94e9 Binary files /dev/null and b/data/base/images/intfac/image_slider_bigbut.png differ diff --git a/data/base/images/intfac/image_slider_but.png b/data/base/images/intfac/image_slider_but.png new file mode 100644 index 0000000..239fbbd Binary files /dev/null and b/data/base/images/intfac/image_slider_but.png differ diff --git a/data/base/images/intfac/image_slider_infinity.png b/data/base/images/intfac/image_slider_infinity.png new file mode 100644 index 0000000..2133fe9 Binary files /dev/null and b/data/base/images/intfac/image_slider_infinity.png differ diff --git a/data/base/images/intfac/image_star.png b/data/base/images/intfac/image_star.png new file mode 100644 index 0000000..0bc5682 Binary files /dev/null and b/data/base/images/intfac/image_star.png differ diff --git a/data/base/images/intfac/image_tab1.png b/data/base/images/intfac/image_tab1.png new file mode 100644 index 0000000..dea8242 Binary files /dev/null and b/data/base/images/intfac/image_tab1.png differ diff --git a/data/base/images/intfac/image_tab1_sm.png b/data/base/images/intfac/image_tab1_sm.png new file mode 100644 index 0000000..3dbccd6 Binary files /dev/null and b/data/base/images/intfac/image_tab1_sm.png differ diff --git a/data/base/images/intfac/image_tab1down.png b/data/base/images/intfac/image_tab1down.png new file mode 100644 index 0000000..60f3522 Binary files /dev/null and b/data/base/images/intfac/image_tab1down.png differ diff --git a/data/base/images/intfac/image_tab1down_sm.png b/data/base/images/intfac/image_tab1down_sm.png new file mode 100644 index 0000000..3689732 Binary files /dev/null and b/data/base/images/intfac/image_tab1down_sm.png differ diff --git a/data/base/images/intfac/image_tab1selected_sm.png b/data/base/images/intfac/image_tab1selected_sm.png new file mode 100644 index 0000000..3689732 Binary files /dev/null and b/data/base/images/intfac/image_tab1selected_sm.png differ diff --git a/data/base/images/intfac/image_tab2.png b/data/base/images/intfac/image_tab2.png new file mode 100644 index 0000000..dea8242 Binary files /dev/null and b/data/base/images/intfac/image_tab2.png differ diff --git a/data/base/images/intfac/image_tab2down.png b/data/base/images/intfac/image_tab2down.png new file mode 100644 index 0000000..60f3522 Binary files /dev/null and b/data/base/images/intfac/image_tab2down.png differ diff --git a/data/base/images/intfac/image_tab3.png b/data/base/images/intfac/image_tab3.png new file mode 100644 index 0000000..dea8242 Binary files /dev/null and b/data/base/images/intfac/image_tab3.png differ diff --git a/data/base/images/intfac/image_tab3down.png b/data/base/images/intfac/image_tab3down.png new file mode 100644 index 0000000..60f3522 Binary files /dev/null and b/data/base/images/intfac/image_tab3down.png differ diff --git a/data/base/images/intfac/image_tab4.png b/data/base/images/intfac/image_tab4.png new file mode 100644 index 0000000..dea8242 Binary files /dev/null and b/data/base/images/intfac/image_tab4.png differ diff --git a/data/base/images/intfac/image_tab4down.png b/data/base/images/intfac/image_tab4down.png new file mode 100644 index 0000000..60f3522 Binary files /dev/null and b/data/base/images/intfac/image_tab4down.png differ diff --git a/data/base/images/intfac/image_tabhilight.png b/data/base/images/intfac/image_tabhilight.png new file mode 100644 index 0000000..e60126d Binary files /dev/null and b/data/base/images/intfac/image_tabhilight.png differ diff --git a/data/base/images/intfac/image_tabhilight_sm.png b/data/base/images/intfac/image_tabhilight_sm.png new file mode 100644 index 0000000..a72cdd9 Binary files /dev/null and b/data/base/images/intfac/image_tabhilight_sm.png differ diff --git a/data/base/images/intfac/image_tabselected.png b/data/base/images/intfac/image_tabselected.png new file mode 100644 index 0000000..60f3522 Binary files /dev/null and b/data/base/images/intfac/image_tabselected.png differ diff --git a/data/base/images/intfac/image_target1.png b/data/base/images/intfac/image_target1.png new file mode 100644 index 0000000..c02020f Binary files /dev/null and b/data/base/images/intfac/image_target1.png differ diff --git a/data/base/images/intfac/image_target2.png b/data/base/images/intfac/image_target2.png new file mode 100644 index 0000000..0a96ecc Binary files /dev/null and b/data/base/images/intfac/image_target2.png differ diff --git a/data/base/images/intfac/image_target3.png b/data/base/images/intfac/image_target3.png new file mode 100644 index 0000000..e5f37b7 Binary files /dev/null and b/data/base/images/intfac/image_target3.png differ diff --git a/data/base/images/intfac/image_target4.png b/data/base/images/intfac/image_target4.png new file mode 100644 index 0000000..0a4d39b Binary files /dev/null and b/data/base/images/intfac/image_target4.png differ diff --git a/data/base/images/intfac/image_target5.png b/data/base/images/intfac/image_target5.png new file mode 100644 index 0000000..1a60d67 Binary files /dev/null and b/data/base/images/intfac/image_target5.png differ diff --git a/data/base/images/intfac/image_tracks.png b/data/base/images/intfac/image_tracks.png new file mode 100644 index 0000000..6676ce4 Binary files /dev/null and b/data/base/images/intfac/image_tracks.png differ diff --git a/data/base/images/intfac/image_transeta_down.png b/data/base/images/intfac/image_transeta_down.png new file mode 100644 index 0000000..1eef8c5 Binary files /dev/null and b/data/base/images/intfac/image_transeta_down.png differ diff --git a/data/base/images/intfac/image_transeta_up.png b/data/base/images/intfac/image_transeta_up.png new file mode 100644 index 0000000..55c0a5e Binary files /dev/null and b/data/base/images/intfac/image_transeta_up.png differ diff --git a/data/base/images/intfac/image_vdp_down.png b/data/base/images/intfac/image_vdp_down.png new file mode 100644 index 0000000..f5b6677 Binary files /dev/null and b/data/base/images/intfac/image_vdp_down.png differ diff --git a/data/base/images/intfac/image_vdp_hi.png b/data/base/images/intfac/image_vdp_hi.png new file mode 100644 index 0000000..f093bbc Binary files /dev/null and b/data/base/images/intfac/image_vdp_hi.png differ diff --git a/data/base/images/intfac/image_vdp_up.png b/data/base/images/intfac/image_vdp_up.png new file mode 100644 index 0000000..4e87be7 Binary files /dev/null and b/data/base/images/intfac/image_vdp_up.png differ diff --git a/data/base/images/intfac/image_waiting_hi.png b/data/base/images/intfac/image_waiting_hi.png new file mode 100644 index 0000000..c4d208b Binary files /dev/null and b/data/base/images/intfac/image_waiting_hi.png differ diff --git a/data/base/images/intfac/image_waiting_lo.png b/data/base/images/intfac/image_waiting_lo.png new file mode 100644 index 0000000..3be54c2 Binary files /dev/null and b/data/base/images/intfac/image_waiting_lo.png differ diff --git a/data/base/images/intfac/radar_north.png b/data/base/images/intfac/radar_north.png new file mode 100644 index 0000000..7996efe Binary files /dev/null and b/data/base/images/intfac/radar_north.png differ diff --git a/data/base/images/intfac0.png b/data/base/images/intfac0.png deleted file mode 100644 index 39479c3..0000000 Binary files a/data/base/images/intfac0.png and /dev/null differ diff --git a/data/base/images/intfac1.png b/data/base/images/intfac1.png deleted file mode 100644 index a0e1e86..0000000 Binary files a/data/base/images/intfac1.png and /dev/null differ diff --git a/data/base/images/intfac2.png b/data/base/images/intfac2.png deleted file mode 100644 index 1104d24..0000000 Binary files a/data/base/images/intfac2.png and /dev/null differ diff --git a/data/base/images/intfac3.png b/data/base/images/intfac3.png deleted file mode 100644 index 83bb582..0000000 Binary files a/data/base/images/intfac3.png and /dev/null differ diff --git a/data/base/images/intfac4.png b/data/base/images/intfac4.png deleted file mode 100644 index 75c49ce..0000000 Binary files a/data/base/images/intfac4.png and /dev/null differ diff --git a/data/base/images/intfac5.png b/data/base/images/intfac5.png deleted file mode 100644 index a75bbdc..0000000 Binary files a/data/base/images/intfac5.png and /dev/null differ diff --git a/data/base/tileset/rockiedecals.txt b/data/base/tileset/rockiedecals.txt index d2dec79..c81ffcd 100644 diff --git a/data/base/tileset/rockieground.txt b/data/base/tileset/rockieground.txt index d834bde..282524a 100644 diff --git a/data/base/tileset/urbanground.txt b/data/base/tileset/urbanground.txt index 029b373..2c33fd4 100644 diff --git a/data/base/wrf/frontend.wrf b/data/base/wrf/frontend.wrf index 4070b98..66dd3e8 100644 diff --git a/data/base/wrf/vidmem.wrf b/data/base/wrf/vidmem.wrf index 0e80935..75bf110 100644 diff --git a/data/base/wrf/vidmem2.wrf b/data/base/wrf/vidmem2.wrf index da22839..373fd71 100644 diff --git a/data/base/wrf/vidmem3.wrf b/data/base/wrf/vidmem3.wrf index 9b274c2..fddeb48 100644 diff --git a/data/mp/multiplay/skirmish/nullbot-generic.js.inc b/data/mp/multiplay/skirmish/nullbot-generic.js.inc new file mode 100644 index 0000000..a9a1a16 diff --git a/data/mp/multiplay/skirmish/nullbot-header.js.inc b/data/mp/multiplay/skirmish/nullbot-header.js.inc new file mode 100644 index 0000000..06d12bc diff --git a/data/mp/multiplay/skirmish/nullbot-main.js.inc b/data/mp/multiplay/skirmish/nullbot-main.js.inc new file mode 100644 index 0000000..fd79f15 diff --git a/data/mp/multiplay/skirmish/nullbot.ai b/data/mp/multiplay/skirmish/nullbot.ai new file mode 100644 index 0000000..67827e4 diff --git a/data/mp/multiplay/skirmish/nullbot.js b/data/mp/multiplay/skirmish/nullbot.js new file mode 100644 index 0000000..b6f7697 diff --git a/data/mp/wrf/vidmem.wrf b/data/mp/wrf/vidmem.wrf index e332a5d..65ea216 100644 diff --git a/data/mp/wrf/vidmem2.wrf b/data/mp/wrf/vidmem2.wrf index 85fc294..584719b 100644 diff --git a/data/mp/wrf/vidmem3.wrf b/data/mp/wrf/vidmem3.wrf index cdc5404..0cbd68b 100644 diff --git a/icons/warzone2100.desktop b/icons/warzone2100.desktop index 7ad3312..5cb8008 100644 --- a/icons/warzone2100.desktop +++ b/icons/warzone2100.desktop @@ -36,3 +36,9 @@ Comment[ru] = Постядерная стратегия в реальном вр Name[fr] = Warzone 2100 GenericName[fr] = Jeu de stratégie Comment[fr] = Jeu de stratégie en temps réel dans un contexte post-nucléaire. +Name[nl] = Warzone 2100 +Name[ca_ES] = Warzone 2100 +GenericName[nl] = Strategie Spel +GenericName[ca_ES] = Partida d'estratègia +Comment[nl] = Nucleaire naoorlogse strategie +Comment[ca_ES] = Estratègia en temps real postnuclear diff --git a/lib/exceptionhandler/exceptionhandler.cpp b/lib/exceptionhandler/exceptionhandler.cpp index cee9cb7..88ab9be 100644 --- a/lib/exceptionhandler/exceptionhandler.cpp +++ b/lib/exceptionhandler/exceptionhandler.cpp @@ -494,9 +494,9 @@ static bool gdbExtendedBacktrace(int const dumpFile) * additions to the frame-pointer register's content. */ void const * const frame = -#if defined(SA_SIGINFO) && __WORDSIZE == 64 +#if defined(SA_SIGINFO) && defined(REG_RBP) sigcontext ? (void*)(sigcontext->uc_mcontext.gregs[REG_RBP] + sizeof(greg_t) + sizeof(void (*)(void))) : NULL; -#elif defined(SA_SIGINFO) && __WORDSIZE == 32 +#elif defined(SA_SIGINFO) && defined(REG_EBP) sigcontext ? (void*)(sigcontext->uc_mcontext.gregs[REG_EBP] + sizeof(greg_t) + sizeof(void (*)(void))) : NULL; #else NULL; @@ -506,9 +506,9 @@ static bool gdbExtendedBacktrace(int const dumpFile) * Faulting instruction. */ void (*instruction)(void) = -#if defined(SA_SIGINFO) && __WORDSIZE == 64 +#if defined(SA_SIGINFO) && defined(REG_RIP) sigcontext ? (void (*)(void))sigcontext->uc_mcontext.gregs[REG_RIP] : NULL; -#elif defined(SA_SIGINFO) && __WORDSIZE == 32 +#elif defined(SA_SIGINFO) && defined(REG_EIP) sigcontext ? (void (*)(void))sigcontext->uc_mcontext.gregs[REG_EIP] : NULL; #else NULL; diff --git a/lib/framework/crc.cpp b/lib/framework/crc.cpp index ed70c14..f2bb3c1 100644 --- a/lib/framework/crc.cpp +++ b/lib/framework/crc.cpp @@ -190,3 +190,31 @@ std::string Sha256::toString() const } return str; } + +void Sha256::fromString(std::string const &s) +{ + setZero(); + unsigned nChars = std::min<unsigned>(Bytes*2, s.size()); + for (unsigned n = 0; n < nChars; ++n) + { + unsigned h; + unsigned c = s[n]; + if (c >= '0' && c <= '9') + { + h = c - '0'; + } + else if (c >= 'a' && c <= 'f') + { + h = c - 'a' + 10; + } + else if (c >= 'A' && c <= 'F') + { + h = c - 'A' + 10; + } + else + { + break; + } + bytes[n/2] |= h << (n%2? 0 : 4); + } +} diff --git a/lib/framework/crc.h b/lib/framework/crc.h index 4e74e67..73da693 100644 --- a/lib/framework/crc.h +++ b/lib/framework/crc.h @@ -38,6 +38,7 @@ struct Sha256 bool isZero() const; void setZero(); std::string toString() const; + void fromString(std::string const &s); uint8_t bytes[Bytes]; }; diff --git a/lib/framework/debug.cpp b/lib/framework/debug.cpp index 62cb286..77b8074 100644 --- a/lib/framework/debug.cpp +++ b/lib/framework/debug.cpp @@ -204,7 +204,7 @@ bool debug_callback_file_init(void **data) } setbuf(logfile, NULL); - fprintf(logfile, "\n--- Starting log ---\n"); + fprintf(logfile, "\n--- Starting log [%s]---\n", WZDebugfilename); *data = logfile; return true; @@ -316,7 +316,7 @@ void debug_register_callback( debug_callback_fn callback, debug_callback_init in if (tmpCallback->init && !tmpCallback->init(&tmpCallback->data)) { - debug(LOG_ERROR, "Failed to initialise debug callback"); + fprintf(stderr, "Failed to initialise debug callback, debugfile set to [%s]!\n", WZDebugfilename); free(tmpCallback); return; } diff --git a/lib/framework/frameresource.cpp b/lib/framework/frameresource.cpp index 3f3e66c..12dc70d 100644 --- a/lib/framework/frameresource.cpp +++ b/lib/framework/frameresource.cpp @@ -419,6 +419,7 @@ bool resLoadFile(const char *pType, const char *pFile) { if (psT->HashedType == HashedType) { + ASSERT(strcmp(psT->aType, pType) == 0, "Hash collision \"%s\" vs \"%s\"", psT->aType, pType); break; } } @@ -435,7 +436,8 @@ bool resLoadFile(const char *pType, const char *pFile) { if(psRes->HashedID == HashedName) { - debug(LOG_WZ, "resLoadFile: Duplicate file name: %s (hash %x) for type %s", + ASSERT(strcasecmp(psRes->aID, pFile) == 0, "Hash collision \"%s\" vs \"%s\"", psRes->aID, pFile); + debug(LOG_WZ, "Duplicate file name: %s (hash %x) for type %s", pFile, HashedName, psT->aType); // assume that they are actually both the same and silently fail // lovely little hack to allow some files to be loaded from disk (believe it or not!). diff --git a/lib/framework/i18n.cpp b/lib/framework/i18n.cpp index 7dcb72b..5a095ef 100644 --- a/lib/framework/i18n.cpp +++ b/lib/framework/i18n.cpp @@ -92,15 +92,15 @@ static const struct { "", N_("System locale"), LANG_NEUTRAL, SUBLANG_DEFAULT }, # if defined(ENABLE_NLS) { "ca", LANG_NAME_CATALAN, LANG_CATALAN, SUBLANG_DEFAULT }, - { "cs", LANG_NAME_CZECH, LANG_CZECH, SUBLANG_DEFAULT }, - { "da", LANG_NAME_DANISH, LANG_DANISH, SUBLANG_DEFAULT }, +// { "cs", LANG_NAME_CZECH, LANG_CZECH, SUBLANG_DEFAULT }, +// { "da", LANG_NAME_DANISH, LANG_DANISH, SUBLANG_DEFAULT }, { "de", LANG_NAME_GERMAN, LANG_GERMAN, SUBLANG_GERMAN }, { "en", LANG_NAME_ENGLISH, LANG_ENGLISH, SUBLANG_DEFAULT }, { "en_GB", LANG_NAME_ENGLISH_UK, LANG_ENGLISH, SUBLANG_ENGLISH_UK }, { "es", LANG_NAME_SPANISH, LANG_SPANISH, SUBLANG_SPANISH }, { "et_EE", LANG_NAME_ESTONIAN, LANG_ESTONIAN, SUBLANG_DEFAULT }, // { "eu", LANG_NAME_BASQUE, LANG_BASQUE, SUBLANG_DEFAULT }, - { "fi", LANG_NAME_FINNISH, LANG_FINNISH, SUBLANG_DEFAULT }, +// { "fi", LANG_NAME_FINNISH, LANG_FINNISH, SUBLANG_DEFAULT }, { "fr", LANG_NAME_FRENCH, LANG_FRENCH, SUBLANG_FRENCH }, /* Our Frisian translation is the "West Frisian" variation of it. This * variation is mostly spoken in the Dutch province Friesland (Fryslân @@ -109,26 +109,26 @@ static const struct * FIXME: We should really use a sub-language code for this. E.g. * fy_XX. */ - { "fy", LANG_NAME_FRISIAN_NETHERLANDS, LANG_FRISIAN, SUBLANG_FRISIAN_NETHERLANDS }, - { "ga", LANG_NAME_IRISH, LANG_IRISH, SUBLANG_IRISH_IRELAND }, - { "hr", LANG_NAME_CROATIAN, LANG_CROATIAN, SUBLANG_DEFAULT }, +// { "fy", LANG_NAME_FRISIAN_NETHERLANDS, LANG_FRISIAN, SUBLANG_FRISIAN_NETHERLANDS }, +// { "ga", LANG_NAME_IRISH, LANG_IRISH, SUBLANG_IRISH_IRELAND }, +// { "hr", LANG_NAME_CROATIAN, LANG_CROATIAN, SUBLANG_DEFAULT }, { "hu", LANG_NAME_HUNGARIAN, LANG_HUNGARIAN, SUBLANG_DEFAULT }, { "it", LANG_NAME_ITALIAN, LANG_ITALIAN, SUBLANG_ITALIAN }, { "ko_KR", LANG_NAME_KOREAN, LANG_KOREAN, SUBLANG_DEFAULT }, // { "la", LANG_NAME_LATIN, LANG_LATIN, SUBLANG_DEFAULT }, - { "lt", LANG_NAME_LITHUANIAN, LANG_LITHUANIAN, SUBLANG_DEFAULT }, +// { "lt", LANG_NAME_LITHUANIAN, LANG_LITHUANIAN, SUBLANG_DEFAULT }, // { "lv", LANG_NAME_LATVIAN, LANG_LATVIAN, SUBLANG_DEFAULT }, // MSDN uses "no"... - { "nb", LANG_NAME_NORWEGIAN, LANG_NORWEGIAN, SUBLANG_DEFAULT }, +// { "nb", LANG_NAME_NORWEGIAN, LANG_NORWEGIAN, SUBLANG_DEFAULT }, // { "nn", LANG_NAME_NORWEGIAN_NYNORSK, LANG_NORWEGIAN, SUBLANG_NORWEGIAN_NYNORSK }, { "nl", LANG_NAME_DUTCH, LANG_DUTCH, SUBLANG_DUTCH }, { "pl", LANG_NAME_POLISH, LANG_POLISH, SUBLANG_DEFAULT }, { "pt_BR", LANG_NAME_PORTUGUESE_BRAZILIAN, LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN }, { "pt", LANG_NAME_PORTUGUESE, LANG_PORTUGUESE, SUBLANG_DEFAULT }, - { "ro", LANG_NAME_ROMANIAN, LANG_ROMANIAN, SUBLANG_DEFAULT }, +// { "ro", LANG_NAME_ROMANIAN, LANG_ROMANIAN, SUBLANG_DEFAULT }, { "ru", LANG_NAME_RUSSIAN, LANG_RUSSIAN, SUBLANG_DEFAULT }, - { "sk", LANG_NAME_SLOVAK, LANG_SLOVAK, SUBLANG_DEFAULT }, - { "sl", LANG_NAME_SLOVENIAN, LANG_SLOVENIAN, SUBLANG_DEFAULT }, +// { "sk", LANG_NAME_SLOVAK, LANG_SLOVAK, SUBLANG_DEFAULT }, +// { "sl", LANG_NAME_SLOVENIAN, LANG_SLOVENIAN, SUBLANG_DEFAULT }, #if (WINVER >= 0x0600) // { "sv_SE", LANG_NAME_SWEDISH_SWEDEN, LANG_SWEDISH, SUBLANG_SWEDISH_SWEDEN }, #else @@ -138,8 +138,8 @@ static const struct { "tr", LANG_NAME_TURKISH, LANG_TURKISH, SUBLANG_DEFAULT }, // { "uz", LANG_NAME_UZBEK_CYRILLIC, LANG_UZBEK, SUBLANG_UZBEK_CYRILLIC }, { "uk_UA", LANG_NAME_UKRAINIAN, LANG_UKRAINIAN, SUBLANG_DEFAULT }, - { "zh_CN", LANG_NAME_CHINESE_SIMPLIFIED, LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED }, - { "zh_TW", LANG_NAME_CHINESE_TRADITIONAL, LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL }, +// { "zh_CN", LANG_NAME_CHINESE_SIMPLIFIED, LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED }, +// { "zh_TW", LANG_NAME_CHINESE_TRADITIONAL, LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL }, # endif }; #else @@ -153,46 +153,46 @@ static const struct { "", N_("System locale"), "", "" }, # if defined(ENABLE_NLS) { "ca_ES", LANG_NAME_CATALAN, "ca_ES.UTF-8", "ca" }, - { "cs_CZ", LANG_NAME_CZECH, "cs_CZ.UTF-8", "cs" }, - { "da", LANG_NAME_DANISH, "da_DK.UTF-8", "da_DK" }, +// { "cs_CZ", LANG_NAME_CZECH, "cs_CZ.UTF-8", "cs" }, +// { "da", LANG_NAME_DANISH, "da_DK.UTF-8", "da_DK" }, { "de", LANG_NAME_GERMAN, "de_DE.UTF-8", "de_DE" }, { "en", LANG_NAME_ENGLISH, "en_US.UTF-8", "en_US" }, { "en_GB", LANG_NAME_ENGLISH_UK, "en_GB.UTF-8", "en_GB" }, { "es", LANG_NAME_SPANISH, "es_ES.UTF-8", "es_ES" }, { "et_EE", LANG_NAME_ESTONIAN, "et_EE.UTF-8", "et" }, // { "eu_ES", LANG_NAME_BASQUE, "eu_ES.UTF-8", "eu" }, - { "fi", LANG_NAME_FINNISH, "fi_FI.UTF-8", "fi_FI" }, +// { "fi", LANG_NAME_FINNISH, "fi_FI.UTF-8", "fi_FI" }, { "fr", LANG_NAME_FRENCH, "fr_FR.UTF-8", "fr_FR" }, /* Our Frisian translation is the "West Frisian" variation of it. This * variation is mostly spoken in the Dutch province Friesland (Fryslân * in Frisian) and has ISO 639-3 code "fry". */ - { "fy_NL", LANG_NAME_FRISIAN_NETHERLANDS, "fy_NL.UTF-8", "fy" }, - { "ga_IE", LANG_NAME_IRISH, "ga_IE.UTF-8", "ga" }, - { "hr", LANG_NAME_CROATIAN, "hr_HR.UTF-8", "hr_HR" }, +// { "fy_NL", LANG_NAME_FRISIAN_NETHERLANDS, "fy_NL.UTF-8", "fy" }, +// { "ga_IE", LANG_NAME_IRISH, "ga_IE.UTF-8", "ga" }, +// { "hr", LANG_NAME_CROATIAN, "hr_HR.UTF-8", "hr_HR" }, { "hu", LANG_NAME_HUNGARIAN, "hu_HU.UTF-8", "hu_HU" }, { "it", LANG_NAME_ITALIAN, "it_IT.UTF-8", "it_IT" }, { "ko_KR", LANG_NAME_KOREAN, "ko_KR.UTF-8", "ko" }, - { "la", LANG_NAME_LATIN, "la.UTF-8", "la" }, - { "lt", LANG_NAME_LITHUANIAN, "lt_LT.UTF-8", "lt_LT" }, +// { "la", LANG_NAME_LATIN, "la.UTF-8", "la" }, +// { "lt", LANG_NAME_LITHUANIAN, "lt_LT.UTF-8", "lt_LT" }, // { "lv", LANG_NAME_LATVIAN, "lv_LV.UTF-8", "lv_LV" }, - { "nb_NO", LANG_NAME_NORWEGIAN, "nb_NO.UTF-8", "nb" }, +// { "nb_NO", LANG_NAME_NORWEGIAN, "nb_NO.UTF-8", "nb" }, // { "nn_NO", LANG_NAME_NORWEGIAN_NYNORSK, "nn_NO.UTF-8", "nn" }, { "nl", LANG_NAME_DUTCH, "nl_NL.UTF-8", "nl_NL" }, { "pl", LANG_NAME_POLISH, "pl_PL.UTF-8", "pl_PL" }, { "pt_BR", LANG_NAME_PORTUGUESE_BRAZILIAN, "pt_BR.UTF-8", "pt_BR" }, { "pt", LANG_NAME_PORTUGUESE, "pt_PT.UTF-8", "pt_PT" }, - { "ro", LANG_NAME_ROMANIAN, "ro_RO.UTF-8", "ro_RO" }, +// { "ro", LANG_NAME_ROMANIAN, "ro_RO.UTF-8", "ro_RO" }, { "ru", LANG_NAME_RUSSIAN, "ru_RU.UTF-8", "ru_RU" }, - { "sk", LANG_NAME_SLOVAK, "sk_SK.UTF-8", "sk_SK" }, - { "sl_SI", LANG_NAME_SLOVENIAN, "sl_SI.UTF-8", "sl" }, +// { "sk", LANG_NAME_SLOVAK, "sk_SK.UTF-8", "sk_SK" }, +// { "sl_SI", LANG_NAME_SLOVENIAN, "sl_SI.UTF-8", "sl" }, // { "sv_SE", LANG_NAME_SWEDISH_SWEDEN, "sv_SE.UTF-8", "sv" }, // { "sv", LANG_NAME_SWEDISH, "sv.UTF-8", "sv" }, { "tr", LANG_NAME_TURKISH, "tr_TR.UTF-8", "tr_TR" }, // { "uz", LANG_NAME_UZBEK_CYRILLIC, "uz_UZ.UTF-8", "uz_UZ" }, { "uk_UA", LANG_NAME_UKRAINIAN, "uk_UA.UTF-8", "uk" }, - { "zh_CN", LANG_NAME_CHINESE_SIMPLIFIED, "zh_CN.UTF-8", "zh_CN" }, - { "zh_TW", LANG_NAME_CHINESE_TRADITIONAL, "zh_TW.UTF-8", "zh_TW" }, +// { "zh_CN", LANG_NAME_CHINESE_SIMPLIFIED, "zh_CN.UTF-8", "zh_CN" }, +// { "zh_TW", LANG_NAME_CHINESE_TRADITIONAL, "zh_TW.UTF-8", "zh_TW" }, # endif }; #endif diff --git a/lib/framework/treap.cpp b/lib/framework/treap.cpp index 80ac10a..51ff9712 100644 --- a/lib/framework/treap.cpp +++ b/lib/framework/treap.cpp @@ -222,7 +222,7 @@ static const char* treapFindKeyRec(TREAP_NODE const * const psNode, const char * return key; } - return treapFindKeyRec(psNode->psLeft, string); + return treapFindKeyRec(psNode->psRight, string); } const char* treapFindKey(TREAP_NODE** psTreap, const char* string) diff --git a/lib/ivis_opengl/bitimage.cpp b/lib/ivis_opengl/bitimage.cpp index fb7383f..1a3faa9 100644 --- a/lib/ivis_opengl/bitimage.cpp +++ b/lib/ivis_opengl/bitimage.cpp @@ -25,96 +25,237 @@ #include "bitimage.h" #include "tex.h" +#include <set> +#include <algorithm> -static unsigned short LoadTextureFile(const char *FileName) + +struct ImageMergeRectangle +{ + bool operator <(ImageMergeRectangle const &b) const + { + if (std::max(siz.x, siz.y) != std::max(b.siz.x, b.siz.y)) return std::max(siz.x, siz.y) < std::max(b.siz.x, b.siz.y); + if (std::min(siz.x, siz.y) != std::min(b.siz.x, b.siz.y)) return std::min(siz.x, siz.y) < std::min(b.siz.x, b.siz.y); + return siz.x < b.siz.x; + } + + int index; // Index in ImageDefs array. + int page; // Texture page index. + Vector2i loc, siz; + iV_Image *data; +}; + +struct ImageMerge { - iV_Image *pSprite; - unsigned int i; + static const int pageSize = 256; - ASSERT_OR_RETURN( 0, resPresent("IMGPAGE", FileName), "Texture file \"%s\" not preloaded.", FileName); + void arrange(); - pSprite = (iV_Image*)resGetData("IMGPAGE", FileName); - debug(LOG_TEXTURE, "Load texture from resource cache: %s (%d, %d)", - FileName, pSprite->width, pSprite->height); + std::vector<ImageMergeRectangle> images; + std::vector<int> pages; // List of page sizes, normally all pageSize, unless an image is too large for a normal page. +}; - /* Have we already uploaded this one? */ - for (i = 0; i < _TEX_INDEX; ++i) +inline void ImageMerge::arrange() +{ + std::multiset<ImageMergeRectangle> freeSpace; + pages.clear(); + + std::sort(images.begin(), images.end()); + + std::vector<ImageMergeRectangle>::iterator r = images.end(); + while (r != images.begin()) { - if (strcasecmp(FileName, _TEX_PAGE[i].name) == 0) + --r; + + std::multiset<ImageMergeRectangle>::iterator f = freeSpace.lower_bound(*r); // Find smallest free rectangle which is large enough. + while (f != freeSpace.end() && (f->siz.x < r->siz.x || f->siz.y < r->siz.y)) + { + ++f; // Rectangle has wrong shape. + } + if (f == freeSpace.end()) { - debug(LOG_TEXTURE, "LoadTextureFile: already uploaded"); - return _TEX_PAGE[i].id; + // No free space, make new page. + int s = pageSize; + while (s < (r->siz.x | r->siz.y)) + { + s *= 2; + } + ImageMergeRectangle newPage; + newPage.page = pages.size(); + newPage.loc = Vector2i(0, 0); + newPage.siz = Vector2i(s, s); + pages.push_back(s); + f = freeSpace.insert(newPage); } + r->page = f->page; + r->loc = f->loc; + ImageMergeRectangle spRight; + ImageMergeRectangle spDown; + spRight.page = f->page; + spDown.page = f->page; + spRight.loc = f->loc + Vector2i(r->siz.x, 0); + spDown.loc = f->loc + Vector2i(0, r->siz.y); + spRight.siz = Vector2i(f->siz.x - r->siz.x, r->siz.y); + spDown.siz = Vector2i(r->siz.x, f->siz.y - r->siz.y); + if (spRight.siz.x <= spDown.siz.y) + { + // Split horizontally. + spDown.siz.x = f->siz.x; + } + else + { + // Split vertically. + spRight.siz.y = f->siz.y; + } + if (spRight.siz.x > 0 && spRight.siz.y > 0) + { + freeSpace.insert(spRight); + } + if (spDown.siz.x > 0 && spDown.siz.y > 0) + { + freeSpace.insert(spDown); + } + freeSpace.erase(f); } - - debug(LOG_TEXTURE, "LoadTextureFile: had to upload texture!"); - return pie_AddTexPage(pSprite, FileName, 0, 0, true); } IMAGEFILE *iV_LoadImageFile(const char *fileName) { - char *pFileData, *ptr, *dot; - unsigned int pFileSize, numImages = 0, i, tPages = 0; - IMAGEFILE *ImageFile; - char texFileName[PATH_MAX]; + // Find the directory of images. + std::string imageDir = fileName; + if (imageDir.find_last_of('.') != std::string::npos) + { + imageDir.erase(imageDir.find_last_of('.')); + } + imageDir += '/'; + // Load the image list file. + char *pFileData; + unsigned pFileSize; if (!loadFile(fileName, &pFileData, &pFileSize)) { debug(LOG_ERROR, "iV_LoadImageFile: failed to open %s", fileName); return NULL; } - ptr = pFileData; + + char *ptr = pFileData; // count lines, which is identical to number of images + int numImages = 0; while (ptr < pFileData + pFileSize && *ptr != '\0') { - numImages += (*ptr == '\n') ? 1 : 0; - ptr++; + numImages += *ptr == '\n'; + ++ptr; } - ImageFile = (IMAGEFILE *)malloc(sizeof(IMAGEFILE) + sizeof(IMAGEDEF) * numImages); - ImageFile->ImageDefs = (IMAGEDEF*)(ImageFile + 1); // we allocated extra space for it + IMAGEFILE *imageFile = new IMAGEFILE; + imageFile->imageDefs.resize(numImages); + ImageMerge pageLayout; + pageLayout.images.resize(numImages); ptr = pFileData; numImages = 0; while (ptr < pFileData + pFileSize) { int temp, retval; - IMAGEDEF *ImageDef = &ImageFile->ImageDefs[numImages]; + ImageDef *ImageDef = &imageFile->imageDefs[numImages]; - retval = sscanf(ptr, "%u,%u,%u,%u,%u,%d,%d%n", &ImageDef->TPageID, &ImageDef->Tu, &ImageDef->Tv, &ImageDef->Width, - &ImageDef->Height, &ImageDef->XOffset, &ImageDef->YOffset, &temp); - if (retval != 7) + char tmpName[256]; + retval = sscanf(ptr, "%d,%d,%255[^\r\n\",]%n", &ImageDef->XOffset, &ImageDef->YOffset, tmpName, &temp); + if (retval != 3) { - break; + debug(LOG_ERROR, "Bad line in \"%s\".", fileName); + return NULL; } - ptr += temp; - numImages++; - // Find number of texture pages to load (no gaps allowed in number series, eg use intfac0, intfac1, etc.!) - if (ImageDef->TPageID > tPages) + std::string spriteName = imageDir + tmpName; + + ImageMergeRectangle *imageRect = &pageLayout.images[numImages]; + imageRect->index = numImages; + imageRect->data = new iV_Image; + if (!iV_loadImage_PNG(spriteName.c_str(), imageRect->data)) { - tPages = ImageDef->TPageID; + debug(LOG_ERROR, "Failed to find image \"%s\" listed in \"%s\".", spriteName.c_str(), fileName); + return NULL; } + imageRect->siz = Vector2i(imageRect->data->width, imageRect->data->height); + numImages++; + ptr += temp; while (ptr < pFileData + pFileSize && *ptr++ != '\n') {} // skip rest of line } + free(pFileData); + + pageLayout.arrange(); // Arrange all the images onto texture pages (attempt to do so with as few pages as possible). + imageFile->pages.resize(pageLayout.pages.size()); + + std::vector<iV_Image> ivImages(pageLayout.pages.size()); + + for (unsigned p = 0; p < pageLayout.pages.size(); ++p) + { + int size = pageLayout.pages[p]; + ivImages[p].depth = 4; + ivImages[p].width = size; + ivImages[p].height = size; + ivImages[p].bmp = (unsigned char *)malloc(size*size*4); // MUST be malloc, since this is free()d later by pie_AddTexPage(). + memset(ivImages[p].bmp, 0x00, size*size*4); + imageFile->pages[p].size = size; + // Must set imageFile->pages[p].id later, after filling out ivImages[p].bmp. + } - dot = (char *)strrchr(fileName, '/'); // go to last path character - dot++; // skip it - strcpy(texFileName, dot); // make a copy - dot = strchr(texFileName, '.'); // find extension - *dot = '\0'; // then discard it - // Load the texture pages. - for (i = 0; i <= tPages; i++) + for (std::vector<ImageMergeRectangle>::const_iterator r = pageLayout.images.begin(); r != pageLayout.images.end(); ++r) { - char path[PATH_MAX]; + imageFile->imageDefs[r->index].TPageID = r->page; + imageFile->imageDefs[r->index].Tu = r->loc.x; + imageFile->imageDefs[r->index].Tv = r->loc.y; + imageFile->imageDefs[r->index].Width = r->siz.x; + imageFile->imageDefs[r->index].Height = r->siz.y; + + // Copy image data onto texture page. + iV_Image *srcImage = r->data; + int srcDepth = srcImage->depth; + int srcStride = srcImage->width*srcDepth; // Not sure whether to pad in the case that srcDepth ≠ 4, however this apparently cannot happen. + unsigned char *srcBytes = srcImage->bmp + 0*srcDepth + 0*srcStride; + iV_Image *dstImage = &ivImages[r->page]; + int dstDepth = dstImage->depth; + int dstStride = dstImage->width*dstDepth; + unsigned char *dstBytes = dstImage->bmp + r->loc.x*dstDepth + r->loc.y*dstStride; + Vector2i size = r->siz; + unsigned char rgba[4] = {0x00, 0x00, 0x00, 0xFF}; + for (int y = 0; y < size.y; ++y) + for (int x = 0; x < size.x; ++x) + { + memcpy(rgba, srcBytes + x*srcDepth + y*srcStride, srcDepth); + memcpy(dstBytes + x*dstDepth + y*dstStride, rgba, dstDepth); + } - snprintf(path, PATH_MAX, "%s%u.png", texFileName, i); - ImageFile->TPageIDs[i] = LoadTextureFile(path); + // Finished reading the image data and copying it to the texture page, delete it. + free(r->data->bmp); + delete r->data; + } + + // Debug usage only. Dump all images to disk (do mkdir images/, first). Doesn't dump the alpha channel, since the .ppm format doesn't support that. + /*for (unsigned p = 0; p < pageLayout.pages.size(); ++p) + { + char fName[100]; + sprintf(fName, "%s-%d", fileName, p); + printf("Dump %s\n", fName); + FILE *f = fopen(fName, "wb"); + iV_Image *image = &ivImages[p]; + fprintf(f, "P6\n%d %d\n255\n", image->width, image->height); + for (int x = 0; x < image->width*image->height; ++x) + if (fwrite(image->bmp + x*4, 3, 1, f) == 0) + abort(); + fclose(f); + }*/ + + // Upload texture pages and free image data. + for (unsigned p = 0; p < pageLayout.pages.size(); ++p) + { + char arbitraryName[256]; + ssprintf(arbitraryName, "%s-%03u", fileName, p); + // Now we can set imageFile->pages[p].id. This free()s the ivImages[p].bmp array! + imageFile->pages[p].id = pie_AddTexPage(&ivImages[p], arbitraryName, 0, 0, true); } - ImageFile->NumImages = numImages; - free(pFileData); - return ImageFile; + return imageFile; } -void iV_FreeImageFile(IMAGEFILE *ImageFile) +void iV_FreeImageFile(IMAGEFILE *imageFile) { - free(ImageFile); + delete imageFile; } diff --git a/lib/ivis_opengl/bitimage.h b/lib/ivis_opengl/bitimage.h index aa60126..da74f69 100644 --- a/lib/ivis_opengl/bitimage.h +++ b/lib/ivis_opengl/bitimage.h @@ -24,43 +24,43 @@ static inline WZ_DECL_PURE unsigned short iV_GetImageWidth(const IMAGEFILE *ImageFile, const unsigned short ID) { - assert(ID < ImageFile->NumImages); - return ImageFile->ImageDefs[ID].Width; + assert(ID < ImageFile->imageDefs.size()); + return ImageFile->imageDefs[ID].Width; } static inline WZ_DECL_PURE unsigned short iV_GetImageHeight(const IMAGEFILE *ImageFile, const unsigned short ID) { - assert(ID < ImageFile->NumImages); - return ImageFile->ImageDefs[ID].Height; + assert(ID < ImageFile->imageDefs.size()); + return ImageFile->imageDefs[ID].Height; } static inline WZ_DECL_PURE short iV_GetImageXOffset(const IMAGEFILE *ImageFile, const unsigned short ID) { - assert(ID < ImageFile->NumImages); - return ImageFile->ImageDefs[ID].XOffset; + assert(ID < ImageFile->imageDefs.size()); + return ImageFile->imageDefs[ID].XOffset; } static inline WZ_DECL_PURE short iV_GetImageYOffset(const IMAGEFILE *ImageFile, const unsigned short ID) { - assert(ID < ImageFile->NumImages); - return ImageFile->ImageDefs[ID].YOffset; + assert(ID < ImageFile->imageDefs.size()); + return ImageFile->imageDefs[ID].YOffset; } static inline WZ_DECL_PURE unsigned short iV_GetImageCenterX(const IMAGEFILE *ImageFile, const unsigned short ID) { - assert(ID < ImageFile->NumImages); - return ImageFile->ImageDefs[ID].XOffset + ImageFile->ImageDefs[ID].Width/2; + assert(ID < ImageFile->imageDefs.size()); + return ImageFile->imageDefs[ID].XOffset + ImageFile->imageDefs[ID].Width/2; } static inline WZ_DECL_PURE unsigned short iV_GetImageCenterY(const IMAGEFILE *ImageFile, const unsigned short ID) { - assert(ID < ImageFile->NumImages); - return ImageFile->ImageDefs[ID].YOffset + ImageFile->ImageDefs[ID].Height/2; + assert(ID < ImageFile->imageDefs.size()); + return ImageFile->imageDefs[ID].YOffset + ImageFile->imageDefs[ID].Height/2; } diff --git a/lib/ivis_opengl/ivisdef.h b/lib/ivis_opengl/ivisdef.h index 91f6c25..ea8ed91 100644 --- a/lib/ivis_opengl/ivisdef.h +++ b/lib/ivis_opengl/ivisdef.h @@ -32,6 +32,8 @@ #include "lib/framework/frame.h" #include "pietypes.h" +#include <vector> + //************************************************************************* // // screen surface structure @@ -112,7 +114,7 @@ struct iIMDShape // //************************************************************************* -struct IMAGEDEF +struct ImageDef { unsigned int TPageID; /**< Which associated file to read our info from */ unsigned int Tu; /**< First vertex coordinate */ @@ -123,12 +125,16 @@ struct IMAGEDEF int YOffset; /**< Y offset into source position */ }; -#define MAX_NUM_TPAGEIDS 16 struct IMAGEFILE { - int NumImages; /**< Number of images contained here */ - int TPageIDs[MAX_NUM_TPAGEIDS]; /**< OpenGL Texture IDs */ - IMAGEDEF *ImageDefs; /**< Stored images */ + struct Page + { + int id; /// OpenGL texture ID. + int size; /// Size of texture in pixels. (Should be square.) + }; + + std::vector<Page> pages; /// Texture pages. + std::vector<ImageDef> imageDefs; /// Stored images. }; #endif // _ivisdef_h diff --git a/lib/ivis_opengl/pieblitfunc.cpp b/lib/ivis_opengl/pieblitfunc.cpp index 298f887..b6677eb 100644 --- a/lib/ivis_opengl/pieblitfunc.cpp +++ b/lib/ivis_opengl/pieblitfunc.cpp @@ -158,16 +158,17 @@ void pie_UniTransBoxFill(float x0, float y0, float x1, float y1, PIELIGHT light) bool assertValidImage(IMAGEFILE *imageFile, unsigned id) { - ASSERT_OR_RETURN(false, id < (unsigned)imageFile->NumImages, "Out of range 1: %u/%d", id, imageFile->NumImages); - ASSERT_OR_RETURN(false, imageFile->ImageDefs[id].TPageID < MAX_NUM_TPAGEIDS, "Out of range 2: %u", imageFile->ImageDefs[id].TPageID); + ASSERT_OR_RETURN(false, id < imageFile->imageDefs.size(), "Out of range 1: %u/%d", id, (int)imageFile->imageDefs.size()); + ASSERT_OR_RETURN(false, imageFile->imageDefs[id].TPageID < imageFile->pages.size(), "Out of range 2: %u", imageFile->imageDefs[id].TPageID); return true; } static PIEIMAGE makePieImage(IMAGEFILE *imageFile, unsigned id, PIERECT *dest = NULL, int x = 0, int y = 0) { - IMAGEDEF const &image = imageFile->ImageDefs[id]; + ImageDef const &image = imageFile->imageDefs[id]; PIEIMAGE pieImage; - pieImage.texPage = imageFile->TPageIDs[image.TPageID]; + pieImage.texPage = imageFile->pages[image.TPageID].id; + pieImage.invTextureSize = 1.f / imageFile->pages[image.TPageID].size; pieImage.tu = image.Tu; pieImage.tv = image.Tv; pieImage.tw = image.Width; @@ -218,28 +219,16 @@ void iV_DrawImageTc(IMAGEFILE *imageFile, unsigned id, unsigned idTc, int x, int void iV_DrawImageRect(IMAGEFILE *ImageFile, UWORD ID, int x, int y, int Width, int Height) { - IMAGEDEF *Image; SDWORD hRep, hRemainder, vRep, vRemainder; - PIEIMAGE pieImage; - PIERECT dest; - ASSERT_OR_RETURN(, ID < ImageFile->NumImages, "Out of range 1: %d", (int)ID); - Image = &ImageFile->ImageDefs[ID]; + assertValidImage(ImageFile, ID); + ImageDef *Image = &ImageFile->imageDefs[ID]; - ASSERT_OR_RETURN(, Image->TPageID < MAX_NUM_TPAGEIDS, "Out of range 2: %d", (int)Image->TPageID); pie_SetRendMode(REND_OPAQUE); pie_SetAlphaTest(true); - pieImage.texPage = ImageFile->TPageIDs[Image->TPageID]; - pieImage.tu = Image->Tu; - pieImage.tv = Image->Tv; - pieImage.tw = Image->Width; - pieImage.th = Image->Height; - - dest.x = x + Image->XOffset; - dest.y = y + Image->YOffset; - dest.w = Image->Width; - dest.h = Image->Height; + PIERECT dest; + PIEIMAGE pieImage = makePieImage(ImageFile, ID, &dest, x, y); vRemainder = Height % Image->Height; hRemainder = Width % Image->Width; diff --git a/lib/ivis_opengl/piedef.h b/lib/ivis_opengl/piedef.h index 6c48d10..222b32b 100644 --- a/lib/ivis_opengl/piedef.h +++ b/lib/ivis_opengl/piedef.h @@ -63,6 +63,7 @@ struct PIEIMAGE ///< An area of texture. { SDWORD texPage; SWORD tu, tv, tw, th; + float invTextureSize; }; /***************************************************************************/ diff --git a/lib/ivis_opengl/piedraw.cpp b/lib/ivis_opengl/piedraw.cpp index 5e63d13..a7344c1 100644 --- a/lib/ivis_opengl/piedraw.cpp +++ b/lib/ivis_opengl/piedraw.cpp @@ -651,16 +651,16 @@ void pie_DrawImage(const PIEIMAGE *image, const PIERECT *dest, PIELIGHT colour) glBegin(GL_TRIANGLE_STRIP); //set up 4 pie verts - glTexCoord2f(image->tu / OLD_TEXTURE_SIZE_FIX, image->tv / OLD_TEXTURE_SIZE_FIX); + glTexCoord2f(image->tu * image->invTextureSize, image->tv * image->invTextureSize); glVertex2f(dest->x, dest->y); - glTexCoord2f((image->tu + image->tw) / OLD_TEXTURE_SIZE_FIX, image->tv / OLD_TEXTURE_SIZE_FIX); + glTexCoord2f((image->tu + image->tw) * image->invTextureSize, image->tv * image->invTextureSize); glVertex2f(dest->x + dest->w, dest->y); - glTexCoord2f(image->tu / OLD_TEXTURE_SIZE_FIX, (image->tv + image->th) / OLD_TEXTURE_SIZE_FIX); + glTexCoord2f(image->tu * image->invTextureSize, (image->tv + image->th) * image->invTextureSize); glVertex2f(dest->x, dest->y + dest->h); - glTexCoord2f((image->tu + image->tw) / OLD_TEXTURE_SIZE_FIX, (image->tv + image->th) / OLD_TEXTURE_SIZE_FIX); + glTexCoord2f((image->tu + image->tw) * image->invTextureSize, (image->tv + image->th) * image->invTextureSize); glVertex2f(dest->x + dest->w, dest->y + dest->h); glEnd(); } diff --git a/lib/ivis_opengl/piestate.cpp b/lib/ivis_opengl/piestate.cpp index ede1326..27c9667 100644 --- a/lib/ivis_opengl/piestate.cpp +++ b/lib/ivis_opengl/piestate.cpp @@ -38,6 +38,7 @@ static bool shadersAvailable = false; static bool shaderUsage = false; +static bool fallbackAvailable = true; static GLuint shaderProgram[SHADER_MAX]; static GLfloat shaderStretch = 0; static GLint locTeam, locStretch, locTCMask, locFog, locNormalMap, locEcm, locTime; @@ -140,6 +141,16 @@ void pie_SetShaderAvailability(bool availability) shadersAvailable = availability; } +bool pie_GetFallbackAvailability(void) +{ + return fallbackAvailable; +} + +void pie_SetFallbackAvailability(bool availability) +{ + fallbackAvailable = availability; +} + bool pie_GetShaderUsage(void) { return shaderUsage; @@ -147,7 +158,10 @@ bool pie_GetShaderUsage(void) void pie_SetShaderUsage(bool usage) { - shaderUsage = pie_GetShaderAvailability() && usage; + bool valid = !usage && pie_GetFallbackAvailability(); + valid = valid || (usage && pie_GetShaderAvailability()); + if (valid) + shaderUsage = usage; } // Read shader into text buffer diff --git a/lib/ivis_opengl/piestate.h b/lib/ivis_opengl/piestate.h index 7d94551..93c4aae 100644 --- a/lib/ivis_opengl/piestate.h +++ b/lib/ivis_opengl/piestate.h @@ -85,6 +85,8 @@ extern void pie_SetRendMode(REND_MODE rendMode); // Shaders control center extern bool pie_GetShaderAvailability(void); extern void pie_SetShaderAvailability(bool); +extern bool pie_GetFallbackAvailability(void); +extern void pie_SetFallbackAvailability(bool); extern bool pie_GetShaderUsage(void); extern void pie_SetShaderUsage(bool); diff --git a/lib/ivis_opengl/png_util.cpp b/lib/ivis_opengl/png_util.cpp index 3b496a7..1ee2173 100644 --- a/lib/ivis_opengl/png_util.cpp +++ b/lib/ivis_opengl/png_util.cpp @@ -144,11 +144,11 @@ bool iV_loadImage_PNG(const char *fileName, iV_Image *image) // png_set_packing(png_ptr); /* More transformations to ensure we end up with 32bpp, 4 channel RGBA */ -// png_set_gray_to_rgb(png_ptr); - png_set_palette_to_rgb(png_ptr); - png_set_tRNS_to_alpha(png_ptr); + png_set_gray_to_rgb(png_ptr); + png_set_palette_to_rgb(png_ptr); + png_set_tRNS_to_alpha(png_ptr); png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER); -// png_set_gray_1_2_4_to_8(png_ptr); +// png_set_gray_1_2_4_to_8(png_ptr); png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL); diff --git a/lib/ivis_opengl/screen.cpp b/lib/ivis_opengl/screen.cpp index 385b403..8b32cb5 100644 --- a/lib/ivis_opengl/screen.cpp +++ b/lib/ivis_opengl/screen.cpp @@ -166,8 +166,12 @@ bool screenInitialise() debug(LOG_3D, " * (current) Max Sample level is %d.", (int) glmaxSamples); } - bool canRunAtAll = GLEW_VERSION_1_2 /*&& GLEW_ARB_vertex_buffer_object*/ && GLEW_ARB_texture_env_crossbar; // There seems to be a fallback for missing GLEW_ARB_vertex_buffer_object, in the 3.1 branch. - bool canRunShaders = canRunAtAll && glslVersion >= std::make_pair(1, 20); // glGetString(GL_SHADING_LANGUAGE_VERSION) >= "1.20" + //bool haveARB_vertex_buffer_object = GLEW_ARB_vertex_buffer_object || GLEW_VERSION_1_5; + bool haveARB_texture_env_crossbar = GLEW_ARB_texture_env_crossbar || GLEW_NV_texture_env_combine4 || GLEW_VERSION_1_4; + bool canRunFallback = GLEW_VERSION_1_2 /*&& haveARB_vertex_buffer_object*/ && haveARB_texture_env_crossbar; // There seems to be a fallback for missing GLEW_ARB_vertex_buffer_object, in the 3.1 branch. + bool canRunShaders = GLEW_VERSION_1_2 /*&& haveARB_vertex_buffer_object*/ && glslVersion >= std::make_pair(1, 20); // glGetString(GL_SHADING_LANGUAGE_VERSION) >= "1.20" + + pie_SetFallbackAvailability(canRunFallback); if (canRunShaders) { @@ -177,7 +181,7 @@ bool screenInitialise() pie_SetShaderAvailability(true); } } - else if (canRunAtAll) + else if (canRunFallback) { // corner cases: vbo(core 1.5 or ARB ext), texture crossbar (core 1.4 or ARB ext) debug(LOG_POPUP, _("OpenGL GLSL shader version 1.20 is not supported by your system. Some things may look wrong. Please upgrade your graphics driver/hardware, if possible.")); diff --git a/lib/netplay/netplay.cpp b/lib/netplay/netplay.cpp index 84d5476..04b6de5 100644 --- a/lib/netplay/netplay.cpp +++ b/lib/netplay/netplay.cpp @@ -176,7 +176,7 @@ unsigned NET_PlayerConnectionStatus[CONNECTIONSTATUS_NORMAL][MAX_PLAYERS]; **/ static char const *versionString = version_getVersionString(); static int NETCODE_VERSION_MAJOR = 6; -static int NETCODE_VERSION_MINOR = 20120620; +static int NETCODE_VERSION_MINOR = 20120821; bool NETisCorrectVersion(uint32_t game_version_major, uint32_t game_version_minor) { @@ -575,7 +575,7 @@ void NETfixDuplicatePlayerNames(void) for (i = 1; i != MAX_PLAYERS; ++i) { sstrcpy(name, NetPlay.players[i].name); - if (name[0] == '\0') + if (name[0] == '\0' || !NetPlay.players[i].allocated) { continue; // Ignore empty names. } @@ -1917,7 +1917,7 @@ UBYTE NETrecvFile(NETQUEUE queue) } snprintf(fileName, sizeof(fileName), "maps/%dc-%s-%s.wz", game.maxPlayers, mapName, fileHash.toString().c_str()); // Wonder whether game.maxPlayers is initialised already? - debug(LOG_NET, "Creating new file %s hash %s", fileName, fileHash.toString().c_str()); + debug(LOG_INFO, "Creating new file %s hash %s", fileName, fileHash.toString().c_str()); if (PHYSFS_exists(fileName)) { @@ -1980,6 +1980,7 @@ UBYTE NETrecvFile(NETQUEUE queue) } NetPlay.pMapFileHandle = PHYSFS_openWrite(fileName); // create a new file. + sstrcpy(NetPlay.mapFileName, fileName); } debug(LOG_NET, "New file position is %d", currPos); @@ -2006,8 +2007,17 @@ UBYTE NETrecvFile(NETQUEUE queue) if (currPos + bytesToRead == fileSize) // last packet { - PHYSFS_close(NetPlay.pMapFileHandle); + int noError = PHYSFS_close(NetPlay.pMapFileHandle); + if (noError == 0) + { + debug(LOG_ERROR, "Could not close file handle after trying to save map: %s", PHYSFS_getLastError()); + } NetPlay.pMapFileHandle = NULL; + PHYSFS_File *file = PHYSFS_openRead(NetPlay.mapFileName); + int actualFileSize = PHYSFS_fileLength(file); + PHYSFS_close(file); + NetPlay.mapFileName[0] = '\0'; + ASSERT(actualFileSize == fileSize, "Downloaded map too small! Got %d, expected %d!", actualFileSize, fileSize); } //return the percentage count diff --git a/lib/netplay/netplay.h b/lib/netplay/netplay.h index cc0aae6..8a8b2a1 100644 --- a/lib/netplay/netplay.h +++ b/lib/netplay/netplay.h @@ -259,7 +259,8 @@ struct NETPLAY bool isHost; ///< True if we are hosting the game bool isUPNP; // if we want the UPnP detection routines to run bool isHostAlive; /// if the host is still alive - PHYSFS_file *pMapFileHandle; + PHYSFS_file * pMapFileHandle; ///< Only non-NULL during map download. + char mapFileName[255]; ///< Only valid during map download. char gamePassword[password_string_size]; // bool GamePassworded; // if we have a password or not. bool ShowedMOTD; // only want to show this once diff --git a/lib/qtgame/wzapp_qt.cpp b/lib/qtgame/wzapp_qt.cpp index e31a449..ff83a2f 100644 --- a/lib/qtgame/wzapp_qt.cpp +++ b/lib/qtgame/wzapp_qt.cpp @@ -22,7 +22,7 @@ * Qt-related functions. */ -#include <QtGui/QImageReader> +#include <QtGui/QImage> #include <QtGui/QBitmap> #include <QtGui/QPainter> #include <QtGui/QMouseEvent> @@ -112,11 +112,9 @@ unsigned screenHeight = 0; // Declared in frameint.h. static void inputAddBuffer(UDWORD key, utf_32_char unicode); static int WZkeyToQtKey(int code); -void WzMainWindow::loadCursor(CURSOR cursor, int x, int y, QImageReader &buffer) +void WzMainWindow::loadCursor(CURSOR cursor, char const *name) { - buffer.device()->reset(); - buffer.setClipRect(QRect(x, y, 32, 32)); - cursors[cursor] = new QCursor(QPixmap::fromImage(buffer.read())); + cursors[cursor] = new QCursor(QPixmap::fromImage(QImage(name, "PNG"))); } WzMainWindow::WzMainWindow(QSize resolution, const QGLFormat &format, QWidget *parent) : QtGameWidget(resolution, format, parent) @@ -135,32 +133,27 @@ WzMainWindow::WzMainWindow(QSize resolution, const QGLFormat &format, QWidget *p #endif setWindowTitle(PACKAGE_NAME); - QImageReader buffer("wz::images/intfac5.png", "PNG"); - if (!buffer.canRead()) - { - debug(LOG_ERROR, "Failed to read cursor image: %s", buffer.errorString().toAscii().constData()); - } - loadCursor(CURSOR_EMBARK, 0, 128, buffer); - loadCursor(CURSOR_DEST, 32, 128, buffer); - loadCursor(CURSOR_DEFAULT, 64, 128, buffer); - loadCursor(CURSOR_BUILD, 96, 128, buffer); - loadCursor(CURSOR_SCOUT, 128, 128, buffer); - loadCursor(CURSOR_DISEMBARK, 160, 128, buffer); - loadCursor(CURSOR_ATTACK, 192, 128, buffer); - loadCursor(CURSOR_GUARD, 224, 128, buffer); - loadCursor(CURSOR_FIX, 0, 160, buffer); - loadCursor(CURSOR_SELECT, 32, 160, buffer); + loadCursor(CURSOR_EMBARK, "wz::images/intfac/image_cursor_embark.png"); + loadCursor(CURSOR_DEST, "wz::images/intfac/image_cursor_dest.png"); + loadCursor(CURSOR_DEFAULT, "wz::images/intfac/image_cursor_default.png"); + loadCursor(CURSOR_BUILD, "wz::images/intfac/image_cursor_build.png"); + loadCursor(CURSOR_SCOUT, "wz::images/intfac/image_cursor_scout.png"); + loadCursor(CURSOR_DISEMBARK, "wz::images/intfac/image_cursor_disembark.png"); + loadCursor(CURSOR_ATTACK, "wz::images/intfac/image_cursor_attack.png"); + loadCursor(CURSOR_GUARD, "wz::images/intfac/image_cursor_guard.png"); + loadCursor(CURSOR_FIX, "wz::images/intfac/image_cursor_fix.png"); + loadCursor(CURSOR_SELECT, "wz::images/intfac/image_cursor_select.png"); // loadCursor(CURSOR_REPAIR, 64, 160, buffer); // FIX ME: This IS in infac.img, but the define is MIA - loadCursor(CURSOR_SEEKREPAIR, 64, 160, buffer); // FIX ME: This is NOT in infac.img! - loadCursor(CURSOR_PICKUP, 96, 160, buffer); - loadCursor(CURSOR_NOTPOSSIBLE, 128, 160, buffer); - loadCursor(CURSOR_MOVE, 160, 160, buffer); - loadCursor(CURSOR_LOCKON, 192, 160, buffer); + loadCursor(CURSOR_SEEKREPAIR, "wz::images/intfac/image_cursor_repair.png"); // FIX ME: This is NOT in infac.img! + loadCursor(CURSOR_PICKUP, "wz::images/intfac/image_cursor_pickup.png"); + loadCursor(CURSOR_NOTPOSSIBLE, "wz::images/intfac/image_cursor_notpos.png"); + loadCursor(CURSOR_MOVE, "wz::images/intfac/image_cursor_move.png"); + loadCursor(CURSOR_LOCKON, "wz::images/intfac/image_cursor_lockon.png"); // loadCursor(CURSOR_ECM, 224, 160, buffer); // FIX ME: Not defined yet! - loadCursor(CURSOR_JAM, 224, 160, buffer); // FIX ME: This is NOT in infac.img, and is using IMAGE CURSOR ECM ? - loadCursor(CURSOR_ATTACH, 0, 192, buffer); - loadCursor(CURSOR_BRIDGE, 32, 192, buffer); - loadCursor(CURSOR_BOMB, 64, 192, buffer); + loadCursor(CURSOR_JAM, "wz::images/intfac/image_cursor_ecm.png"); // FIX ME: This is NOT in infac.img, and is using IMAGE CURSOR ECM ? + loadCursor(CURSOR_ATTACH, "wz::images/intfac/image_cursor_attach.png"); + loadCursor(CURSOR_BRIDGE, "wz::images/intfac/image_cursor_bridge.png"); + loadCursor(CURSOR_BOMB, "wz::images/intfac/image_cursor_bomb.png"); // Reused (unused) cursors cursors[CURSOR_ARROW] = new QCursor(Qt::ArrowCursor); diff --git a/lib/qtgame/wzapp_qt.h b/lib/qtgame/wzapp_qt.h index f1c5e62..890648a 100644 --- a/lib/qtgame/wzapp_qt.h +++ b/lib/qtgame/wzapp_qt.h @@ -21,7 +21,7 @@ #define WZAPP_H #include <QtGui/QApplication> -#include <QtGui/QImageReader> +#include <QtGui/QImage> #include <QtOpenGL/QGLWidget> #include <QtCore/QBuffer> #include <QtCore/QTime> @@ -44,7 +44,7 @@ class WzMainWindow : public QtGameWidget Q_OBJECT private: - void loadCursor(CURSOR cursor, int x, int y, QImageReader &buffer); + void loadCursor(CURSOR cursor, char const *name); void mouseMoveEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); diff --git a/macosx/Warzone.xcodeproj/project.pbxproj b/macosx/Warzone.xcodeproj/project.pbxproj index 4268f56..4f697e7 100644 diff --git a/macosx/configs/LangDis b/macosx/configs/LangDis index d25a56c..61f1c0e 100644 diff --git a/macosx/configs/ResourceRules.plist b/macosx/configs/ResourceRules.plist new file mode 100644 index 0000000..096589e diff --git a/macosx/configs/Warzone-All.xcconfig b/macosx/configs/Warzone-All.xcconfig index 8728ead..f78d0cb 100644 diff --git a/macosx/configs/codesignrules.plist b/macosx/configs/codesignrules.plist deleted file mode 100644 index 2a9014f..0000000 diff --git a/macosx/configs/fetchscripts/GLExtensionWrangler-FetchSource.sh b/macosx/configs/fetchscripts/GLExtensionWrangler-FetchSource.sh index 0646afe..6f760c3 100755 diff --git a/macosx/configs/fetchscripts/Png-FetchSource.sh b/macosx/configs/fetchscripts/Png-FetchSource.sh index b0a127e..4bb6183 100755 diff --git a/macosx/configs/fetchscripts/SetupPrebuiltComponents-CS-ID.sh b/macosx/configs/fetchscripts/SetupPrebuiltComponents-CS-ID.sh new file mode 100755 index 0000000..71d899b diff --git a/macosx/configs/mkdmgs.sh b/macosx/configs/mkdmgs.sh index 6da8943..cd9df47 100755 diff --git a/po/ca_ES.po b/po/ca_ES.po index b1be672..05404d5 100644 diff --git a/po/cs.po b/po/cs.po index fc6a2ba..853e887 100644 diff --git a/po/da.po b/po/da.po index 4bfc3d2..d6c60d3 100644 diff --git a/po/de.po b/po/de.po index 4d13aeb..0c7eb85 100644 diff --git a/po/en_GB.po b/po/en_GB.po index 24e7538..bc03d59 100644 diff --git a/po/es.po b/po/es.po index 5bbe453..3ddeb38 100644 diff --git a/po/et_EE.po b/po/et_EE.po index 110ba30..518e8eb 100644 diff --git a/po/fi.po b/po/fi.po index 80d4f14..d3e6a9e 100644 diff --git a/po/fr.po b/po/fr.po index f0dc51b..fbac59e 100644 diff --git a/po/fy.po b/po/fy.po index ecdba86..9577ea7 100644 diff --git a/po/ga.po b/po/ga.po index ee79e4a..8cbd447 100644 diff --git a/po/hr.po b/po/hr.po index cacc10a..ebd616d 100644 diff --git a/po/hu.po b/po/hu.po index 6f473ff..9a08e1b 100644 diff --git a/po/it.po b/po/it.po index 9fccb1b..5d3774b 100644 diff --git a/po/ko.po b/po/ko.po index a465b87..33d62af 100644 diff --git a/po/la.po b/po/la.po index 50b01e7..f5fe524 100644 diff --git a/po/lt.po b/po/lt.po index b0833b7..63cdda6 100644 diff --git a/po/nb.po b/po/nb.po index fc3fc05..c2c5e77 100644 diff --git a/po/nl.po b/po/nl.po index 9d895b8..19dd90c 100644 diff --git a/po/pl.po b/po/pl.po index 97af2c3..958b0f5 100644 diff --git a/po/pt.po b/po/pt.po index abba197..5de76fe 100644 diff --git a/po/pt_BR.po b/po/pt_BR.po index 1a45442..2e77650 100644 diff --git a/po/ro.po b/po/ro.po index 0e06100..e65d224 100644 diff --git a/po/ru.po b/po/ru.po index 35c80ae..8a75387 100644 diff --git a/po/sk.po b/po/sk.po index 24e9b1a..e16e609 100644 diff --git a/po/sl.po b/po/sl.po index 91a7896..29a359d 100644 diff --git a/po/tr.po b/po/tr.po index 7723329..8289a54 100644 diff --git a/po/uk_UA.po b/po/uk_UA.po index 40e9ff3..599116b 100644 diff --git a/po/zh_CN.po b/po/zh_CN.po index 88a7931..978e693 100644 diff --git a/po/zh_TW.po b/po/zh_TW.po index 00991c1..5be474d 100644 diff --git a/src/combat.cpp b/src/combat.cpp index d1910ad..57253c5 100644 --- a/src/combat.cpp +++ b/src/combat.cpp @@ -54,7 +54,7 @@ bool combFire(WEAPON *psWeap, BASE_OBJECT *psAttacker, BASE_OBJECT *psTarget, in /* Watermelon:dont shoot if the weapon_slot of a vtol is empty */ if (psAttacker->type == OBJ_DROID && isVtolDroid(((DROID *)psAttacker))) { - if (((DROID *)psAttacker)->sMove.iAttackRuns[weapon_slot] >= getNumAttackRuns(((DROID *)psAttacker), weapon_slot)) + if (psWeap->usedAmmo >= getNumAttackRuns(((DROID *)psAttacker), weapon_slot)) { objTrace(psAttacker->id, "VTOL slot %d is empty", weapon_slot); return false; diff --git a/src/configuration.cpp b/src/configuration.cpp index ee9892c..f13c82a 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -95,19 +95,12 @@ bool loadConfig() war_setMPcolour(ini.value("colourMP", -1).toInt()); // default is random (-1) sstrcpy(game.name, ini.value("gameName", _("My Game")).toString().toUtf8().constData()); sstrcpy(sPlayer, ini.value("playerName", _("Player")).toString().toUtf8().constData()); - if (ini.contains("mapName") && ini.contains("maxPlayers")) - { - sstrcpy(game.map, ini.value("mapName").toString().toUtf8().constData()); - game.hash.setZero(); - game.maxPlayers = ini.value("maxPlayers").toInt(); // FIXME: horrible kluge, MUST match map above - } - else - { - // Set a default map to prevent hosting games without a map. - sstrcpy(game.map, "Sk-Rush"); - game.hash.setZero(); - game.maxPlayers = 4; - } + + // Set a default map to prevent hosting games without a map. + sstrcpy(game.map, "Sk-Rush"); + game.hash.setZero(); + game.maxPlayers = 4; + game.power = ini.value("power", LEV_MED).toInt(); game.base = ini.value("base", CAMP_BASE).toInt(); game.alliance = ini.value("alliance", NO_ALLIANCES).toInt(); @@ -212,6 +205,7 @@ bool saveConfig() ini.setValue("gameName", game.name); // last hosted game } ini.setValue("mapName", game.map); // map name + ini.setValue("mapHash", game.hash.toString().c_str()); // map hash ini.setValue("maxPlayers", game.maxPlayers); // maxPlayers ini.setValue("power", game.power); // power ini.setValue("base", game.base); // size of base @@ -267,8 +261,12 @@ bool reloadMPConfig(void) sstrcpy(game.name, ini.value("gameName").toString().toUtf8().constData()); } } - ini.setValue("mapName", game.map); // map name - ini.setValue("maxPlayers", game.maxPlayers); // maxPlayers + + // Set a default map to prevent hosting games without a map. + sstrcpy(game.map, "Sk-Rush"); + game.hash.setZero(); + game.maxPlayers = 4; + ini.setValue("power", game.power); // power ini.setValue("base", game.base); // size of base ini.setValue("alliance", game.alliance); // allow alliances @@ -282,12 +280,12 @@ bool reloadMPConfig(void) { sstrcpy(game.name, ini.value("gameName").toString().toUtf8().constData()); } - if (ini.contains("mapName") && ini.contains("maxPlayers")) - { - sstrcpy(game.map, ini.value("mapName").toString().toUtf8().constData()); - game.hash.setZero(); - game.maxPlayers = ini.value("maxPlayers").toInt(); // FIXME: horrible kluge, MUST match map above - } + + // Set a default map to prevent hosting games without a map. + sstrcpy(game.map, "Sk-Rush"); + game.hash.setZero(); + game.maxPlayers = 4; + game.power = ini.value("power", LEV_MED).toInt(); game.base = ini.value("base", CAMP_BASE).toInt(); game.alliance = ini.value("alliance", NO_ALLIANCES).toInt(); diff --git a/src/display.cpp b/src/display.cpp index 85c5b3e..cd98fd9 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -24,7 +24,6 @@ * */ - #include "lib/framework/frame.h" #include "lib/framework/input.h" #include "lib/framework/strres.h" @@ -109,6 +108,8 @@ static void dealWithRMB( void ); static bool mouseInBox(SDWORD x0, SDWORD y0, SDWORD x1, SDWORD y1); static OBJECT_POSITION *checkMouseLoc(void); +void finishDeliveryPosition(void); + static bool bInstantRadarJump = false; static SDWORD desiredPitch = 340; static UDWORD currentFrame; @@ -213,7 +214,6 @@ void setRightClickOrders( bool val ) bRightClickOrders = val; } - bool getMiddleClickRotate( void ) { return bMiddleClickRotate; @@ -224,7 +224,6 @@ void setMiddleClickRotate( bool val ) bMiddleClickRotate = val; } - bool getDrawShadows( void ) { return(bDrawShadows); @@ -235,13 +234,11 @@ void setDrawShadows( bool val ) bDrawShadows = val; } - void setShakeStatus( bool val ) { bShakingPermitted = val; } - void shakeStart(unsigned int length) { if(bShakingPermitted) @@ -255,14 +252,12 @@ void shakeStart(unsigned int length) } } - void shakeStop(void) { bScreenShakeActive = false; player.r.z = 0; } - static void shakeUpdate(void) { UDWORD screenShakePercentage; @@ -290,14 +285,6 @@ static void shakeUpdate(void) } } - -/* Initialise the display system */ -bool dispInitialise(void) -{ - return true; -} - - void ProcessRadarInput() { int PosX, PosY; @@ -330,14 +317,9 @@ void ProcessRadarInput() } else { /* If we're tracking a droid, then cancel that */ -// if(getWarCamStatus() == true) -// { -// camToggleStatus(); -// } CalcRadarPosition(x, y, &PosX, &PosY); if(mouseOverRadar) { - // requestRadarTrack(PosX*TILE_UNITS,PosY*TILE_UNITS); // MARKER // Send all droids to that location orderSelectedLoc(selectedPlayer, (PosX*TILE_UNITS)+TILE_UNITS/2, @@ -345,7 +327,6 @@ void ProcessRadarInput() } - // setViewPos(PosX,PosY); CheckScrollLimits(); audio_PlayTrack( ID_SOUND_MESSAGEEND ); } @@ -396,7 +377,6 @@ void ProcessRadarInput() } } - // reset the input state void resetInput(void) { @@ -405,7 +385,6 @@ void resetInput(void) wallDrag.status = DRAG_INACTIVE; } - /* Process the user input. This just processes the key input and jumping around the radar*/ void processInput(void) { @@ -488,13 +467,11 @@ void processInput(void) } } - static bool OverRadarAndNotDragging(void) { return mouseOverRadar && dragBox3D.status != DRAG_DRAGGING && radarPermitted && wallDrag.status != DRAG_DRAGGING; } - static void CheckFinishedDrag(void) { if(driveModeActive()) { @@ -586,7 +563,13 @@ static bool CheckFinishedFindPosition(void) /* Do not let the player position buildings 'under' the radar */ if(mouseReleased(MOUSE_LMB) && !OverRadar) { - if (buildState == BUILD3D_VALID) + + if (deliveryReposValid()) + { + finishDeliveryPosition(); + return true; + } + else if (buildState == BUILD3D_VALID) { if ((((STRUCTURE_STATS *)sBuildDetails.psStats)->type == REF_WALL || ((STRUCTURE_STATS *)sBuildDetails.psStats)->type == REF_GATE @@ -621,7 +604,6 @@ static bool CheckFinishedFindPosition(void) return false; } - static void HandleDrag(void) { UDWORD dragX, dragY; @@ -681,9 +663,6 @@ void processMouseClickInput(void) MOUSE_TARGET item=MT_NOTARGET; bool OverRadar = OverRadarAndNotDragging(); - // These four functions were embedded in this function but I moved them out for readability. In the - // absense of any comments I had a guess as to there use and named them accordingly PD 28/05/98. - //ignoreOrder = CheckFinishedWallDrag(); - this name is misleading since called for all Structures AB ignoreOrder = CheckFinishedFindPosition(); CheckStartWallDrag(); @@ -761,6 +740,10 @@ void processMouseClickInput(void) kill3DBuilding(); bRadarDragging = false; } + if (mouseReleased(MOUSE_RMB)) + { + cancelDeliveryRepos(); + } if (mouseDrag(MOUSE_ROTATE,(UDWORD *)&rotX,(UDWORD *)&rotY) && !rotActive && !bRadarDragging) { rotInitial = player.r.y; @@ -797,13 +780,6 @@ void processMouseClickInput(void) item = itemUnderMouse(&ObjUnderMouse); ASSERT( item<POSSIBLE_TARGETS,"Weirdy target!" ); - // alliance override. If in alli then just use the move icon. - but not if its the same player - //in single player, the genexp script defaults to setting an alliance between player 0 and selectedPlayer - /* if(ObjUnderMouse && (selectedPlayer != ObjUnderMouse->player) && - aiCheckAlliances(selectedPlayer,ObjUnderMouse->player)) - { - item = MT_NOTARGET; - } */ ObjAllied = (ObjUnderMouse && selectedPlayer != ObjUnderMouse->player && aiCheckAlliances(selectedPlayer,ObjUnderMouse->player)); if(item != MT_NOTARGET) @@ -1027,7 +1003,6 @@ void processMouseClickInput(void) CurrentItemUnderMouse = item; } - static void calcScroll(float *y, float *dydt, float accel, float decel, float targetVelocity, float dt) { double tMid; @@ -1152,31 +1127,6 @@ bool CheckInScrollLimits(SDWORD *xPos,SDWORD *zPos) bool EdgeHit = false; SDWORD minX,minY,maxX,maxY; - //always view that little bit more than the scroll limits... - /*minX = scrollMinX * TILE_UNITS; - minY = scrollMinY * TILE_UNITS; - maxX = (((scrollMaxX-1) - visibleXTiles) * TILE_UNITS); - maxY = (((scrollMaxY-1) - visibleYTiles) * TILE_UNITS); - - if(scrollMinX==0) - { - minX = ((0 - visibleXTiles/2) * TILE_UNITS); - } - - if((UDWORD)scrollMaxX == mapWidth) - { - maxX = ((mapWidth-1-(visibleXTiles/2)) * TILE_UNITS); - } - - if(scrollMinY==0) - { - minY = ((0 - visibleYTiles/2) * TILE_UNITS); - } - - if((UDWORD)scrollMaxY == mapHeight) - { - maxY = ((mapHeight-1-(visibleYTiles/2)) * TILE_UNITS); - }*/ minX = world_coord(scrollMinX); maxX = world_coord(scrollMaxX - 1); minY = world_coord(scrollMinY); @@ -1211,7 +1161,6 @@ bool CheckInScrollLimits(SDWORD *xPos,SDWORD *zPos) return EdgeHit; } - // Check the view is within the scroll limits, // Returns true if edge hit. // @@ -1227,8 +1176,6 @@ bool CheckScrollLimits(void) return ret; } - - /* Do the 3D display */ void displayWorld(void) { @@ -1316,7 +1263,6 @@ bool DrawnInLastFrame(int32_t frame) on MOUSE_LMB. We aren't concerned here with setting selection flags - just what it actually was */ - BASE_OBJECT *mouseTarget( void ) { UDWORD i; @@ -1332,7 +1278,6 @@ UDWORD dispX,dispY,dispR; return(NULL); } - /* We haven't found anything yet */ psReturn = NULL; @@ -1349,10 +1294,8 @@ UDWORD dispX,dispY,dispR; dispR = psDroid->sDisplay.screenR; /* Only check droids that're on screen */ - -// Has the droid been drawn since the start of the last frame + // Has the droid been drawn since the start of the last frame if (psDroid->visible[selectedPlayer] && DrawnInLastFrame(psDroid->sDisplay.frameNumber)==true) -// if(psDroid->sDisplay.frameNumber+1 == currentFrame) { if (mouseInBox(dispX-dispR, dispY-dispR, dispX+dispR, dispY+dispR)) { @@ -1378,13 +1321,6 @@ UDWORD dispX,dispY,dispR; return(psReturn); } -// Dummy structure stats used for positioning delivery points. -static STRUCTURE_STATS ReposStats; -static bool ReposValid = false; -static bool BVReposValid = false; -static FLAG_POSITION *ReposFlag; -FLAG_POSITION *deliveryPointToMove = NULL; - void StartTacticalScrollObj(WZ_DECL_UNUSED bool driveActive, WZ_DECL_UNUSED BASE_OBJECT* psObj) { } @@ -1393,24 +1329,23 @@ void CancelTacticalScroll(void) { } - -void displayInitVars(void) -{ - ReposValid = false; - BVReposValid = false; -} - - - // Start repositioning a delivery point. // -void StartDeliveryPosition( OBJECT_POSITION *psLocation ) +static FLAG_POSITION flagPos; +static int flagStructId; +static bool flagReposVarsValid; +static bool flagReposFinished; + +void startDeliveryPosition(FLAG_POSITION *psFlag) { FLAG_POSITION *psFlagPos; - STRUCTURE_STATS *tmpStructStats; - BASE_STATS *tmpBaseStats; - //clear the Deliv Point if one + if (tryingToGetLocation()) // if we're placing a building don't place + { + return; + } + + //clear the selected delivery point for (psFlagPos = apsFlagPosLists[selectedPlayer]; psFlagPos; psFlagPos = psFlagPos->psNext) { @@ -1418,84 +1353,121 @@ void StartDeliveryPosition( OBJECT_POSITION *psLocation ) } //set this object position to be highlighted - psLocation->selected = true; - deliveryPointToMove = (FLAG_POSITION*)psLocation; + psFlag->selected = true; + flagPos = *psFlag; - if(bInTutorial) + STRUCTURE* psStruct = findDeliveryFactory(psFlag); + if (!psStruct) { - eventFireCallbackTrigger((TRIGGER_TYPE)CALL_DELIVPOINTMOVED); + flagStructId = 0; // not a struct, just a flag. } + else + { + flagStructId = psStruct->id; + } + flagReposVarsValid = true; + flagReposFinished = false; - // Setup dummy structure stats for positioning a delivery point. - ReposValid = false; - ReposFlag = NULL; - ReposStats.baseWidth = 1; - ReposStats.baseBreadth = 1; - ReposStats.ref = 0;//REF_STRUCTURE_START; - - //set up the buildSite variable for drawing - buildSite.xTL = (UWORD)psLocation->screenX; - buildSite.yTL = (UWORD)psLocation->screenY; - buildSite.xBR = (UWORD)(buildSite.xTL-1); - buildSite.yBR = (UWORD)(buildSite.yTL-1); - - tmpStructStats = &ReposStats; - tmpBaseStats = (BASE_STATS *)tmpStructStats; - init3DBuilding(tmpBaseStats, FinishDeliveryPosition, psLocation); + if (bInTutorial) + { + eventFireCallbackTrigger((TRIGGER_TYPE)CALL_DELIVPOINTMOVED); + } } - // Finished repositioning a delivery point. // -void FinishDeliveryPosition(UDWORD xPos,UDWORD yPos,void *UserData) +void finishDeliveryPosition() { - //This deals with adding waypoints and moving the primary - processDeliveryPoint(((FLAG_POSITION*)UserData)->player, - world_coord(xPos), world_coord(yPos)); - - //deselect it - ((FLAG_POSITION*)UserData)->selected = false; - deliveryPointToMove = NULL; - - CancelDeliveryRepos(); + FLAG_POSITION* psFlagPos; + if (flagStructId) + { + flagReposVarsValid = false; + STRUCTURE* psStruct = IdToStruct(flagStructId, selectedPlayer); + if (StructIsFactory(psStruct) && psStruct->pFunctionality + && psStruct->pFunctionality->factory.psAssemblyPoint) + { + setAssemblyPoint(psStruct->pFunctionality->factory.psAssemblyPoint, + flagPos.coords.x, flagPos.coords.y, selectedPlayer, true); + } + else if (psStruct->pStructureType->type == REF_REPAIR_FACILITY) + { + setAssemblyPoint(psStruct->pFunctionality->repairFacility.psDeliveryPoint, + flagPos.coords.x, flagPos.coords.y, selectedPlayer, true); + } + //deselect once moved + for (psFlagPos = apsFlagPosLists[selectedPlayer]; psFlagPos; + psFlagPos = psFlagPos->psNext) + { + psFlagPos->selected = false; + } + } + flagReposFinished = true; } - // Is there a valid delivery point repositioning going on. -// -bool DeliveryReposValid(void) +bool deliveryReposValid(void) { - if(driveModeActive()) { - return ReposValid && (ReposFlag !=NULL); - } else { - return BVReposValid; + if (!flagReposVarsValid) + return false; + + Vector2i map = map_coord(removeZ(flagPos.coords)); + + //make sure we are not too near map edge + if (map.x < scrollMinX + TOO_NEAR_EDGE || map.x + 1 > scrollMaxX - TOO_NEAR_EDGE || + map.y < scrollMinY + TOO_NEAR_EDGE || map.y + 1 > scrollMaxY - TOO_NEAR_EDGE) + { + return false; } + + // cant place on top of a delivery point... + for (FLAG_POSITION const *psCurrFlag = apsFlagPosLists[selectedPlayer]; psCurrFlag; psCurrFlag = psCurrFlag->psNext) + { + Vector2i flagTile = map_coord(removeZ(psCurrFlag->coords)); + if (flagTile == map) + return false; + } + + if (fpathBlockingTile(map.x, map.y, PROPULSION_TYPE_WHEELED)) + { + return false; + } + + return true; +} + +bool deliveryReposFinished(FLAG_POSITION *psFlag) +{ + if (!flagReposVarsValid) + return false; + + if (psFlag) + *psFlag = flagPos; + return flagReposFinished; } +void processDeliveryRepos(void) +{ + if (!flagReposVarsValid) + return; + + int bX = clip(mouseTileX, 2, mapWidth - 3); + int bY = clip(mouseTileY, 2, mapHeight - 3); + + flagPos.coords = Vector3i(world_coord(Vector2i(bX, bY))+Vector2i(TILE_UNITS/2,TILE_UNITS/2), map_TileHeight(bX, bY) + 2*ASSEMBLY_POINT_Z_PADDING); +} // Cancel repositioning of the delivery point without moving it. // -void CancelDeliveryRepos(void) +void cancelDeliveryRepos(void) { - if((ReposValid) && (ReposFlag!=NULL)) - { - if(driveModeActive()) - { - DROID *Driven = driveGetDriven(); - if(Driven != NULL) { -// Driven->selected = true; - SelectDroid(Driven); - camAllignWithTarget((BASE_OBJECT *)Driven); - } - driveEnableControl(); - } - ReposValid = false; - ReposFlag = NULL; - } - - BVReposValid = false; + flagReposVarsValid = false; } +void renderDeliveryRepos(void) +{ + if (flagReposVarsValid) + renderDeliveryPoint(&flagPos, true); +} // check whether a clicked on droid is in a command group or assigned to a sensor static bool droidHasLeader(DROID *psDroid) @@ -1520,7 +1492,6 @@ static bool droidHasLeader(DROID *psDroid) if (psLeader != NULL) { -// psLeader->selected = true; if (psLeader->type == OBJ_DROID) { SelectDroid((DROID *)psLeader); @@ -1572,7 +1543,6 @@ void dealWithDroidSelect(DROID *psDroid, bool bDragBox) } } - static void FeedbackOrderGiven(void) { static UDWORD LastFrame = 0; @@ -1591,7 +1561,6 @@ bool ctrlShiftDown(void) return keyDown(KEY_LCTRL) || keyDown(KEY_RCTRL) || keyDown(KEY_LSHIFT) || keyDown(KEY_RSHIFT); } - void AddDerrickBurningMessage(void) { addConsoleMessage(_("Cannot Build. Oil Resource Burning."),DEFAULT_JUSTIFY,SYSTEM_MESSAGE); @@ -1626,7 +1595,6 @@ static void dealWithLMBDroid(DROID* psDroid, SELECTION_TYPE selection) FeedbackOrderGiven(); driveDisableTactical(); - return; } @@ -1805,13 +1773,10 @@ static void dealWithLMBDroid(DROID* psDroid, SELECTION_TYPE selection) FeedbackOrderGiven(); } - - } static void dealWithLMBStructure(STRUCTURE* psStructure, SELECTION_TYPE selection) { -// clearSelection(); // Clear droid selection. bool ownStruct = (psStructure->player == selectedPlayer); if (!aiCheckAlliances(psStructure->player, selectedPlayer)) @@ -1963,7 +1928,6 @@ static void dealWithLMBFeature(FEATURE* psFeature) } } } - } else { @@ -2031,7 +1995,6 @@ void dealWithLMB( void ) OBJECT_POSITION *psLocation; STRUCTURE *psStructure; - /* Don't process if in game options are on screen */ if (mouseOverRadar || InGameOpUp == true || widgGetFromID(psWScreen,INTINGAMEOP)) @@ -2111,40 +2074,15 @@ void dealWithLMB( void ) } else { - StartDeliveryPosition(psLocation); + startDeliveryPosition((FLAG_POSITION *)psLocation); } -#if 0 - /* We've clicked on one of our own DP */ - addConsoleMessage("Clicked on your delivery point",DEFAULT_JUSTIFY,SYSTEM_MESSAGE); - - /* clear the selection */ - clearSelection(); - - //set this object position to be highlighted - psLocation->selected = true; - } - else - { - /* We've clicked on somebody else's DP - remove this sometime?*/ - addConsoleMessage("Clicked on another player's delivery point",DEFAULT_JUSTIFY,SYSTEM_MESSAGE); -#endif - } - break; - -#if 0 - case POS_PROX: - if(psLocation->player == selectedPlayer) - { - displayProximityMessage((PROXIMITY_DISPLAY *)psLocation); } break; -#endif default: ASSERT(!"unknown object position type", "Unknown type from checkMouseLoc" ); } } - bool getRotActive( void ) { return(rotActive); @@ -2215,13 +2153,11 @@ static void dealWithLMBDClick(void) } } - /*This checks to see if the mouse was over a delivery point or a proximity message when the mouse button was pressed */ static OBJECT_POSITION * checkMouseLoc(void) { FLAG_POSITION *psPoint; - //PROXIMITY_DISPLAY *psProxDisp; UDWORD i; UDWORD dispX,dispY,dispR; @@ -2244,27 +2180,9 @@ static OBJECT_POSITION * checkMouseLoc(void) } } } - //now check for Proximity Message - /*for(psProxDisp = apsProxDisp[selectedPlayer]; psProxDisp; psProxDisp = - psProxDisp->psNext) - { - dispX = psProxDisp->screenX; - dispY = psProxDisp->screenY; - dispR = psProxDisp->screenR; - // Only check DP's that are on screen - if (DrawnInLastFrame(psProxDisp->frameNumber)==true) - { - if (mouseInBox(dispX-dispR, dispY-dispR, dispX+dispR, dispY+dispR)) - { - // We HAVE clicked on Proximity Message! - return psProxDisp; - } - } - }*/ return NULL; } - static void dealWithRMB( void ) { BASE_OBJECT *psClickedOn; @@ -2289,9 +2207,6 @@ static void dealWithRMB( void ) psDroid = (DROID *) psClickedOn; if (psDroid->player == selectedPlayer) { -// addGameMessage("Right clicked on own droid",1000,true); -// addConsoleMessage("Right click detected on own droid",DEFAULT_JUSTIFY,SYSTEM_MESSAGE); - if (bRightClickOrders && ctrlShiftDown()) { dealWithDroidSelect(psDroid, false); @@ -2395,9 +2310,6 @@ static void dealWithRMB( void ) if (psStructure->player == selectedPlayer) { /* We've clicked on our own building */ -// addGameMessage("Right clicked on own building",1000,true); -// addConsoleMessage("Right clicked on own building",DEFAULT_JUSTIFY,SYSTEM_MESSAGE); - if (bRightClickOrders && intDemolishSelectMode()) { orderSelectedObjAdd(selectedPlayer, psClickedOn, ctrlShiftDown()); @@ -2472,7 +2384,7 @@ static void dealWithRMB( void ) { if (bRightClickOrders) { - StartDeliveryPosition(psLocation); + startDeliveryPosition((FLAG_POSITION *)psLocation); } else { @@ -2494,44 +2406,13 @@ static void dealWithRMB( void ) } else { - /* Transporter orders disabled */ -#if 0 - /* We've just clicked on an area of terrain. A 'send to' operation - for Transporter in multiPlay mode*/ - if (bMultiPlayer && !bLeftClickOrders) - { - //there may be more than one Transporter selected - for (psDroid = apsDroidLists[selectedPlayer]; psDroid != NULL; - psDroid = psDroid->psNext) - { - if (psDroid->selected) - { - if (psDroid->droidType == DROID_TRANSPORTER || psDroid->droidType == DROID_SUPERTRANSPORTER) - { - orderDroidLoc(psDroid, DORDER_DISEMBARK, mouseTileX * - TILE_UNITS + TILE_UNITS/2, mouseTileY * TILE_UNITS + - TILE_UNITS/2); - } - else - { - //de-select any other units - psDroid->selected = false; - } - } - } - } - else -#endif - { - clearSelection(); - intObjectSelected(NULL); - memset(DROIDDOING, 0x0 , sizeof(DROIDDOING)); // clear string when deselected - } + clearSelection(); + intObjectSelected(NULL); + memset(DROIDDOING, 0x0 , sizeof(DROIDDOING)); // clear string when deselected } } } - /* if there is a valid object under the mouse this routine returns not only the type of the object in the return code, but also a pointer to the BASE_OBJECT) ... well if your going to be "object orientated" you might as well do it right - it sets it to null if we don't find anything @@ -2738,12 +2619,6 @@ STRUCTURE *psStructure; { retVal = MT_OWNSTRINCOMP; } - - // standard buildings. - //else if(buildingDamaged(psStructure)) - //{ - // retVal = MT_OWNSTRDAM; - //} else { /* All the different stages of construction */ @@ -2757,7 +2632,6 @@ STRUCTURE *psStructure; } } - /* Send the result back - if it's null then we clicked on an area of terrain */ /* make unseen objects just look like terrain. */ if(retVal == MT_NOTARGET || !(psNotDroid->visible[selectedPlayer]) ) @@ -2767,14 +2641,12 @@ STRUCTURE *psStructure; return(retVal); } - // Indicates the priority given to any given droid // type in a multiple droid selection, the larger the // number, the lower the priority. The order of entries // corresponds to the order of droid types in the DROID_TYPE // enum in DroidDef.h // -//#define NUM_DROID_WEIGHTS (10) #define NUM_DROID_WEIGHTS (14) UBYTE DroidSelectionWeights[NUM_DROID_WEIGHTS] = { 3, //DROID_WEAPON, @@ -2793,7 +2665,6 @@ UBYTE DroidSelectionWeights[NUM_DROID_WEIGHTS] = { 10, //DROID_SUPERTRANSPORTER }; - /* Only deals with one type of droid being selected!!!! */ /* We'll have to make it assesss which selection is to be dominant in the case of multiple selections */ @@ -2801,8 +2672,6 @@ static SELECTION_TYPE establishSelection(UDWORD selectedPlayer) { DROID *psDroid,*psDominant=NULL; UBYTE CurrWeight; -//bool gotWeapon = false; -//DROID *psWeapDroid = NULL; bool atLeastOne; SELECTION_TYPE selectionClass; @@ -2813,23 +2682,6 @@ SELECTION_TYPE selectionClass; for(psDroid = apsDroidLists[selectedPlayer]; psDroid /*&& !atLeastOne*/; psDroid = psDroid->psNext) { - // This code dos'nt work, what about the case of a selection of DROID_WEAPON types with a - // DROID_CONSTRUCT type grouped with them,claims to handle this but dos'nt. -//PD if(psDroid->selected) -//PD { -//PD atLeastOne = true; -//PD if(psDroid->type == DROID_WEAPON) -//PD { -//PD gotWeapon = true; -//PD psWeapDroid = psDroid; -//PD } -//PD if (psDroid->droidType == DROID_COMMAND || -//PD psDominant == NULL) -//PD { -//PD psDominant = psDroid; -//PD } -//PD } - // This works, uses the DroidSelectionWeights[] table to priorities the different // droid types and find the dominant selection. if(psDroid->selected) { @@ -2844,16 +2696,6 @@ SELECTION_TYPE selectionClass; } } -// /* Weapon droids in a selection will override all others */ -// if(psWeapDroid) -// { -// psDominant = psWeapDroid; -// } - -// if(psDominant) { -// DBPRINTF(("Dominant selection type == %d\n",psDominant->droidType)); -// } - if(atLeastOne) { psDominantSelected = psDominant; @@ -2942,7 +2784,6 @@ bool repairDroidSelected(UDWORD player) //didn't find one... return false; - } /*Looks through the list of selected players droids to see if one is a VTOL droid*/ @@ -2962,7 +2803,6 @@ bool vtolDroidSelected(UDWORD player) //didn't find one... return false; - } /*Looks through the list of selected players droids to see if any is selected*/ @@ -2980,7 +2820,6 @@ bool anyDroidSelected(UDWORD player) //didn't find one... return false; - } /*Looks through the list of selected players droids to see if one is a cyborg droid*/ @@ -2998,11 +2837,8 @@ bool cyborgDroidSelected(UDWORD player) //didn't find one... return false; - } - - /* Clear the selection flag for a player */ void clearSel(void) { @@ -3022,26 +2858,18 @@ void clearSel(void) psStruct->selected = false; } bLasSatStruct = false; - //can a feature ever be selected? - /*for(psFeat = apsFeatureLists[0]; psFeat; - psFeat = psFeat->psNext) - { - psFeat->selected = false; - }*/ //clear the Deliv Point if one for (psFlagPos = apsFlagPosLists[selectedPlayer]; psFlagPos; psFlagPos = psFlagPos->psNext) { psFlagPos->selected = false; } - deliveryPointToMove = NULL; setSelectedGroup(UBYTE_MAX); setSelectedCommander(UBYTE_MAX); intRefreshScreen(); } - // Clear the selection and stop driver mode. // void clearSelection(void) @@ -3055,3 +2883,10 @@ void setSensorAssigned(void) { bSensorAssigned = true; } + +/* Initialise the display system */ +bool dispInitialise(void) +{ + flagReposVarsValid = false; + return true; +} diff --git a/src/display.h b/src/display.h index 91a7d91..d8ec6ba 100644 --- a/src/display.h +++ b/src/display.h @@ -183,11 +183,12 @@ BASE_OBJECT *mouseTarget( void ); bool StartObjectOrbit(BASE_OBJECT *psObj); void CancelObjectOrbit(void); -extern void FinishDeliveryPosition(UDWORD xPos,UDWORD yPos,void *UserData); -extern void CancelDeliveryRepos(void); -extern void StartDeliveryPosition( OBJECT_POSITION *psLocation ); -extern bool DeliveryReposValid(void); -extern FLAG_POSITION *deliveryPointToMove; +extern void cancelDeliveryRepos(void); +extern void startDeliveryPosition(FLAG_POSITION *psFlag); +extern bool deliveryReposValid(void); +extern void processDeliveryRepos(void); +extern void renderDeliveryRepos(void); +extern bool deliveryReposFinished(FLAG_POSITION *psFlag = NULL); extern void StartTacticalScrollObj(bool driveActive,BASE_OBJECT *psObj); extern void CancelTacticalScroll(void); @@ -218,8 +219,6 @@ extern void setSensorAssigned(void); extern void setShakeStatus( bool val ); extern bool getShakeStatus( void ); -extern void displayInitVars(void); - void AddDerrickBurningMessage(void); // check whether the queue order keys are pressed diff --git a/src/display3d.cpp b/src/display3d.cpp index d9f18d6..cc8711f 100644 --- a/src/display3d.cpp +++ b/src/display3d.cpp @@ -1724,19 +1724,6 @@ void displayBlueprints(void) blueprints.push_back(blueprint); } } - else - { - ASSERT(deliveryPointToMove != NULL, "Expected a delivery point."); - if (deliveryPointToMove) - { - // it's a droid (from the debug menu) or a delivery point - FLAG_POSITION pos = *deliveryPointToMove; - pos.coords.x = world_coord(sBuildDetails.x)+world_coord(1)/2; - pos.coords.y = world_coord(sBuildDetails.y)+world_coord(1)/2; - pos.coords.z = map_Height(pos.coords.x, pos.coords.y) + world_coord(1)/8; - renderDeliveryPoint(&pos, true); - } - } } // now we draw the blueprints for all ordered buildings @@ -1770,6 +1757,8 @@ void displayBlueprints(void) { blueprint->renderBlueprint(); } + + renderDeliveryRepos(); } /// Draw Factory Delivery Points @@ -2616,7 +2605,7 @@ void renderDeliveryPoint(FLAG_POSITION *psPosition, bool blueprint) if (blueprint) { - colour = (buildState == BUILD3D_VALID) ? WZCOL_BLUEPRINT_VALID : WZCOL_BLUEPRINT_INVALID; + colour = deliveryReposValid() ? WZCOL_BLUEPRINT_VALID : WZCOL_BLUEPRINT_INVALID; } else { @@ -2863,7 +2852,7 @@ static void drawWeaponReloadBar(BASE_OBJECT *psObj, WEAPON *psWeap, int weapon_s if (psObj->type == OBJ_DROID && isVtolDroid((DROID *)psObj)) { //deal with VTOLs - firingStage = getNumAttackRuns((DROID *)psObj, weapon_slot) - ((DROID *)psObj)->sMove.iAttackRuns[weapon_slot]; + firingStage = getNumAttackRuns((DROID *)psObj, weapon_slot) - ((DROID *)psObj)->asWeaps[weapon_slot].usedAmmo; //compare with max value interval = getNumAttackRuns((DROID *)psObj, weapon_slot); diff --git a/src/droid.cpp b/src/droid.cpp index 0054916..b250465 100644 --- a/src/droid.cpp +++ b/src/droid.cpp @@ -1898,6 +1898,7 @@ DROID *reallyBuildDroid(DROID_TEMPLATE *pTemplate, Position pos, UDWORD player, // Initialise the movement stuff psDroid->baseSpeed = calcDroidBaseSpeed(pTemplate, psDroid->weight, (UBYTE)player); + psDroid->sMove.asPath = NULL; initDroidMovement(psDroid); // it was never drawn before @@ -1988,6 +1989,7 @@ DROID *buildDroid(DROID_TEMPLATE *pTemplate, UDWORD x, UDWORD y, UDWORD player, //initialises the droid movement model void initDroidMovement(DROID *psDroid) { + free(psDroid->sMove.asPath); memset(&psDroid->sMove, 0, sizeof(MOVE_CONTROL)); } @@ -2021,6 +2023,7 @@ void droidSetBits(DROID_TEMPLATE *pTemplate,DROID *psDroid) psDroid->asWeaps[inc].nStat = pTemplate->asWeaps[inc]; psDroid->asWeaps[inc].ammo = (asWeaponStats + psDroid->asWeaps[inc].nStat)->numRounds; } + psDroid->asWeaps[inc].usedAmmo = 0; } //allocate the components hit points psDroid->asBits[COMP_BODY].nStat = (UBYTE)pTemplate->asParts[COMP_BODY]; @@ -2963,7 +2966,7 @@ bool vtolEmpty(DROID *psDroid) for (i = 0; i < psDroid->numWeaps; i++) { if (asWeaponStats[psDroid->asWeaps[i].nStat].vtolAttackRuns > 0 && - psDroid->sMove.iAttackRuns[i] < getNumAttackRuns(psDroid, i)) + psDroid->asWeaps[i].usedAmmo < getNumAttackRuns(psDroid, i)) { return false; } @@ -2991,7 +2994,7 @@ bool vtolFull(DROID *psDroid) for (i = 0; i < psDroid->numWeaps; i++) { if (asWeaponStats[psDroid->asWeaps[i].nStat].vtolAttackRuns > 0 && - psDroid->sMove.iAttackRuns[i] > 0) + psDroid->asWeaps[i].usedAmmo > 0) { return false; } @@ -3177,7 +3180,7 @@ bool vtolHappy(const DROID* psDroid) for (i = 0; i < psDroid->numWeaps; ++i) { if (asWeaponStats[psDroid->asWeaps[i].nStat].vtolAttackRuns > 0 - && psDroid->sMove.iAttackRuns[i] != 0) + && psDroid->asWeaps[i].usedAmmo != 0) { return false; } @@ -3195,42 +3198,18 @@ void updateVtolAttackRun(DROID *psDroid , int weapon_slot) { if (asWeaponStats[psDroid->asWeaps[weapon_slot].nStat].vtolAttackRuns > 0) { - psDroid->sMove.iAttackRuns[weapon_slot]++; - if (psDroid->sMove.iAttackRuns[weapon_slot] == getNumAttackRuns(psDroid, weapon_slot)) + ++psDroid->asWeaps[weapon_slot].usedAmmo; + if (psDroid->asWeaps[weapon_slot].usedAmmo == getNumAttackRuns(psDroid, weapon_slot)) { psDroid->asWeaps[weapon_slot].ammo = 0; } //quick check doesn't go over limit - ASSERT( psDroid->sMove.iAttackRuns[weapon_slot] < UWORD_MAX, "too many attack runs"); + ASSERT(psDroid->asWeaps[weapon_slot].usedAmmo < UWORD_MAX, "too many attack runs"); } } } } -/*this mends the VTOL when it has been returned to home base whilst on an -offworld mission*/ -void mendVtol(DROID *psDroid) -{ - UBYTE i; - ASSERT_OR_RETURN( , vtolEmpty(psDroid), "droid is not an empty weapon VTOL!"); - - CHECK_DROID(psDroid); - - /* set rearm value to no runs made */ - for (i = 0;i < psDroid->numWeaps;i++) - { - psDroid->sMove.iAttackRuns[i] = 0; - //reset ammo and lastTimeFired - psDroid->asWeaps[i].ammo = asWeaponStats[psDroid-> - asWeaps[i].nStat].numRounds; - psDroid->asWeaps[i].lastFired = 0; - } - /* set droid points to max */ - psDroid->body = psDroid->originalBody; - - CHECK_DROID(psDroid); -} - //assign rearmPad to the VTOL void assignVTOLPad(DROID *psNewDroid, STRUCTURE *psReArmPad) { diff --git a/src/droid.h b/src/droid.h index d4b93d8..6d381d8 100644 --- a/src/droid.h +++ b/src/droid.h @@ -286,9 +286,6 @@ extern bool vtolFull(DROID *psDroid); /*Checks a vtol for being fully armed and fully repaired to see if ready to leave reArm pad */ extern bool vtolHappy(const DROID* psDroid); -/*this mends the VTOL when it has been returned to home base whilst on an -offworld mission*/ -extern void mendVtol(DROID *psDroid); /*checks if the droid is a VTOL droid and updates the attack runs as required*/ extern void updateVtolAttackRun(DROID *psDroid, int weapon_slot); /*returns a count of the base number of attack runs for the weapon attached to the droid*/ diff --git a/src/edit3d.cpp b/src/edit3d.cpp index e6a5255..d59432d 100644 --- a/src/edit3d.cpp +++ b/src/edit3d.cpp @@ -157,7 +157,6 @@ void init3DBuilding(BASE_STATS *psStats,BUILDCALLBACK CallBack,void *UserData) void kill3DBuilding ( void ) { - CancelDeliveryRepos(); //cancel the drag boxes dragBox3D.status = DRAG_INACTIVE; wallDrag.status = DRAG_INACTIVE; @@ -243,7 +242,7 @@ bool found3DBuilding(UDWORD *x, UDWORD *y) if (ctrlShiftDown()) { quickQueueMode = true; - init3DBuilding(sBuildDetails.psStats, NULL, NULL); + init3DBuilding(sBuildDetails.psStats, sBuildDetails.CallBack, sBuildDetails.UserData); } else { @@ -280,7 +279,7 @@ bool found3DBuildLocTwo(UDWORD *px1, UDWORD *py1, UDWORD *px2, UDWORD *py2) if (ctrlShiftDown()) { quickQueueMode = true; - init3DBuilding(sBuildDetails.psStats, NULL, NULL); + init3DBuilding(sBuildDetails.psStats, sBuildDetails.CallBack, sBuildDetails.UserData); } return true; diff --git a/src/frend.h b/src/frend.h index 4d45732..3a646d4 100644 --- a/src/frend.h +++ b/src/frend.h @@ -205,6 +205,8 @@ enum IMAGE_NO_VTOL, IMAGE_NO_CYBORG, IMAGE_NO_TANK, + IMAGE_NO_UPLINK, + IMAGE_NO_LASSAT, IMAGE_EASY, IMAGE_MEDIUM, IMAGE_HARD, diff --git a/src/frontend.cpp b/src/frontend.cpp index a381fbc..f4d63db 100644 --- a/src/frontend.cpp +++ b/src/frontend.cpp @@ -300,6 +300,7 @@ static void SPinit(void) playercolor = 0; // default is green } setPlayerColour(0, playercolor); + game.hash.setZero(); // must reset this to zero } bool runSinglePlayerMenu(void) @@ -887,7 +888,7 @@ static bool startVideoOptionsMenu(void) // Shaders addTextButton(FRONTEND_SHADERS, FRONTEND_POS6X-35, FRONTEND_POS7Y, _("Shaders"), 0); - if (war_GetShaders() == SHADERS_ON) + if (war_GetShaders() == SHADERS_ON || war_GetShaders() == SHADERS_ONLY) { addTextButton(FRONTEND_SHADERS_R, FRONTEND_POS6M-55, FRONTEND_POS7Y, _("On"), 0); } @@ -1063,16 +1064,18 @@ bool runVideoOptionsMenu(void) { case SHADERS_ON: war_SetShaders(SHADERS_OFF); + pie_SetShaderUsage(false); widgSetString(psWScreen, FRONTEND_SHADERS_R, _("Off")); break; case SHADERS_OFF: war_SetShaders(SHADERS_ON); + pie_SetShaderUsage(true); widgSetString(psWScreen, FRONTEND_SHADERS_R, _("On")); break; case FALLBACK: + case SHADERS_ONLY: break; } - pie_SetShaderUsage(war_GetShaders()==SHADERS_ON); break; } @@ -1491,7 +1494,7 @@ static void displayTitleBitmap(WZ_DECL_UNUSED WIDGET *psWidget, WZ_DECL_UNUSED U // show warzone logo static void displayLogo(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, WZ_DECL_UNUSED PIELIGHT *pColours) { - iV_DrawImage(FrontImages,IMAGE_FE_LOGO,xOffset+psWidget->x,yOffset+psWidget->y); + iV_DrawImage(FrontImages, IMAGE_FE_LOGO, xOffset + psWidget->x, std::max<int>(yOffset + psWidget->y, 0)); } @@ -1675,10 +1678,10 @@ void addTopForm(void) sFormInit.formID= FRONTEND_TOPFORM; sFormInit.id = FRONTEND_LOGO; - sFormInit.x = (short)((sFormInit.width/2)-(FRONTEND_LOGOW/2)); //115; - sFormInit.y = (short)((sFormInit.height/2)-(FRONTEND_LOGOH/2));//18; - sFormInit.width = FRONTEND_LOGOW; - sFormInit.height= FRONTEND_LOGOH; + sFormInit.x = sFormInit.width/2 - iV_GetImageWidth(FrontImages, IMAGE_FE_LOGO)/2; + sFormInit.y = sFormInit.height/2 - iV_GetImageHeight(FrontImages, IMAGE_FE_LOGO)/2; + sFormInit.width = iV_GetImageWidth(FrontImages, IMAGE_FE_LOGO); + sFormInit.height= iV_GetImageHeight(FrontImages, IMAGE_FE_LOGO); sFormInit.pDisplay= displayLogo; widgAddForm(psWScreen, &sFormInit); } diff --git a/src/frontend.h b/src/frontend.h index 80a6443..3af00e0 100644 --- a/src/frontend.h +++ b/src/frontend.h @@ -145,8 +145,6 @@ bool CancelPressed(void); #define FRONTEND_SIDEX 24 #define FRONTEND_SIDEY FRONTEND_BOTFORMY -#define FRONTEND_LOGOW 248 -#define FRONTEND_LOGOH 118 enum { diff --git a/src/game.cpp b/src/game.cpp index 5388c73..148b63a 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1936,7 +1936,7 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User pFileData = fileLoadBuffer; if (!loadFileToBuffer(aFileName, pFileData, FILE_LOAD_BUFFER_SIZE, &fileSize)) { - debug( LOG_NEVER, "loadgame: Fail23\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } @@ -1946,7 +1946,7 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User { if (!loadTerrainTypeMap(pFileData, fileSize)) { - debug( LOG_NEVER, "loadgame: Fail25\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } } @@ -1992,7 +1992,7 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User //load the data into apsTemplates if (!loadSaveTemplate(aFileName)) { - debug(LOG_NEVER, "Failed to load templates from %s", aFileName); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } } @@ -2015,7 +2015,7 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User strcat(aFileName, "mission.map"); if (!mapLoad(aFileName, false)) { - debug(LOG_ERROR, "Failed to load map"); + debug(LOG_ERROR, "Failed with: %s", aFileName); return false; } @@ -2026,7 +2026,7 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User // Load in the visibility data from the chosen file if (!readVisibilityData(aFileName)) { - debug( LOG_NEVER, "loadgame: Fail33\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } @@ -2044,12 +2044,12 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User pFileData = fileLoadBuffer; if (!loadFileToBuffer(aFileName, pFileData, FILE_LOAD_BUFFER_SIZE, &fileSize)) { - debug( LOG_NEVER, "loadgame: Fail14\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } if (!loadSaveFeature(pFileData, fileSize)) { - debug( LOG_NEVER, "loadgame: Fail16\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } } @@ -2067,13 +2067,13 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User pFileData = fileLoadBuffer; if (!loadFileToBuffer(aFileName, pFileData, FILE_LOAD_BUFFER_SIZE, &fileSize)) { - debug( LOG_NEVER, "loadgame: Fail17\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } //load the data into apsStructLists if (!loadSaveStructure(pFileData, fileSize)) { - debug( LOG_NEVER, "loadgame: Fail19\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } } @@ -2130,7 +2130,7 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User strcat(aFileName, "game.map"); if (!mapLoad(aFileName, false)) { - debug( LOG_NEVER, "loadgame: Fail7\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); return(false); } } @@ -2149,7 +2149,7 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User // load the fx data from the file if (!readFXData(aFileName)) { - debug(LOG_ERROR, "loadgame: Fail33"); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } } @@ -2206,12 +2206,12 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User pFileData = fileLoadBuffer; if (!loadFileToBuffer(aFileName, pFileData, FILE_LOAD_BUFFER_SIZE, &fileSize)) { - debug( LOG_NEVER, "loadgame: Fail8\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } if (!loadSaveDroidInit(pFileData,fileSize)) { - debug( LOG_NEVER, "loadgame: Fail10\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } debug(LOG_SAVE, "Loaded old style droids"); @@ -2284,14 +2284,14 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User pFileData = fileLoadBuffer; if (!loadFileToBuffer(aFileName, pFileData, FILE_LOAD_BUFFER_SIZE, &fileSize)) { - debug( LOG_NEVER, "loadgame: Fail14\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } //load the data into apsFeatureLists if (!loadSaveFeature(pFileData, fileSize)) { - debug( LOG_NEVER, "loadgame: Fail16\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } } @@ -2308,13 +2308,13 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User pFileData = fileLoadBuffer; if (!loadFileToBuffer(aFileName, pFileData, FILE_LOAD_BUFFER_SIZE, &fileSize)) { - debug( LOG_NEVER, "loadgame: Fail17\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } //load the data into apsStructLists if (!loadSaveStructure(pFileData, fileSize)) { - debug( LOG_NEVER, "loadgame: Fail19\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } } @@ -2357,7 +2357,7 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User // Load in the visibility data from the chosen file if (!readVisibilityData(aFileName)) { - debug( LOG_NEVER, "loadgame: Fail33\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } } @@ -2375,7 +2375,7 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User // Load the fx data from the chosen file if (!readScoreData(aFileName)) { - debug( LOG_NEVER, "loadgame: Fail33\n" ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } } @@ -2393,7 +2393,7 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User if (!readFiresupportDesignators(aFileName)) { - debug( LOG_NEVER, "loadMissionExtras: readFiresupportDesignators(%s) failed\n", aFileName ); + debug(LOG_ERROR, "Failed with: %s", aFileName); goto error; } } @@ -2506,7 +2506,8 @@ bool loadGame(const char *pGameToLoad, bool keepObjects, bool freeMem, bool User return true; error: - debug(LOG_ERROR, "Game load failed"); + debug(LOG_ERROR, "Game load failed for %s, FS:%s, params=%s,%s,%s", pGameToLoad, PHYSFS_getRealDir(pGameToLoad), + keepObjects ? "true":"false", freeMem ? "true":"false", UserSaveGame ? "true":"false"); /* Clear all the objects off the map and free up the map memory */ freeAllDroids(); @@ -4310,9 +4311,9 @@ static bool loadSaveDroid(const char *pFileName, DROID **ppsCurrentDroidLists) psDroid->sMove.iVertSpeed = ini.value("vertSpeed").toInt(); psDroid->sMove.bumpTime = ini.value("bumpTime").toInt(); psDroid->sMove.shuffleStart = ini.value("shuffleStart").toInt(); - for (int j = 0; j < sizeof(psDroid->sMove.iAttackRuns) / sizeof(psDroid->sMove.iAttackRuns[0]); ++j) + for (int j = 0; j < DROID_MAXWEAPS; ++j) { - psDroid->sMove.iAttackRuns[j] = ini.value("attackRun/" + QString::number(j)).toInt(); + psDroid->asWeaps[j].usedAmmo = ini.value("attackRun/" + QString::number(j)).toInt(); } psDroid->sMove.lastBump = ini.value("lastBump").toInt(); psDroid->sMove.pauseTime = ini.value("pauseTime").toInt(); @@ -4460,9 +4461,9 @@ static bool writeDroid(WzConfig &ini, DROID *psCurr, bool onMission, int &counte ini.setValue("vertSpeed", psCurr->sMove.iVertSpeed); ini.setValue("bumpTime", psCurr->sMove.bumpTime); ini.setValue("shuffleStart", psCurr->sMove.shuffleStart); - for (int i = 0; i < sizeof(psCurr->sMove.iAttackRuns) / sizeof(psCurr->sMove.iAttackRuns[0]); ++i) + for (int i = 0; i < DROID_MAXWEAPS; ++i) { - ini.setValue("attackRun/" + QString::number(i), psCurr->sMove.iAttackRuns[i]); + ini.setValue("attackRun/" + QString::number(i), psCurr->asWeaps[i].usedAmmo); } ini.setValue("lastBump", psCurr->sMove.lastBump); ini.setValue("pauseTime", psCurr->sMove.pauseTime); diff --git a/src/hci.cpp b/src/hci.cpp index 254d64d..6d663fc 100644 --- a/src/hci.cpp +++ b/src/hci.cpp @@ -88,8 +88,6 @@ bool SecondaryWindowUp = false; static UDWORD newMapWidth, newMapHeight; -static FLAG_POSITION debugMenuDroidDeliveryPoint; - #define RETXOFFSET (0)// Reticule button offset #define RETYOFFSET (0) #define NUMRETBUTS 7 // Number of reticule buttons. @@ -822,7 +820,7 @@ static void intDoScreenRefresh(void) if (psFlag != NULL) { // need to restart the delivery point position - StartDeliveryPosition(psFlag); + startDeliveryPosition(psFlag); } // make sure the commander order screen is in the right state @@ -1355,12 +1353,17 @@ static void intProcessEditStats(UDWORD id) if (psPositionStats->ref >= REF_TEMPLATE_START && psPositionStats->ref < REF_TEMPLATE_START + REF_RANGE) { + FLAG_POSITION debugMenuDroidDeliveryPoint; // Placing a droid from the debug menu, set up the flag. (This would probably be safe to do, even if we're placing something else.) debugMenuDroidDeliveryPoint.factoryType = REPAIR_FLAG; debugMenuDroidDeliveryPoint.factoryInc = 0; - deliveryPointToMove = &debugMenuDroidDeliveryPoint; + debugMenuDroidDeliveryPoint.player = selectedPlayer; + startDeliveryPosition(&debugMenuDroidDeliveryPoint); + } + else + { + intStartStructPosition(psPositionStats); } - intStartStructPosition(psPositionStats); editPosMode = IED_POS; } else if (id == IDSTAT_CLOSE) @@ -1905,9 +1908,10 @@ INT_RETVAL intRunWidgets(void) /* Directly positioning some type of object */ unsigned structX1 = INT32_MAX; unsigned structY1 = INT32_MAX; + FLAG_POSITION flag; structX2 = INT32_MAX - 1; structY2 = INT32_MAX - 1; - if (found3DBuildLocTwo(&structX1, &structY1, &structX2, &structY2) || found3DBuilding(&structX1, &structY1)) + if (sBuildDetails.psStats && (found3DBuilding(&structX1, &structY1) || found3DBuildLocTwo(&structX1, &structY1, &structX2, &structY2))) { if (structX2 == INT32_MAX - 1) { @@ -1923,6 +1927,12 @@ INT_RETVAL intRunWidgets(void) std::swap(structY1, structY2); } } + else if (deliveryReposFinished(&flag)) + { + structX2 = structX1 = map_coord(flag.coords.x); + structY2 = structY1 = map_coord(flag.coords.y); + } + for (unsigned j = structY1; j <= structY2; ++j) for (unsigned i = structX1; i <= structX2; ++i) { @@ -2001,6 +2011,7 @@ INT_RETVAL intRunWidgets(void) psDroid = buildDroid((DROID_TEMPLATE *)psPositionStats, world_coord(structX) + TILE_UNITS / 2, world_coord(structY) + TILE_UNITS / 2, selectedPlayer, false, NULL); + cancelDeliveryRepos(); if (psDroid) { addDroid(psDroid, apsDroidLists); @@ -2751,7 +2762,7 @@ static void intProcessStats(UDWORD id) psFlag = FindFactoryDelivery(psStruct); if (psFlag) { - StartDeliveryPosition(psFlag); + startDeliveryPosition(psFlag); } } } @@ -2897,8 +2908,6 @@ void intCommanderSelected(DROID *psDroid) widgHide(psWScreen, IDOBJ_FORM); } -extern void FinishStructurePosition(UDWORD xPos,UDWORD yPos,void *UserData); - /* Start looking for a structure location */ static void intStartStructPosition(BASE_STATS *psStats) { diff --git a/src/init.cpp b/src/init.cpp index d7ee4e8..8549695 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1143,7 +1143,6 @@ bool stageThreeInitialise(void) // Re-inititialise some static variables. driveInitVars(false); - displayInitVars(); resizeRadar(); setAllPauseStates(false); diff --git a/src/levels.cpp b/src/levels.cpp index 5b5832b..f62512a 100644 --- a/src/levels.cpp +++ b/src/levels.cpp @@ -176,6 +176,19 @@ Sha256 levGetFileHash(LEVEL_DATASET *level) return level->realFileHash; } +Sha256 levGetMapNameHash(char const *mapName) +{ + LEVEL_DATASET *level = levFindDataSet(mapName, NULL); + if (level == NULL) + { + debug(LOG_WARNING, "Couldn't find map \"%s\" to hash.", mapName); + Sha256 zero; + zero.setZero(); + return zero; + } + return levGetFileHash(level); +} + // parse a level description data file // the ignoreWrf hack is for compatibility with old maps that try to link in various // data files that we have removed @@ -635,7 +648,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP psNewLevel = levFindDataSet(name, hash); if (psNewLevel == NULL) { - debug(LOG_WZ, "Dataset %s not found - trying to load as WRF", name); + debug(LOG_INFO, "Dataset %s not found - trying to load as WRF", name); return levLoadSingleWRF(name); } debug(LOG_WZ, "** Data set found is %s type %d", psNewLevel->pName, (int)psNewLevel->type); @@ -682,6 +695,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP psCurrLevel->psBaseData, psNewLevel->psBaseData, (int)psCurrLevel->type, (int)psNewLevel->type); if (!levReleaseAll()) // this sets psCurrLevel to NULL { + debug(LOG_ERROR, "Failed to release old data"); return false; } } @@ -710,6 +724,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP setCurrentMap(psNewLevel->realFileName, psNewLevel->players); if (!rebuildSearchPath(psNewLevel->dataDir, true)) { + debug(LOG_ERROR, "Failed to rebuild search path"); return false; } @@ -719,6 +734,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "Reseting old mission data"); if (!levReleaseMissionData()) { + debug(LOG_ERROR, "Failed to unload old mission data"); return false; } } @@ -729,6 +745,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP { if (!saveGameReset()) { + debug(LOG_ERROR, "Failed to saveGameReset()!"); return false; } } @@ -740,6 +757,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "Calling stageOneInitialise!"); if (!stageOneInitialise()) { + debug(LOG_ERROR, "Failed stageOneInitialise!"); return false; } } @@ -756,6 +774,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "Loading [directory: %s] %s ...", PHYSFS_getRealDir(psBaseData->apDataFiles[i]), psBaseData->apDataFiles[i]); if (!resLoad(psBaseData->apDataFiles[i], i)) { + debug(LOG_ERROR, "Failed resLoad(%s)!", psBaseData->apDataFiles[i]); return false; } } @@ -765,6 +784,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP { if (!campaignReset()) { + debug(LOG_ERROR, "Failed campaignReset()!"); return false; } } @@ -779,6 +799,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP { if (!stageTwoInitialise()) { + debug(LOG_ERROR, "Failed stageTwoInitialise()!"); return false; } } @@ -789,6 +810,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "Init mission stuff"); if (!startMissionSave(psNewLevel->type)) { + debug(LOG_ERROR, "Failed startMissionSave(%d)!", psNewLevel->type); return false; } @@ -799,6 +821,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_NEVER, "Loading savegame: %s", pSaveName); if (!loadGame(pSaveName, false, true,true)) { + debug(LOG_ERROR, "Failed loadGame(%s)!", pSaveName); return false; } } @@ -809,6 +832,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_NEVER, "Start mission - no .gam"); if (!startMission((LEVEL_TYPE)psNewLevel->type, NULL)) { + debug(LOG_ERROR, "Failed startMission(%d)!", psNewLevel->type); return false; } } @@ -823,6 +847,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP { if (!stageTwoInitialise()) { + debug(LOG_ERROR, "Failed stageTwoInitialise() [camchange]!"); return false; } } @@ -830,6 +855,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_NEVER, "loading savegame: %s", pSaveName); if (!loadGame(pSaveName, false, true,true)) { + debug(LOG_ERROR, "Failed loadGame(%s)!", pSaveName); return false; } @@ -852,6 +878,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP { if (!stageTwoInitialise()) { + debug(LOG_ERROR, "Failed stageTwoInitialise() [newdata]!"); return false; } } @@ -865,6 +892,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "Init mission stuff"); if (!startMissionSave(psNewLevel->type)) { + debug(LOG_ERROR, "Failed startMissionSave(%d)!", psNewLevel->type); return false; } @@ -875,6 +903,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_NEVER, "Loading save game %s", pSaveName); if (!loadGame(pSaveName, false, true,true)) { + debug(LOG_ERROR, "Failed loadGame(%s)!", pSaveName); return false; } } @@ -891,6 +920,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "LDS_COMPLETE / LDS_CAMSTART"); if (!startMission(LDS_CAMSTART, psNewLevel->apDataFiles[i])) { + debug(LOG_ERROR, "Failed startMission(%d, %s)!", LDS_CAMSTART, psNewLevel->apDataFiles[i]); return false; } break; @@ -898,6 +928,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "LDS_BETWEEN"); if (!startMission(LDS_BETWEEN, psNewLevel->apDataFiles[i])) { + debug(LOG_ERROR, "Failed startMission(%d, %s)!", LDS_BETWEEN, psNewLevel->apDataFiles[i]); return false; } break; @@ -906,6 +937,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "LDS_MKEEP"); if (!startMission(LDS_MKEEP, psNewLevel->apDataFiles[i])) { + debug(LOG_ERROR, "Failed startMission(%d, %s)!", LDS_MKEEP, psNewLevel->apDataFiles[i]); return false; } break; @@ -913,6 +945,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "LDS_CAMCHANGE"); if (!startMission(LDS_CAMCHANGE, psNewLevel->apDataFiles[i])) { + debug(LOG_ERROR, "Failed startMission(%d, %s)!", LDS_CAMCHANGE, psNewLevel->apDataFiles[i]); return false; } break; @@ -921,6 +954,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "LDS_EXPAND"); if (!startMission(LDS_EXPAND, psNewLevel->apDataFiles[i])) { + debug(LOG_ERROR, "Failed startMission(%d, %s)!", LDS_EXPAND, psNewLevel->apDataFiles[i]); return false; } break; @@ -928,6 +962,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "LDS_LIMBO"); if (!startMission(LDS_EXPAND_LIMBO, psNewLevel->apDataFiles[i])) { + debug(LOG_ERROR, "Failed startMission(%d, %s)!", LDS_EXPAND_LIMBO, psNewLevel->apDataFiles[i]); return false; } break; @@ -936,6 +971,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "LDS_MCLEAR"); if (!startMission(LDS_MCLEAR, psNewLevel->apDataFiles[i])) { + debug(LOG_ERROR, "Failed startMission(%d, %s)!", LDS_MCLEAR, psNewLevel->apDataFiles[i]); return false; } break; @@ -943,15 +979,16 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "LDS_MKEEP_LIMBO"); if (!startMission(LDS_MKEEP_LIMBO, psNewLevel->apDataFiles[i])) { + debug(LOG_ERROR, "Failed startMission(%d, %s)!", LDS_MKEEP_LIMBO, psNewLevel->apDataFiles[i]); return false; } break; default: - ASSERT( psNewLevel->type >= LDS_MULTI_TYPE_START, - "levLoadData: Unexpected mission type" ); + ASSERT( psNewLevel->type >= LDS_MULTI_TYPE_START, "Unexpected mission type" ); debug(LOG_WZ, "default (MULTIPLAYER)"); if (!startMission(LDS_CAMSTART, psNewLevel->apDataFiles[i])) { + debug(LOG_ERROR, "Failed startMission(%d, %s) (default)!", LDS_CAMSTART, psNewLevel->apDataFiles[i]); return false; } break; @@ -964,6 +1001,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_WZ, "Loading %s", psNewLevel->apDataFiles[i]); if (!resLoad(psNewLevel->apDataFiles[i], i + CURRENT_DATAID)) { + debug(LOG_ERROR, "Failed resLoad(%s, %d) (default)!", psNewLevel->apDataFiles[i], i + CURRENT_DATAID); return false; } } @@ -974,6 +1012,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP //load MidMission Extras if (!loadMissionExtras(pSaveName, psNewLevel->type)) { + debug(LOG_ERROR, "Failed loadMissionExtras(%s, %d)!", pSaveName, psNewLevel->type); return false; } } @@ -989,12 +1028,14 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP debug(LOG_SAVE, "Loading script system state"); if (!loadScriptState(pSaveName)) { + debug(LOG_ERROR, "Failed loadScriptState(%s)!", pSaveName); return false; } } if (!stageThreeInitialise()) { + debug(LOG_ERROR, "Failed stageThreeInitialise()!"); return false; } diff --git a/src/levels.h b/src/levels.h index d83c440..045ad43 100644 --- a/src/levels.h +++ b/src/levels.h @@ -93,6 +93,7 @@ bool levLoadData(char const *name, Sha256 const *hash, char *pSaveName, GAME_TYP LEVEL_DATASET *levFindDataSet(char const *name, Sha256 const *hash = NULL); Sha256 levGetFileHash(LEVEL_DATASET *level); +Sha256 levGetMapNameHash(char const *name); // free the currently loaded dataset extern bool levReleaseAll(void); diff --git a/src/loop.cpp b/src/loop.cpp index d7055e4..84c4845 100644 --- a/src/loop.cpp +++ b/src/loop.cpp @@ -182,6 +182,7 @@ static GAMECODE renderLoop() //handles callbacks for positioning of DP's process3DBuilding(); + processDeliveryRepos(); //ajl. get the incoming netgame messages and process them. // FIXME Previous comment is deprecated. multiPlayerLoop does some other weird stuff, but not that anymore. diff --git a/src/main.cpp b/src/main.cpp index d59c48d..1bf7fc1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1123,6 +1123,9 @@ int realmain(int argc, char *argv[]) snprintf(buf, sizeof(buf), "%slogs%sWZlog-%02d%02d_%02d%02d%02d.txt", PHYSFS_getWriteDir(), PHYSFS_getDirSeparator(), newtime->tm_mon + 1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec ); debug_register_callback( debug_callback_file, debug_callback_file_init, debug_callback_file_exit, buf ); + + // FIXME: Change this to LOG_WZ on next release + debug(LOG_INFO, "Using %s debug file", buf); } // NOTE: it is now safe to use debug() calls to make sure output gets captured. @@ -1248,13 +1251,33 @@ int realmain(int argc, char *argv[]) war_SetWidth(pie_GetVideoBufferWidth()); war_SetHeight(pie_GetVideoBufferHeight()); + // Fix up settings from the config file + // And initialize shader usage setting if (!pie_GetShaderAvailability()) { war_SetShaders(FALLBACK); + pie_SetShaderUsage(false); } else { - pie_SetShaderUsage(war_GetShaders()==SHADERS_ON); + if (war_GetShaders() == FALLBACK) + { + war_SetShaders(SHADERS_OFF); + } + if (!pie_GetFallbackAvailability()) + { + war_SetShaders(SHADERS_ONLY); + pie_SetShaderUsage(true); + } + else if (war_GetShaders() == SHADERS_ONLY || war_GetShaders() == SHADERS_ON) + { + war_SetShaders(SHADERS_ON); + pie_SetShaderUsage(true); + } + else // (war_GetShaders() == SHADERS_OFF) + { + pie_SetShaderUsage(false); + } } pie_SetFogStatus(false); diff --git a/src/map.cpp b/src/map.cpp index bd8fe69..4a4048a 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -128,8 +128,8 @@ static char *Tile_names = NULL; #define ROCKIE 3 static int *map; // 3D array pointer that holds the texturetype -static int *mapDecals; // array that tells us what tile is a decal -#define MAX_TERRAIN_TILES 100 // max that we support (for now) +static bool *mapDecals; // array that tells us what tile is a decal +#define MAX_TERRAIN_TILES 0x0200 // max that we support (for now), see TILE_NUMMASK /* Look up table that returns the terrain type of a given tile texture */ UBYTE terrainTypes[MAX_TILE_TEXTURES]; @@ -686,21 +686,22 @@ static void SetDecals(const char *filename, const char *decal_type) debug(LOG_TERRAIN, "reading: %s, with %d entries", filename, numlines); //increment the pointer to the start of the next record pFileData = strchr(pFileData,'\n') + 1; - if (numlines > MAX_TERRAIN_TILES) - { - debug(LOG_FATAL, "Too many tiles, we only support %d max at this time", MAX_TERRAIN_TILES); - abort(); - } - mapDecals = (int *)malloc(sizeof(int)*MAX_TERRAIN_TILES); // max of 80 tiles that we support - memset(mapDecals, 0x0, sizeof(int)*MAX_TERRAIN_TILES); // set everything to false; + mapDecals = new bool[MAX_TERRAIN_TILES]; + std::fill_n(mapDecals, MAX_TERRAIN_TILES, false); // set everything to false. for (i=0; i < numlines; i++) { + tiledecal = -1; sscanf(pFileData, "%d%n", &tiledecal, &cnt); pFileData += cnt; //increment the pointer to the start of the next record pFileData = strchr(pFileData,'\n') + 1; - mapDecals[tiledecal] = 1; + if ((unsigned)tiledecal > MAX_TERRAIN_TILES) + { + debug(LOG_ERROR, "Tile index is out of range! Was %d, our max is %d", tiledecal, MAX_TERRAIN_TILES); + continue; + } + mapDecals[tiledecal] = true; } } // hasDecals() @@ -1054,7 +1055,7 @@ bool mapShutdown(void) } free(psMapTiles); - free(mapDecals); + delete[] mapDecals; free(psGroundTypes); free(map); free(Tile_names); diff --git a/src/mission.cpp b/src/mission.cpp index 0a8c303..6c23dd5 100644 --- a/src/mission.cpp +++ b/src/mission.cpp @@ -512,8 +512,7 @@ bool startMission(LEVEL_TYPE missionType, char *pGame) if (!loaded) { - debug( LOG_ERROR, "Unable to load mission file" ); - + debug(LOG_ERROR, "Failed to start mission, missiontype = %d, game, %s", (int)missionType, pGame); return false; } @@ -1205,15 +1204,9 @@ bool startMissionOffClear(char *pGame) return false; } - //call after everything has been loaded up - done on stageThreeInit - //gridReset(); - offWorldKeepLists = false; intResetPreviousObj(); - //this gets set when the timer is added in scriptFuncs - //mission.startTime = gameTime; - // The message should have been played at the between stage missionCountDown &= ~NOT_PLAYED_ACTIVATED; @@ -1232,15 +1225,9 @@ bool startMissionOffKeep(char *pGame) return false; } - //call after everything has been loaded up - done on stageThreeInit - //gridReset(); - offWorldKeepLists = true; intResetPreviousObj(); - //this gets set when the timer is added in scriptFuncs - //mission.startTime = gameTime; - // The message should have been played at the between stage missionCountDown &= ~NOT_PLAYED_ACTIVATED; @@ -1301,9 +1288,6 @@ bool startMissionCampaignExpand(char *pGame) return false; } - //call after everything has been loaded up - done on stageThreeInit - //gridReset(); - offWorldKeepLists = false; return true; } @@ -1918,8 +1902,6 @@ void missionMoveTransporterOffWorld( DROID *psTransporter ) eventFireCallbackTrigger((TRIGGER_TYPE)CALL_TRANSPORTER_OFFMAP); transporterSetScriptCurrent( NULL ); - //gridRemoveObject( (BASE_OBJECT *) psTransporter ); - these happen in droidRemove() - //clustRemoveObject( (BASE_OBJECT *) psTransporter ); if (droidRemove(psTransporter, apsDroidLists)) { addDroid(psTransporter, mission.apsDroidLists); diff --git a/src/missiondef.h b/src/missiondef.h index c7d4d36..579275c 100644 --- a/src/missiondef.h +++ b/src/missiondef.h @@ -67,7 +67,6 @@ struct MISSION FEATURE *apsFeatureLists[MAX_PLAYERS]; BASE_OBJECT *apsSensorList[1]; FEATURE *apsOilList[1]; - //struct _proximity_display *apsProxDisp[MAX_PLAYERS]; FLAG_POSITION *apsFlagPosLists[MAX_PLAYERS]; int32_t asCurrentPower[MAX_PLAYERS]; @@ -78,7 +77,6 @@ struct MISSION // < 0 = none allowed UDWORD cheatTime; //time the cheating started (mission time-wise!) - //LANDING_ZONE homeLZ; UWORD homeLZ_X; //selectedPlayer's LZ x and y UWORD homeLZ_Y; SDWORD playerX; //original view position @@ -89,7 +87,6 @@ struct MISSION UWORD iTranspEntryTileY[MAX_PLAYERS]; UWORD iTranspExitTileX[MAX_PLAYERS]; UWORD iTranspExitTileY[MAX_PLAYERS]; - }; #endif // __INCLUDED_MISSIONDEF_H__ diff --git a/src/movedef.h b/src/movedef.h index a4bea0c..a998099 100644 --- a/src/movedef.h +++ b/src/movedef.h @@ -26,9 +26,6 @@ #include "lib/framework/vector.h" -//Watermelon:num of VTOL weapons should be same as DROID_MAXWEAPS -#define VTOL_MAXWEAPS 3 - enum MOVE_STATUS { MOVEINACTIVE, @@ -65,9 +62,6 @@ struct MOVE_CONTROL /* vtol movement - GJ */ SWORD iVertSpeed; - - // iAttackRuns tracks the amount of ammunition a VTOL has remaining for each weapon - UDWORD iAttackRuns[VTOL_MAXWEAPS]; }; #endif // __INCLUDED_MOVEDEF_H__ diff --git a/src/multiint.cpp b/src/multiint.cpp index c2696db..ed91db4 100644 --- a/src/multiint.cpp +++ b/src/multiint.cpp @@ -446,18 +446,18 @@ void loadMapPreview(bool hideInterface) psLevel = levFindDataSet(game.map, &game.hash); if (psLevel == NULL) { - debug(LOG_INFO, "Could not find level dataset. Probably waiting for download."); + debug(LOG_INFO, "Could not find level dataset \"%s\" %s. We %s waiting for a download.", game.map, game.hash.toString().c_str(), NetPlay.players[selectedPlayer].needFile? "are":"aren't"); loadEmptyMapPreview(); return; } setCurrentMap(psLevel->realFileName, psLevel->players); if (psLevel->realFileName == NULL) { - debug(LOG_WZ, "Loading map preview: \"%s\" builtin t%d", psLevel->pName, psLevel->dataDir); + debug(LOG_INFO, "Loading map preview: \"%s\" builtin t%d", psLevel->pName, psLevel->dataDir); } else { - debug(LOG_WZ, "Loading map preview: \"%s\" in \"%s\" %s t%d", psLevel->pName, psLevel->realFileName, psLevel->realFileHash.toString().c_str(), psLevel->dataDir); + debug(LOG_INFO, "Loading map preview: \"%s\" in (%s)\"%s\" %s t%d", psLevel->pName, PHYSFS_getRealDir(psLevel->realFileName), psLevel->realFileName, psLevel->realFileHash.toString().c_str(), psLevel->dataDir); } rebuildSearchPath(psLevel->dataDir, false); sstrcpy(aFileName,psLevel->apDataFiles[0]); @@ -467,7 +467,7 @@ void loadMapPreview(bool hideInterface) if (!loadFileToBuffer(aFileName, pFileData, FILE_LOAD_BUFFER_SIZE, &fileSize)) { - debug(LOG_ERROR, "Failed to load terrain types file"); + debug(LOG_ERROR, "Failed to load terrain types file: [%s]", aFileName); return; } if (pFileData) @@ -1395,7 +1395,9 @@ static const LimitIcon limitIcons[] = { {"A0LightFactory", N_("Tanks disabled!!"), IMAGE_NO_TANK}, {"A0CyborgFactory", N_("Cyborgs disabled."), IMAGE_NO_CYBORG}, - {"A0VTolFactory1", N_("VTOLs disabled."), IMAGE_NO_VTOL} + {"A0VTolFactory1", N_("VTOLs disabled."), IMAGE_NO_VTOL}, + {"A0Sat-linkCentre", N_("Satellite Uplink disabled."), IMAGE_NO_UPLINK}, + {"A0LasSatCommand", N_("Laser Satellite disabled."), IMAGE_NO_LASSAT}, }; void updateLimitFlags() @@ -1667,7 +1669,7 @@ static void addGameOptions() { if (!skip) { // only add this once. - addBlueForm(MULTIOP_OPTIONS, MULTIOP_NO_SOMETHING, "", MULTIOP_HOSTX, MULTIOP_NO_SOMETHINGY, 41, 90 ); + addBlueForm(MULTIOP_OPTIONS, MULTIOP_NO_SOMETHING, "", MULTIOP_HOSTX, MULTIOP_NO_SOMETHINGY, 41, 152); } addMultiBut(psWScreen, MULTIOP_NO_SOMETHING, MULTIOP_NO_SOMETHINGY + i, MULTIOP_NO_SOMETHINGX, y, @@ -3758,7 +3760,7 @@ bool startMultiOptions(bool bReenter) game.type = SKIRMISH; game.scavengers = false; sstrcpy(game.map, DEFAULTSKIRMISHMAP); - game.hash.setZero(); + game.hash = levGetMapNameHash(game.map); game.maxPlayers = 4; } @@ -3783,9 +3785,9 @@ bool startMultiOptions(bool bReenter) challenge.beginGroup("challenge"); sstrcpy(game.map, challenge.value("Map", game.map).toString().toAscii().constData()); - game.hash.setZero(); + game.hash = levGetMapNameHash(game.map); game.maxPlayers = challenge.value("MaxPlayers", game.maxPlayers).toInt(); // TODO, read from map itself, not here!! - game.scavengers = challenge.value("Scavengers", game.scavengers).toInt(); + game.scavengers = challenge.value("Scavengers", game.scavengers).toBool(); game.alliance = ALLIANCES_TEAMS; netPlayersUpdated = true; mapDownloadProgress = 100; diff --git a/src/multiopt.cpp b/src/multiopt.cpp index c562652..7ed618d 100644 --- a/src/multiopt.cpp +++ b/src/multiopt.cpp @@ -194,7 +194,7 @@ void recvOptions(NETQUEUE queue) widgSetSliderPos(psWScreen, MULTIOP_SKSLIDE + i, game.skDiff[i]); } } - debug(LOG_NET, "Rebuilding map list"); + debug(LOG_INFO, "Rebuilding map list"); // clear out the old level list. levShutDown(); levInitialise(); @@ -206,13 +206,13 @@ void recvOptions(NETQUEUE queue) { uint32_t player = selectedPlayer; - debug(LOG_NET, "Map was not found, requesting map %s from host.", game.map); + debug(LOG_INFO, "Map was not found, requesting map %s from host.", game.map); // Request the map from the host NETbeginEncode(NETnetQueue(NET_HOST_ONLY), NET_FILE_REQUESTED); NETuint32_t(&player); NETend(); - addConsoleMessage("MAP REQUESTED!",DEFAULT_JUSTIFY, SYSTEM_MESSAGE); + addConsoleMessage("MAP REQUESTED!", DEFAULT_JUSTIFY, SYSTEM_MESSAGE); } else { diff --git a/src/multiplay.cpp b/src/multiplay.cpp index dec289f..f294da5 100644 --- a/src/multiplay.cpp +++ b/src/multiplay.cpp @@ -970,6 +970,8 @@ bool recvResearchStatus(NETQUEUE queue) // psBuilding may be null if finishing if (bStart) // Starting research { + ResetPendingResearchStatus(pPlayerRes); // Reset pending state, even if research state is not changed due to the structure being destroyed. + psBuilding = IdToStruct(structRef, player); // Set that facility to research @@ -992,7 +994,6 @@ bool recvResearchStatus(NETQUEUE queue) MakeResearchStarted(pPlayerRes); psResFacilty->timeStartHold = 0; } - } // Finished/cancelled research else @@ -1622,7 +1623,7 @@ bool recvMapFileRequested(NETQUEUE queue) addConsoleMessage("Map was requested: SENDING MAP!",DEFAULT_JUSTIFY, SYSTEM_MESSAGE); char *mapStr = mapData->realFileName; - debug(LOG_NET, "Map was requested. Looking for %s", mapStr); + debug(LOG_INFO, "Map was requested. Looking for %s", mapStr); // Checking to see if file is available... pFileHandle = PHYSFS_openRead(mapStr); @@ -1640,7 +1641,7 @@ bool recvMapFileRequested(NETQUEUE queue) // get the file's size. fileSize_64 = PHYSFS_fileLength(pFileHandle); - debug(LOG_NET, "File is valid, sending [directory: %s] %s to client %u", PHYSFS_getRealDir(mapStr), mapStr, player); + debug(LOG_INFO, "File is valid, sending [directory: %s] %s to client %u", PHYSFS_getRealDir(mapStr), mapStr, player); NetPlay.players[player].wzFile.pFileHandle = pFileHandle; NetPlay.players[player].wzFile.fileSize_32 = (int32_t) fileSize_64; //we don't support 64bit int nettypes. @@ -1664,7 +1665,7 @@ void sendMap(void) if (done == 100) { addConsoleMessage("MAP SENT!",DEFAULT_JUSTIFY, SYSTEM_MESSAGE); - debug(LOG_NET, "=== File has been sent to player %d ===", i); + debug(LOG_INFO, "=== File has been sent to player %d ===", i); NetPlay.players[i].wzFile.isSending = false; NetPlay.players[i].needFile = false; } @@ -1680,7 +1681,7 @@ bool recvMapFileData(NETQUEUE queue) { addConsoleMessage("MAP DOWNLOADED!",DEFAULT_JUSTIFY, SYSTEM_MESSAGE); sendTextMessage("MAP DOWNLOADED",true); //send - debug(LOG_NET, "=== File has been received. ==="); + debug(LOG_INFO, "=== File has been received. ==="); // clear out the old level list. levShutDown(); diff --git a/src/qtscriptfuncs.cpp b/src/qtscriptfuncs.cpp index 69b3013..680c363 100644 --- a/src/qtscriptfuncs.cpp +++ b/src/qtscriptfuncs.cpp @@ -2044,6 +2044,34 @@ static QScriptValue js_hackNetOn(QScriptContext *, QScriptEngine *) return QScriptValue(); } +//-- \subsection{getDroidLimit([player[, unit type]])} +//-- Return maximum number of droids that this player can produce. This limit is usually +//-- fixed throughout a game and the same for all players. If no arguments are passed, +//-- returns general unit limit for the current player. If a second, unit type argument +//-- is passed, the limit for this unit type is returned, which may be different from +//-- the general unit limit (eg for commanders and construction droids). +static QScriptValue js_getDroidLimit(QScriptContext *context, QScriptEngine *engine) +{ + if (context->argumentCount() > 1) + { + DROID_TYPE type = (DROID_TYPE)context->argument(1).toInt32(); + if (type == DROID_COMMAND) + { + return QScriptValue(MAX_COMMAND_DROIDS); + } + else if (type == DROID_CONSTRUCT) + { + return QScriptValue(MAX_CONSTRUCTOR_DROIDS); + } + // else return general unit limit + } + if (context->argumentCount() > 0) + { + return QScriptValue(getMaxDroids(context->argument(0).toInt32())); + } + return QScriptValue(getMaxDroids(engine->globalObject().property("me").toInt32())); +} + // ---------------------------------------------------------------------------------------- // Register functions with scripting system @@ -2090,6 +2118,7 @@ bool registerFunctions(QScriptEngine *engine) engine->globalObject().setProperty("isVTOL", engine->newFunction(js_isVTOL)); engine->globalObject().setProperty("safeDest", engine->newFunction(js_safeDest)); engine->globalObject().setProperty("activateStructure", engine->newFunction(js_activateStructure)); + engine->globalObject().setProperty("getDroidLimit", engine->newFunction(js_getDroidLimit)); // Functions that operate on the current player only engine->globalObject().setProperty("centreView", engine->newFunction(js_centreView)); diff --git a/src/radar.cpp b/src/radar.cpp index 40ffd56..bd6707d 100644 --- a/src/radar.cpp +++ b/src/radar.cpp @@ -27,6 +27,7 @@ #include "lib/ivis_opengl/piepalette.h" #include "lib/ivis_opengl/piestate.h" #include "lib/ivis_opengl/piefunc.h" +#include "lib/ivis_opengl/bitimage.h" #include "lib/gamelib/gtime.h" #include "advvis.h" #include "objects.h" @@ -326,7 +327,7 @@ void drawRadar(void) static void DrawNorth(void) { - iV_DrawImage(IntImages, RADAR_NORTH, -((radarWidth / 2.0) + (IntImages->ImageDefs[RADAR_NORTH].Width) + 1) , -(radarHeight / 2.0)); + iV_DrawImage(IntImages, RADAR_NORTH, -((radarWidth / 2.0) + iV_GetImageWidth(IntImages, RADAR_NORTH) + 1), -(radarHeight / 2.0)); } static PIELIGHT appliedRadarColour(RADAR_DRAW_MODE radarDrawMode, MAPTILE *WTile) diff --git a/src/researchdef.h b/src/researchdef.h index 8750626..352b2c7 100644 --- a/src/researchdef.h +++ b/src/researchdef.h @@ -108,6 +108,7 @@ static inline void MakeResearchStarted(PLAYER_RESEARCH *x) { x->Res /// Pending means not yet synchronised, so only permitted to affect the UI, not the game state. static inline void MakeResearchCancelledPending(PLAYER_RESEARCH *x) { x->ResearchStatus &= ~RESBITS_PENDING_ONLY; x->ResearchStatus |= CANCELLED_RESEARCH_PENDING; } static inline void MakeResearchStartedPending(PLAYER_RESEARCH *x) { x->ResearchStatus &= ~RESBITS_PENDING_ONLY; x->ResearchStatus |= STARTED_RESEARCH_PENDING; } +static inline void ResetPendingResearchStatus(PLAYER_RESEARCH *x) { x->ResearchStatus &= ~RESBITS_PENDING_ONLY; } /// clear all bits in the status except for the possible bit static inline void ResetResearchStatus(PLAYER_RESEARCH *x) { x->ResearchStatus &= ~RESBITS_PENDING; } diff --git a/src/scriptfuncs.cpp b/src/scriptfuncs.cpp index a11e1c5..1fc1490 100644 --- a/src/scriptfuncs.cpp +++ b/src/scriptfuncs.cpp @@ -5640,7 +5640,8 @@ bool scrGetGameStatus(void) break; case STATUS_DeliveryReposInProgress: - if (DeliveryReposValid()==true) bResult=true; + if (deliveryReposValid()) + bResult=true; break; default: diff --git a/src/structure.cpp b/src/structure.cpp index 7388706..e8b7bac 100644 --- a/src/structure.cpp +++ b/src/structure.cpp @@ -1008,7 +1008,7 @@ bool structSetManufacture(STRUCTURE *psStruct, DROID_TEMPLATE *psTempl, QUEUE_MO (int)psStruct->pStructureType->type); /* psTempl might be NULL if the build is being cancelled in the middle */ - ASSERT_OR_RETURN(false, (validTemplateForFactory(psTempl, psStruct) && researchedTemplate(psTempl, psStruct->player)) || psStruct->player == scavengerPlayer() || !bMultiPlayer, "Wrong template for player %d factory, type %d.", psStruct->player, psStruct->pStructureType->type); + ASSERT_OR_RETURN(false, (validTemplateForFactory(psTempl, psStruct) && researchedTemplate(psTempl, psStruct->player, true)) || psStruct->player == scavengerPlayer() || !bMultiPlayer, "Wrong template for player %d factory, type %d.", psStruct->player, psStruct->pStructureType->type); psFact = &psStruct->pFunctionality->factory; @@ -3424,61 +3424,45 @@ static void aiUpdateStructure(STRUCTURE *psStructure, bool isMission) psReArmPad->timeLastUpdated = gameTime; } - // dont rearm on remote pcs. - // Huh?! Why not?! if(!bMultiPlayer || myResponsibility(psDroid->player)) + /* do rearming */ + UDWORD pointsRequired; + + //amount required is a factor of the droids' weight + pointsRequired = psDroid->weight / REARM_FACTOR; + //take numWeaps into consideration + pointsToAdd = psReArmPad->reArmPoints * (gameTime - psReArmPad->timeStarted) / GAME_TICKS_PER_SEC; + pointsAlreadyAdded = psReArmPad->reArmPoints * (psReArmPad->timeLastUpdated - psReArmPad->timeStarted) / GAME_TICKS_PER_SEC; + if (pointsToAdd >= pointsRequired) { - /* do rearming */ - if (psDroid->sMove.iAttackRuns != 0) + // We should be fully loaded by now. + for (i = 0; i < psDroid->numWeaps; i++) { - UDWORD pointsRequired; - - //amount required is a factor of the droids' weight - pointsRequired = psDroid->weight / REARM_FACTOR; - //take numWeaps into consideration - pointsToAdd = psReArmPad->reArmPoints * (gameTime - psReArmPad->timeStarted) / - GAME_TICKS_PER_SEC; - pointsAlreadyAdded = psReArmPad->reArmPoints * (psReArmPad->timeLastUpdated - psReArmPad->timeStarted) / - GAME_TICKS_PER_SEC; - if (pointsToAdd >= pointsRequired) + // set rearm value to no runs made + psDroid->asWeaps[i].usedAmmo = 0; + // reset ammo and lastFired + psDroid->asWeaps[i].ammo = asWeaponStats[psDroid->asWeaps[i].nStat].numRounds; + psDroid->asWeaps[i].lastFired = 0; + } + } + else + { + for (i = 0; i < psDroid->numWeaps; i++) + { + // Make sure it's a rearmable weapon (and so we don't divide by zero) + if (psDroid->asWeaps[i].usedAmmo > 0 && asWeaponStats[psDroid->asWeaps[i].nStat].numRounds > 0) { - // We should be fully loaded by now. - for (i = 0; i < psDroid->numWeaps; i++) + // Do not "simplify" this formula. + // It is written this way to prevent rounding errors. + int ammoToAddThisTime = + pointsToAdd*getNumAttackRuns(psDroid,i)/pointsRequired - + pointsAlreadyAdded*getNumAttackRuns(psDroid,i)/pointsRequired; + psDroid->asWeaps[i].usedAmmo -= std::min<unsigned>(ammoToAddThisTime, psDroid->asWeaps[i].usedAmmo); + if (ammoToAddThisTime) { - // set rearm value to no runs made - psDroid->sMove.iAttackRuns[i] = 0; // reset ammo and lastFired psDroid->asWeaps[i].ammo = asWeaponStats[psDroid->asWeaps[i].nStat].numRounds; psDroid->asWeaps[i].lastFired = 0; - } - } - else - { - for (i = 0; i < psDroid->numWeaps; i++) - { - // Make sure it's a rearmable weapon (and so we don't divide by zero) - if (psDroid->sMove.iAttackRuns[i] > 0 && asWeaponStats[psDroid->asWeaps[i].nStat].numRounds > 0) - { - // Do not "simplify" this formula. - // It is written this way to prevent rounding errors. - int ammoToAddThisTime = - pointsToAdd*getNumAttackRuns(psDroid,i)/pointsRequired - - pointsAlreadyAdded*getNumAttackRuns(psDroid,i)/pointsRequired; - if (ammoToAddThisTime > psDroid->sMove.iAttackRuns[i]) - { - psDroid->sMove.iAttackRuns[i] = 0; - } - else if (ammoToAddThisTime > 0) - { - psDroid->sMove.iAttackRuns[i] -= ammoToAddThisTime; - } - if (ammoToAddThisTime) - { - // reset ammo and lastFired - psDroid->asWeaps[i].ammo = asWeaponStats[psDroid->asWeaps[i].nStat].numRounds; - psDroid->asWeaps[i].lastFired = 0; - break; - } - } + break; } } } @@ -4557,7 +4541,6 @@ static void removeStructFromMap(STRUCTURE *psStruct) bool removeStruct(STRUCTURE *psDel, bool bDestroy) { bool resourceFound = false; - FACTORY *psFactory; SDWORD cluster; FLAG_POSITION *psAssemblyPoint=NULL; @@ -4614,7 +4597,7 @@ bool removeStruct(STRUCTURE *psDel, bool bDestroy) //if it is a factory - need to reset the factoryNumFlag if (StructIsFactory(psDel)) { - psFactory = &psDel->pFunctionality->factory; + FACTORY *psFactory = &psDel->pFunctionality->factory; //need to initialise the production run as well cancelProduction(psDel, ModeImmediate); @@ -4634,17 +4617,9 @@ bool removeStruct(STRUCTURE *psDel, bool bDestroy) } //need to cancel the repositioning of the DP if selectedPlayer and currently moving - if (psDel->player == selectedPlayer) + if (psDel->player == selectedPlayer && psAssemblyPoint->selected) { - //if currently trying to place a DP - if (tryingToGetLocation()) - { - //need to check if this factory's DP is trying to be re-positioned - if (psAssemblyPoint == sBuildDetails.UserData) - { - kill3DBuilding(); - } - } + cancelDeliveryRepos(); } } @@ -5071,28 +5046,6 @@ void setFlagPositionInc(FUNCTIONALITY* pFunctionality, UDWORD player, UBYTE fact ASSERT( false, "Can't set flag!"); } - -/* called from order.c.. delivery/assembly point handler*/ -/*now called from display.c */ -void processDeliveryPoint(UDWORD player, UDWORD x, UDWORD y) -{ - FLAG_POSITION *psCurrFlag;//,*psFlag;//,*psNewFlag - - for (psCurrFlag = apsFlagPosLists[player]; psCurrFlag; psCurrFlag = psCurrFlag->psNext) - { - // must be selected and have a valid pos. - if (psCurrFlag->selected) - { - setAssemblyPoint(psCurrFlag, x, y, player, true); - - //deselect once moved - psCurrFlag->selected = false; - return; //will want to break if more than one can be selected? - } - } -} - - /*called when a structure has been built - checks through the list of callbacks for the scripts*/ void structureCompletedCallback(STRUCTURE_STATS *psStructType) diff --git a/src/structure.h b/src/structure.h index cd03e44..f7eabb6 100644 --- a/src/structure.h +++ b/src/structure.h @@ -183,9 +183,6 @@ extern bool checkStructureStatus( STRUCTURE_STATS *psStats, UDWORD player, UDWOR extern void setAssemblyPoint(FLAG_POSITION *psAssemblyPoint, UDWORD x, UDWORD y, UDWORD player, bool bCheck); -/* consider delivery points when selected by player*/ -extern void processDeliveryPoint(UDWORD player, UDWORD x, UDWORD y); - /*called when a structure has been built - checks through the list of callbacks for the scripts*/ extern void structureCompletedCallback(STRUCTURE_STATS *psStructType); diff --git a/src/template.cpp b/src/template.cpp index dce78ec..198866d 100644 --- a/src/template.cpp +++ b/src/template.cpp @@ -60,7 +60,27 @@ static const StringToEnum<DROID_TYPE> map_DROID_TYPE[] = {"DROID", DROID_DEFAULT }, }; -bool researchedTemplate(DROID_TEMPLATE *psCurr, int player) +static bool researchedItem(DROID_TEMPLATE *psCurr, int player, COMPONENT_TYPE partIndex, int part, bool allowZero, bool allowRedundant) +{ + if (allowZero && part <= 0) + { + return true; + } + int availability = apCompLists[player][partIndex][part]; + return availability == AVAILABLE || (allowRedundant && availability == REDUNDANT); +} + +static bool researchedPart(DROID_TEMPLATE *psCurr, int player, COMPONENT_TYPE partIndex, bool allowZero, bool allowRedundant) +{ + return researchedItem(psCurr, player, partIndex, psCurr->asParts[partIndex], allowZero, allowRedundant); +} + +static bool researchedWeap(DROID_TEMPLATE *psCurr, int player, int weapIndex, bool allowRedundant) +{ + return researchedItem(psCurr, player, COMP_WEAPON, psCurr->asWeaps[weapIndex], false, allowRedundant); +} + +bool researchedTemplate(DROID_TEMPLATE *psCurr, int player, bool allowRedundant) { // super hack -- cyborgs and transports are special, only check their body switch (psCurr->droidType) @@ -72,25 +92,25 @@ bool researchedTemplate(DROID_TEMPLATE *psCurr, int player) case DROID_CYBORG_REPAIR: case DROID_TRANSPORTER: case DROID_SUPERTRANSPORTER: - return (apCompLists[player][COMP_BODY][psCurr->asParts[COMP_BODY]] == AVAILABLE); + return researchedPart(psCurr, player, COMP_BODY, false, allowRedundant); default: break; // now proceed to normal droids... } // Note the ugly special case for commanders - their weapon is unavailable - // NOTE: This is one ugly & hard to debug if statement. - if (apCompLists[player][COMP_BODY][psCurr->asParts[COMP_BODY]] != AVAILABLE - || (psCurr->asParts[COMP_BRAIN] > 0 && apCompLists[player][COMP_BRAIN][psCurr->asParts[COMP_BRAIN]] != AVAILABLE) - || apCompLists[player][COMP_PROPULSION][psCurr->asParts[COMP_PROPULSION]] != AVAILABLE - || (psCurr->asParts[COMP_SENSOR] > 0 && apCompLists[player][COMP_SENSOR][psCurr->asParts[COMP_SENSOR]] != AVAILABLE) - || (psCurr->asParts[COMP_ECM] > 0 && apCompLists[player][COMP_ECM][psCurr->asParts[COMP_ECM]] != AVAILABLE) - || (psCurr->asParts[COMP_REPAIRUNIT] > 0 && apCompLists[player][COMP_REPAIRUNIT][psCurr->asParts[COMP_REPAIRUNIT]] != AVAILABLE) - || (psCurr->asParts[COMP_CONSTRUCT] > 0 && apCompLists[player][COMP_CONSTRUCT][psCurr->asParts[COMP_CONSTRUCT]] != AVAILABLE) - || (psCurr->asParts[COMP_BRAIN] == 0 && psCurr->numWeaps > 0 && apCompLists[player][COMP_WEAPON][psCurr->asWeaps[0]] != AVAILABLE) - || (psCurr->numWeaps > 1 && apCompLists[player][COMP_WEAPON][psCurr->asWeaps[1]] != AVAILABLE)) + // NOTE: This was one ugly & hard to debug if statement. + bool researchedEverything = researchedPart(psCurr, player, COMP_BODY, false, allowRedundant) + && researchedPart(psCurr, player, COMP_BRAIN, true, allowRedundant) + && researchedPart(psCurr, player, COMP_PROPULSION, false, allowRedundant) + && researchedPart(psCurr, player, COMP_SENSOR, true, allowRedundant) + && researchedPart(psCurr, player, COMP_ECM, true, allowRedundant) + && researchedPart(psCurr, player, COMP_REPAIRUNIT, true, allowRedundant) + && researchedPart(psCurr, player, COMP_CONSTRUCT, true, allowRedundant); + unsigned ignoreFirstWeapon = psCurr->asParts[COMP_BRAIN] != 0? 1 : 0; + for (unsigned weapIndex = ignoreFirstWeapon; weapIndex < psCurr->numWeaps && researchedEverything; ++weapIndex) { - return false; + researchedEverything = researchedWeap(psCurr, player, weapIndex, allowRedundant); } - return true; + return researchedEverything; } bool initTemplates() diff --git a/src/template.h b/src/template.h index c7d6626..fe8eb4a 100644 --- a/src/template.h +++ b/src/template.h @@ -35,6 +35,6 @@ a string ID or something the user types in*/ const char* getTemplateName(const DROID_TEMPLATE *psTemplate); /// Have we researched the components of this template? -bool researchedTemplate(DROID_TEMPLATE *psCurr, int player); +bool researchedTemplate(DROID_TEMPLATE *psCurr, int player, bool allowRedundant = false); #endif // TEMPLATE_H diff --git a/src/transporter.cpp b/src/transporter.cpp index a3014be..f3f64b6 100644 --- a/src/transporter.cpp +++ b/src/transporter.cpp @@ -1437,6 +1437,7 @@ void transporterAddDroid(DROID *psTransporter, DROID *psDroidToAdd) { visRemoveVisibility((BASE_OBJECT *)psDroidToAdd); } + fpathRemoveDroidData(psDroidToAdd->id); // This is called by droidRemove. But we still need to refresh after adding to the transporter group. intRefreshScreen(); diff --git a/src/version.cpp b/src/version.cpp index c5d2668..5e125ef 100644 --- a/src/version.cpp +++ b/src/version.cpp @@ -47,7 +47,7 @@ unsigned int version_getRevision() const char* version_getVersionString() { - static const char* version_string = "3.1 beta11"; + static const char* version_string = "3.1 rc2"; if (version_string == NULL) { diff --git a/src/warzoneconfig.h b/src/warzoneconfig.h index b56f095..cee01fb 100644 --- a/src/warzoneconfig.h +++ b/src/warzoneconfig.h @@ -52,8 +52,9 @@ enum FSAA_LEVEL enum RENDER_MODE { FALLBACK, /// Shaders not supported - SHADERS_OFF,/// Shaders supported but off - SHADERS_ON, /// Shaders supported and on + SHADERS_OFF,/// Shaders supported but off (fallback supported) + SHADERS_ON, /// Shaders supported and on (fallback supported) + SHADERS_ONLY/// Shaders but no fallback support }; /***************************************************************************/ /* diff --git a/src/weapondef.h b/src/weapondef.h index ed7c5e7..0e7d951 100644 --- a/src/weapondef.h +++ b/src/weapondef.h @@ -32,6 +32,7 @@ struct WEAPON uint32_t shotsFired; Rotation rot; Rotation prevRot; + unsigned usedAmmo; ///< Amount of ammunition used up by a VTOL }; // Defined in droid.cpp. diff --git a/win32/warzone2100.rc b/win32/warzone2100.rc index 066e072..37673e5 100644Attachment: signature.asc
Description: This is a digitally signed message part
--- End Message ---
--- Begin Message ---
- To: Paul Wise <pabs@debian.org>, 685913-done@bugs.debian.org
- Subject: Re: Bug#685913: unblock: warzone2100/3.1~rc2-1
- From: "Adam D. Barratt" <adam@adam-barratt.org.uk>
- Date: Fri, 11 Jan 2013 09:08:45 +0000
- Message-id: <1357895325.32456.7.camel@jacala.jungle.funky-badger.org>
- In-reply-to: <1357872997.11722.128.camel@chianamo>
- References: <1345960306.9944.4.camel@chianamo> <b80674a106c0dd9d1c28dda702e1a2b9@mail.adsl.funky-badger.org> <1350086560.6068.33.camel@chianamo> <1357872997.11722.128.camel@chianamo>
On Fri, 2013-01-11 at 10:56 +0800, Paul Wise wrote: > Control: retitle 685913 RM: warzone2100/3.1~beta11-2 > > On Sat, 2012-10-13 at 08:02 +0800, Paul Wise wrote: > > > No final release yet, but I just noticed now there has been an rc3 > > released a few days ago. I'd prefer to upload and unblock rc2 first, > > otherwise the diff to review will probably be larger than your > > thresholds. > > Talking with upstream, it seems that the release is a while away, the > total changes needed will probably be too big to review and they don't > really want an old beta in stable. Please remove warzone2100 from > testing, I will maintain a backport for the life of wheezy instead. Okay, thanks for the update; hint added. Apologies for not finally deciding on this at an earlier stage. :-( Regards, Adam
--- End Message ---