diff --git a/AndroidAppSettings.cfg b/AndroidAppSettings.cfg new file mode 100644 index 00000000..ebb11d27 --- /dev/null +++ b/AndroidAppSettings.cfg @@ -0,0 +1,329 @@ +# The application settings for Android libSDL port + +# Specify application name (e.x. My Application) +AppName="Rockbot 1" + +# Specify reversed site name of application (e.x. com.mysite.myapp) +AppFullName=net.upperland.rockdroid + +# Application version code (integer) +AppVersionCode=121075 + +# Application user-visible version name (string) +AppVersionName="1.21.075" + +# Specify path to download application data in zip archive in the form "Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' +# If you'll start Description with '!' symbol it will be enabled by default, '!!' will also hide the entry from the menu, so it cannot be disabled +# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped +# If the URL does not contain 'http://' or 'https://', it is treated as file from 'project/jni/application/src/AndroidData' dir - +# these files are put inside .apk package by the build system +# You can specify Google Play expansion files in the form 'obb:main.12345' or 'obb:patch.12345' where 12345 is the app version for the obb file +# You can mount expansion files created with jobb tool if you put 'mnt:main.12345' or 'mnt:patch.12345' +# The mount directory will be returned by calling getenv("ANDROID_OBB_MOUNT_DIR") +# You can use .zip.xz archives for better compression, but you need to add 'lzma' to CompiledLibraries +# Generate .zip.xz files like this: zip -0 -r data.zip your-data/* ; xz -8 data.zip +AppDataDownloadUrl="!Game Data|data_1.21.075.zip" + +# Reset SDL config when updating application to the new version (y) / (n) +ResetSdlConfigForThisVersion=y + +# Delete application data files when upgrading (specify file/dir paths separated by spaces) +DeleteFilesOnUpgrade="%" + +# Here you may type readme text, which will be shown during startup. Format is: +# Text in English, use \\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/ +ReadmeText='' | sed 's/\\n/\\\\n/g' + +# libSDL version to use (1.2/2) +LibSdlVersion=1.2 + +# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape +ScreenOrientation=h + +# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only +# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32) +VideoDepthBpp=16 + +# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedDepthBuffer=n + +# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedStencilBuffer=n + +# Use GLES 2.x context +# you need this option only if you're developing 3-d app (y) or (n) +NeedGles2=n + +# Use GLES 3.x context +# you need this option only if you're developing 3-d app (y) or (n) +NeedGles3=n + +# Use gl4es library for provide OpenGL 1.x functionality to OpenGL ES accelerated cards (y) or (n) +UseGl4es= + +# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL, +# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n) +SwVideoMode=y + +# Application video output will be resized to fit into native device screen (y)/(n) +SdlVideoResize=y + +# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n) +SdlVideoResizeKeepAspect=y + +# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer +InhibitSuspend=y + +# Create Android service, so the app is less likely to be killed while in background +CreateService= + +# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread - +# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n) +CompatibilityHacksForceScreenUpdate=n + +# Application does not call SDL_Flip() or SDL_UpdateRects() after mouse click (ScummVM and all Amiga emulators do that) - +# force screen update by moving mouse cursor a little after each click (y) or (n) +CompatibilityHacksForceScreenUpdateMouseClick=n + +# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n) +CompatibilityHacksStaticInit=n + +# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) +CompatibilityHacksTextInputEmulatesHwKeyboard=n + +# Built-in text input keyboards with custom layouts for emulators, requires CompatibilityHacksTextInputEmulatesHwKeyboard=y +# 0 or empty - standard Android keyboard +# 1 - Simple QWERTY keyboard, no function keys, no arrow keys +# 2 - Commodore 64 keyboard +# 3 - Amiga keyboard +# 4 - Atari800 keyboard +TextInputKeyboard= + +# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n) +CompatibilityHacksPreventAudioChopping=n + +# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n) +CompatibilityHacksAppIgnoresAudioBufferSize=n + +# Hack for VCMI: preload additional shared libraries before aplication start +CompatibilityHacksAdditionalPreloadedSharedLibraries="" + +# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue - +# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n) +CompatibilityHacksSlowCompatibleEventQueue=n + +# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL +CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=n + +# Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects. +# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n) +CompatibilityHacksProperUsageOfSDL_UpdateRects= + +# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user +AppUsesMouse=n + +# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n) +AppNeedsTwoButtonMouse=n + +# Right mouse button can do long-press/drag&drop action, necessary for some games (y) or (n) +# If you disable it, swiping with two fingers will send mouse wheel events +RightMouseButtonLongPress= + +# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) +ShowMouseCursor=n + +# Screen follows mouse cursor, when it's covered by soft keyboard, this works only in software video mode (y) or (n) +ScreenFollowsMouse= + +# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n) +GenerateSubframeTouchEvents= + +# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n) +ForceRelativeMouseMode=n + +# Show on-screen dpad/joystick, that will act as arrow keys (y) or (n) +AppNeedsArrowKeys=y + +# On-screen dpad/joystick will appear under finger when it touches the screen (y) or (n) +# Joystick always follows finger, so moving mouse requires touching the screen with other finger +FloatingScreenJoystick=n + +# Application needs text input (y) or (n), enables button for text input on screen +AppNeedsTextInput=n + +# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1 +# This will disable AppNeedsArrowKeys option +AppUsesJoystick=n + +# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n) +AppUsesSecondJoystick=n + +# Application uses third on-screen joystick, as SDL joystick 0 axes 20-21 (y)/(n) +AppUsesThirdJoystick=n + +# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7 +AppUsesAccelerometer=n + +# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4 +AppUsesGyroscope=n + +# Application uses orientation sensor (y) or (n), reported as joystick 1 axes 8-10 +AppUsesOrientationSensor= + +# Use gyroscope to move mouse cursor (y) or (n), it eats battery, and can be disabled in settings, do not use with AppUsesGyroscope setting +MoveMouseWithGyroscope= + +# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0 +AppUsesMultitouch=n + +# Application records audio (it will use any available source, such a s microphone) +# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void); +# This option will add additional permission to Android manifest (y)/(n) +AppRecordsAudio=n + +# Application needs read/write access SD card. Always disable it, unless you want to access user photos and downloads. (y) / (n) +AccessSdCard=n + +# Application needs to read it's own OBB file. Enable this if you are using Play Store expansion files. (y) / (n) +ReadObbFile= + +# Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n) +AccessInternet=y + +# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n) +ImmersiveMode=y + +# Draw in the display cutout area. (y) / (n) +DrawInDisplayCutout= + +# Hide Android system mouse cursor image when USB mouse is attached (y) or (n) - the app must draw it's own mouse cursor +HideSystemMousePointer= + +# Application implements Android-specific routines to put to background, and will not draw anything to screen +# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them +# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n) +# This option is reported to be buggy, sometimes failing to restore video state +NonBlockingSwapBuffers=n + +# Redefine common hardware keys to SDL keysyms +# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent +# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices +# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th) +# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA +RedefinedKeys="NO_REMAP NO_REMAP NO_REMAP NO_REMAP NO_REMAP ESCAPE NO_REMAP" + +# Number of virtual keyboard keys - currently 12 keys is the maximum +AppTouchscreenKeyboardKeysAmount=5 + +# Define SDL keysyms for multitouch gestures - pinch-zoom in, pinch-zoom out, rotate left, rotate right +RedefinedKeysScreenGestures="" + +# Redefine on-screen keyboard keys to SDL keysyms - currently 12 keys is the maximum +RedefinedKeysScreenKb="X A Z C RETURN W " + +# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu +RedefinedKeysScreenKbNames="JUMP FIRE SHIELD DASH START R" + +# On-screen keys theme +# 0 = Ultimate Droid by Sean Stieber (green, with cross joystick) +# 1 = Simple Theme by Beholder (white, with cross joystick) +# 2 = Sun by Sirea (yellow, with round joystick) +# 3 = Keen by Gerstrong (multicolor, with round joystick) +# 4 = Retro by Santiago Radeff (red/white, with cross joystick) +# 5 = GameBoy from RetroArch +# 6 = PlayStation from RetroArch +# 7 = SuperNintendo from RetroArch +# 8 = DualShock from RetroArch +# 9 = Nintendo64 from RetroArch +TouchscreenKeysTheme=1 + +# Redefine gamepad keys to SDL keysyms, button order is: +# A B X Y L1 R1 L2 R2 LThumb RThumb Start Select Up Down Left Right LThumbUp LThumbDown LThumbLeft LThumbRight RThumbUp RThumbDown RThumbLeft RThumbRight +RedefinedKeysGamepad="X A Z C 4 5 Q R 8 9 j k RETURN HOME UP DOWN LEFT RIGHT PAGEUP PAGEDOWN HOME END PLUS MINUS LEFTBRACKET RIGHTBRACKET" + +# Redefine keys for the second gamepad, same as the first gamepad if not set: +RedefinedKeysSecondGamepad="" + +# Redefine keys for the third gamepad, same as the first gamepad if not set: +RedefinedKeysThirdGamepad="" + +# Redefine keys for the fourth gamepad, same as the first gamepad if not set: +RedefinedKeysFourthGamepad="" + +# How long to show startup menu button, in msec, 0 to disable startup menu +StartupMenuButtonTimeout=0 + +# Menu items to hide from startup menu, available menu items (SDL 1.2 only): +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.StorageAccessConfig SettingsMenuMisc.CommandlineConfig SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced +HiddenMenuOptions='SettingsMenuMouse.DisplaySizeConfig' + +# Menu items to show at startup - this is Java code snippet, leave empty for default +# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration() +# Available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.StorageAccessConfig SettingsMenuMisc.CommandlineConfig SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced +FirstStartMenuOptions='' + +# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower +AppMinimumRAM=16 + +# GCC version, or 'clang' for CLANG +NDK_TOOLCHAIN_VERSION=clang + +# Android platform version. +# android-16 = Android 4.1, the earliest supported version in NDK r18. +# android-18 = Android 4.3, the first version supporting GLES3. +# android-21 = Android 5.1, the first version with SO_REUSEPORT defined. +APP_PLATFORM=android-21 + +# Specify architectures to compile, 'all' or 'y' to compile for all architectures. +# Available architectures: armeabi-v7a arm64-v8a x86 x86_64 +MultiABI='all' + +# Optional shared libraries to compile - removing some of them will save space +# MP3 patents are expired, but libmad license is GPL, not LGPL +# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 +# rep 'Available' project/jni/SettingsTemplate.mk +CompiledLibraries="harfbuzz sdl_image jpeg png mad mikmod sdl_mixer sdl_ttf sdl_gfx" + +# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) +CustomBuildScript=n + +# Aditional CFLAGS for application +AppCflags='' + +# Aditional C++-specific compiler flags for application, added after AppCflags +AppCppflags='-DANDROID_STL=c++_shared -DANDROID -DHANDHELD -std=c++17 -I/media/iuri/SamsungEXT4/development/SDK/Android/Sdk/ndk/25.2.9519653/sources/cxx-stl/llvm-libc++/include -I. -I./rockdroid -I./rockdroid/aux_tools -I./rockdroid/data -I./rockdroid/character -I./rockdroid/character/movement -I./rockdroid/file -I./rockdroid/file/format -I./rockdroid/file/v4 -I./rockdroid/graphic -I./rockdroid/objects -I./rockdroid/options -I./rockdroid/ports/android -I./rockdroid/scenes' + +# Additional LDFLAGS for application +AppLdflags='-fexceptions -O3 -lm -lharfbuzz -lc -lc++' + +# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable +AppOverlapsSystemHeaders= + +# Build only following subdirs (empty will build all dirs, ignored with custom script) +AppSubdirsBuild='. data aux_tools character character/movement file file/format file/v4 graphic objects options ports/android scenes' + +# Exclude these files from build +AppBuildExclude='' + +# Application command line parameters, including app name as 0-th param +AppCmdline='./rockbot' + +# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens +# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge +MinimumScreenSize=s + +# Your AdMob Publisher ID, (n) if you don't want advertisements +AdmobPublisherId=n + +# Your AdMob test device ID, to receive a test ad +AdmobTestDeviceId= + +# Your AdMob banner size (BANNER/FULL_BANNER/LEADERBOARD/MEDIUM_RECTANGLE/SMART_BANNER/WIDE_SKYSCRAPER/FULL_WIDTH:Height/Width:AUTO_HEIGHT/Width:Height) +AdmobBannerSize= + +# Google Play Game Services application ID, required for cloud saves to work +GooglePlayGameServicesId= + +# The app will open files with following extension, file path will be added to commandline params +AppOpenFileExtension='' diff --git a/Makefile.psp b/Makefile.psp index 353a8d01..8e82b5f8 100644 --- a/Makefile.psp +++ b/Makefile.psp @@ -1,31 +1,35 @@ -PSPSDK=/opt/pspsdk/psp/ +PSPSDK=/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/ +export PATH=$PATH:/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/bin -TARGET = rockbot -OBJS = main.o options/key_map.o inputlib.o timerlib.o soundlib.o file/file_io.o collision_detection.o graphicslib.o \ +TARGET = rockbot_psp +OBJS = main.o data/datautil.o options/key_map.o inputlib.o timerlib.o soundlib.o file/file_io.o collision_detection.o graphicslib.o \ sceneslib.o stage_select.o graphic/option_picker.o classmap.o objects/object.o character/character.o projectilelib.o \ graphic/animation.o stage.o stage_select.o class_config.o scenes/dialogs.o game.o character/classplayer.o \ character/classnpc.o character/artificial_inteligence.o aux_tools/trajectory_parabola.o file/convert.o \ graphic/draw.o graphic/gfx_sin_wave.o character/movement/jump.o character/movement/inertia.o scenes/sceneshow.o \ game_mediator.o ports/psp/psp_ram.o strings_map.o file/fio_strings.o file/fio_common.o \ -file/fio_scenes.o aux_tools/stringutils.o aux_tools/fps_control.o docs/game_manual.o aux_tools/exception_manager.o \ -character/character_animation.o scenes/game_menu.o +file/fio_scenes.o aux_tools/stringutils.o aux_tools/fps_control.o aux_tools/exception_manager.o \ +character/character_animation.o scenes/game_menu.o shareddata.o logger.o + -INCDIR = /opt/pspsdk/psp/sdk/include +INCDIR = /media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/ CFLAGS = -G0 -Wall -O3 -DPSP -DHANDHELD -g -fexceptions -CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti -g -fexceptions +CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti -g -fexceptions -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/sdk/include -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/ -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/SDL/ ASFLAGS = $(CFLAGS) LIBDIR = LDFLAGS = -LIBS = -lm -lc -lstdc++ -lc -lSDL_gfx -lSDL_mixer -lvorbisidec -logg -lmikmod -lmmio -lsmpeg -lSDL_ttf -lfreetype -lSDL_image -ljpeg -lpng -lz `$(PSPSDK)/bin/sdl-config --libs` -lpspirkeyb -lpsppower -L$(PSPSDK)/sdk/lib +LIBS = -lm -lc -lstdc++ -lc -lSDL_gfx -lSDL_mixer -logg -lmikmod -lsmpeg -lSDL_ttf -lfreetype -lSDL_image -ljpeg -lpng -lz \ + -lSDLmain -lSDL -lm -lGL -lm -L/usr/local/pspdev/psp/sdk/lib -L/usr/local/pspdev/psp -lpspirkeyb -lpsppower -lpspvfpu -lpspdebug \ + -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspaudio \ + -L$(PSPSDK)/sdk/lib -L/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/sdk/lib BUILD_PRX=1 PSP_LARGE_MEMORY = 1 - - EXTRA_TARGETS = EBOOT.PBP -PSP_EBOOT_TITLE = Rockbot 1.0 -PSP_EBOOT_ICON= ./build/packages/files/psp_icon.png -PSP_EBOOT_PIC1= ./build/packages/files/psp_background.png -include /opt/pspsdk/psp/sdk/lib/build.mak +PSP_EBOOT_TITLE = Rockbot $(VERSIONNAME) +PSP_EBOOT_ICON= ./build/packages/files/psp_icon$($version_number).png +PSP_EBOOT_PIC1= ./build/packages/files/psp_background$($version_number).png + +include /media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/sdk/lib/build.mak diff --git a/RockDroid.pro b/RockDroid.pro new file mode 100644 index 00000000..219d0c6f --- /dev/null +++ b/RockDroid.pro @@ -0,0 +1,431 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2011-03-05T22:53:17 +# +#------------------------------------------------- + +CONFIG -= qt +CONFIG -= linux # qtcreator adds linux even if shouldn't, so we remove +QT -= core +QT -= gui + + +CONFIG += linux + +#CONFIG += win32 + +#CONFIG += raspberry + +#CONFIG += dingux + +#CONFIG += pocketgo + +#CONFIG += playstation2 + +#CONFIG += playstation3 + +#CONFIG += psp + # try to replicate the exact same behavior of the makefile.psp + +#CONFIG += open_pandora + +#CONFIG += wii + # missing rotozoom, check if we can remove it (I think it is used for missiles) + +#CONFIG += dreamcast + # /opt/toolchains/dc/sh-elf/bin/sh-elf-g++: Command not found + + +#DEFINES+= ANDROID=1 + +# -m64 problem in android build: +# NOTE for android build on 64: /usr/share/qt4/mkspecs/default/qmake.conf +# or, in QT5, /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf +# or, in a install in home (qt5), + + +### BETA VERSION ### +#DEFINESLIST += -DBETA_VERSION +#DEFINES += BETA_VERSION=1 + + +CONFIG += console +CONFIG -= app_bundle +TARGET = rockbot + +linux { + DEFINES += LINUX + LIBS = -L/usr/X11R6/lib -lX11 -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_gfx `sdl-config --libs` -ldl -lstdc++ -fstack-protector-all + INCLUDES = -I/usr/include/SDL -I/usr/include -I. -I./include -L/usr/lib + QMAKE_CCFLAGS += -std=c++17 -DLINUX -DPC -Wno-reorder -Wno-ignored-qualifiers -fpermissive -Werror=return-type -fstack-protector-all -fstack-protector + QMAKE_CXXFLAGS += -std=c++17 -DLINUX -DPC -Wno-reorder -Wno-ignored-qualifiers -fpermissive -Werror=return-type -fstack-protector-all -fstack-protector +} + +win32 { + DEFINES += WIN32 + LIBS = -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_gfx -lmingw32 -lSDL -mwindows -LC:\Qt\5.15.2\mingw81_32\lib -LC:\Qt\5.15.2\mingw81_32\lib\x86 -L/usr/lib -L/usr/lib/x86 -LC:\MinGW\lib -LC:\MinGW\lib\x86 + INCLUDES = -I/usr/include/SDL -I/usr/include -I. -I./include -L/usr/lib + QMAKE_CCFLAGS += -O2 -DWIN32 -DPC + QMAKE_CXXFLAGS += -O2 -DWIN32 -DPC -IC:\Qt\5.15.2\mingw81_32\ -IC:\Qt\5.15.2\mingw81_32\include -LC:\Qt\5.15.2\mingw81_32\lib -LC:\Qt\5.15.2\mingw81_32\lib\x86 + CONFIG -= console +} + +raspberry { + DEFINES+= RASPBERRY=1 + TARGET = rockbot_pi + LIBS = -L/usr/X11R6/lib -lX11 -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_gfx `sdl-config --libs` -ldl + INCLUDES = -I/usr/include/SDL -I/usr/include -I. -I./include -L/usr/lib + QMAKE_CCFLAGS += -O2 -DRASPBERRY -DPC -Wno-reorder -Wno-ignored-qualifiers -fpermissive + QMAKE_CXXFLAGS += -O2 -DRASPBERRY -DPC -Wno-reorder -Wno-ignored-qualifiers -fpermissive +} + +dingux { + DEFINES += DINGUX + TARGET = rockbot.dge + + QMAKE_CC = /media/iuri/SamsungEXT4/development/SDK/opendingux/usr/bin/mipsel-linux-gcc + QMAKE_CXX = /media/iuri/SamsungEXT4/development/SDK/opendingux/usr/bin/mipsel-linux-g++ + QMAKE_LINK = /media/iuri/SamsungEXT4/development/SDK/opendingux/usr/bin/mipsel-linux-g++ + + QMAKE_CFLAGS += -pipe -g -Wall -W -D_REENTRANT -DDINGUX -DHANDHELD -O3 + QMAKE_CXXFLAGS += -I/media/iuri/SamsungEXT4/development/SDK/opendingux/usr/include -pipe -g -Wall -W -D_REENTRANT -DDINGUX -DHANDHELD -O3 -L/media/iuri/SamsungEXT4/development/SDK/opendingux/usr/lib + + LIBS = $(SUBLIBS) -L/media/iuri/SamsungEXT4/development/SDK/opendingux/usr/lib/ -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_gfx `/media/iuri/SamsungEXT4/development/SDK/opendingux/usr/bin/sdl-config --libs` -lpthread + #-o /media/iuri/SamsungEXT4/development/SDK/opendingux/usr/lib/crt1.o + + INCLUDES = -I/media/iuri/SamsungEXT4/development/SDK/opendingux/usr/include -I. -I../include -I. + + #QMAKE_POST_LINK += /media/iuri/SamsungEXT4/development/SDK/opendingux/usr/bin/mipsel-linux-strip --strip-all rockbot.dge +} + +pocketgo { + DEFINES += POCKETGO + DEFINES += HAVE_STDINT_H + DEFINES += VERSION_BITTBOY + TARGET = rockbot_pocketgo + POCKETGO_SDK = /media/iuri/SamsungEXT4/development/SDK/PocketGo/output/host + + QMAKE_CC = $${POCKETGO_SDK}/bin/arm-buildroot-linux-musleabi-gcc + QMAKE_CXX = $${POCKETGO_SDK}/bin/arm-buildroot-linux-musleabi-g++ + QMAKE_LINK = $${POCKETGO_SDK}/bin/arm-buildroot-linux-musleabi-g++ + + QMAKE_CFLAGS += $(INCLUDES) $(OPT_FLAGS) -std=cnu11 -pipe -g -Wall -W -D_REENTRANT -DPOCKETGO -DHANDHELD -O3 + QMAKE_CXXFLAGS += $(INCLUDES) $(OPT_FLAGS) -std=c++11 -pipe -g -Wall -W -D_REENTRANT -DPOCKETGO -DHANDHELD -O3 + QMAKE_CXXFLAGS -= -ccc-gcc-name g++ + + LIBS = -L$${POCKETGO_SDK}/arm-buildroot-linux-musleabi/sysroot/usr/lib -Wl,--start-group -lSDL -lSDL_image -lpng -ljpeg -lSDL_mixer -lasound -lmikmod -logg -lvorbis -lvorbisfile -lmad -lfreetype -lSDL_ttf -lSDL_gfx -lm -pthread -lz -lstdc++ $(EXTRA_LDFLAGS) -Wl,--end-group + + INCLUDES = -I$${POCKETGO_SDK}/arm-buildroot-linux-musleabi/sysroot/usr/bin/../../usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I$${POCKETGO_SDK}/arm-buildroot-linux-musleabi/sysroot/include -I$${POCKETGO_SDK}/include -I. -I../include -I. $(SDL_CFLAGS) -I/media/iuri/SamsungEXT4/development/SDK/PocketGo/output/host/arm-buildroot-linux-musleabi/sysroot/usr/include + +} + +playstation2 { + DEFINES += PLAYSTATION2=1 + DEFINES += _EE + #DEFINES += _IOP + TARGET = rockbot.elf + + PS2DEV = /media/iuri/SamsungEXT4/development/SDK/PS2/sdk + PS2SDK = $${PS2DEV}/ps2sdk + GSKIT = $${PS2DEV}/gsKit + + export(PS2DEV) + export(PS2SDK) + export(GSKIT) + + # pre-build commands + SJPCM.target = SJPCM.s + SJPCM.commands = $${PS2SDK}/bin/bin2s ../ports/ps2/SJPCM.irx ../ports/ps2/SJPCM.s SJPCM + cdvd.target = cdvd.s + cdvd.commands = $${PS2SDK}/bin/bin2s ../ports/ps2/cdvd.irx ../ports/ps2/cdvd.s cdvd + usbd.target = usbd.s + usbd.commands = $${PS2SDK}/bin/bin2s ../ports/ps2/usbd.irx ../ports/ps2/usbd.s usbd + usbhdfsd.target = usbhdfsd.s + usbhdfsd.commands = $${PS2SDK}/bin/bin2s ../ports/ps2/usbhdfsd.irx ../ports/ps2/usbhdfsd.s usbhdfsd + QMAKE_EXTRA_TARGETS += SJPCM cdvd usbd usbhdfsd + PRE_TARGETDEPS += SJPCM.s + PRE_TARGETDEPS += cdvd.s + PRE_TARGETDEPS += usbd.s + PRE_TARGETDEPS += usbhdfsd.s + + #SOURCES += ports/ps2/cdvd_rpc.c + QMAKE_CXX = $${PS2DEV}/ee/bin/mips64r5900el-ps2-elf-g++ + #QMAKE_LINK = ee-g++ + QMAKE_LINK = $${PS2DEV}/ee/bin/mips64r5900el-ps2-elf-g++ + #QMAKE_CXXFLAGS += -std=c++11 -G0 -DPLAYSTATION2=1 -DNUM=100 -DUSE_RWOPS -fpermissive -I../include -I./include -I$${PS2SDK}/ports/include/SDL -I$${PS2SDK}/ports/include -I../common -I$${PS2SDK}/ee/include -I$${PS2SDK}/common/include -w + QMAKE_CXXFLAGS += -DPLAYSTATION2=1 -D_EE -G0 -O2 -Wall \ + -I$${PS2SDK}/ports/include \ + -I$${PS2SDK}/ee/include \ + -I$${PS2SDK}/common/include \ + -I. -I../include \ + -I$${PS2SDK}/common/include -w + + QMAKE_CFLAGS -= -m64 +# QMAKE_CFLAGS -= -std=gnu++11 + QMAKE_CXXFLAGS -= -m64 +# QMAKE_CXXFLAGS -= -std=gnu++11 + QMAKE_LFLAGS -= -m64 + + INCLUDES = -D_EE -O3 -G0 -Wall -G0 -mno-check-zero-division -ffast-math -funroll-loops -fomit-frame-pointer \ + -fstrict-aliasing -funsigned-char -fno-builtin-printf -I. -Iunzip -DVAR_CYCLES -DCPU_SHUTDOWN -DSPC700_SHUTDOWN \ + -DEXECUTE_SUPERFX_PER_LINE -DSPC700_C -DUNZIP_SUPPORT -DSDD1_DECOMP -DNO_INLINE_SET_GET -DNOASM -D_STLP_NO_NAMESPACES \ + -D_NOTHREADS -D_STLP_NO_EXCEPTIONS -D_STLP_USE_NEWALLOC -D_STLP_HAS_WCHAR_T -D_STLP_NO_IOSTREAMS -Dwint_t=int \ + -DPLAYSTATION2=1 -DNUM=100 -DUSE_RWOPS -I../include -I./include -I$${PS2SDK}/ports/include/SDL -I$${PS2SDK}/ports/include -I../common I$${PS2SDK}/ee/include + + LIBS = -Dmain=SDL_main $(SUBLIBS) ../ports/ps2/cdvd.s ../ports/ps2/usbd.s ../ports/ps2/usbhdfsd.s ../ports/ps2/SJPCM.s -L. -lstdc++ -lc \ + -L$(PS2DEV)/gsKit/lib -L../lib -L$${PS2SDK}/ports/lib \ + -lSDL_gfx -lSDL_image -ljpeg -ltiff -lpng -lz -ldebug -lSDL_ttf -lsdlmixer -lSDLmain -lSDL -lfreetype -lm -lcdvd -lpacket -ldma \ + -L$${PS2DEV}/ps2sdk/ee/lib -L$${PS2DEV}/gsKit/lib -L$${PS2DEV}/ps2sdk/ports/lib -lmc \ + -lstdc++ -Wl,--whole-archive -Wl,--no-whole-archive -Wl,--whole-archive -lkernel -Wl,--no-whole-archive + #QMAKE_POST_LINK += ee-strip --strip-all rockbot.elf +} + +playstation3 { + TARGET = rockbot + PS3SDK = /usr/local/ps3dev + PSL1GHT = /usr/local/ps3dev + export(PSL1GHT) + + QMAKE_CXX = $${PS3SDK}/ppu/bin/ppu-g++ + QMAKE_LINK = $${PS3SDK}/ppu/bin/ppu-g++ + + QMAKE_CXXFLAGS += -pipe -g -Wall -W -D_REENTRANT -DPS3 -I$${PS3SDK}/portlibs/ppu/include + + LIBS = $(SUBLIBS) -L$${PS3SDK}/portlibs/ppu/lib -L/usr/local/ps3dev/portlibs/ppu/lib -lSDL_gfx -lSDL_image -lpng -ltiff -ljpeg -lz -lSDL_ttf -lfreetype -lSDL_mixer -lvorbisfile -lvorbis -logg -lmikmod -lmad `/usr/local/ps3dev/portlibs/ppu/bin/sdl-config --libs` + + + INCLUDES = -I. -I../include -I. + + #QMAKE_POST_LINK += $(PANDORASDK)/bin/arm-angstrom-linux-gnueabi-strip --strip-all rockbot_pandora +} + +psp { + TARGET = rockbot_psp.elf + PSPSDK = /media/iuri/SamsungEXT4/development/SDK/PSP/sdk/ + + DEFINES += PSP + DEFINES += _PSP_FW_VERSION=150 + + QMAKE_CC = $${PSPSDK}/bin/psp-gcc + QMAKE_CXX = $${PSPSDK}/bin/psp-g++ + QMAKE_LINK = $${PSPSDK}/bin/psp-g++ + + QMAKE_CFLAGS -= -DQT_QML_DEBUG + QMAKE_CXXFLAGS -= -DQT_QML_DEBUG + + QMAKE_CFLAGS -= -pipe + QMAKE_CXXFLAGS -= -pipe + + QMAKE_CFLAGS -= -W + QMAKE_CXXFLAGS -= -W + + + QMAKE_CFLAGS += -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/ -I. -I/psp/include -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk//include -G0 -G0 -Wall -O3 -DPSP -DHANDHELD -g -fexceptions -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/ -I. -I/psp/include -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk//include -G0 -G0 -Wall -O3 -DPSP -DHANDHELD -g -fexceptions -fno-exceptions -fno-rtti -g -fexceptions -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/sdk/include -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/ -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/SDL/ -D_PSP_FW_VERSION=150 -c -o + QMAKE_CXXFLAGS += -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/ -I. -I/psp/include -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk//include -G0 -G0 -Wall -O3 -DPSP -DHANDHELD -g -fexceptions -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/ -I. -I/psp/include -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk//include -G0 -G0 -Wall -O3 -DPSP -DHANDHELD -g -fexceptions -fno-exceptions -fno-rtti -g -fexceptions -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/sdk/include -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/ -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/SDL/ -D_PSP_FW_VERSION=150 -c -o + + LIBS = -lm -lc -lstdc++ -lc -lSDL_gfx -lSDL_mixer -logg -lmikmod -lsmpeg -lSDL_ttf -lfreetype -lSDL_image -ljpeg -lpng -lz \ + -lSDLmain -lSDL -lm -lGL -lm -L/usr/local/pspdev/psp/sdk/lib -L/usr/local/pspdev/psp -lpspirkeyb -lpsppower -lpspvfpu -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspaudio \ + -L$(PSPSDK)/sdk/lib -L/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/sdk/lib + + INCLUDES = -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/sdk/include -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/ -I/media/iuri/SamsungEXT4/development/SDK/PSP/sdk/psp/include/SDL/ + + QMAKE_POST_LINK += /media/iuri/SamsungEXT4/development/SDK/PSP/sdk/bin/mksfo 'Rockbot ' PARAM.SFO $$escape_expand(\n\t) + QMAKE_POST_LINK += /media/iuri/SamsungEXT4/development/SDK/PSP/sdk/bin/psp-strip rockbot_psp.elf -o rockbot_psp_strip.elf $$escape_expand(\n\t) + QMAKE_POST_LINK += /media/iuri/SamsungEXT4/development/SDK/PSP/sdk/bin/pack-pbp EBOOT.PBP PARAM.SFO ./packages/files/psp_icon.png NULL NULL ./packages/files/psp_background.png NULL rockbot_psp_strip.elf NULL $$escape_expand(\n\t) + +#mksfo 'Rockbot ' PARAM.SFO +#psp-strip rockbot_psp.elf -o rockbot_psp_strip.elf +#pack-pbp EBOOT.PBP PARAM.SFO ./build/packages/files/psp_icon.png \ +# NULL NULL ./build/packages/files/psp_background.png \ +# NULL rockbot_psp_strip.elf NULL +# +#[0] 408 bytes | PARAM.SFO +#[1] 7146 bytes | ./build/packages/files/psp_icon.png +#[2] 0 bytes | NULL +#[3] 0 bytes | NULL +#[4] 134559 bytes | ./build/packages/files/psp_background.png +#[5] 0 bytes | NULL +#[6] 3783804 bytes | rockbot_psp_strip.elf +#[7] 0 bytes | NULL + + +} + + + +open_pandora { + TARGET = rockbot_pandora + PANDORASDK = /media/iuri/SamsungEXT4/development/SDK/pandora_sdk/arm-2011.09/ + + QMAKE_CXX = $${PANDORASDK}/bin/arm-angstrom-linux-gnueabi-g++ + QMAKE_LINK = $${PANDORASDK}/bin/arm-angstrom-linux-gnueabi-g++ + + QMAKE_CXXFLAGS += -pipe -g -Wall -W -D_REENTRANT -DOPEN_PANDORA -DHANDHELD -I$(PANDORAROOTDIR)/usr/include + + LIBS = $(SUBLIBS) -L$(PANDORAROOTDIR)/lib -L$(PANDORAROOTDIR)/usr/lib -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_gfx `$(PANDORAROOTDIR)/usr/bin/sdl-config --libs` -lpthread + + INCLUDES = -I. -I../include -I. + + #QMAKE_POST_LINK += $(PANDORASDK)/bin/arm-angstrom-linux-gnueabi-strip --strip-all rockbot_pandora +} + + +wii { + TARGET = rockbot.elf + QMAKE_CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc + QMAKE_CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++ + QMAKE_LINK = $(DEVKITPPC)/bin/powerpc-eabi-g++ + + QMAKE_CXXFLAGS += -Dmain=SDL_main -fexceptions -G0 -Wall -O3 -DWII -DHANDHELD -g -I. -I$(DEVKITPPC)/../libogc/include/ -I$(DEVKITPPC)/../libogc/include/ogc/ -I$(DEVKITPPC)/devkitPPC/include/ -G0 -Wall -DWII -g -fno-rtti -g + LIBS = -Dmain=SDL_main -L. -L$(DEVKITPPC)/../portlibs/ppc/lib -L$(DEVKITPPC)/../libogc/lib/wii/ -L$(DEVKITPPC)/../libogc/lib/ -L$(DEVKITPPC)/devkitPPC/lib/ -lSDL_gfx -lSDL_ttf -lSDL_mixer -lSDL_image -lsmpeg -lSDL -ljpeg -lpng -lfreetype -lz -lfat -lwiiuse -lbte -lwiikeyboard -logc -lm -mrvl + + INCLUDES = -I$(DEVKITPPC)/libogc/include/ -I$(DEVKITPPC)/devkitPPC/include/ -I. -I../include -I. + + QMAKE_POST_LINK += $(DEVKITPPC)/bin/elf2dol rockbot.elf boot.dol +} + +dreamcast { + TARGET = rockbot_dreamcast.elf + QMAKE_CC = /opt/toolchains/dc/sh-elf/bin/sh-elf-gcc + QMAKE_CXX = /opt/toolchains/dc/sh-elf/bin/sh-elf-g++ + QMAKE_LINK = /opt/toolchains/dc/sh-elf/bin/sh-elf-g++ + + QMAKE_CXXFLAGS += -I$(KOS_BASE)/addons/include $(OPTFLAGS) $(KOS_LDFLAGS) -Wall -O3 -DHANDHELD -g -I. -I/home/iuri/devel/SDK/Dreamcast/kos/utils/dc-chain/newlib-2.0.0/newlib/libc/include -I/opt/toolchains/dc/sh-elf/include -DDREAMCAST $(OBJEXTRA) $(KOS_LIBS) + LIBS = $(KOS_LIBS) $(KOS_LDFLAGS) -L. -L/home/iuri/devel/SDK/Dreamcast/kos/addons/lib/dreamcast/ -lc -lstdc++ -lc -lSDL_gfx -lSDL_ttf -lSDL_mixer_126 -lSDL_image_124 -lSDL_1213 -ljpeg -lpng -lfreetype -lz_123 $(OBJEXTRA) $(KOS_LIBS) -lm -lgcc -lc + + INCLUDES = -I/home/iuri/devel/SDK/Dreamcast/kos-ports/include -I$(KOS_BASE)/addons/include -I$(KOS_BASE)/addons/include/SDL $(OPTFLAGS) -I/opt/toolchains/dc/sh-elf/include -I. -I../include -I. + #$KOS_OBJCOPY -R .stack -O binary rockbot_dreamcast.elf rockbot_dreamcast.bin +} + + +QMAKE_CXXFLAGS += $${DEFINESLIST} + +TEMPLATE = app + + +SOURCES += main.cpp \ + aux_tools/fps_control.cpp \ + character/character.cpp \ + data/datautil.cpp \ + graphicslib.cpp \ + inputlib.cpp \ + game.cpp \ + logger.cpp \ + shareddata.cpp \ + stage.cpp \ + classmap.cpp \ + character/classplayer.cpp \ + timerlib.cpp \ + sceneslib.cpp \ + soundlib.cpp \ + projectilelib.cpp \ + character/classnpc.cpp \ + stage_select.cpp \ + class_config.cpp \ + objects/object.cpp \ + graphic/option_picker.cpp \ + scenes/dialogs.cpp \ + file/file_io.cpp \ + graphic/animation.cpp \ + character/artificial_inteligence.cpp \ + options/key_map.cpp \ + graphic/draw.cpp \ + aux_tools/trajectory_parabola.cpp \ + file/convert.cpp \ + character/movement/jump.cpp \ + character/movement/inertia.cpp \ + file/fio_scenes.cpp \ + scenes/sceneshow.cpp \ + strings_map.cpp \ + file/fio_strings.cpp \ + aux_tools/stringutils.cpp \ + file/fio_common.cpp \ + game_mediator.cpp \ + collision_detection.cpp \ + graphic/gfx_sin_wave.cpp \ + character/character_animation.cpp \ + aux_tools/exception_manager.cpp \ + scenes/game_menu.cpp \ + ports/android/android_game_services.cpp + + +HEADERS += \ + aux_tools/fps_control.h \ + character/character.h \ + data/datautil.h \ + file/v4/file_config_old.h \ + graphicslib.h \ + defines.h \ + inputlib.h \ + game.h \ + logger.h \ + shareddata.h \ + stage.h \ + classmap.h \ + character/classplayer.h \ + timerlib.h \ + sceneslib.h \ + soundlib.h \ + projectilelib.h \ + character/classnpc.h \ + stage_select.h \ + class_config.h \ + objects/object.h \ + graphic/option_picker.h \ + scenes/dialogs.h \ + file/format.h \ + file/file_io.h \ + graphic/animation.h \ + character/artificial_inteligence.h \ + character/st_spriteFrame.h \ + ports/ps2/modules.h \ + options/key_map.h \ + graphic/draw.h \ + aux_tools/trajectory_parabola.h \ + file/convert.h \ + file/format/st_characterState.h \ + file/format/st_common.h \ + file/format/st_hitPoints.h \ + file/format/st_platform.h \ + file/format/st_projectile.h \ + file/format/st_teleporter.h \ + character/movement/jump.h \ + character/movement/inertia.h \ + file/version.h \ + file/fio_scenes.h \ + scenes/sceneshow.h \ + file/v4/file_config_v4.h \ + file/v4/file_game_v4.h \ + file/v4/file_save_v4.h \ + file/v4/file_scene_v4.h \ + file/v4/file_stage_v4.h \ + strings_map.h \ + file/fio_strings.h \ + aux_tools/stringutils.h \ + file/v4/file_strings.h \ + file/v4/file_map.h \ + file/fio_common.h \ + game_mediator.h \ + file/v4/file_anim_block.h \ + collision_detection.h \ + graphic/gfx_sin_wave.h \ + character/character_animation.h \ + aux_tools/exception_manager.h \ + scenes/game_menu.h \ + ports/android/android_game_services.h + +OTHER_FILES += \ + docs/RoadMap.txt \ + rockbot_dingux.pro \ + docs/Changelog.txt \ + docs/graphic_conversion.txt + +DISTFILES += \ + AndroidAppSettings.cfg \ + docs/notes.txt \ + docs/Releases.txt \ + docs/crashes.txt \ + docs/translation_lines.txt + + + diff --git a/Rockbot.pro b/Rockbot.pro index bcdcd71d..2a3cbca2 100644 --- a/Rockbot.pro +++ b/Rockbot.pro @@ -12,10 +12,10 @@ QT -= gui #CONFIG += linux -CONFIG += raspberry +#CONFIG += raspberry #CONFIG += android #CONFIG += win32 -#CONFIG += playstation2 +CONFIG += playstation2 #CONFIG += dingux #CONFIG += open_pandora #CONFIG += wii @@ -25,6 +25,7 @@ CONFIG += raspberry # -m64 problem in android build: # NOTE for android build on 64: /usr/share/qt4/mkspecs/default/qmake.conf # or, in QT5, /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf +# or, in a install in home (qt5), ### BETA VERSION ### @@ -224,6 +225,7 @@ dingux { playstation2 { + QMAKESPEC=./ports/ps2/g++-ps2.conf DEFINES+= PLAYSTATION2=1 TARGET = rockbot.elf diff --git a/aux_tools/exception_manager.cpp b/aux_tools/exception_manager.cpp index 4d1a158c..f2477876 100644 --- a/aux_tools/exception_manager.cpp +++ b/aux_tools/exception_manager.cpp @@ -1,11 +1,5 @@ #include "exception_manager.h" -#include -#include -#include -#include - - exception_manager::exception_manager() { @@ -14,26 +8,29 @@ exception_manager::exception_manager() void exception_manager::throw_param_exception(std::string prefix, std::string param) { + std::cout << "### PARAM-EXCEPTION - prefix[" << prefix << "], param[" << param << "]" << std::endl; std::string backtrace = get_backtrace(); char error_msg[512+backtrace.size()]; sprintf(error_msg, "Exception: Invalid parameter [%s] - value[%s]\nBacktrace:\n[%s]", prefix.c_str(), param.c_str(), backtrace.c_str()); - throw std::invalid_argument(error_msg); + //throw std::invalid_argument(error_msg); } void exception_manager::throw_file_not_found_exception(std::string prefix, std::string param) { + std::cout << "### FILE-NOT-FOUND-EXCEPTION - prefix[" << prefix << "], param[" << param << "]" << std::endl; std::string backtrace = get_backtrace(); char error_msg[512+backtrace.size()]; sprintf(error_msg, "Exception: file not found[%s] - file[%s]\nBacktrace:\n[%s]", prefix.c_str(), param.c_str(), backtrace.c_str()); - throw std::invalid_argument(error_msg); + //throw std::invalid_argument(error_msg); } void exception_manager::throw_general_exception(std::string prefix, std::string param) { + std::cout << "### -GENERAL-EXCEPTION - prefix[" << prefix << "], param[" << param << "]" << std::endl; std::string backtrace = get_backtrace(); char error_msg[512+backtrace.size()]; sprintf(error_msg, "Exception: runtime error[%s] - code[%s]\nBacktrace:\n[%s]", prefix.c_str(), param.c_str(), backtrace.c_str()); - throw std::runtime_error(error_msg); + //throw std::runtime_error(error_msg); } #ifdef ANDROID @@ -51,16 +48,16 @@ _Unwind_Reason_Code exception_manager::unwindCallback(struct _Unwind_Context* co } size_t exception_manager::captureBacktrace(void** buffer, size_t max) { - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "exception_manager::captureBacktrace #1"); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "exception_manager::captureBacktrace #1"); BacktraceState state = {buffer, buffer + max}; _Unwind_Backtrace(unwindCallback, &state); - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "exception_manager::captureBacktrace #2"); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "exception_manager::captureBacktrace #2"); return state.current - buffer; } void exception_manager::dumpBacktrace(std::ostream& os, void** buffer, size_t count) { - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "exception_manager::dumpBacktrace #1"); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "exception_manager::dumpBacktrace #1"); for (size_t idx = 0; idx < count; ++idx) { const void* addr = buffer[idx]; const char* symbol = ""; @@ -72,7 +69,7 @@ void exception_manager::dumpBacktrace(std::ostream& os, void** buffer, size_t co os << " #" << std::setw(2) << idx << ": " << addr << " " << symbol << "\n"; } - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "exception_manager::dumpBacktrace #2"); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "exception_manager::dumpBacktrace #2"); } void exception_manager::getBacktrace(std::ostringstream &oss, const size_t max) diff --git a/aux_tools/exception_manager.h b/aux_tools/exception_manager.h index ff4a54a2..10cfc639 100644 --- a/aux_tools/exception_manager.h +++ b/aux_tools/exception_manager.h @@ -13,6 +13,11 @@ #include #include #include +#include +#include +#include +#include + #endif struct BacktraceState diff --git a/aux_tools/fps_control.cpp b/aux_tools/fps_control.cpp index 35a660f3..aa299612 100644 --- a/aux_tools/fps_control.cpp +++ b/aux_tools/fps_control.cpp @@ -1,19 +1,17 @@ #include "fps_control.h" -#include +#include // std::find - - -#include "timerlib.h" +#include "../timerlib.h" extern timerLib timer; -#include "graphicslib.h" +#include "../graphicslib.h" extern graphicsLib graphLib; fps_control::fps_control() : fps_timer(0) { - fps_max = DEFAULT_FPS_MAX; + fps_max = SharedData::get_instance()->get_max_fps(); fps_counter = 0; fps_min_fail_count = 0; failed_min_fps = false; @@ -25,12 +23,6 @@ void fps_control::initialize() max_frame_ticks = (1000.0/(float)fps_max)+0.00001; frame_count = 0; last_second_ticks = timer.getTimer(); - /* - fps_max = max; - float percent = (100 * fps_max) / DEFAULT_FPS_MAX; - std::cout << "FPS_CONTROL.set_max_fps[" << max << "], percent[" << percent << "]" << std::endl; - max_frame_ticks = (1000.0/(float)fps_max)+0.00001; - */ } bool fps_control::limit() @@ -41,7 +33,6 @@ bool fps_control::limit() ++frame_count; target_ticks = last_second_ticks + static_cast(frame_count * max_frame_ticks); current_ticks = timer.getTimer(); - //std::cout << "fps_control::limit::timer.ticks[" << timer.getTimer() << "], sdl.ticks[" << current_ticks << "]" << std::endl; average_ticks += current_ticks - last_frame_ticks; if (current_ticks - last_frame_ticks <= min_ticks) @@ -93,9 +84,8 @@ void fps_control::fps_count() fps_counter++; if (fps_timer <= timer.getTimer()) { sprintf(_fps_buffer, "FPS: %d", fps_counter); - if (fps_counter <= DEFAULT_FPS_MAX-4) { - frame_drop_period = DEFAULT_FPS_MAX/(DEFAULT_FPS_MAX-fps_counter); - //std::cout << "frame_drop_period[" << frame_drop_period << "], fps_counter[" << fps_counter << "]" << std::endl; + if (fps_counter <= fps_timer-4) { + frame_drop_period = fps_timer/(fps_timer-fps_counter); } else { frame_drop_period = 0; } @@ -103,6 +93,7 @@ void fps_control::fps_count() fps_timer = timer.getTimer()+1000; } if (fps_counter > 1) { + /* if (fps_counter <= FPS_MINIMAL_LIMIT) { fps_min_fail_count++; } else { @@ -111,6 +102,7 @@ void fps_control::fps_count() if (fps_min_fail_count >= FPS_MINIMAL_MAX_FAIL) { failed_min_fps = true; } + */ std::string temp_str(_fps_buffer); graphLib.draw_text(12, 2, temp_str); } @@ -139,3 +131,38 @@ void fps_control::reset_failed_min_fps() failed_min_fps = false; } +void fps_control::set_frameskip(int skip_n) +{ + frameskip_list.clear(); + if (skip_n == 1) { + frameskip_list.push_back(1); + } else if (skip_n == 2) { + frameskip_list.push_back(1); + frameskip_list.push_back(6); + } else if (skip_n == 3) { + frameskip_list.push_back(1); + frameskip_list.push_back(4); + frameskip_list.push_back(7); + } else if (skip_n == 4) { + frameskip_list.push_back(1); + frameskip_list.push_back(3); + frameskip_list.push_back(6); + frameskip_list.push_back(9); + } else if (skip_n == 5) { + frameskip_list.push_back(1); + frameskip_list.push_back(3); + frameskip_list.push_back(5); + frameskip_list.push_back(7); + frameskip_list.push_back(9); + } +} + +bool fps_control::must_skip_frame() +{ + int frame_unit_part = frame_count % 10; + if (std::find(frameskip_list.begin(), frameskip_list.end(), frame_unit_part) != frameskip_list.end()) { + return true; + } + return false; +} + diff --git a/aux_tools/fps_control.h b/aux_tools/fps_control.h index 88b91ac9..18bffe6c 100644 --- a/aux_tools/fps_control.h +++ b/aux_tools/fps_control.h @@ -2,11 +2,13 @@ #define FPS_CONTROL_H #define DEFULT_PLAYER_SPEED 1.2 -#define DEFAULT_FPS_MAX 60 #define FPS_MINIMAL_LIMIT 50 // if fps is lower or equal this value, we increment fail-count #define FPS_MINIMAL_MAX_FAIL 10 // if we have 10 consecutive times fps is under limit, we take action +#include #include +#include +#include "shareddata.h" // === FPS limiter by Felipe Zacani === // @@ -30,7 +32,8 @@ class fps_control int get_frame_drop_n(); bool get_failed_min_fps(); void reset_failed_min_fps(); - + void set_frameskip(int skip_n); + bool must_skip_frame(); private: st_fps_data data; @@ -48,7 +51,7 @@ class fps_control unsigned short fps_max; - unsigned int fps_timer; + unsigned long fps_timer; int fps_counter; // if we are getting less than 60 fps, this will tell main loop how many times it will run full until drop one unsigned short frame_drop_period; @@ -57,6 +60,7 @@ class fps_control unsigned int fps_min_fail_count; // counts the number of sequential times the FPS is under minumal limit bool failed_min_fps; + std::vector frameskip_list; }; #endif // FPS_CONTROL_H diff --git a/aux_tools/stringutils.cpp b/aux_tools/stringutils.cpp index 9823c8ee..724baac6 100644 --- a/aux_tools/stringutils.cpp +++ b/aux_tools/stringutils.cpp @@ -1,7 +1,5 @@ #include "stringutils.h" - - StringUtils::StringUtils() { diff --git a/aux_tools/stringutils.h b/aux_tools/stringutils.h index 96715e74..9cc2856d 100644 --- a/aux_tools/stringutils.h +++ b/aux_tools/stringutils.h @@ -3,9 +3,8 @@ #include #include -#include #include -#include +#include class StringUtils { diff --git a/aux_tools/trajectory_parabola.cpp b/aux_tools/trajectory_parabola.cpp index 64fea313..ca4ed9b6 100644 --- a/aux_tools/trajectory_parabola.cpp +++ b/aux_tools/trajectory_parabola.cpp @@ -34,7 +34,6 @@ void trajectory_parabola::set_distance(int dist) if (_reducefactor <= 0) { _reducefactor = 0.4; } - //std::cout << ">>>> DEBUG #2 _reducefactor: " << _reducefactor << ", _max_point: " << _max_point << " speed: " << _v << " <<<<<" << std::endl; } int trajectory_parabola::get_y_point(int n) const @@ -51,9 +50,6 @@ int trajectory_parabola::get_y_point(int n) const if (_reducefactor != 0) { reduced_y = (int)(y/_reducefactor); } - if (reduced_y <= -21474834) { - std::cout << ">>>parabola::get_y_point - n: " << n << ", _max_point: " << _reducefactor << ", y: " << y << ", reduced_y: " << reduced_y << std::endl; - } return reduced_y; } diff --git a/build/fonts/dlxfont.ttf b/build/fonts/dlxfont.ttf deleted file mode 100644 index 61add23c..00000000 Binary files a/build/fonts/dlxfont.ttf and /dev/null differ diff --git a/build/fonts/gamegirl.ttf b/build/fonts/gamegirl.ttf deleted file mode 100644 index 79de5a1f..00000000 Binary files a/build/fonts/gamegirl.ttf and /dev/null differ diff --git a/build/fonts/kapel.ttf b/build/fonts/kapel.ttf new file mode 100644 index 00000000..4d42a263 Binary files /dev/null and b/build/fonts/kapel.ttf differ diff --git a/build/fonts/kongtext.ttf b/build/fonts/kongtext.ttf deleted file mode 100644 index 5e4d65fd..00000000 Binary files a/build/fonts/kongtext.ttf and /dev/null differ diff --git a/build/games/RockDroid1/anim_block_list.dat b/build/games/RockDroid1/anim_block_list.dat new file mode 100644 index 00000000..1872e12c Binary files /dev/null and b/build/games/RockDroid1/anim_block_list.dat differ diff --git a/build/games/Rockbot1/anim_tiles.dat b/build/games/RockDroid1/anim_tiles.dat similarity index 100% rename from build/games/Rockbot1/anim_tiles.dat rename to build/games/RockDroid1/anim_tiles.dat diff --git a/build/games/RockDroid1/boss_credits.txt b/build/games/RockDroid1/boss_credits.txt new file mode 100644 index 00000000..7b3a8859 --- /dev/null +++ b/build/games/RockDroid1/boss_credits.txt @@ -0,0 +1,60 @@ +DDN.00 +MILONGA BOT +IURI FIEDORUK +IURI FIEDORUK +DDN.01 +APE BOT +IVAN FIEDORUK +IURI FIEDORUK +DDN.02 +DAISIE BOT +ARISMEIRE K. S. FIEDORUK +ARISMEIRE K. S. FIEDORUK +DDN.03 +SEAHORSE BOT +ARISMEIRE K. S. FIEDORUK +IURI FIEDORUK +DDN.04 +MUMMY BOT +ARISMEIRE K. S. FIEDORUK +ARISMEIRE K. S. FIEDORUK +DDN.05 +MAGE BOT +ARISMEIRE K. S. FIEDORUK +ARISMEIRE K. S. FIEDORUK +DDN.06 +DYNAMITE BOT +KOBOLD SACCOL +IURI FIEDORUK +DDN.07 +SPIKE BOT +IURI FIEDORUK +IURI FIEDORUK +DDN.08 +TECHNO BOT +CHIKAGO SACCOL +IURI FIEDORUK +DDS.01 +TECH CIRCLE +IURI FIEDORUK +IURI FIEDORUK +DDS.02 +SKULLPUNK +IURI FIEDORUK +IURI FIEDORUK +DDS.03 +IRON TANK +IURI FIEDORUK +IURI FIEDORUK +DDS.04 +WASPER +IURI FIEDORUK +IURI FIEDORUK +DDS.00 +DESTRIN TANK +IURI FIEDORUK +IURI FIEDORUK + + + + diff --git a/build/games/Rockbot1/castle1_points.dat b/build/games/RockDroid1/castle1_points.dat similarity index 100% rename from build/games/Rockbot1/castle1_points.dat rename to build/games/RockDroid1/castle1_points.dat diff --git a/build/games/Rockbot1/castle2_points.dat b/build/games/RockDroid1/castle2_points.dat similarity index 100% rename from build/games/Rockbot1/castle2_points.dat rename to build/games/RockDroid1/castle2_points.dat diff --git a/build/games/Rockbot1/castle_data_v301.dat b/build/games/RockDroid1/castle_data_v301.dat similarity index 100% rename from build/games/Rockbot1/castle_data_v301.dat rename to build/games/RockDroid1/castle_data_v301.dat diff --git a/build/games/Rockbot1/common_strings.dat b/build/games/RockDroid1/common_strings.dat similarity index 100% rename from build/games/Rockbot1/common_strings.dat rename to build/games/RockDroid1/common_strings.dat diff --git a/build/games/Rockbot1/common_strings_en.dat b/build/games/RockDroid1/common_strings_en.dat similarity index 100% rename from build/games/Rockbot1/common_strings_en.dat rename to build/games/RockDroid1/common_strings_en.dat diff --git a/build/games/Rockbot1/data/game_projectile_list_v2.dat b/build/games/RockDroid1/data/game_projectile_list_v2.dat similarity index 100% rename from build/games/Rockbot1/data/game_projectile_list_v2.dat rename to build/games/RockDroid1/data/game_projectile_list_v2.dat diff --git a/build/games/RockDroid1/data/game_projectile_list_v3.dat b/build/games/RockDroid1/data/game_projectile_list_v3.dat new file mode 100644 index 00000000..38bfaab3 Binary files /dev/null and b/build/games/RockDroid1/data/game_projectile_list_v3.dat differ diff --git a/build/games/Rockbot1/data/stages_extra_data_v301.dat b/build/games/RockDroid1/data/stages_extra_data_v301.dat similarity index 100% rename from build/games/Rockbot1/data/stages_extra_data_v301.dat rename to build/games/RockDroid1/data/stages_extra_data_v301.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_-1.dat b/build/games/RockDroid1/dialogs/stage_dialogs_-1.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_-1.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_-1.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_0.dat b/build/games/RockDroid1/dialogs/stage_dialogs_0.dat similarity index 96% rename from build/games/Rockbot1/dialogs/stage_dialogs_0.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_0.dat index ba1604ed..efe9e472 100644 --- a/build/games/Rockbot1/dialogs/stage_dialogs_0.dat +++ b/build/games/RockDroid1/dialogs/stage_dialogs_0.dat @@ -35,7 +35,7 @@ COME AND GET ME! THE NAME'S ROCKBOT. -LET'S SEE HOW TOUGHT +LET'S SEE HOW TOUGH YOU ARE. diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_14.dat b/build/games/RockDroid1/dialogs/stage_dialogs_0_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_14.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_0_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_15.dat b/build/games/RockDroid1/dialogs/stage_dialogs_0_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_15.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_0_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_16.dat b/build/games/RockDroid1/dialogs/stage_dialogs_0_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_16.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_0_it.dat diff --git a/build/games/RockDroid1/dialogs/stage_dialogs_0_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_0_pt.dat new file mode 100644 index 00000000..03c105b0 --- /dev/null +++ b/build/games/RockDroid1/dialogs/stage_dialogs_0_pt.dat @@ -0,0 +1,60 @@ +KYOTO ESTÁ SOB ATAQUE! ÇÃ +DEVEMOS DESCOBRIR E +IMPEDIR QUEM FEZ ISTO. + + + +NÃO SE PREOCUPE, DR. +KANOTUS. IREI ACHAR O VILÃO +E O LEVAREI A JUSTIÇA. + + + +POSITIVO. +DEVLO OBLITERAR A +QUALQUER OPOSIÇÃO. + + + +FAREI MEU MELHOR DOUTOR. +TOMARA QUE NINGUÉM +SE MACHUQUE. + + + +ESSES IDIOTAS NÃO APRENDEM. +SERÁ QUE DESTA VEZ SABERÃO +SE RENDER? + + + +ENTÃO VOCÊ É UM DESSES +BOTS POLICIAIS? +TENTE ME APANHAR! + + + +O NOME Ŕ ROCKBOT. +VAMOS VER QUÃO DURÃO +VOCÊ É. + + + +SIM. SOU BETABOT. +RESISTÊNCIA É INÚTIL. +RENDA-SE ME ME ENFRENTE. + + + +MEU NOME É CANDYBOT, +SEU MALVADÃO! E ESTOU +AQUI PARA PARAR VOCÊ! + + + +O NOME É KITTY, SEU BOBO. +RENDA-SE E PROMETO NÃO +MACHUCAR VOCÊ MUITO. + + + diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_1.dat b/build/games/RockDroid1/dialogs/stage_dialogs_1.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_1.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_1.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_10.dat b/build/games/RockDroid1/dialogs/stage_dialogs_10.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_10.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_10.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_10_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_10_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_10_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_10_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_10_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_10_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_10_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_10_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_10_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_10_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_10_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_10_it.dat diff --git a/build/games/RockDroid1/dialogs/stage_dialogs_10_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_10_pt.dat new file mode 100644 index 00000000..36c0a1d3 --- /dev/null +++ b/build/games/RockDroid1/dialogs/stage_dialogs_10_pt.dat @@ -0,0 +1,60 @@ +VOCÊ PODE TER PASSADO PELA +PRIMEIRA PARTE DO CASTELO, +MAS AGRA SERÁ ESMAGADO! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_11.dat b/build/games/RockDroid1/dialogs/stage_dialogs_11.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_11.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_11.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_11_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_11_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_11_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_11_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_11_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_11_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_11_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_11_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_11_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_11_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_11_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_11_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_11_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_11_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_11_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_11_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_12.dat b/build/games/RockDroid1/dialogs/stage_dialogs_12.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_12.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_12.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_12_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_12_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_12_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_12_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_12_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_12_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_12_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_12_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_12_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_12_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_12_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_12_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_12_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_12_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_12_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_12_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_13.dat b/build/games/RockDroid1/dialogs/stage_dialogs_13.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_13.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_13.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_13_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_13_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_13_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_13_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_13_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_13_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_13_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_13_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_13_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_13_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_13_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_13_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_13_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_13_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_13_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_13_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_17.dat b/build/games/RockDroid1/dialogs/stage_dialogs_14.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_17.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_14.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_14_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_14_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_14_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_14_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_14_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_14_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_14_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_14_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_14_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_14_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_14_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_14_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_14_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_14_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_14_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_14_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_18.dat b/build/games/RockDroid1/dialogs/stage_dialogs_15.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_18.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_15.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_15_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_15_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_15_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_15_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_15_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_15_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_15_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_15_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_15_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_15_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_15_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_15_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_15_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_15_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_15_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_15_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_19.dat b/build/games/RockDroid1/dialogs/stage_dialogs_16.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_19.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_16.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_16_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_16_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_16_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_16_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_16_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_16_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_16_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_16_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_16_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_16_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_16_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_16_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_16_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_16_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_16_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_16_pt.dat diff --git a/build/games/Rockbot2/boss_credits.txt b/build/games/RockDroid1/dialogs/stage_dialogs_17.dat similarity index 100% rename from build/games/Rockbot2/boss_credits.txt rename to build/games/RockDroid1/dialogs/stage_dialogs_17.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_17_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_17_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_17_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_17_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_17_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_17_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_17_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_17_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_17_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_17_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_17_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_17_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_17_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_17_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_17_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_17_pt.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_10.dat b/build/games/RockDroid1/dialogs/stage_dialogs_18.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_10.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_18.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_18_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_18_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_18_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_18_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_18_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_18_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_18_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_18_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_18_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_18_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_18_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_18_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_18_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_18_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_18_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_18_pt.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_11.dat b/build/games/RockDroid1/dialogs/stage_dialogs_19.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_11.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_19.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_19_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_19_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_19_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_19_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_19_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_19_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_19_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_19_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_19_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_19_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_19_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_19_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_19_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_19_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_19_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_19_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_1_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_1_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_1_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_1_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_1_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_1_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_1_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_1_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_1_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_1_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_1_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_1_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_1_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_1_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_1_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_1_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_2.dat b/build/games/RockDroid1/dialogs/stage_dialogs_2.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_2.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_2.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_2_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_2_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_2_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_2_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_2_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_2_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_2_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_2_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_2_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_2_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_2_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_2_it.dat diff --git a/build/games/RockDroid1/dialogs/stage_dialogs_2_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_2_pt.dat new file mode 100644 index 00000000..28009675 --- /dev/null +++ b/build/games/RockDroid1/dialogs/stage_dialogs_2_pt.dat @@ -0,0 +1,60 @@ +VOCÊ É BRAVO, MAS +MEU PODER FLORAL IRÁ +COLOCAR VOCÊ PARA DORMIR. +SEU ROBÔ FEIO! +A MÃE NATUREZA SEMPRE IRÁ +PREVALECER À TECNOLOGIA. +SINTO MUITO, PRINCESA, +MAS NADA DE BEIJOS NO +PRIMEIRO ENCONTRO. + + + +EU NÃO DURMO OU RESPIRO, +SEUS PODERES SERÃO +DESPERDIÇADOS COMIGO. + + + +MAS AINDA NÃO ESTÁ NA +HORA DE MEU SONO DE BELEZA! +JÁ O SEU, VAI SER AGORA. + + + +SOU ALÉRGICA A FLORES, +ENTÃO É MELHOR VOCÊ +SIMPLESMENTE DESAPARECER. + + + +VOCÊ MACHUCOU MEUS +AMIGUINHOS. NÃO VOU +PERDOAR ISSO! +PARE DE FALAR E MORRA!! + + +NÃO GOSTO DE BATER EM +MENINAS. NÃO DÁ PARA VOCÊ +APENAS SE RENDER? + + + +ALERTA: USO DE FORÇA +AUTORIZADO EM CASO DE +ATOS HOSTIS. + + + +EU NÃO QUERIA! ELES ME +ME ATACARAM. QUEM SABE +PODEMOS SÓ CONVERSAR? + + + +NÃO ESTOU NEM AÍ, IRMÃ; +ELES DEVIAM SER ESPERTOS E +NÃO FICAR NO MEU CAMINHO. + + + diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_3.dat b/build/games/RockDroid1/dialogs/stage_dialogs_3.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_3.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_3.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_3_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_3_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_3_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_3_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_3_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_3_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_3_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_3_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_3_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_3_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_3_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_3_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_3_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_3_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_3_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_3_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_4.dat b/build/games/RockDroid1/dialogs/stage_dialogs_4.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_4.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_4.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_4_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_4_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_4_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_4_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_4_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_4_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_4_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_4_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_4_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_4_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_4_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_4_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_4_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_4_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_4_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_4_pt.dat diff --git a/build/games/RockDroid1/dialogs/stage_dialogs_5.dat b/build/games/RockDroid1/dialogs/stage_dialogs_5.dat new file mode 100644 index 00000000..adec6b7f --- /dev/null +++ b/build/games/RockDroid1/dialogs/stage_dialogs_5.dat @@ -0,0 +1,60 @@ +GREETINGS AND SALUTATIONS. +I WONDER, CAN YOU FOLLOW +THE WHITE RABBIT? +REALLY? WELL, LOOK AT THE +TIME! HURRY OR HEADS +MAY ROLL! +WHAT? YOU'RE NOT MAKING +ANY SENSE, DUDE! + + + + +IT IS TOO LATE TO PLEDGE +INSANITY NOW. + + + + +YAY! I LOVE RABBITS! +THEY ARE SO FLUFFY! + + + + +WOW, YOUR MASTER REALLY DID +A NUMBER ON YOU, DIDN'T HE? +YOU'RE MAD AS A HATTER! + + + +WONDERFUL! I KNEW YOU COULD +DO IT. NOW LET ME SHOW YOU +SOME REAL MAGIC. +AREN'T YOU JUST LOVELY? + + +COME ON! YOUR MAGIC +AGAINST MY CANNON BLASTER. + + + + +I'LL TAKE MY SCIENCE OVER +YOUR MAGIC ANY DAY. + + + + +ARE YOU GOING TO PULL +A RABBIT OUT OF YOUR +WEIRD POINTY HAT? + + + +I'M GETTING REALLY TIRED OF +YOUR CHILDISH TRICKS, DEAR. +TIME TO GROW UP. + + + diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_5_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_5_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_5_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_5_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_5_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_5_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_5_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_5_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_5_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_5_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_5_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_5_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_5_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_5_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_5_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_5_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_6.dat b/build/games/RockDroid1/dialogs/stage_dialogs_6.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_6.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_6.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_6_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_6_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_6_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_6_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_6_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_6_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_6_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_6_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_6_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_6_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_6_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_6_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_6_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_6_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_6_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_6_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_7.dat b/build/games/RockDroid1/dialogs/stage_dialogs_7.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_7.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_7.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_7_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_7_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_7_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_7_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_7_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_7_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_7_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_7_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_7_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_7_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_7_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_7_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_7_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_7_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_7_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_7_pt.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_8.dat b/build/games/RockDroid1/dialogs/stage_dialogs_8.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_8.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_8.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_8_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_8_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_8_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_8_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_8_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_8_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_8_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_8_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_8_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_8_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_8_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_8_it.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_8_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_8_pt.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_8_pt.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_8_pt.dat diff --git a/build/games/RockDroid1/dialogs/stage_dialogs_9.dat b/build/games/RockDroid1/dialogs/stage_dialogs_9.dat new file mode 100644 index 00000000..a66a954d --- /dev/null +++ b/build/games/RockDroid1/dialogs/stage_dialogs_9.dat @@ -0,0 +1,60 @@ +WELCOME TO MY FORTRESS. +LET'S SEE WHAT YOU ARE +MADE OF, LITTLE ONE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_9_es.dat b/build/games/RockDroid1/dialogs/stage_dialogs_9_es.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_9_es.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_9_es.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_9_fr.dat b/build/games/RockDroid1/dialogs/stage_dialogs_9_fr.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_9_fr.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_9_fr.dat diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_9_it.dat b/build/games/RockDroid1/dialogs/stage_dialogs_9_it.dat similarity index 100% rename from build/games/Rockbot1/dialogs/stage_dialogs_9_it.dat rename to build/games/RockDroid1/dialogs/stage_dialogs_9_it.dat diff --git a/build/games/RockDroid1/dialogs/stage_dialogs_9_pt.dat b/build/games/RockDroid1/dialogs/stage_dialogs_9_pt.dat new file mode 100644 index 00000000..be81c6b7 --- /dev/null +++ b/build/games/RockDroid1/dialogs/stage_dialogs_9_pt.dat @@ -0,0 +1,60 @@ +BEM-VINDO AO MEU FORTE. +VAMOS VER DO QUE VOCÊ É +FEITO, PEQUENINO. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid1/errors.log b/build/games/RockDroid1/errors.log new file mode 100644 index 00000000..cdec5611 --- /dev/null +++ b/build/games/RockDroid1/errors.log @@ -0,0 +1,8 @@ +/home/iuri/Desenvolvimento/rockbot/build//games/RockDroid1//images/faces/images/faces/p1.png +EXIT #05 +/home/iuri/Desenvolvimento/rockbot/build//games/RockDroid1//images/faces/stage_select_castle.png +EXIT #05 +/home/iuri/Desenvolvimento/rockbot/build//games/RockDroid1//images/faces/classic_style_stage_select_r1button.png +EXIT #05 +ERROR #41.0 +/home/iuri/Desenvolvimento/rockbot/build//games/RockDroid1/images/backgrounds/classic_style_weapon_menu.png diff --git a/build/games/RockDroid1/game_ai_list.dat b/build/games/RockDroid1/game_ai_list.dat new file mode 100644 index 00000000..48783aab Binary files /dev/null and b/build/games/RockDroid1/game_ai_list.dat differ diff --git a/build/games/Rockbot1/game_ai_list_v3.dat b/build/games/RockDroid1/game_ai_list_v3.dat similarity index 100% rename from build/games/Rockbot1/game_ai_list_v3.dat rename to build/games/RockDroid1/game_ai_list_v3.dat diff --git a/build/games/Rockbot1/game_armorPieces_v301.dat b/build/games/RockDroid1/game_armorPieces_v301.dat similarity index 100% rename from build/games/Rockbot1/game_armorPieces_v301.dat rename to build/games/RockDroid1/game_armorPieces_v301.dat diff --git a/build/games/RockDroid1/game_credits.txt b/build/games/RockDroid1/game_credits.txt new file mode 100644 index 00000000..a52e3ecf --- /dev/null +++ b/build/games/RockDroid1/game_credits.txt @@ -0,0 +1,52 @@ +# ROCKBOT 1 GAME CREDITS # + +- MAIN PROGRAMMER - +IURI FIEDORUK + + +- CONCEPT ART - +ARIS KS FIEDORUK +IURI FIEDORUK +BOBERATU +NELSON ROSENBERG + + +- MARKETING - +MEGA CARTMAN + + +- PIXEL ART - +BOBERATU +@OPENGAMEART: +SURT +MOIKMELLAH +@DEVIANTART: +HFBN2 +CAPT. CHRIS AND KB +AVERAGE-HANZO +JOSEPHSERAPH +SHRAM +KAITHEHEDGEFOX10 +BONGWATER-BANDIT + + +- MUSIC - +SIMONE "JMD" BERNACCHIA +MODARCHIVE.ORG + + +- SOUND EFFECTS - +BFXR.NET +IURI FIEDORUK + + +- TEXT FONT - +KAPEL BY JETI + + +- INSPIRATION GAMES - +MEGAMAN +DUCK TALES +LITTLE NEMO +ROKKO CHAN +SHOVEL KNIGHT diff --git a/build/games/Rockbot1/game_enemy_list.dat b/build/games/RockDroid1/game_enemy_list.dat similarity index 100% rename from build/games/Rockbot1/game_enemy_list.dat rename to build/games/RockDroid1/game_enemy_list.dat diff --git a/build/games/Rockbot1/game_enemy_list_3_1_1.dat b/build/games/RockDroid1/game_enemy_list_3_1_1.dat similarity index 100% rename from build/games/Rockbot1/game_enemy_list_3_1_1.dat rename to build/games/RockDroid1/game_enemy_list_3_1_1.dat diff --git a/build/games/RockDroid1/game_enemy_list_3_1_2.dat b/build/games/RockDroid1/game_enemy_list_3_1_2.dat new file mode 100644 index 00000000..f1c13047 Binary files /dev/null and b/build/games/RockDroid1/game_enemy_list_3_1_2.dat differ diff --git a/build/games/RockDroid1/game_object_list.dat b/build/games/RockDroid1/game_object_list.dat new file mode 100644 index 00000000..888879ff Binary files /dev/null and b/build/games/RockDroid1/game_object_list.dat differ diff --git a/build/games/Rockbot1/game_players_v301.dat b/build/games/RockDroid1/game_players_v301.dat similarity index 100% rename from build/games/Rockbot1/game_players_v301.dat rename to build/games/RockDroid1/game_players_v301.dat diff --git a/build/games/Rockbot1/game_projectile_list.dat b/build/games/RockDroid1/game_projectile_list.dat similarity index 100% rename from build/games/Rockbot1/game_projectile_list.dat rename to build/games/RockDroid1/game_projectile_list.dat diff --git a/build/games/RockDroid1/game_properties_v301.dat b/build/games/RockDroid1/game_properties_v301.dat new file mode 100644 index 00000000..61972aa8 Binary files /dev/null and b/build/games/RockDroid1/game_properties_v301.dat differ diff --git a/build/games/Rockbot1/game_trophies_v301.dat b/build/games/RockDroid1/game_trophies_v301.dat similarity index 100% rename from build/games/Rockbot1/game_trophies_v301.dat rename to build/games/RockDroid1/game_trophies_v301.dat diff --git a/build/games/Rockbot1/game_weaponMenuColors_v301.dat b/build/games/RockDroid1/game_weaponMenuColors_v301.dat similarity index 100% rename from build/games/Rockbot1/game_weaponMenuColors_v301.dat rename to build/games/RockDroid1/game_weaponMenuColors_v301.dat diff --git a/build/games/Rockbot1/game_weapons_v301.dat b/build/games/RockDroid1/game_weapons_v301.dat similarity index 100% rename from build/games/Rockbot1/game_weapons_v301.dat rename to build/games/RockDroid1/game_weapons_v301.dat diff --git a/build/games/Rockbot1/images/animations/big_boss_explosion.png b/build/games/RockDroid1/images/animations/big_boss_explosion.png similarity index 100% rename from build/games/Rockbot1/images/animations/big_boss_explosion.png rename to build/games/RockDroid1/images/animations/big_boss_explosion.png diff --git a/build/games/Rockbot1/images/animations/bubble.png b/build/games/RockDroid1/images/animations/bubble.png similarity index 100% rename from build/games/Rockbot1/images/animations/bubble.png rename to build/games/RockDroid1/images/animations/bubble.png diff --git a/build/games/Rockbot1/images/animations/city_explosion_left.png b/build/games/RockDroid1/images/animations/city_explosion_left.png similarity index 100% rename from build/games/Rockbot1/images/animations/city_explosion_left.png rename to build/games/RockDroid1/images/animations/city_explosion_left.png diff --git a/build/games/Rockbot1/images/animations/city_explosion_right.png b/build/games/RockDroid1/images/animations/city_explosion_right.png similarity index 100% rename from build/games/Rockbot1/images/animations/city_explosion_right.png rename to build/games/RockDroid1/images/animations/city_explosion_right.png diff --git a/build/games/Rockbot1/images/animations/dash_dust.png b/build/games/RockDroid1/images/animations/dash_dust.png similarity index 100% rename from build/games/Rockbot1/images/animations/dash_dust.png rename to build/games/RockDroid1/images/animations/dash_dust.png diff --git a/build/games/Rockbot1/images/animations/explosion_16.png b/build/games/RockDroid1/images/animations/explosion_16.png similarity index 100% rename from build/games/Rockbot1/images/animations/explosion_16.png rename to build/games/RockDroid1/images/animations/explosion_16.png diff --git a/build/games/Rockbot1/images/animations/explosion_32.png b/build/games/RockDroid1/images/animations/explosion_32.png similarity index 100% rename from build/games/Rockbot1/images/animations/explosion_32.png rename to build/games/RockDroid1/images/animations/explosion_32.png diff --git a/build/games/Rockbot1/images/animations/explosion_boss.png b/build/games/RockDroid1/images/animations/explosion_boss.png similarity index 100% rename from build/games/Rockbot1/images/animations/explosion_boss.png rename to build/games/RockDroid1/images/animations/explosion_boss.png diff --git a/build/games/Rockbot1/images/animations/flash.png b/build/games/RockDroid1/images/animations/flash.png similarity index 100% rename from build/games/Rockbot1/images/animations/flash.png rename to build/games/RockDroid1/images/animations/flash.png diff --git a/build/games/Rockbot1/images/animations/hit.png b/build/games/RockDroid1/images/animations/hit.png similarity index 100% rename from build/games/Rockbot1/images/animations/hit.png rename to build/games/RockDroid1/images/animations/hit.png diff --git a/build/games/Rockbot1/images/animations/player_death_explosion.png b/build/games/RockDroid1/images/animations/player_death_explosion.png similarity index 100% rename from build/games/Rockbot1/images/animations/player_death_explosion.png rename to build/games/RockDroid1/images/animations/player_death_explosion.png diff --git a/build/games/Rockbot1/images/animations/rain.png b/build/games/RockDroid1/images/animations/rain.png similarity index 100% rename from build/games/Rockbot1/images/animations/rain.png rename to build/games/RockDroid1/images/animations/rain.png diff --git a/build/games/RockDroid1/images/animations/water_splash.png b/build/games/RockDroid1/images/animations/water_splash.png new file mode 100644 index 00000000..d5e19cfa Binary files /dev/null and b/build/games/RockDroid1/images/animations/water_splash.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/00.png b/build/games/RockDroid1/images/backgrounds/boss_intro/00.png new file mode 100644 index 00000000..7dea4143 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/00.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/01.png b/build/games/RockDroid1/images/backgrounds/boss_intro/01.png new file mode 100644 index 00000000..1db2054b Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/01.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/02.png b/build/games/RockDroid1/images/backgrounds/boss_intro/02.png new file mode 100644 index 00000000..dbde7562 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/02.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/03.png b/build/games/RockDroid1/images/backgrounds/boss_intro/03.png new file mode 100644 index 00000000..1e4b4022 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/03.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/04.png b/build/games/RockDroid1/images/backgrounds/boss_intro/04.png new file mode 100644 index 00000000..a440787e Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/04.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/05.png b/build/games/RockDroid1/images/backgrounds/boss_intro/05.png new file mode 100644 index 00000000..4445ffda Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/05.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/06.png b/build/games/RockDroid1/images/backgrounds/boss_intro/06.png new file mode 100644 index 00000000..60b28274 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/06.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/07.png b/build/games/RockDroid1/images/backgrounds/boss_intro/07.png new file mode 100644 index 00000000..6c645fa2 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/07.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/08.png b/build/games/RockDroid1/images/backgrounds/boss_intro/08.png new file mode 100644 index 00000000..9b9d4bbc Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/08.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/09.png b/build/games/RockDroid1/images/backgrounds/boss_intro/09.png new file mode 100644 index 00000000..4fbc4dbf Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/09.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/10.png b/build/games/RockDroid1/images/backgrounds/boss_intro/10.png new file mode 100644 index 00000000..61aded80 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/10.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/11.png b/build/games/RockDroid1/images/backgrounds/boss_intro/11.png new file mode 100644 index 00000000..6416d0ed Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/11.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/12.png b/build/games/RockDroid1/images/backgrounds/boss_intro/12.png new file mode 100644 index 00000000..3ec8f778 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/12.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/13.png b/build/games/RockDroid1/images/backgrounds/boss_intro/13.png new file mode 100644 index 00000000..49ab0fae Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/13.png differ diff --git a/build/games/RockDroid1/images/backgrounds/boss_intro/boss_intro_bg.png b/build/games/RockDroid1/images/backgrounds/boss_intro/boss_intro_bg.png new file mode 100644 index 00000000..dd95185d Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/boss_intro/boss_intro_bg.png differ diff --git a/build/games/Rockbot1/images/backgrounds/btn_a.png b/build/games/RockDroid1/images/backgrounds/btn_a.png similarity index 100% rename from build/games/Rockbot1/images/backgrounds/btn_a.png rename to build/games/RockDroid1/images/backgrounds/btn_a.png diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_castle.png b/build/games/RockDroid1/images/backgrounds/classic_style_castle.png new file mode 100644 index 00000000..50212e16 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_castle.png differ diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_castle_point.png b/build/games/RockDroid1/images/backgrounds/classic_style_castle_point.png new file mode 100644 index 00000000..a08fec76 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_castle_point.png differ diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_castle_skull_point.png b/build/games/RockDroid1/images/backgrounds/classic_style_castle_skull_point.png new file mode 100644 index 00000000..c07eb4a1 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_castle_skull_point.png differ diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_death_explosion.png b/build/games/RockDroid1/images/backgrounds/classic_style_death_explosion.png new file mode 100644 index 00000000..3a764baf Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_death_explosion.png differ diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_bg.png b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_bg.png new file mode 100644 index 00000000..3b3af483 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_bg.png differ diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_cursor.png b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_cursor.png new file mode 100644 index 00000000..0efed472 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_cursor.png differ diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_faces.png b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_faces.png new file mode 100644 index 00000000..6ea95fe6 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_faces.png differ diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_faces_p1.png b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_faces_p1.png new file mode 100644 index 00000000..37543548 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_faces_p1.png differ diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_faces_p2.png b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_faces_p2.png new file mode 100644 index 00000000..9c4076e4 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_faces_p2.png differ diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_r1button.png b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_r1button.png new file mode 100644 index 00000000..c4292ffc Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_stage_select_r1button.png differ diff --git a/build/games/RockDroid1/images/backgrounds/classic_style_weapon_menu.png b/build/games/RockDroid1/images/backgrounds/classic_style_weapon_menu.png new file mode 100644 index 00000000..b69391e4 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/classic_style_weapon_menu.png differ diff --git a/build/games/Rockbot1/images/backgrounds/config.png b/build/games/RockDroid1/images/backgrounds/config.png similarity index 100% rename from build/games/Rockbot1/images/backgrounds/config.png rename to build/games/RockDroid1/images/backgrounds/config.png diff --git a/build/games/Rockbot1/images/backgrounds/dialog.png b/build/games/RockDroid1/images/backgrounds/dialog.png similarity index 100% rename from build/games/Rockbot1/images/backgrounds/dialog.png rename to build/games/RockDroid1/images/backgrounds/dialog.png diff --git a/build/games/Rockbot1/images/backgrounds/menu.png b/build/games/RockDroid1/images/backgrounds/menu.png similarity index 100% rename from build/games/Rockbot1/images/backgrounds/menu.png rename to build/games/RockDroid1/images/backgrounds/menu.png diff --git a/build/games/RockDroid1/images/backgrounds/player_armor_pieces.png b/build/games/RockDroid1/images/backgrounds/player_armor_pieces.png new file mode 100644 index 00000000..eec6e1ba Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/player_armor_pieces.png differ diff --git a/build/games/Rockbot1/images/backgrounds/player_faces_front.png b/build/games/RockDroid1/images/backgrounds/player_faces_front.png similarity index 100% rename from build/games/Rockbot1/images/backgrounds/player_faces_front.png rename to build/games/RockDroid1/images/backgrounds/player_faces_front.png diff --git a/build/games/RockDroid1/images/backgrounds/player_select_p1.png b/build/games/RockDroid1/images/backgrounds/player_select_p1.png new file mode 100644 index 00000000..06b3999e Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/player_select_p1.png differ diff --git a/build/games/RockDroid1/images/backgrounds/player_select_p2.png b/build/games/RockDroid1/images/backgrounds/player_select_p2.png new file mode 100644 index 00000000..116a14f2 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/player_select_p2.png differ diff --git a/build/games/RockDroid1/images/backgrounds/player_select_p3.png b/build/games/RockDroid1/images/backgrounds/player_select_p3.png new file mode 100644 index 00000000..d83023e0 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/player_select_p3.png differ diff --git a/build/games/RockDroid1/images/backgrounds/player_select_p4.png b/build/games/RockDroid1/images/backgrounds/player_select_p4.png new file mode 100644 index 00000000..8950d43d Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/player_select_p4.png differ diff --git a/build/games/Rockbot1/images/backgrounds/player_selection.png b/build/games/RockDroid1/images/backgrounds/player_selection.png similarity index 100% rename from build/games/Rockbot1/images/backgrounds/player_selection.png rename to build/games/RockDroid1/images/backgrounds/player_selection.png diff --git a/build/games/Rockbot1/images/backgrounds/save_selector_disabled.png b/build/games/RockDroid1/images/backgrounds/save_selector_disabled.png similarity index 100% rename from build/games/Rockbot1/images/backgrounds/save_selector_disabled.png rename to build/games/RockDroid1/images/backgrounds/save_selector_disabled.png diff --git a/build/games/Rockbot1/images/backgrounds/save_selector_enabled.png b/build/games/RockDroid1/images/backgrounds/save_selector_enabled.png similarity index 100% rename from build/games/Rockbot1/images/backgrounds/save_selector_enabled.png rename to build/games/RockDroid1/images/backgrounds/save_selector_enabled.png diff --git a/build/games/RockDroid1/images/backgrounds/stage_selection_icon.png b/build/games/RockDroid1/images/backgrounds/stage_selection_icon.png new file mode 100644 index 00000000..813dba56 Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/stage_selection_icon.png differ diff --git a/build/games/RockDroid1/images/backgrounds/weapon_menu.png b/build/games/RockDroid1/images/backgrounds/weapon_menu.png new file mode 100644 index 00000000..34d79fce Binary files /dev/null and b/build/games/RockDroid1/images/backgrounds/weapon_menu.png differ diff --git a/build/games/Rockbot1/images/empty.png b/build/games/RockDroid1/images/empty.png similarity index 100% rename from build/games/Rockbot1/images/empty.png rename to build/games/RockDroid1/images/empty.png diff --git a/build/games/Rockbot1/images/ending/player_walking_layer1.png b/build/games/RockDroid1/images/ending/player_walking_layer1.png similarity index 100% rename from build/games/Rockbot1/images/ending/player_walking_layer1.png rename to build/games/RockDroid1/images/ending/player_walking_layer1.png diff --git a/build/games/Rockbot1/images/ending/player_walking_layer2.png b/build/games/RockDroid1/images/ending/player_walking_layer2.png similarity index 100% rename from build/games/Rockbot1/images/ending/player_walking_layer2.png rename to build/games/RockDroid1/images/ending/player_walking_layer2.png diff --git a/build/games/Rockbot1/images/ending/player_walking_layer3.png b/build/games/RockDroid1/images/ending/player_walking_layer3.png similarity index 100% rename from build/games/Rockbot1/images/ending/player_walking_layer3.png rename to build/games/RockDroid1/images/ending/player_walking_layer3.png diff --git a/build/games/RockDroid1/images/faces/00.png b/build/games/RockDroid1/images/faces/00.png new file mode 100644 index 00000000..aafd61f5 Binary files /dev/null and b/build/games/RockDroid1/images/faces/00.png differ diff --git a/build/games/RockDroid1/images/faces/01.png b/build/games/RockDroid1/images/faces/01.png new file mode 100644 index 00000000..335372ba Binary files /dev/null and b/build/games/RockDroid1/images/faces/01.png differ diff --git a/build/games/RockDroid1/images/faces/02.png b/build/games/RockDroid1/images/faces/02.png new file mode 100644 index 00000000..668e45f5 Binary files /dev/null and b/build/games/RockDroid1/images/faces/02.png differ diff --git a/build/games/RockDroid1/images/faces/03.png b/build/games/RockDroid1/images/faces/03.png new file mode 100644 index 00000000..ad5ea88e Binary files /dev/null and b/build/games/RockDroid1/images/faces/03.png differ diff --git a/build/games/RockDroid1/images/faces/04.png b/build/games/RockDroid1/images/faces/04.png new file mode 100644 index 00000000..80e64836 Binary files /dev/null and b/build/games/RockDroid1/images/faces/04.png differ diff --git a/build/games/RockDroid1/images/faces/05.png b/build/games/RockDroid1/images/faces/05.png new file mode 100644 index 00000000..c38e576c Binary files /dev/null and b/build/games/RockDroid1/images/faces/05.png differ diff --git a/build/games/RockDroid1/images/faces/06.png b/build/games/RockDroid1/images/faces/06.png new file mode 100644 index 00000000..3f118ed5 Binary files /dev/null and b/build/games/RockDroid1/images/faces/06.png differ diff --git a/build/games/RockDroid1/images/faces/07.png b/build/games/RockDroid1/images/faces/07.png new file mode 100644 index 00000000..3650c300 Binary files /dev/null and b/build/games/RockDroid1/images/faces/07.png differ diff --git a/build/games/RockDroid1/images/faces/08.png b/build/games/RockDroid1/images/faces/08.png new file mode 100644 index 00000000..0591c8a9 Binary files /dev/null and b/build/games/RockDroid1/images/faces/08.png differ diff --git a/build/games/RockDroid1/images/faces/09.png b/build/games/RockDroid1/images/faces/09.png new file mode 100644 index 00000000..2537764f Binary files /dev/null and b/build/games/RockDroid1/images/faces/09.png differ diff --git a/build/games/RockDroid1/images/faces/10.png b/build/games/RockDroid1/images/faces/10.png new file mode 100644 index 00000000..62e78b68 Binary files /dev/null and b/build/games/RockDroid1/images/faces/10.png differ diff --git a/build/games/RockDroid1/images/faces/11.png b/build/games/RockDroid1/images/faces/11.png new file mode 100644 index 00000000..32f21872 Binary files /dev/null and b/build/games/RockDroid1/images/faces/11.png differ diff --git a/build/games/RockDroid1/images/faces/12.png b/build/games/RockDroid1/images/faces/12.png new file mode 100644 index 00000000..060ccca3 Binary files /dev/null and b/build/games/RockDroid1/images/faces/12.png differ diff --git a/build/games/RockDroid1/images/faces/13.png b/build/games/RockDroid1/images/faces/13.png new file mode 100644 index 00000000..26563962 Binary files /dev/null and b/build/games/RockDroid1/images/faces/13.png differ diff --git a/build/games/RockDroid1/images/faces/betabot.png b/build/games/RockDroid1/images/faces/betabot.png new file mode 100644 index 00000000..a2e18e66 Binary files /dev/null and b/build/games/RockDroid1/images/faces/betabot.png differ diff --git a/build/games/RockDroid1/images/faces/boss_0.png b/build/games/RockDroid1/images/faces/boss_0.png new file mode 100644 index 00000000..6e7e83fd Binary files /dev/null and b/build/games/RockDroid1/images/faces/boss_0.png differ diff --git a/build/games/RockDroid1/images/faces/boss_1.png b/build/games/RockDroid1/images/faces/boss_1.png new file mode 100644 index 00000000..cb902cfb Binary files /dev/null and b/build/games/RockDroid1/images/faces/boss_1.png differ diff --git a/build/games/Rockbot1/images/faces/daisiebot.png b/build/games/RockDroid1/images/faces/boss_2.png similarity index 100% rename from build/games/Rockbot1/images/faces/daisiebot.png rename to build/games/RockDroid1/images/faces/boss_2.png diff --git a/build/games/RockDroid1/images/faces/boss_3.png b/build/games/RockDroid1/images/faces/boss_3.png new file mode 100644 index 00000000..5ae74798 Binary files /dev/null and b/build/games/RockDroid1/images/faces/boss_3.png differ diff --git a/build/games/RockDroid1/images/faces/boss_4.png b/build/games/RockDroid1/images/faces/boss_4.png new file mode 100644 index 00000000..91f04ac9 Binary files /dev/null and b/build/games/RockDroid1/images/faces/boss_4.png differ diff --git a/build/games/RockDroid1/images/faces/boss_5.png b/build/games/RockDroid1/images/faces/boss_5.png new file mode 100644 index 00000000..5298776d Binary files /dev/null and b/build/games/RockDroid1/images/faces/boss_5.png differ diff --git a/build/games/RockDroid1/images/faces/boss_6.png b/build/games/RockDroid1/images/faces/boss_6.png new file mode 100644 index 00000000..ab1217b3 Binary files /dev/null and b/build/games/RockDroid1/images/faces/boss_6.png differ diff --git a/build/games/RockDroid1/images/faces/boss_7.png b/build/games/RockDroid1/images/faces/boss_7.png new file mode 100644 index 00000000..9fe1cc43 Binary files /dev/null and b/build/games/RockDroid1/images/faces/boss_7.png differ diff --git a/build/games/RockDroid1/images/faces/boss_8.png b/build/games/RockDroid1/images/faces/boss_8.png new file mode 100644 index 00000000..d69bf8fd Binary files /dev/null and b/build/games/RockDroid1/images/faces/boss_8.png differ diff --git a/build/games/RockDroid1/images/faces/candybot.png b/build/games/RockDroid1/images/faces/candybot.png new file mode 100644 index 00000000..d4dde150 Binary files /dev/null and b/build/games/RockDroid1/images/faces/candybot.png differ diff --git a/build/games/RockDroid1/images/faces/canotus_face.png b/build/games/RockDroid1/images/faces/canotus_face.png new file mode 100644 index 00000000..f1558ce0 Binary files /dev/null and b/build/games/RockDroid1/images/faces/canotus_face.png differ diff --git a/build/games/RockDroid1/images/faces/kittybot.png b/build/games/RockDroid1/images/faces/kittybot.png new file mode 100644 index 00000000..6ce52586 Binary files /dev/null and b/build/games/RockDroid1/images/faces/kittybot.png differ diff --git a/build/games/RockDroid1/images/faces/p1.png b/build/games/RockDroid1/images/faces/p1.png new file mode 100644 index 00000000..a3092587 Binary files /dev/null and b/build/games/RockDroid1/images/faces/p1.png differ diff --git a/build/games/RockDroid1/images/faces/p1_eyes.png b/build/games/RockDroid1/images/faces/p1_eyes.png new file mode 100644 index 00000000..911474c7 Binary files /dev/null and b/build/games/RockDroid1/images/faces/p1_eyes.png differ diff --git a/build/games/RockDroid1/images/faces/p2.png b/build/games/RockDroid1/images/faces/p2.png new file mode 100644 index 00000000..427b0c22 Binary files /dev/null and b/build/games/RockDroid1/images/faces/p2.png differ diff --git a/build/games/RockDroid1/images/faces/p2_eyes.png b/build/games/RockDroid1/images/faces/p2_eyes.png new file mode 100644 index 00000000..37cb5483 Binary files /dev/null and b/build/games/RockDroid1/images/faces/p2_eyes.png differ diff --git a/build/games/RockDroid1/images/faces/p3.png b/build/games/RockDroid1/images/faces/p3.png new file mode 100644 index 00000000..254cbafa Binary files /dev/null and b/build/games/RockDroid1/images/faces/p3.png differ diff --git a/build/games/RockDroid1/images/faces/p3_eyes.png b/build/games/RockDroid1/images/faces/p3_eyes.png new file mode 100644 index 00000000..a878eaef Binary files /dev/null and b/build/games/RockDroid1/images/faces/p3_eyes.png differ diff --git a/build/games/RockDroid1/images/faces/p4.png b/build/games/RockDroid1/images/faces/p4.png new file mode 100644 index 00000000..85d7aefa Binary files /dev/null and b/build/games/RockDroid1/images/faces/p4.png differ diff --git a/build/games/RockDroid1/images/faces/p4_eyes.png b/build/games/RockDroid1/images/faces/p4_eyes.png new file mode 100644 index 00000000..8f8eb79f Binary files /dev/null and b/build/games/RockDroid1/images/faces/p4_eyes.png differ diff --git a/build/games/RockDroid1/images/faces/rockbot.png b/build/games/RockDroid1/images/faces/rockbot.png new file mode 100644 index 00000000..b05ab7f4 Binary files /dev/null and b/build/games/RockDroid1/images/faces/rockbot.png differ diff --git a/build/games/RockDroid1/images/faces/stage_select_castle.png b/build/games/RockDroid1/images/faces/stage_select_castle.png new file mode 100644 index 00000000..5be5fb4a Binary files /dev/null and b/build/games/RockDroid1/images/faces/stage_select_castle.png differ diff --git a/build/games/RockDroid1/images/icon_32px.png b/build/games/RockDroid1/images/icon_32px.png new file mode 100644 index 00000000..321c9189 Binary files /dev/null and b/build/games/RockDroid1/images/icon_32px.png differ diff --git a/build/games/RockDroid1/images/icons.png b/build/games/RockDroid1/images/icons.png new file mode 100644 index 00000000..8c378109 Binary files /dev/null and b/build/games/RockDroid1/images/icons.png differ diff --git a/build/games/RockDroid1/images/icons_small.png b/build/games/RockDroid1/images/icons_small.png new file mode 100644 index 00000000..a12522d4 Binary files /dev/null and b/build/games/RockDroid1/images/icons_small.png differ diff --git a/build/games/RockDroid1/images/icons_small_disabled.png b/build/games/RockDroid1/images/icons_small_disabled.png new file mode 100644 index 00000000..2dd3ee5d Binary files /dev/null and b/build/games/RockDroid1/images/icons_small_disabled.png differ diff --git a/build/games/Rockbot1/images/license.txt b/build/games/RockDroid1/images/license.txt similarity index 100% rename from build/games/Rockbot1/images/license.txt rename to build/games/RockDroid1/images/license.txt diff --git a/build/games/RockDroid1/images/logo.png b/build/games/RockDroid1/images/logo.png new file mode 100644 index 00000000..13e4b346 Binary files /dev/null and b/build/games/RockDroid1/images/logo.png differ diff --git a/build/games/RockDroid1/images/logo.xcf b/build/games/RockDroid1/images/logo.xcf new file mode 100644 index 00000000..4ebeabec Binary files /dev/null and b/build/games/RockDroid1/images/logo.xcf differ diff --git a/build/games/Rockbot1/images/map_backgrounds/blocks_darkblue.png b/build/games/RockDroid1/images/map_backgrounds/blocks_darkblue.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/blocks_darkblue.png rename to build/games/RockDroid1/images/map_backgrounds/blocks_darkblue.png diff --git a/build/games/Rockbot1/images/map_backgrounds/chains.png b/build/games/RockDroid1/images/map_backgrounds/chains.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/chains.png rename to build/games/RockDroid1/images/map_backgrounds/chains.png diff --git a/build/games/Rockbot1/images/map_backgrounds/circuit_blue_bg.png b/build/games/RockDroid1/images/map_backgrounds/circuit_blue_bg.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/circuit_blue_bg.png rename to build/games/RockDroid1/images/map_backgrounds/circuit_blue_bg.png diff --git a/build/games/Rockbot1/images/map_backgrounds/circuit_darkblue_bg.png b/build/games/RockDroid1/images/map_backgrounds/circuit_darkblue_bg.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/circuit_darkblue_bg.png rename to build/games/RockDroid1/images/map_backgrounds/circuit_darkblue_bg.png diff --git a/build/games/Rockbot1/images/map_backgrounds/circuit_darkred_bg.png b/build/games/RockDroid1/images/map_backgrounds/circuit_darkred_bg.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/circuit_darkred_bg.png rename to build/games/RockDroid1/images/map_backgrounds/circuit_darkred_bg.png diff --git a/build/games/Rockbot1/images/map_backgrounds/circuit_green_bg.png b/build/games/RockDroid1/images/map_backgrounds/circuit_green_bg.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/circuit_green_bg.png rename to build/games/RockDroid1/images/map_backgrounds/circuit_green_bg.png diff --git a/build/games/Rockbot1/images/map_backgrounds/circuit_red_bg.png b/build/games/RockDroid1/images/map_backgrounds/circuit_red_bg.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/circuit_red_bg.png rename to build/games/RockDroid1/images/map_backgrounds/circuit_red_bg.png diff --git a/build/games/Rockbot1/images/map_backgrounds/city_night.png b/build/games/RockDroid1/images/map_backgrounds/city_night.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/city_night.png rename to build/games/RockDroid1/images/map_backgrounds/city_night.png diff --git a/build/games/Rockbot1/images/map_backgrounds/clouds.png b/build/games/RockDroid1/images/map_backgrounds/clouds.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/clouds.png rename to build/games/RockDroid1/images/map_backgrounds/clouds.png diff --git a/build/games/Rockbot1/images/map_backgrounds/clouds_dark.png b/build/games/RockDroid1/images/map_backgrounds/clouds_dark.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/clouds_dark.png rename to build/games/RockDroid1/images/map_backgrounds/clouds_dark.png diff --git a/build/games/Rockbot1/images/map_backgrounds/clouds_purple.png b/build/games/RockDroid1/images/map_backgrounds/clouds_purple.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/clouds_purple.png rename to build/games/RockDroid1/images/map_backgrounds/clouds_purple.png diff --git a/build/games/Rockbot1/images/map_backgrounds/clouds_savana.png b/build/games/RockDroid1/images/map_backgrounds/clouds_savana.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/clouds_savana.png rename to build/games/RockDroid1/images/map_backgrounds/clouds_savana.png diff --git a/build/games/RockDroid1/images/map_backgrounds/dark_castle.png b/build/games/RockDroid1/images/map_backgrounds/dark_castle.png new file mode 100644 index 00000000..89863d6f Binary files /dev/null and b/build/games/RockDroid1/images/map_backgrounds/dark_castle.png differ diff --git a/build/games/RockDroid1/images/map_backgrounds/egypt.png b/build/games/RockDroid1/images/map_backgrounds/egypt.png new file mode 100644 index 00000000..7681ecc5 Binary files /dev/null and b/build/games/RockDroid1/images/map_backgrounds/egypt.png differ diff --git a/build/games/Rockbot1/images/map_backgrounds/factory.png b/build/games/RockDroid1/images/map_backgrounds/factory.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/factory.png rename to build/games/RockDroid1/images/map_backgrounds/factory.png diff --git a/build/games/Rockbot1/images/map_backgrounds/flame_wall.png b/build/games/RockDroid1/images/map_backgrounds/flame_wall.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/flame_wall.png rename to build/games/RockDroid1/images/map_backgrounds/flame_wall.png diff --git a/build/games/Rockbot1/images/map_backgrounds/full_moon.png b/build/games/RockDroid1/images/map_backgrounds/full_moon.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/full_moon.png rename to build/games/RockDroid1/images/map_backgrounds/full_moon.png diff --git a/build/games/Rockbot1/images/map_backgrounds/green_grid.png b/build/games/RockDroid1/images/map_backgrounds/green_grid.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/green_grid.png rename to build/games/RockDroid1/images/map_backgrounds/green_grid.png diff --git a/build/games/RockDroid1/images/map_backgrounds/green_hills_clouds.png b/build/games/RockDroid1/images/map_backgrounds/green_hills_clouds.png new file mode 100644 index 00000000..aa843859 Binary files /dev/null and b/build/games/RockDroid1/images/map_backgrounds/green_hills_clouds.png differ diff --git a/build/games/RockDroid1/images/map_backgrounds/mine.png b/build/games/RockDroid1/images/map_backgrounds/mine.png new file mode 100644 index 00000000..2516ac24 Binary files /dev/null and b/build/games/RockDroid1/images/map_backgrounds/mine.png differ diff --git a/build/games/Rockbot1/images/map_backgrounds/montains_purple.png b/build/games/RockDroid1/images/map_backgrounds/montains_purple.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/montains_purple.png rename to build/games/RockDroid1/images/map_backgrounds/montains_purple.png diff --git a/build/games/Rockbot1/images/map_backgrounds/montains_rock.png b/build/games/RockDroid1/images/map_backgrounds/montains_rock.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/montains_rock.png rename to build/games/RockDroid1/images/map_backgrounds/montains_rock.png diff --git a/build/games/Rockbot1/images/map_backgrounds/red_castle.png b/build/games/RockDroid1/images/map_backgrounds/red_castle.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/red_castle.png rename to build/games/RockDroid1/images/map_backgrounds/red_castle.png diff --git a/build/games/Rockbot1/images/map_backgrounds/red_clouds.png b/build/games/RockDroid1/images/map_backgrounds/red_clouds.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/red_clouds.png rename to build/games/RockDroid1/images/map_backgrounds/red_clouds.png diff --git a/build/games/Rockbot1/images/map_backgrounds/red_skies.png b/build/games/RockDroid1/images/map_backgrounds/red_skies.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/red_skies.png rename to build/games/RockDroid1/images/map_backgrounds/red_skies.png diff --git a/build/games/Rockbot1/images/map_backgrounds/stars_bg.png b/build/games/RockDroid1/images/map_backgrounds/stars_bg.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/stars_bg.png rename to build/games/RockDroid1/images/map_backgrounds/stars_bg.png diff --git a/build/games/Rockbot1/images/map_backgrounds/stars_fullsize.png b/build/games/RockDroid1/images/map_backgrounds/stars_fullsize.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/stars_fullsize.png rename to build/games/RockDroid1/images/map_backgrounds/stars_fullsize.png diff --git a/build/games/RockDroid1/images/map_backgrounds/tiles_mosaic.png b/build/games/RockDroid1/images/map_backgrounds/tiles_mosaic.png new file mode 100644 index 00000000..fe9ca376 Binary files /dev/null and b/build/games/RockDroid1/images/map_backgrounds/tiles_mosaic.png differ diff --git a/build/games/Rockbot1/images/map_backgrounds/trees.png b/build/games/RockDroid1/images/map_backgrounds/trees.png similarity index 100% rename from build/games/Rockbot1/images/map_backgrounds/trees.png rename to build/games/RockDroid1/images/map_backgrounds/trees.png diff --git a/build/games/RockDroid1/images/p1.png b/build/games/RockDroid1/images/p1.png new file mode 100644 index 00000000..d482c03e Binary files /dev/null and b/build/games/RockDroid1/images/p1.png differ diff --git a/build/games/RockDroid1/images/p2.png b/build/games/RockDroid1/images/p2.png new file mode 100644 index 00000000..eb696f3d Binary files /dev/null and b/build/games/RockDroid1/images/p2.png differ diff --git a/build/games/RockDroid1/images/p3.png b/build/games/RockDroid1/images/p3.png new file mode 100644 index 00000000..8f53fd3d Binary files /dev/null and b/build/games/RockDroid1/images/p3.png differ diff --git a/build/games/RockDroid1/images/p4.png b/build/games/RockDroid1/images/p4.png new file mode 100644 index 00000000..c4a50985 Binary files /dev/null and b/build/games/RockDroid1/images/p4.png differ diff --git a/build/games/Rockbot1/images/projectiles/beam_pink.png b/build/games/RockDroid1/images/projectiles/beam_pink.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/beam_pink.png rename to build/games/RockDroid1/images/projectiles/beam_pink.png diff --git a/build/games/Rockbot1/images/projectiles/betabot_normal.png b/build/games/RockDroid1/images/projectiles/betabot_normal.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/betabot_normal.png rename to build/games/RockDroid1/images/projectiles/betabot_normal.png diff --git a/build/games/Rockbot1/images/projectiles/big_missile.png b/build/games/RockDroid1/images/projectiles/big_missile.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/big_missile.png rename to build/games/RockDroid1/images/projectiles/big_missile.png diff --git a/build/games/Rockbot1/images/projectiles/big_rock.png b/build/games/RockDroid1/images/projectiles/big_rock.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/big_rock.png rename to build/games/RockDroid1/images/projectiles/big_rock.png diff --git a/build/games/Rockbot1/images/projectiles/candybot_normal.png b/build/games/RockDroid1/images/projectiles/candybot_normal.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/candybot_normal.png rename to build/games/RockDroid1/images/projectiles/candybot_normal.png diff --git a/build/games/Rockbot1/images/projectiles/charged_card.png b/build/games/RockDroid1/images/projectiles/charged_card.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/charged_card.png rename to build/games/RockDroid1/images/projectiles/charged_card.png diff --git a/build/games/Rockbot1/images/projectiles/charged_semi.png b/build/games/RockDroid1/images/projectiles/charged_semi.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/charged_semi.png rename to build/games/RockDroid1/images/projectiles/charged_semi.png diff --git a/build/games/Rockbot1/images/projectiles/charged_shot.png b/build/games/RockDroid1/images/projectiles/charged_shot.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/charged_shot.png rename to build/games/RockDroid1/images/projectiles/charged_shot.png diff --git a/build/games/Rockbot1/images/projectiles/cyclone.png b/build/games/RockDroid1/images/projectiles/cyclone.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/cyclone.png rename to build/games/RockDroid1/images/projectiles/cyclone.png diff --git a/build/games/Rockbot1/images/projectiles/desert_scorpion.png b/build/games/RockDroid1/images/projectiles/desert_scorpion.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/desert_scorpion.png rename to build/games/RockDroid1/images/projectiles/desert_scorpion.png diff --git a/build/games/Rockbot1/images/projectiles/drop_bomb.png b/build/games/RockDroid1/images/projectiles/drop_bomb.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/drop_bomb.png rename to build/games/RockDroid1/images/projectiles/drop_bomb.png diff --git a/build/games/Rockbot1/images/projectiles/dynamite.png b/build/games/RockDroid1/images/projectiles/dynamite.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/dynamite.png rename to build/games/RockDroid1/images/projectiles/dynamite.png diff --git a/build/games/Rockbot1/images/projectiles/electric_bomb.png b/build/games/RockDroid1/images/projectiles/electric_bomb.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/electric_bomb.png rename to build/games/RockDroid1/images/projectiles/electric_bomb.png diff --git a/build/games/Rockbot1/images/projectiles/elipsis_ball.png b/build/games/RockDroid1/images/projectiles/elipsis_ball.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/elipsis_ball.png rename to build/games/RockDroid1/images/projectiles/elipsis_ball.png diff --git a/build/games/Rockbot1/images/projectiles/flower.png b/build/games/RockDroid1/images/projectiles/flower.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/flower.png rename to build/games/RockDroid1/images/projectiles/flower.png diff --git a/build/games/Rockbot1/images/projectiles/green-ball.png b/build/games/RockDroid1/images/projectiles/green-ball.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/green-ball.png rename to build/games/RockDroid1/images/projectiles/green-ball.png diff --git a/build/games/Rockbot1/images/projectiles/hadouken.png b/build/games/RockDroid1/images/projectiles/hadouken.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/hadouken.png rename to build/games/RockDroid1/images/projectiles/hadouken.png diff --git a/build/games/Rockbot1/images/projectiles/kitty_charged.png b/build/games/RockDroid1/images/projectiles/kitty_charged.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/kitty_charged.png rename to build/games/RockDroid1/images/projectiles/kitty_charged.png diff --git a/build/games/Rockbot1/images/projectiles/kitty_normal.png b/build/games/RockDroid1/images/projectiles/kitty_normal.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/kitty_normal.png rename to build/games/RockDroid1/images/projectiles/kitty_normal.png diff --git a/build/games/Rockbot1/images/projectiles/kitty_slash.png b/build/games/RockDroid1/images/projectiles/kitty_slash.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/kitty_slash.png rename to build/games/RockDroid1/images/projectiles/kitty_slash.png diff --git a/build/games/Rockbot1/images/projectiles/laser.png b/build/games/RockDroid1/images/projectiles/laser.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/laser.png rename to build/games/RockDroid1/images/projectiles/laser.png diff --git a/build/games/Rockbot1/images/projectiles/magic_star.png b/build/games/RockDroid1/images/projectiles/magic_star.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/magic_star.png rename to build/games/RockDroid1/images/projectiles/magic_star.png diff --git a/build/games/Rockbot1/images/projectiles/missile.png b/build/games/RockDroid1/images/projectiles/missile.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/missile.png rename to build/games/RockDroid1/images/projectiles/missile.png diff --git a/build/games/Rockbot1/images/projectiles/palometa_fish.png b/build/games/RockDroid1/images/projectiles/palometa_fish.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/palometa_fish.png rename to build/games/RockDroid1/images/projectiles/palometa_fish.png diff --git a/build/games/Rockbot1/images/projectiles/plug.png b/build/games/RockDroid1/images/projectiles/plug.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/plug.png rename to build/games/RockDroid1/images/projectiles/plug.png diff --git a/build/games/Rockbot1/images/projectiles/projectile_normal.png b/build/games/RockDroid1/images/projectiles/projectile_normal.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/projectile_normal.png rename to build/games/RockDroid1/images/projectiles/projectile_normal.png diff --git a/build/games/Rockbot1/images/projectiles/rainbow.png b/build/games/RockDroid1/images/projectiles/rainbow.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/rainbow.png rename to build/games/RockDroid1/images/projectiles/rainbow.png diff --git a/build/games/Rockbot1/images/projectiles/sand_storm.png b/build/games/RockDroid1/images/projectiles/sand_storm.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/sand_storm.png rename to build/games/RockDroid1/images/projectiles/sand_storm.png diff --git a/build/games/Rockbot1/images/projectiles/shock_ball.png b/build/games/RockDroid1/images/projectiles/shock_ball.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/shock_ball.png rename to build/games/RockDroid1/images/projectiles/shock_ball.png diff --git a/build/games/Rockbot1/images/projectiles/spiked_chain.png b/build/games/RockDroid1/images/projectiles/spiked_chain.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/spiked_chain.png rename to build/games/RockDroid1/images/projectiles/spiked_chain.png diff --git a/build/games/Rockbot1/images/projectiles/spiked_chain_diagonal.png b/build/games/RockDroid1/images/projectiles/spiked_chain_diagonal.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/spiked_chain_diagonal.png rename to build/games/RockDroid1/images/projectiles/spiked_chain_diagonal.png diff --git a/build/games/Rockbot1/images/projectiles/star_circle.png b/build/games/RockDroid1/images/projectiles/star_circle.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/star_circle.png rename to build/games/RockDroid1/images/projectiles/star_circle.png diff --git a/build/games/Rockbot1/images/projectiles/sting.png b/build/games/RockDroid1/images/projectiles/sting.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/sting.png rename to build/games/RockDroid1/images/projectiles/sting.png diff --git a/build/games/Rockbot1/images/projectiles/supershot.png b/build/games/RockDroid1/images/projectiles/supershot.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/supershot.png rename to build/games/RockDroid1/images/projectiles/supershot.png diff --git a/build/games/Rockbot1/images/projectiles/timer_bomb.png b/build/games/RockDroid1/images/projectiles/timer_bomb.png similarity index 100% rename from build/games/Rockbot1/images/projectiles/timer_bomb.png rename to build/games/RockDroid1/images/projectiles/timer_bomb.png diff --git a/build/games/Rockbot1/images/scenes/animations/city_bg_animation.png b/build/games/RockDroid1/images/scenes/animations/city_bg_animation.png similarity index 100% rename from build/games/Rockbot1/images/scenes/animations/city_bg_animation.png rename to build/games/RockDroid1/images/scenes/animations/city_bg_animation.png diff --git a/build/games/Rockbot1/images/scenes/animations/city_explosion_left.png b/build/games/RockDroid1/images/scenes/animations/city_explosion_left.png similarity index 100% rename from build/games/Rockbot1/images/scenes/animations/city_explosion_left.png rename to build/games/RockDroid1/images/scenes/animations/city_explosion_left.png diff --git a/build/games/Rockbot1/images/scenes/animations/city_explosion_right.png b/build/games/RockDroid1/images/scenes/animations/city_explosion_right.png similarity index 100% rename from build/games/Rockbot1/images/scenes/animations/city_explosion_right.png rename to build/games/RockDroid1/images/scenes/animations/city_explosion_right.png diff --git a/build/games/Rockbot1/images/scenes/animations/rock_awakening.png b/build/games/RockDroid1/images/scenes/animations/rock_awakening.png similarity index 100% rename from build/games/Rockbot1/images/scenes/animations/rock_awakening.png rename to build/games/RockDroid1/images/scenes/animations/rock_awakening.png diff --git a/build/games/Rockbot1/images/scenes/animations/upperland.png b/build/games/RockDroid1/images/scenes/animations/upperland.png similarity index 100% rename from build/games/Rockbot1/images/scenes/animations/upperland.png rename to build/games/RockDroid1/images/scenes/animations/upperland.png diff --git a/build/games/RockDroid1/images/scenes/betabot.png b/build/games/RockDroid1/images/scenes/betabot.png new file mode 100644 index 00000000..e79e565e Binary files /dev/null and b/build/games/RockDroid1/images/scenes/betabot.png differ diff --git a/build/games/RockDroid1/images/scenes/candybot.png b/build/games/RockDroid1/images/scenes/candybot.png new file mode 100644 index 00000000..0ade5de2 Binary files /dev/null and b/build/games/RockDroid1/images/scenes/candybot.png differ diff --git a/build/games/Rockbot1/images/scenes/city_bg.png b/build/games/RockDroid1/images/scenes/city_bg.png similarity index 100% rename from build/games/Rockbot1/images/scenes/city_bg.png rename to build/games/RockDroid1/images/scenes/city_bg.png diff --git a/build/games/RockDroid1/images/scenes/city_bg_1.png b/build/games/RockDroid1/images/scenes/city_bg_1.png new file mode 100644 index 00000000..38fb9e3d Binary files /dev/null and b/build/games/RockDroid1/images/scenes/city_bg_1.png differ diff --git a/build/games/RockDroid1/images/scenes/city_bg_2.png b/build/games/RockDroid1/images/scenes/city_bg_2.png new file mode 100644 index 00000000..17f6da5e Binary files /dev/null and b/build/games/RockDroid1/images/scenes/city_bg_2.png differ diff --git a/build/games/RockDroid1/images/scenes/city_bg_3.png b/build/games/RockDroid1/images/scenes/city_bg_3.png new file mode 100644 index 00000000..5cdb801d Binary files /dev/null and b/build/games/RockDroid1/images/scenes/city_bg_3.png differ diff --git a/build/games/RockDroid1/images/scenes/dr_destrin.png b/build/games/RockDroid1/images/scenes/dr_destrin.png new file mode 100644 index 00000000..dfa358a9 Binary files /dev/null and b/build/games/RockDroid1/images/scenes/dr_destrin.png differ diff --git a/build/games/RockDroid1/images/scenes/kanotus.png b/build/games/RockDroid1/images/scenes/kanotus.png new file mode 100644 index 00000000..72279f73 Binary files /dev/null and b/build/games/RockDroid1/images/scenes/kanotus.png differ diff --git a/build/games/Rockbot1/images/scenes/kanotus_back.png b/build/games/RockDroid1/images/scenes/kanotus_back.png similarity index 100% rename from build/games/Rockbot1/images/scenes/kanotus_back.png rename to build/games/RockDroid1/images/scenes/kanotus_back.png diff --git a/build/games/Rockbot1/images/scenes/kanotus_front.png b/build/games/RockDroid1/images/scenes/kanotus_front.png similarity index 100% rename from build/games/Rockbot1/images/scenes/kanotus_front.png rename to build/games/RockDroid1/images/scenes/kanotus_front.png diff --git a/build/games/RockDroid1/images/scenes/kittybot.png b/build/games/RockDroid1/images/scenes/kittybot.png new file mode 100644 index 00000000..c90fc7db Binary files /dev/null and b/build/games/RockDroid1/images/scenes/kittybot.png differ diff --git a/build/games/RockDroid1/images/scenes/rockbot.png b/build/games/RockDroid1/images/scenes/rockbot.png new file mode 100644 index 00000000..16e67070 Binary files /dev/null and b/build/games/RockDroid1/images/scenes/rockbot.png differ diff --git a/build/games/RockDroid1/images/scenes/rockbot_full_sleep.png b/build/games/RockDroid1/images/scenes/rockbot_full_sleep.png new file mode 100644 index 00000000..8cf99774 Binary files /dev/null and b/build/games/RockDroid1/images/scenes/rockbot_full_sleep.png differ diff --git a/build/games/RockDroid1/images/scenes/rockbot_half_sleep.png b/build/games/RockDroid1/images/scenes/rockbot_half_sleep.png new file mode 100644 index 00000000..d58ec245 Binary files /dev/null and b/build/games/RockDroid1/images/scenes/rockbot_half_sleep.png differ diff --git a/build/games/RockDroid1/images/scenes/rockbot_left.png b/build/games/RockDroid1/images/scenes/rockbot_left.png new file mode 100644 index 00000000..b01eda62 Binary files /dev/null and b/build/games/RockDroid1/images/scenes/rockbot_left.png differ diff --git a/build/games/Rockbot1/images/sprites/candybot_ending.png b/build/games/RockDroid1/images/sprites/candybot_ending.png similarity index 100% rename from build/games/Rockbot1/images/sprites/candybot_ending.png rename to build/games/RockDroid1/images/sprites/candybot_ending.png diff --git a/build/games/Rockbot1/images/sprites/canotus.png b/build/games/RockDroid1/images/sprites/canotus.png similarity index 100% rename from build/games/Rockbot1/images/sprites/canotus.png rename to build/games/RockDroid1/images/sprites/canotus.png diff --git a/build/games/RockDroid1/images/sprites/destrin.png b/build/games/RockDroid1/images/sprites/destrin.png new file mode 100644 index 00000000..dbf8d81c Binary files /dev/null and b/build/games/RockDroid1/images/sprites/destrin.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/android.png b/build/games/RockDroid1/images/sprites/enemies/android.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/android.png rename to build/games/RockDroid1/images/sprites/enemies/android.png diff --git a/build/games/Rockbot1/images/sprites/enemies/apebot.png b/build/games/RockDroid1/images/sprites/enemies/apebot.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/apebot.png rename to build/games/RockDroid1/images/sprites/enemies/apebot.png diff --git a/build/games/Rockbot1/images/sprites/enemies/destrin_ship.png b/build/games/RockDroid1/images/sprites/enemies/backgrounds/destrin_ship.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/destrin_ship.png rename to build/games/RockDroid1/images/sprites/enemies/backgrounds/destrin_ship.png diff --git a/build/games/Rockbot1/images/sprites/enemies/bat.png b/build/games/RockDroid1/images/sprites/enemies/bat.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/bat.png rename to build/games/RockDroid1/images/sprites/enemies/bat.png diff --git a/build/games/Rockbot1/images/sprites/enemies/bee.png b/build/games/RockDroid1/images/sprites/enemies/bee.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/bee.png rename to build/games/RockDroid1/images/sprites/enemies/bee.png diff --git a/build/games/Rockbot1/images/sprites/enemies/bunny.png b/build/games/RockDroid1/images/sprites/enemies/bunny.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/bunny.png rename to build/games/RockDroid1/images/sprites/enemies/bunny.png diff --git a/build/games/Rockbot1/images/sprites/enemies/butterfly.png b/build/games/RockDroid1/images/sprites/enemies/butterfly.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/butterfly.png rename to build/games/RockDroid1/images/sprites/enemies/butterfly.png diff --git a/build/games/Rockbot1/images/sprites/enemies/cannon_ball.png b/build/games/RockDroid1/images/sprites/enemies/cannon_ball.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/cannon_ball.png rename to build/games/RockDroid1/images/sprites/enemies/cannon_ball.png diff --git a/build/games/Rockbot1/images/sprites/enemies/canotus.png b/build/games/RockDroid1/images/sprites/enemies/canotus.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/canotus.png rename to build/games/RockDroid1/images/sprites/enemies/canotus.png diff --git a/build/games/RockDroid1/images/sprites/enemies/classic_metool.png b/build/games/RockDroid1/images/sprites/enemies/classic_metool.png new file mode 100644 index 00000000..ba4f5c2f Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/classic_metool.png differ diff --git a/build/games/RockDroid1/images/sprites/enemies/daisiebot.png b/build/games/RockDroid1/images/sprites/enemies/daisiebot.png new file mode 100644 index 00000000..b2036b2a Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/daisiebot.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/destrin_capsule_small.png b/build/games/RockDroid1/images/sprites/enemies/destrin_capsule_small.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/destrin_capsule_small.png rename to build/games/RockDroid1/images/sprites/enemies/destrin_capsule_small.png diff --git a/build/games/RockDroid1/images/sprites/enemies/destrin_ship.png b/build/games/RockDroid1/images/sprites/enemies/destrin_ship.png new file mode 100644 index 00000000..c552e3eb Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/destrin_ship.png differ diff --git a/build/games/RockDroid1/images/sprites/enemies/destrin_tank.png b/build/games/RockDroid1/images/sprites/enemies/destrin_tank.png new file mode 100644 index 00000000..b7fec459 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/destrin_tank.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/destrin_tank_small.png b/build/games/RockDroid1/images/sprites/enemies/destrin_tank_small.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/destrin_tank_small.png rename to build/games/RockDroid1/images/sprites/enemies/destrin_tank_small.png diff --git a/build/games/Rockbot1/images/sprites/enemies/driller.png b/build/games/RockDroid1/images/sprites/enemies/driller.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/driller.png rename to build/games/RockDroid1/images/sprites/enemies/driller.png diff --git a/build/games/Rockbot1/images/sprites/enemies/dynamitebot.png b/build/games/RockDroid1/images/sprites/enemies/dynamitebot.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/dynamitebot.png rename to build/games/RockDroid1/images/sprites/enemies/dynamitebot.png diff --git a/build/games/Rockbot1/images/sprites/enemies/ema.png b/build/games/RockDroid1/images/sprites/enemies/ema.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/ema.png rename to build/games/RockDroid1/images/sprites/enemies/ema.png diff --git a/build/games/Rockbot1/images/sprites/enemies/fire_pump.png b/build/games/RockDroid1/images/sprites/enemies/fire_pump.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/fire_pump.png rename to build/games/RockDroid1/images/sprites/enemies/fire_pump.png diff --git a/build/games/RockDroid1/images/sprites/enemies/flower_metool.png b/build/games/RockDroid1/images/sprites/enemies/flower_metool.png new file mode 100644 index 00000000..1a54bbbf Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/flower_metool.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/flower_vase.png b/build/games/RockDroid1/images/sprites/enemies/flower_vase.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/flower_vase.png rename to build/games/RockDroid1/images/sprites/enemies/flower_vase.png diff --git a/build/games/Rockbot1/images/sprites/enemies/fly.png b/build/games/RockDroid1/images/sprites/enemies/fly.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/fly.png rename to build/games/RockDroid1/images/sprites/enemies/fly.png diff --git a/build/games/Rockbot1/images/sprites/enemies/gambit.png b/build/games/RockDroid1/images/sprites/enemies/gambit.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/gambit.png rename to build/games/RockDroid1/images/sprites/enemies/gambit.png diff --git a/build/games/Rockbot1/images/sprites/enemies/ghost.png b/build/games/RockDroid1/images/sprites/enemies/ghost.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/ghost.png rename to build/games/RockDroid1/images/sprites/enemies/ghost.png diff --git a/build/games/Rockbot1/images/sprites/enemies/giant_bee.png b/build/games/RockDroid1/images/sprites/enemies/giant_bee.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/giant_bee.png rename to build/games/RockDroid1/images/sprites/enemies/giant_bee.png diff --git a/build/games/Rockbot1/images/sprites/enemies/giant_dolphin.png b/build/games/RockDroid1/images/sprites/enemies/giant_dolphin.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/giant_dolphin.png rename to build/games/RockDroid1/images/sprites/enemies/giant_dolphin.png diff --git a/build/games/RockDroid1/images/sprites/enemies/giant_fly.png b/build/games/RockDroid1/images/sprites/enemies/giant_fly.png new file mode 100644 index 00000000..4f5eab31 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/giant_fly.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/giant_metool.png b/build/games/RockDroid1/images/sprites/enemies/giant_metool.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/giant_metool.png rename to build/games/RockDroid1/images/sprites/enemies/giant_metool.png diff --git a/build/games/Rockbot1/images/sprites/enemies/glue_ball.png b/build/games/RockDroid1/images/sprites/enemies/glue_ball.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/glue_ball.png rename to build/games/RockDroid1/images/sprites/enemies/glue_ball.png diff --git a/build/games/Rockbot1/images/sprites/enemies/ground_shooter.png b/build/games/RockDroid1/images/sprites/enemies/ground_shooter.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/ground_shooter.png rename to build/games/RockDroid1/images/sprites/enemies/ground_shooter.png diff --git a/build/games/Rockbot1/images/sprites/enemies/jet_beetle.png b/build/games/RockDroid1/images/sprites/enemies/jet_beetle.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/jet_beetle.png rename to build/games/RockDroid1/images/sprites/enemies/jet_beetle.png diff --git a/build/games/Rockbot1/images/sprites/enemies/killer_fish.png b/build/games/RockDroid1/images/sprites/enemies/killer_fish.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/killer_fish.png rename to build/games/RockDroid1/images/sprites/enemies/killer_fish.png diff --git a/build/games/Rockbot1/images/sprites/enemies/larva.png b/build/games/RockDroid1/images/sprites/enemies/larva.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/larva.png rename to build/games/RockDroid1/images/sprites/enemies/larva.png diff --git a/build/games/RockDroid1/images/sprites/enemies/magebot.png b/build/games/RockDroid1/images/sprites/enemies/magebot.png new file mode 100644 index 00000000..78c54fcc Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/magebot.png differ diff --git a/build/games/RockDroid1/images/sprites/enemies/metal_metool.png b/build/games/RockDroid1/images/sprites/enemies/metal_metool.png new file mode 100644 index 00000000..a416d2f0 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/metal_metool.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/metool_tophat.png b/build/games/RockDroid1/images/sprites/enemies/metool_tophat.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/metool_tophat.png rename to build/games/RockDroid1/images/sprites/enemies/metool_tophat.png diff --git a/build/games/RockDroid1/images/sprites/enemies/milonga.png b/build/games/RockDroid1/images/sprites/enemies/milonga.png new file mode 100644 index 00000000..e599f647 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/milonga.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/mine_cart.png b/build/games/RockDroid1/images/sprites/enemies/mine_cart.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/mine_cart.png rename to build/games/RockDroid1/images/sprites/enemies/mine_cart.png diff --git a/build/games/Rockbot1/images/sprites/enemies/multidrill.png b/build/games/RockDroid1/images/sprites/enemies/multidrill.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/multidrill.png rename to build/games/RockDroid1/images/sprites/enemies/multidrill.png diff --git a/build/games/Rockbot1/images/sprites/enemies/mummybot.png b/build/games/RockDroid1/images/sprites/enemies/mummybot.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/mummybot.png rename to build/games/RockDroid1/images/sprites/enemies/mummybot.png diff --git a/build/games/Rockbot1/images/sprites/enemies/plug.png b/build/games/RockDroid1/images/sprites/enemies/plug.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/plug.png rename to build/games/RockDroid1/images/sprites/enemies/plug.png diff --git a/build/games/Rockbot1/images/sprites/enemies/rhino.png b/build/games/RockDroid1/images/sprites/enemies/rhino.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/rhino.png rename to build/games/RockDroid1/images/sprites/enemies/rhino.png diff --git a/build/games/RockDroid1/images/sprites/enemies/rock_metool.png b/build/games/RockDroid1/images/sprites/enemies/rock_metool.png new file mode 100644 index 00000000..c5e2fa9b Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/rock_metool.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/roof_shooter.png b/build/games/RockDroid1/images/sprites/enemies/roof_shooter.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/roof_shooter.png rename to build/games/RockDroid1/images/sprites/enemies/roof_shooter.png diff --git a/build/games/RockDroid1/images/sprites/enemies/scorpion.png b/build/games/RockDroid1/images/sprites/enemies/scorpion.png new file mode 100644 index 00000000..17f4ca3c Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/scorpion.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/seahorsebot.png b/build/games/RockDroid1/images/sprites/enemies/seahorsebot.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/seahorsebot.png rename to build/games/RockDroid1/images/sprites/enemies/seahorsebot.png diff --git a/build/games/RockDroid1/images/sprites/enemies/shield.png b/build/games/RockDroid1/images/sprites/enemies/shield.png new file mode 100644 index 00000000..4a45b8fd Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/shield.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/shocker.png b/build/games/RockDroid1/images/sprites/enemies/shocker.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/shocker.png rename to build/games/RockDroid1/images/sprites/enemies/shocker.png diff --git a/build/games/Rockbot1/images/sprites/enemies/side_shooter.png b/build/games/RockDroid1/images/sprites/enemies/side_shooter.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/side_shooter.png rename to build/games/RockDroid1/images/sprites/enemies/side_shooter.png diff --git a/build/games/Rockbot1/images/sprites/enemies/small_fish.png b/build/games/RockDroid1/images/sprites/enemies/small_fish.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/small_fish.png rename to build/games/RockDroid1/images/sprites/enemies/small_fish.png diff --git a/build/games/RockDroid1/images/sprites/enemies/spikebot.png b/build/games/RockDroid1/images/sprites/enemies/spikebot.png new file mode 100644 index 00000000..b30c8efa Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/spikebot.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/spiked_floor.png b/build/games/RockDroid1/images/sprites/enemies/spiked_floor.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/spiked_floor.png rename to build/games/RockDroid1/images/sprites/enemies/spiked_floor.png diff --git a/build/games/Rockbot1/images/sprites/enemies/spinner_ball.png b/build/games/RockDroid1/images/sprites/enemies/spinner_ball.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/spinner_ball.png rename to build/games/RockDroid1/images/sprites/enemies/spinner_ball.png diff --git a/build/games/RockDroid1/images/sprites/enemies/spinner_ball_orange.png b/build/games/RockDroid1/images/sprites/enemies/spinner_ball_orange.png new file mode 100644 index 00000000..8d967430 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/spinner_ball_orange.png differ diff --git a/build/games/Rockbot1/images/sprites/enemies/spinner_ball_red.png b/build/games/RockDroid1/images/sprites/enemies/spinner_ball_red.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/spinner_ball_red.png rename to build/games/RockDroid1/images/sprites/enemies/spinner_ball_red.png diff --git a/build/games/Rockbot1/images/sprites/enemies/spinning_blade.png b/build/games/RockDroid1/images/sprites/enemies/spinning_blade.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/spinning_blade.png rename to build/games/RockDroid1/images/sprites/enemies/spinning_blade.png diff --git a/build/games/Rockbot1/images/sprites/enemies/spinning_drill.png b/build/games/RockDroid1/images/sprites/enemies/spinning_drill.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/spinning_drill.png rename to build/games/RockDroid1/images/sprites/enemies/spinning_drill.png diff --git a/build/games/Rockbot1/images/sprites/enemies/tamandua.png b/build/games/RockDroid1/images/sprites/enemies/tamandua.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/tamandua.png rename to build/games/RockDroid1/images/sprites/enemies/tamandua.png diff --git a/build/games/Rockbot1/images/sprites/enemies/tank.png b/build/games/RockDroid1/images/sprites/enemies/tank.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/tank.png rename to build/games/RockDroid1/images/sprites/enemies/tank.png diff --git a/build/games/Rockbot1/images/sprites/enemies/tech_circle.png b/build/games/RockDroid1/images/sprites/enemies/tech_circle.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/tech_circle.png rename to build/games/RockDroid1/images/sprites/enemies/tech_circle.png diff --git a/build/games/Rockbot1/images/sprites/enemies/technobot.png b/build/games/RockDroid1/images/sprites/enemies/technobot.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/technobot.png rename to build/games/RockDroid1/images/sprites/enemies/technobot.png diff --git a/build/games/Rockbot1/images/sprites/enemies/top_hat.png b/build/games/RockDroid1/images/sprites/enemies/top_hat.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/top_hat.png rename to build/games/RockDroid1/images/sprites/enemies/top_hat.png diff --git a/build/games/Rockbot1/images/sprites/enemies/wheels_penguin.png b/build/games/RockDroid1/images/sprites/enemies/wheels_penguin.png similarity index 100% rename from build/games/Rockbot1/images/sprites/enemies/wheels_penguin.png rename to build/games/RockDroid1/images/sprites/enemies/wheels_penguin.png diff --git a/build/games/RockDroid1/images/sprites/enemies/wood_shield.png b/build/games/RockDroid1/images/sprites/enemies/wood_shield.png new file mode 100644 index 00000000..99b1852b Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/wood_shield.png differ diff --git a/build/games/RockDroid1/images/sprites/enemies/ymst.png b/build/games/RockDroid1/images/sprites/enemies/ymst.png new file mode 100644 index 00000000..2039661f Binary files /dev/null and b/build/games/RockDroid1/images/sprites/enemies/ymst.png differ diff --git a/build/games/Rockbot1/images/sprites/kittybot.png b/build/games/RockDroid1/images/sprites/kittybot.png similarity index 100% rename from build/games/Rockbot1/images/sprites/kittybot.png rename to build/games/RockDroid1/images/sprites/kittybot.png diff --git a/build/games/RockDroid1/images/sprites/objects/1up.png b/build/games/RockDroid1/images/sprites/objects/1up.png new file mode 100644 index 00000000..b9a67d2b Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/1up.png differ diff --git a/build/games/Rockbot1/images/sprites/objects/armor_arms.png b/build/games/RockDroid1/images/sprites/objects/armor_arms.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/armor_arms.png rename to build/games/RockDroid1/images/sprites/objects/armor_arms.png diff --git a/build/games/Rockbot1/images/sprites/objects/armor_body.png b/build/games/RockDroid1/images/sprites/objects/armor_body.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/armor_body.png rename to build/games/RockDroid1/images/sprites/objects/armor_body.png diff --git a/build/games/Rockbot1/images/sprites/objects/armor_legs.png b/build/games/RockDroid1/images/sprites/objects/armor_legs.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/armor_legs.png rename to build/games/RockDroid1/images/sprites/objects/armor_legs.png diff --git a/build/games/Rockbot1/images/sprites/objects/block001.png b/build/games/RockDroid1/images/sprites/objects/block001.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/block001.png rename to build/games/RockDroid1/images/sprites/objects/block001.png diff --git a/build/games/Rockbot1/images/sprites/objects/block002.png b/build/games/RockDroid1/images/sprites/objects/block002.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/block002.png rename to build/games/RockDroid1/images/sprites/objects/block002.png diff --git a/build/games/Rockbot1/images/sprites/objects/block003.png b/build/games/RockDroid1/images/sprites/objects/block003.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/block003.png rename to build/games/RockDroid1/images/sprites/objects/block003.png diff --git a/build/games/Rockbot1/images/sprites/objects/block004.png b/build/games/RockDroid1/images/sprites/objects/block004.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/block004.png rename to build/games/RockDroid1/images/sprites/objects/block004.png diff --git a/build/games/Rockbot1/images/sprites/objects/block005.png b/build/games/RockDroid1/images/sprites/objects/block005.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/block005.png rename to build/games/RockDroid1/images/sprites/objects/block005.png diff --git a/build/games/Rockbot1/images/sprites/objects/checkpoint.png b/build/games/RockDroid1/images/sprites/objects/checkpoint.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/checkpoint.png rename to build/games/RockDroid1/images/sprites/objects/checkpoint.png diff --git a/build/games/Rockbot1/images/sprites/objects/deathray_small_horz.png b/build/games/RockDroid1/images/sprites/objects/deathray_small_horz.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/deathray_small_horz.png rename to build/games/RockDroid1/images/sprites/objects/deathray_small_horz.png diff --git a/build/games/Rockbot1/images/sprites/objects/disappearing_block.png b/build/games/RockDroid1/images/sprites/objects/disappearing_block.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/disappearing_block.png rename to build/games/RockDroid1/images/sprites/objects/disappearing_block.png diff --git a/build/games/Rockbot1/images/sprites/objects/disappearing_block_blue.png b/build/games/RockDroid1/images/sprites/objects/disappearing_block_blue.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/disappearing_block_blue.png rename to build/games/RockDroid1/images/sprites/objects/disappearing_block_blue.png diff --git a/build/games/Rockbot1/images/sprites/objects/disappearing_block_green.png b/build/games/RockDroid1/images/sprites/objects/disappearing_block_green.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/disappearing_block_green.png rename to build/games/RockDroid1/images/sprites/objects/disappearing_block_green.png diff --git a/build/games/Rockbot1/images/sprites/objects/disappearing_block_orange.png b/build/games/RockDroid1/images/sprites/objects/disappearing_block_orange.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/disappearing_block_orange.png rename to build/games/RockDroid1/images/sprites/objects/disappearing_block_orange.png diff --git a/build/games/Rockbot1/images/sprites/objects/disappearing_block_purple.png b/build/games/RockDroid1/images/sprites/objects/disappearing_block_purple.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/disappearing_block_purple.png rename to build/games/RockDroid1/images/sprites/objects/disappearing_block_purple.png diff --git a/build/games/RockDroid1/images/sprites/objects/door_3.png b/build/games/RockDroid1/images/sprites/objects/door_3.png new file mode 100644 index 00000000..a29050ae Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/door_3.png differ diff --git a/build/games/RockDroid1/images/sprites/objects/door_4.png b/build/games/RockDroid1/images/sprites/objects/door_4.png new file mode 100644 index 00000000..35f53653 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/door_4.png differ diff --git a/build/games/Rockbot1/images/sprites/objects/energy_balancer.png b/build/games/RockDroid1/images/sprites/objects/energy_balancer.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/energy_balancer.png rename to build/games/RockDroid1/images/sprites/objects/energy_balancer.png diff --git a/build/games/RockDroid1/images/sprites/objects/energy_pill_big.png b/build/games/RockDroid1/images/sprites/objects/energy_pill_big.png new file mode 100644 index 00000000..0ee3f0f3 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/energy_pill_big.png differ diff --git a/build/games/RockDroid1/images/sprites/objects/energy_pill_small.png b/build/games/RockDroid1/images/sprites/objects/energy_pill_small.png new file mode 100644 index 00000000..ab60549d Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/energy_pill_small.png differ diff --git a/build/games/RockDroid1/images/sprites/objects/energy_tank.png b/build/games/RockDroid1/images/sprites/objects/energy_tank.png new file mode 100644 index 00000000..30ee76f6 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/energy_tank.png differ diff --git a/build/games/Rockbot1/images/sprites/objects/fall_block.png b/build/games/RockDroid1/images/sprites/objects/fall_block.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/fall_block.png rename to build/games/RockDroid1/images/sprites/objects/fall_block.png diff --git a/build/games/Rockbot1/images/sprites/objects/fire_ray_horizontal.png b/build/games/RockDroid1/images/sprites/objects/fire_ray_horizontal.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/fire_ray_horizontal.png rename to build/games/RockDroid1/images/sprites/objects/fire_ray_horizontal.png diff --git a/build/games/Rockbot1/images/sprites/objects/fire_ray_vertical.png b/build/games/RockDroid1/images/sprites/objects/fire_ray_vertical.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/fire_ray_vertical.png rename to build/games/RockDroid1/images/sprites/objects/fire_ray_vertical.png diff --git a/build/games/Rockbot1/images/sprites/objects/fly_block.png b/build/games/RockDroid1/images/sprites/objects/fly_block.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/fly_block.png rename to build/games/RockDroid1/images/sprites/objects/fly_block.png diff --git a/build/games/Rockbot1/images/sprites/objects/gray_energy_tank.png b/build/games/RockDroid1/images/sprites/objects/gray_energy_tank.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/gray_energy_tank.png rename to build/games/RockDroid1/images/sprites/objects/gray_energy_tank.png diff --git a/build/games/Rockbot1/images/sprites/objects/gray_special_tank.png b/build/games/RockDroid1/images/sprites/objects/gray_special_tank.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/gray_special_tank.png rename to build/games/RockDroid1/images/sprites/objects/gray_special_tank.png diff --git a/build/games/Rockbot1/images/sprites/objects/gray_weapons_tank.png b/build/games/RockDroid1/images/sprites/objects/gray_weapons_tank.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/gray_weapons_tank.png rename to build/games/RockDroid1/images/sprites/objects/gray_weapons_tank.png diff --git a/build/games/RockDroid1/images/sprites/objects/item_jet.png b/build/games/RockDroid1/images/sprites/objects/item_jet.png new file mode 100644 index 00000000..41253830 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/item_jet.png differ diff --git a/build/games/RockDroid1/images/sprites/objects/item_jump.png b/build/games/RockDroid1/images/sprites/objects/item_jump.png new file mode 100644 index 00000000..4a494f58 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/item_jump.png differ diff --git a/build/games/Rockbot1/images/sprites/objects/lava_beam.png b/build/games/RockDroid1/images/sprites/objects/lava_beam.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/lava_beam.png rename to build/games/RockDroid1/images/sprites/objects/lava_beam.png diff --git a/build/games/Rockbot1/images/sprites/objects/lava_beam_horizontal.png b/build/games/RockDroid1/images/sprites/objects/lava_beam_horizontal.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/lava_beam_horizontal.png rename to build/games/RockDroid1/images/sprites/objects/lava_beam_horizontal.png diff --git a/build/games/Rockbot1/images/sprites/objects/platform.png b/build/games/RockDroid1/images/sprites/objects/platform.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/platform.png rename to build/games/RockDroid1/images/sprites/objects/platform.png diff --git a/build/games/Rockbot1/images/sprites/objects/platform_disappear2x.png b/build/games/RockDroid1/images/sprites/objects/platform_disappear2x.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/platform_disappear2x.png rename to build/games/RockDroid1/images/sprites/objects/platform_disappear2x.png diff --git a/build/games/Rockbot1/images/sprites/objects/platform_down.png b/build/games/RockDroid1/images/sprites/objects/platform_down.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/platform_down.png rename to build/games/RockDroid1/images/sprites/objects/platform_down.png diff --git a/build/games/Rockbot1/images/sprites/objects/platform_up.png b/build/games/RockDroid1/images/sprites/objects/platform_up.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/platform_up.png rename to build/games/RockDroid1/images/sprites/objects/platform_up.png diff --git a/build/games/Rockbot1/images/sprites/objects/platform_up_down.png b/build/games/RockDroid1/images/sprites/objects/platform_up_down.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/platform_up_down.png rename to build/games/RockDroid1/images/sprites/objects/platform_up_down.png diff --git a/build/games/RockDroid1/images/sprites/objects/portal.png b/build/games/RockDroid1/images/sprites/objects/portal.png new file mode 100644 index 00000000..79c860d7 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/portal.png differ diff --git a/build/games/RockDroid1/images/sprites/objects/special_tank.png b/build/games/RockDroid1/images/sprites/objects/special_tank.png new file mode 100644 index 00000000..d1ef0b5e Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/special_tank.png differ diff --git a/build/games/RockDroid1/images/sprites/objects/teleport_base.png b/build/games/RockDroid1/images/sprites/objects/teleport_base.png new file mode 100644 index 00000000..3ddfb284 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/teleport_base.png differ diff --git a/build/games/Rockbot1/images/sprites/objects/teleporter.png b/build/games/RockDroid1/images/sprites/objects/teleporter.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/teleporter.png rename to build/games/RockDroid1/images/sprites/objects/teleporter.png diff --git a/build/games/Rockbot1/images/sprites/objects/teleporter_stage_boss.png b/build/games/RockDroid1/images/sprites/objects/teleporter_stage_boss.png similarity index 100% rename from build/games/Rockbot1/images/sprites/objects/teleporter_stage_boss.png rename to build/games/RockDroid1/images/sprites/objects/teleporter_stage_boss.png diff --git a/build/games/RockDroid1/images/sprites/objects/weapons_pill_big.png b/build/games/RockDroid1/images/sprites/objects/weapons_pill_big.png new file mode 100644 index 00000000..e3b040a6 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/weapons_pill_big.png differ diff --git a/build/games/RockDroid1/images/sprites/objects/weapons_pill_small.png b/build/games/RockDroid1/images/sprites/objects/weapons_pill_small.png new file mode 100644 index 00000000..f3a38f59 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/weapons_pill_small.png differ diff --git a/build/games/RockDroid1/images/sprites/objects/weapons_tank.png b/build/games/RockDroid1/images/sprites/objects/weapons_tank.png new file mode 100644 index 00000000..f8d7e58a Binary files /dev/null and b/build/games/RockDroid1/images/sprites/objects/weapons_tank.png differ diff --git a/build/games/RockDroid1/images/sprites/p1.png b/build/games/RockDroid1/images/sprites/p1.png new file mode 100644 index 00000000..bb016f95 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/p1.png differ diff --git a/build/games/RockDroid1/images/sprites/p2.png b/build/games/RockDroid1/images/sprites/p2.png new file mode 100644 index 00000000..c332ef61 Binary files /dev/null and b/build/games/RockDroid1/images/sprites/p2.png differ diff --git a/build/games/RockDroid1/images/sprites/p3.png b/build/games/RockDroid1/images/sprites/p3.png new file mode 100644 index 00000000..d06de66a Binary files /dev/null and b/build/games/RockDroid1/images/sprites/p3.png differ diff --git a/build/games/RockDroid1/images/sprites/p4.png b/build/games/RockDroid1/images/sprites/p4.png new file mode 100644 index 00000000..d8aa401b Binary files /dev/null and b/build/games/RockDroid1/images/sprites/p4.png differ diff --git a/build/games/Rockbot1/images/sprites/teleport_small.png b/build/games/RockDroid1/images/sprites/teleport_small.png similarity index 100% rename from build/games/Rockbot1/images/sprites/teleport_small.png rename to build/games/RockDroid1/images/sprites/teleport_small.png diff --git a/build/games/Rockbot1/images/tilesets/anim/block_move_left.png b/build/games/RockDroid1/images/tilesets/anim/block_move_left.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/block_move_left.png rename to build/games/RockDroid1/images/tilesets/anim/block_move_left.png diff --git a/build/games/Rockbot1/images/tilesets/anim/block_move_right.png b/build/games/RockDroid1/images/tilesets/anim/block_move_right.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/block_move_right.png rename to build/games/RockDroid1/images/tilesets/anim/block_move_right.png diff --git a/build/games/Rockbot1/images/tilesets/anim/explosion_16.png b/build/games/RockDroid1/images/tilesets/anim/explosion_16.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/explosion_16.png rename to build/games/RockDroid1/images/tilesets/anim/explosion_16.png diff --git a/build/games/Rockbot1/images/tilesets/anim/green_water_1.png b/build/games/RockDroid1/images/tilesets/anim/green_water_1.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/green_water_1.png rename to build/games/RockDroid1/images/tilesets/anim/green_water_1.png diff --git a/build/games/Rockbot1/images/tilesets/anim/green_water_2.png b/build/games/RockDroid1/images/tilesets/anim/green_water_2.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/green_water_2.png rename to build/games/RockDroid1/images/tilesets/anim/green_water_2.png diff --git a/build/games/Rockbot1/images/tilesets/anim/lava1.png b/build/games/RockDroid1/images/tilesets/anim/lava1.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/lava1.png rename to build/games/RockDroid1/images/tilesets/anim/lava1.png diff --git a/build/games/Rockbot1/images/tilesets/anim/lava2.png b/build/games/RockDroid1/images/tilesets/anim/lava2.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/lava2.png rename to build/games/RockDroid1/images/tilesets/anim/lava2.png diff --git a/build/games/Rockbot1/images/tilesets/anim/lightbulb_small.png b/build/games/RockDroid1/images/tilesets/anim/lightbulb_small.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/lightbulb_small.png rename to build/games/RockDroid1/images/tilesets/anim/lightbulb_small.png diff --git a/build/games/RockDroid1/images/tilesets/anim/magnets.png b/build/games/RockDroid1/images/tilesets/anim/magnets.png new file mode 100644 index 00000000..8eedea18 Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/anim/magnets.png differ diff --git a/build/games/Rockbot1/images/tilesets/anim/move_left_platform_1.png b/build/games/RockDroid1/images/tilesets/anim/move_left_platform_1.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/move_left_platform_1.png rename to build/games/RockDroid1/images/tilesets/anim/move_left_platform_1.png diff --git a/build/games/Rockbot1/images/tilesets/anim/move_left_platform_2.png b/build/games/RockDroid1/images/tilesets/anim/move_left_platform_2.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/move_left_platform_2.png rename to build/games/RockDroid1/images/tilesets/anim/move_left_platform_2.png diff --git a/build/games/Rockbot1/images/tilesets/anim/move_left_platform_3.png b/build/games/RockDroid1/images/tilesets/anim/move_left_platform_3.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/move_left_platform_3.png rename to build/games/RockDroid1/images/tilesets/anim/move_left_platform_3.png diff --git a/build/games/Rockbot1/images/tilesets/anim/move_right_platform_1.png b/build/games/RockDroid1/images/tilesets/anim/move_right_platform_1.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/move_right_platform_1.png rename to build/games/RockDroid1/images/tilesets/anim/move_right_platform_1.png diff --git a/build/games/Rockbot1/images/tilesets/anim/move_right_platform_2.png b/build/games/RockDroid1/images/tilesets/anim/move_right_platform_2.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/move_right_platform_2.png rename to build/games/RockDroid1/images/tilesets/anim/move_right_platform_2.png diff --git a/build/games/Rockbot1/images/tilesets/anim/move_right_platform_3.png b/build/games/RockDroid1/images/tilesets/anim/move_right_platform_3.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/move_right_platform_3.png rename to build/games/RockDroid1/images/tilesets/anim/move_right_platform_3.png diff --git a/build/games/RockDroid1/images/tilesets/anim/palmtree_001.png b/build/games/RockDroid1/images/tilesets/anim/palmtree_001.png new file mode 100644 index 00000000..1a13d695 Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/anim/palmtree_001.png differ diff --git a/build/games/RockDroid1/images/tilesets/anim/palmtree_002.png b/build/games/RockDroid1/images/tilesets/anim/palmtree_002.png new file mode 100644 index 00000000..53e101a4 Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/anim/palmtree_002.png differ diff --git a/build/games/RockDroid1/images/tilesets/anim/palmtree_003.png b/build/games/RockDroid1/images/tilesets/anim/palmtree_003.png new file mode 100644 index 00000000..b74f6af4 Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/anim/palmtree_003.png differ diff --git a/build/games/RockDroid1/images/tilesets/anim/palmtree_004.png b/build/games/RockDroid1/images/tilesets/anim/palmtree_004.png new file mode 100644 index 00000000..4598cadc Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/anim/palmtree_004.png differ diff --git a/build/games/RockDroid1/images/tilesets/anim/palmtree_005.png b/build/games/RockDroid1/images/tilesets/anim/palmtree_005.png new file mode 100644 index 00000000..b4528995 Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/anim/palmtree_005.png differ diff --git a/build/games/RockDroid1/images/tilesets/anim/palmtree_006.png b/build/games/RockDroid1/images/tilesets/anim/palmtree_006.png new file mode 100644 index 00000000..e0997801 Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/anim/palmtree_006.png differ diff --git a/build/games/Rockbot1/images/tilesets/anim/water_1.png b/build/games/RockDroid1/images/tilesets/anim/water_1.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/water_1.png rename to build/games/RockDroid1/images/tilesets/anim/water_1.png diff --git a/build/games/Rockbot1/images/tilesets/anim/water_2.png b/build/games/RockDroid1/images/tilesets/anim/water_2.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/water_2.png rename to build/games/RockDroid1/images/tilesets/anim/water_2.png diff --git a/build/games/Rockbot1/images/tilesets/anim/water_2a.png b/build/games/RockDroid1/images/tilesets/anim/water_2a.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/water_2a.png rename to build/games/RockDroid1/images/tilesets/anim/water_2a.png diff --git a/build/games/Rockbot1/images/tilesets/anim/water_2b.png b/build/games/RockDroid1/images/tilesets/anim/water_2b.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/water_2b.png rename to build/games/RockDroid1/images/tilesets/anim/water_2b.png diff --git a/build/games/Rockbot1/images/tilesets/anim/water_border_clean.png b/build/games/RockDroid1/images/tilesets/anim/water_border_clean.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/water_border_clean.png rename to build/games/RockDroid1/images/tilesets/anim/water_border_clean.png diff --git a/build/games/RockDroid1/images/tilesets/anim/water_border_pipe_left.png b/build/games/RockDroid1/images/tilesets/anim/water_border_pipe_left.png new file mode 100644 index 00000000..ee05cce6 Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/anim/water_border_pipe_left.png differ diff --git a/build/games/RockDroid1/images/tilesets/anim/water_border_pipe_right.png b/build/games/RockDroid1/images/tilesets/anim/water_border_pipe_right.png new file mode 100644 index 00000000..b7cc644d Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/anim/water_border_pipe_right.png differ diff --git a/build/games/Rockbot1/images/tilesets/anim/water_border_tile.png b/build/games/RockDroid1/images/tilesets/anim/water_border_tile.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/water_border_tile.png rename to build/games/RockDroid1/images/tilesets/anim/water_border_tile.png diff --git a/build/games/Rockbot1/images/tilesets/anim/water_ground.png b/build/games/RockDroid1/images/tilesets/anim/water_ground.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/water_ground.png rename to build/games/RockDroid1/images/tilesets/anim/water_ground.png diff --git a/build/games/Rockbot1/images/tilesets/anim/waterfall_left.png b/build/games/RockDroid1/images/tilesets/anim/waterfall_left.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/waterfall_left.png rename to build/games/RockDroid1/images/tilesets/anim/waterfall_left.png diff --git a/build/games/Rockbot1/images/tilesets/anim/waterfall_middle_left.png b/build/games/RockDroid1/images/tilesets/anim/waterfall_middle_left.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/waterfall_middle_left.png rename to build/games/RockDroid1/images/tilesets/anim/waterfall_middle_left.png diff --git a/build/games/Rockbot1/images/tilesets/anim/waterfall_middle_right.png b/build/games/RockDroid1/images/tilesets/anim/waterfall_middle_right.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/waterfall_middle_right.png rename to build/games/RockDroid1/images/tilesets/anim/waterfall_middle_right.png diff --git a/build/games/Rockbot1/images/tilesets/anim/waterfall_right.png b/build/games/RockDroid1/images/tilesets/anim/waterfall_right.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/waterfall_right.png rename to build/games/RockDroid1/images/tilesets/anim/waterfall_right.png diff --git a/build/games/Rockbot1/images/tilesets/anim/waterfall_top.png b/build/games/RockDroid1/images/tilesets/anim/waterfall_top.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/waterfall_top.png rename to build/games/RockDroid1/images/tilesets/anim/waterfall_top.png diff --git a/build/games/Rockbot1/images/tilesets/anim/waterfall_top_left.png b/build/games/RockDroid1/images/tilesets/anim/waterfall_top_left.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/waterfall_top_left.png rename to build/games/RockDroid1/images/tilesets/anim/waterfall_top_left.png diff --git a/build/games/Rockbot1/images/tilesets/anim/waterfall_top_right.png b/build/games/RockDroid1/images/tilesets/anim/waterfall_top_right.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/anim/waterfall_top_right.png rename to build/games/RockDroid1/images/tilesets/anim/waterfall_top_right.png diff --git a/build/games/Rockbot1/images/tilesets/big_boss_explosion.png b/build/games/RockDroid1/images/tilesets/big_boss_explosion.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/big_boss_explosion.png rename to build/games/RockDroid1/images/tilesets/big_boss_explosion.png diff --git a/build/games/Rockbot1/images/tilesets/blocks/easymode.png b/build/games/RockDroid1/images/tilesets/blocks/easymode.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/blocks/easymode.png rename to build/games/RockDroid1/images/tilesets/blocks/easymode.png diff --git a/build/games/Rockbot1/images/tilesets/blocks/hardmode.png b/build/games/RockDroid1/images/tilesets/blocks/hardmode.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/blocks/hardmode.png rename to build/games/RockDroid1/images/tilesets/blocks/hardmode.png diff --git a/build/games/Rockbot1/images/tilesets/bubble.png b/build/games/RockDroid1/images/tilesets/bubble.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/bubble.png rename to build/games/RockDroid1/images/tilesets/bubble.png diff --git a/build/games/Rockbot1/images/tilesets/dash_dust.png b/build/games/RockDroid1/images/tilesets/dash_dust.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/dash_dust.png rename to build/games/RockDroid1/images/tilesets/dash_dust.png diff --git a/build/games/RockDroid1/images/tilesets/default.png b/build/games/RockDroid1/images/tilesets/default.png new file mode 100644 index 00000000..3021d134 Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/default.png differ diff --git a/build/games/Rockbot1/images/tilesets/explosion_16.png b/build/games/RockDroid1/images/tilesets/explosion_16.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/explosion_16.png rename to build/games/RockDroid1/images/tilesets/explosion_16.png diff --git a/build/games/Rockbot1/images/tilesets/explosion_32.png b/build/games/RockDroid1/images/tilesets/explosion_32.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/explosion_32.png rename to build/games/RockDroid1/images/tilesets/explosion_32.png diff --git a/build/games/Rockbot1/images/tilesets/explosion_boss.png b/build/games/RockDroid1/images/tilesets/explosion_boss.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/explosion_boss.png rename to build/games/RockDroid1/images/tilesets/explosion_boss.png diff --git a/build/games/Rockbot1/images/tilesets/flash.png b/build/games/RockDroid1/images/tilesets/flash.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/flash.png rename to build/games/RockDroid1/images/tilesets/flash.png diff --git a/build/games/Rockbot1/images/tilesets/hit.png b/build/games/RockDroid1/images/tilesets/hit.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/hit.png rename to build/games/RockDroid1/images/tilesets/hit.png diff --git a/build/games/Rockbot1/images/tilesets/rain.png b/build/games/RockDroid1/images/tilesets/rain.png similarity index 100% rename from build/games/Rockbot1/images/tilesets/rain.png rename to build/games/RockDroid1/images/tilesets/rain.png diff --git a/build/games/RockDroid1/images/tilesets/water_splash.png b/build/games/RockDroid1/images/tilesets/water_splash.png new file mode 100644 index 00000000..24417482 Binary files /dev/null and b/build/games/RockDroid1/images/tilesets/water_splash.png differ diff --git a/build/games/Rockbot1/lang/strings_ingame_English.dat b/build/games/RockDroid1/lang/strings_ingame_English.dat similarity index 100% rename from build/games/Rockbot1/lang/strings_ingame_English.dat rename to build/games/RockDroid1/lang/strings_ingame_English.dat diff --git a/build/games/RockDroid1/map_npc_data.dat b/build/games/RockDroid1/map_npc_data.dat new file mode 100644 index 00000000..94ed16ba Binary files /dev/null and b/build/games/RockDroid1/map_npc_data.dat differ diff --git a/build/games/RockDroid1/map_object_data.dat b/build/games/RockDroid1/map_object_data.dat new file mode 100644 index 00000000..659d887e Binary files /dev/null and b/build/games/RockDroid1/map_object_data.dat differ diff --git a/build/games/Rockbot1/maps.dat b/build/games/RockDroid1/maps.dat similarity index 100% rename from build/games/Rockbot1/maps.dat rename to build/games/RockDroid1/maps.dat diff --git a/build/games/RockDroid1/maps_v2.dat b/build/games/RockDroid1/maps_v2.dat new file mode 100644 index 00000000..47357927 Binary files /dev/null and b/build/games/RockDroid1/maps_v2.dat differ diff --git a/build/games/Rockbot1/music/INFO.txt b/build/games/RockDroid1/music/INFO.txt similarity index 100% rename from build/games/Rockbot1/music/INFO.txt rename to build/games/RockDroid1/music/INFO.txt diff --git a/build/games/Rockbot1/music/LICENSE.txt b/build/games/RockDroid1/music/LICENSE.txt similarity index 100% rename from build/games/Rockbot1/music/LICENSE.txt rename to build/games/RockDroid1/music/LICENSE.txt diff --git a/build/games/Rockbot1/music/rockbot_stage_complete_00.mod b/build/games/RockDroid1/music/classic_style_boss_intro.s3m similarity index 100% rename from build/games/Rockbot1/music/rockbot_stage_complete_00.mod rename to build/games/RockDroid1/music/classic_style_boss_intro.s3m diff --git a/build/games/RockDroid1/music/classic_style_castle_intro.mp3 b/build/games/RockDroid1/music/classic_style_castle_intro.mp3 new file mode 100644 index 00000000..a1a2c550 Binary files /dev/null and b/build/games/RockDroid1/music/classic_style_castle_intro.mp3 differ diff --git a/build/games/Rockbot1/music/final_boss.mod b/build/games/RockDroid1/music/final_boss.mod similarity index 100% rename from build/games/Rockbot1/music/final_boss.mod rename to build/games/RockDroid1/music/final_boss.mod diff --git a/build/games/RockDroid1/music/intro_scene.mod b/build/games/RockDroid1/music/intro_scene.mod new file mode 100644 index 00000000..b3e4c9d9 Binary files /dev/null and b/build/games/RockDroid1/music/intro_scene.mod differ diff --git a/build/games/RockDroid1/music/mp3/final_boss.mod.mp3 b/build/games/RockDroid1/music/mp3/final_boss.mod.mp3 new file mode 100644 index 00000000..95f964a8 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/final_boss.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/intro_scene.mod.mp3 b/build/games/RockDroid1/music/mp3/intro_scene.mod.mp3 new file mode 100644 index 00000000..500076c8 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/intro_scene.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_boss.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_boss.mod.mp3 new file mode 100644 index 00000000..12f2f807 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_boss.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_chaos_city.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_chaos_city.mod.mp3 new file mode 100644 index 00000000..496f4abf Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_chaos_city.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_daisy_bot.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_daisy_bot.mod.mp3 new file mode 100644 index 00000000..64db83dd Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_daisy_bot.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_end_animation.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_end_animation.mod.mp3 new file mode 100644 index 00000000..cac98cdb Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_end_animation.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_endcredits.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_endcredits.mod.mp3 new file mode 100644 index 00000000..57664989 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_endcredits.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_enemy_parade.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_enemy_parade.mod.mp3 new file mode 100644 index 00000000..1daaa5b9 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_enemy_parade.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_gameover.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_gameover.mod.mp3 new file mode 100644 index 00000000..20303c7f Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_gameover.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_jungle.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_jungle.mod.mp3 new file mode 100644 index 00000000..641f916d Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_jungle.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_minerbot_.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_minerbot_.mod.mp3 new file mode 100644 index 00000000..5d548d99 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_minerbot_.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_mummybot.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_mummybot.mod.mp3 new file mode 100644 index 00000000..fb81fdc8 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_mummybot.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_opening.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_opening.mod.mp3 new file mode 100644 index 00000000..8543a2a2 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_opening.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_seahorsebot.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_seahorsebot.mod.mp3 new file mode 100644 index 00000000..76208191 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_seahorsebot.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_selector.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_selector.mod.mp3 new file mode 100644 index 00000000..1003e240 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_selector.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_selector_0021.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_selector_0021.mod.mp3 new file mode 100644 index 00000000..df9f3b15 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_selector_0021.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_skull_castle_0.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_0.mod.mp3 new file mode 100644 index 00000000..049ee62d Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_0.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_skull_castle_I.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_I.mod.mp3 new file mode 100644 index 00000000..85c48e6b Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_I.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_skull_castle_II.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_II.mod.mp3 new file mode 100644 index 00000000..cfc29945 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_II.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_skull_castle_III.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_III.mod.mp3 new file mode 100644 index 00000000..80fb1496 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_III.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_skull_castle_IV.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_IV.mod.mp3 new file mode 100644 index 00000000..900526f2 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_IV.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_skull_castle_intro.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_intro.mod.mp3 new file mode 100644 index 00000000..bed075ae Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_skull_castle_intro.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_skullcastle_in_transporters_012.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_skullcastle_in_transporters_012.mod.mp3 new file mode 100644 index 00000000..900526f2 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_skullcastle_in_transporters_012.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_spikebot.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_spikebot.mod.mp3 new file mode 100644 index 00000000..b1557c73 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_spikebot.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_stage_complete_00.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_stage_complete_00.mod.mp3 new file mode 100644 index 00000000..adf195df Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_stage_complete_00.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_stage_start.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_stage_start.mod.mp3 new file mode 100644 index 00000000..79b75c9e Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_stage_start.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_technobot.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_technobot.mod.mp3 new file mode 100644 index 00000000..a5b9786b Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_technobot.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_trickycastle.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_trickycastle.mod.mp3 new file mode 100644 index 00000000..048e420c Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_trickycastle.mod.mp3 differ diff --git a/build/games/RockDroid1/music/mp3/rockbot_weapon_aquired.mod.mp3 b/build/games/RockDroid1/music/mp3/rockbot_weapon_aquired.mod.mp3 new file mode 100644 index 00000000..7148a0c0 Binary files /dev/null and b/build/games/RockDroid1/music/mp3/rockbot_weapon_aquired.mod.mp3 differ diff --git a/build/games/Rockbot2/music/INFO.txt b/build/games/RockDroid1/music/old/INFO.txt similarity index 100% rename from build/games/Rockbot2/music/INFO.txt rename to build/games/RockDroid1/music/old/INFO.txt diff --git a/build/games/RockDroid1/music/old/LICENSE.txt b/build/games/RockDroid1/music/old/LICENSE.txt new file mode 100644 index 00000000..551259a4 --- /dev/null +++ b/build/games/RockDroid1/music/old/LICENSE.txt @@ -0,0 +1,31 @@ +Mod Archive Upload Terms, Conditions and License Agreement + +Version 2.2 as of April 29th, 2009 + +This Agreement describes the legal relationship between you (an individual providing material by uploading songs or other files to the modarchive.org/com server) and the modarchive.org/com server operators ("us", "we" in the following text). Please read this document carefully. As this document is modified, the new version will apply to any files uploaded later than that date, but will not be applicable to previously uploaded files (see section 3.3). + +Section 1: Copyright holders + +1.1, General license. By providing a song/file to us, if you are the copyright holder of the song/file in question, you agree to grant us a non-exclusive, royalty-free, non-retractable non-terminable, worldwide license to: a) Distribute your song/file on the modarchive.org/com web site or in any other form of distribution that we deem appropriate. b) Publicly display, publicly perform, broadcast, encode, transmit, reproduce, manufacture and distribute your song/file in whole or in part, alone or in compilation with content provided by third parties, through any medium now known or hereafter devised. c) Apply non-destructive and non-changing compression systems to decrease the file sizes of the files uploaded to us. + +1.2, License to redistribute. By providing a song/file to modarchive.org/com you furthermore agree to give anyone who wishes to redistribute your song/file a license to download the song/file from modarchive.org/com and do so, provided it has stayed in its original, unmodified, unbundled form. + +Note: If you are visitor looking for information about using modules in your productions i.e games/applications, please see the Licensing FAQ. + +1.3, Ownership of Copyrights. You retain ownership of the copyrights and all other rights in the song/file provided to us, subject only to the non-exclusive rights granted to us under this Agreement. You are free to grant similar rights to others. + +Section 2: Non-copyright holders + +2.1 License. By providing a song/file to us if you are not the copyright holder of said song/file, you agree that you have previously secured a license to redistribute the song, according to the terms of Section 1. + +2.2 Copyright infringement. Furthermore you agree that you are fully responsible for your action of providing the song to modarchive.org/com, and that modarchive.org/com may hold you liable for any copyright infringement caused by your uploading of the song/file to the modarchive.org/com server, and thus that modarchive.org/com should not be held liable for any consequences of your actions. + +Section 3: General terms and conditions + +Click this link to view: http://modarchive.org/index.php?terms + +Section 4: Footnotes + +4.1 Works in the public domain. Materials that have previously been distributed under public domain license (for example, PD Disk Distributors) are quite legal to upload to our servers as long as the material has not been modified from its original state since release. Any works submitted to The Mod Archive that are not uploaded by their creators or copyright holders are assumed to be released into the public domain prior to upload and therefore legally licensed for redistribution as Public Domain material by The Mod Archive. Materials that have been uploaded but have been modified since origin are submitted entirely at the uploaders own risk, where all liabilities remain with the uploader concerning any legal implications that arise from subsequent litigation should there be any incident where a party has cause to complain. + +4.2 Footnote disclaimer. Should any section of the footnoted contradict the previous paragraphs in sections 1-3 inclusive, the paragraphs in sections 1-3 inclusive take precedence. diff --git a/build/games/RockDroid1/music/old/final_boss.mod b/build/games/RockDroid1/music/old/final_boss.mod new file mode 100644 index 00000000..189859fb Binary files /dev/null and b/build/games/RockDroid1/music/old/final_boss.mod differ diff --git a/build/games/RockDroid1/music/old/intro_scene.mod b/build/games/RockDroid1/music/old/intro_scene.mod new file mode 100644 index 00000000..b3e4c9d9 Binary files /dev/null and b/build/games/RockDroid1/music/old/intro_scene.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_boss.mod b/build/games/RockDroid1/music/old/rockbot_boss.mod new file mode 100644 index 00000000..0fb8e2fd Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_boss.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_chaos_city.mod b/build/games/RockDroid1/music/old/rockbot_chaos_city.mod new file mode 100644 index 00000000..ef32a9b7 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_chaos_city.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_daisy_bot.mod b/build/games/RockDroid1/music/old/rockbot_daisy_bot.mod new file mode 100644 index 00000000..fb0936f7 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_daisy_bot.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_end_animation.mod b/build/games/RockDroid1/music/old/rockbot_end_animation.mod new file mode 100644 index 00000000..b5fb6015 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_end_animation.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_endcredits.mod b/build/games/RockDroid1/music/old/rockbot_endcredits.mod new file mode 100644 index 00000000..cbca3f91 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_endcredits.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_enemy_parade.mod b/build/games/RockDroid1/music/old/rockbot_enemy_parade.mod new file mode 100644 index 00000000..5ced4ca5 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_enemy_parade.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_gameover.mod b/build/games/RockDroid1/music/old/rockbot_gameover.mod new file mode 100644 index 00000000..b3e4c9d9 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_gameover.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_jungle.mod b/build/games/RockDroid1/music/old/rockbot_jungle.mod new file mode 100644 index 00000000..0d903ad4 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_jungle.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_minerbot_.mod b/build/games/RockDroid1/music/old/rockbot_minerbot_.mod new file mode 100644 index 00000000..af0245cf Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_minerbot_.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_mummybot.mod b/build/games/RockDroid1/music/old/rockbot_mummybot.mod new file mode 100644 index 00000000..39b49176 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_mummybot.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_opening.mod b/build/games/RockDroid1/music/old/rockbot_opening.mod new file mode 100644 index 00000000..42bbff02 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_opening.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_seahorsebot.mod b/build/games/RockDroid1/music/old/rockbot_seahorsebot.mod new file mode 100644 index 00000000..a429e60e Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_seahorsebot.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_selector.mod b/build/games/RockDroid1/music/old/rockbot_selector.mod new file mode 100644 index 00000000..05692ce1 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_selector.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_skull_castle_0.mod b/build/games/RockDroid1/music/old/rockbot_skull_castle_0.mod new file mode 100644 index 00000000..5ddd705d Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_skull_castle_0.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_skull_castle_I.mod b/build/games/RockDroid1/music/old/rockbot_skull_castle_I.mod new file mode 100644 index 00000000..fbafd833 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_skull_castle_I.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_skull_castle_II.mod b/build/games/RockDroid1/music/old/rockbot_skull_castle_II.mod new file mode 100644 index 00000000..6fd52422 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_skull_castle_II.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_skull_castle_III.mod b/build/games/RockDroid1/music/old/rockbot_skull_castle_III.mod new file mode 100644 index 00000000..9acfe581 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_skull_castle_III.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_skull_castle_IV.mod b/build/games/RockDroid1/music/old/rockbot_skull_castle_IV.mod new file mode 100644 index 00000000..29bc9aa3 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_skull_castle_IV.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_skull_castle_intro.mod b/build/games/RockDroid1/music/old/rockbot_skull_castle_intro.mod new file mode 100644 index 00000000..eb6659d2 Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_skull_castle_intro.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_spikebot.mod b/build/games/RockDroid1/music/old/rockbot_spikebot.mod new file mode 100644 index 00000000..2698b61a Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_spikebot.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_technobot.mod b/build/games/RockDroid1/music/old/rockbot_technobot.mod new file mode 100644 index 00000000..b7c46dce Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_technobot.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_trickycastle.mod b/build/games/RockDroid1/music/old/rockbot_trickycastle.mod new file mode 100644 index 00000000..904e58be Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_trickycastle.mod differ diff --git a/build/games/RockDroid1/music/old/rockbot_weapon_aquired.mod b/build/games/RockDroid1/music/old/rockbot_weapon_aquired.mod new file mode 100644 index 00000000..5cd2ac6d Binary files /dev/null and b/build/games/RockDroid1/music/old/rockbot_weapon_aquired.mod differ diff --git a/build/games/Rockbot1/music/rockbot_boss.mod b/build/games/RockDroid1/music/rockbot_boss.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_boss.mod rename to build/games/RockDroid1/music/rockbot_boss.mod diff --git a/build/games/Rockbot1/music/rockbot_chaos_city.mod b/build/games/RockDroid1/music/rockbot_chaos_city.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_chaos_city.mod rename to build/games/RockDroid1/music/rockbot_chaos_city.mod diff --git a/build/games/Rockbot1/music/rockbot_daisy_bot.mod b/build/games/RockDroid1/music/rockbot_daisy_bot.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_daisy_bot.mod rename to build/games/RockDroid1/music/rockbot_daisy_bot.mod diff --git a/build/games/Rockbot1/music/rockbot_end_animation.mod b/build/games/RockDroid1/music/rockbot_end_animation.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_end_animation.mod rename to build/games/RockDroid1/music/rockbot_end_animation.mod diff --git a/build/games/Rockbot1/music/rockbot_endcredits.mod b/build/games/RockDroid1/music/rockbot_endcredits.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_endcredits.mod rename to build/games/RockDroid1/music/rockbot_endcredits.mod diff --git a/build/games/Rockbot1/music/rockbot_enemy_parade.mod b/build/games/RockDroid1/music/rockbot_enemy_parade.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_enemy_parade.mod rename to build/games/RockDroid1/music/rockbot_enemy_parade.mod diff --git a/build/games/Rockbot1/music/rockbot_gameover.mod b/build/games/RockDroid1/music/rockbot_gameover.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_gameover.mod rename to build/games/RockDroid1/music/rockbot_gameover.mod diff --git a/build/games/Rockbot1/music/rockbot_jungle.mod b/build/games/RockDroid1/music/rockbot_jungle.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_jungle.mod rename to build/games/RockDroid1/music/rockbot_jungle.mod diff --git a/build/games/Rockbot1/music/rockbot_minerbot_.mod b/build/games/RockDroid1/music/rockbot_minerbot_.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_minerbot_.mod rename to build/games/RockDroid1/music/rockbot_minerbot_.mod diff --git a/build/games/Rockbot1/music/rockbot_mummybot.mod b/build/games/RockDroid1/music/rockbot_mummybot.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_mummybot.mod rename to build/games/RockDroid1/music/rockbot_mummybot.mod diff --git a/build/games/Rockbot1/music/rockbot_opening.mod b/build/games/RockDroid1/music/rockbot_opening.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_opening.mod rename to build/games/RockDroid1/music/rockbot_opening.mod diff --git a/build/games/Rockbot1/music/rockbot_seahorsebot.mod b/build/games/RockDroid1/music/rockbot_seahorsebot.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_seahorsebot.mod rename to build/games/RockDroid1/music/rockbot_seahorsebot.mod diff --git a/build/games/Rockbot1/music/rockbot_selector.mod b/build/games/RockDroid1/music/rockbot_selector.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_selector.mod rename to build/games/RockDroid1/music/rockbot_selector.mod diff --git a/build/games/Rockbot1/music/rockbot_selector_0021.mod b/build/games/RockDroid1/music/rockbot_selector_0021.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_selector_0021.mod rename to build/games/RockDroid1/music/rockbot_selector_0021.mod diff --git a/build/games/Rockbot1/music/rockbot_skull_castle_0.mod b/build/games/RockDroid1/music/rockbot_skull_castle_0.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_skull_castle_0.mod rename to build/games/RockDroid1/music/rockbot_skull_castle_0.mod diff --git a/build/games/Rockbot1/music/rockbot_skull_castle_I.mod b/build/games/RockDroid1/music/rockbot_skull_castle_I.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_skull_castle_I.mod rename to build/games/RockDroid1/music/rockbot_skull_castle_I.mod diff --git a/build/games/Rockbot1/music/rockbot_skull_castle_II.mod b/build/games/RockDroid1/music/rockbot_skull_castle_II.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_skull_castle_II.mod rename to build/games/RockDroid1/music/rockbot_skull_castle_II.mod diff --git a/build/games/Rockbot1/music/rockbot_skull_castle_III.mod b/build/games/RockDroid1/music/rockbot_skull_castle_III.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_skull_castle_III.mod rename to build/games/RockDroid1/music/rockbot_skull_castle_III.mod diff --git a/build/games/Rockbot1/music/rockbot_skull_castle_IV.mod b/build/games/RockDroid1/music/rockbot_skull_castle_IV.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_skull_castle_IV.mod rename to build/games/RockDroid1/music/rockbot_skull_castle_IV.mod diff --git a/build/games/Rockbot1/music/rockbot_skull_castle_intro.mod b/build/games/RockDroid1/music/rockbot_skull_castle_intro.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_skull_castle_intro.mod rename to build/games/RockDroid1/music/rockbot_skull_castle_intro.mod diff --git a/build/games/Rockbot1/music/rockbot_spikebot.mod b/build/games/RockDroid1/music/rockbot_spikebot.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_spikebot.mod rename to build/games/RockDroid1/music/rockbot_spikebot.mod diff --git a/build/games/RockDroid1/music/rockbot_stage_complete_00.mod b/build/games/RockDroid1/music/rockbot_stage_complete_00.mod new file mode 100644 index 00000000..53b069e9 Binary files /dev/null and b/build/games/RockDroid1/music/rockbot_stage_complete_00.mod differ diff --git a/build/games/Rockbot1/music/rockbot_stage_start.mod b/build/games/RockDroid1/music/rockbot_stage_start.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_stage_start.mod rename to build/games/RockDroid1/music/rockbot_stage_start.mod diff --git a/build/games/Rockbot1/music/rockbot_technobot.mod b/build/games/RockDroid1/music/rockbot_technobot.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_technobot.mod rename to build/games/RockDroid1/music/rockbot_technobot.mod diff --git a/build/games/Rockbot1/music/rockbot_skullcastle_in_transporters_012.mod b/build/games/RockDroid1/music/rockbot_transporters.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_skullcastle_in_transporters_012.mod rename to build/games/RockDroid1/music/rockbot_transporters.mod diff --git a/build/games/Rockbot1/music/rockbot_trickycastle.mod b/build/games/RockDroid1/music/rockbot_trickycastle.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_trickycastle.mod rename to build/games/RockDroid1/music/rockbot_trickycastle.mod diff --git a/build/games/Rockbot1/music/rockbot_weapon_aquired.mod b/build/games/RockDroid1/music/rockbot_weapon_aquired.mod similarity index 100% rename from build/games/Rockbot1/music/rockbot_weapon_aquired.mod rename to build/games/RockDroid1/music/rockbot_weapon_aquired.mod diff --git a/build/games/Rockbot1/player_list.dat b/build/games/RockDroid1/player_list.dat similarity index 100% rename from build/games/Rockbot1/player_list.dat rename to build/games/RockDroid1/player_list.dat diff --git a/build/games/Rockbot1/player_list_v3_1.dat b/build/games/RockDroid1/player_list_v3_1.dat similarity index 100% rename from build/games/Rockbot1/player_list_v3_1.dat rename to build/games/RockDroid1/player_list_v3_1.dat diff --git a/build/games/RockDroid1/player_list_v3_1_1.dat b/build/games/RockDroid1/player_list_v3_1_1.dat new file mode 100644 index 00000000..ec737d2b Binary files /dev/null and b/build/games/RockDroid1/player_list_v3_1_1.dat differ diff --git a/build/games/Rockbot1/scenes/game_scenes.dat b/build/games/RockDroid1/scenes/game_scenes.dat similarity index 100% rename from build/games/Rockbot1/scenes/game_scenes.dat rename to build/games/RockDroid1/scenes/game_scenes.dat diff --git a/build/games/RockDroid1/scenes/scenes_clear_area.dat b/build/games/RockDroid1/scenes/scenes_clear_area.dat new file mode 100644 index 00000000..78adc2ee Binary files /dev/null and b/build/games/RockDroid1/scenes/scenes_clear_area.dat differ diff --git a/build/games/RockDroid1/scenes/scenes_list.dat b/build/games/RockDroid1/scenes/scenes_list.dat new file mode 100644 index 00000000..56cd2548 Binary files /dev/null and b/build/games/RockDroid1/scenes/scenes_list.dat differ diff --git a/build/games/RockDroid1/scenes/scenes_parallax.dat b/build/games/RockDroid1/scenes/scenes_parallax.dat new file mode 100644 index 00000000..8c421847 Binary files /dev/null and b/build/games/RockDroid1/scenes/scenes_parallax.dat differ diff --git a/build/games/RockDroid1/scenes/scenes_play_music.dat b/build/games/RockDroid1/scenes/scenes_play_music.dat new file mode 100644 index 00000000..ecb41e4c Binary files /dev/null and b/build/games/RockDroid1/scenes/scenes_play_music.dat differ diff --git a/build/games/Rockbot1/scenes/scenes_play_sfx.dat b/build/games/RockDroid1/scenes/scenes_play_sfx.dat similarity index 100% rename from build/games/Rockbot1/scenes/scenes_play_sfx.dat rename to build/games/RockDroid1/scenes/scenes_play_sfx.dat diff --git a/build/games/Rockbot1/scenes/scenes_show_animation.dat b/build/games/RockDroid1/scenes/scenes_show_animation.dat similarity index 100% rename from build/games/Rockbot1/scenes/scenes_show_animation.dat rename to build/games/RockDroid1/scenes/scenes_show_animation.dat diff --git a/build/games/RockDroid1/scenes/scenes_show_image.dat b/build/games/RockDroid1/scenes/scenes_show_image.dat new file mode 100644 index 00000000..74633e93 Binary files /dev/null and b/build/games/RockDroid1/scenes/scenes_show_image.dat differ diff --git a/build/games/RockDroid1/scenes/scenes_show_text.dat b/build/games/RockDroid1/scenes/scenes_show_text.dat new file mode 100644 index 00000000..a8396b56 Binary files /dev/null and b/build/games/RockDroid1/scenes/scenes_show_text.dat differ diff --git a/build/games/Rockbot1/scenes/scenes_show_viewpoint.dat b/build/games/RockDroid1/scenes/scenes_show_viewpoint.dat similarity index 100% rename from build/games/Rockbot1/scenes/scenes_show_viewpoint.dat rename to build/games/RockDroid1/scenes/scenes_show_viewpoint.dat diff --git a/build/games/Rockbot1/scenes/text/0.txt b/build/games/RockDroid1/scenes/text/0.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/0.txt rename to build/games/RockDroid1/scenes/text/0.txt diff --git a/build/games/Rockbot1/scenes/text/1.txt b/build/games/RockDroid1/scenes/text/1.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/1.txt rename to build/games/RockDroid1/scenes/text/1.txt diff --git a/build/games/Rockbot1/scenes/text/10.txt b/build/games/RockDroid1/scenes/text/10.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/10.txt rename to build/games/RockDroid1/scenes/text/10.txt diff --git a/build/games/Rockbot1/scenes/text/11.txt b/build/games/RockDroid1/scenes/text/11.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/11.txt rename to build/games/RockDroid1/scenes/text/11.txt diff --git a/build/games/Rockbot1/scenes/text/12.txt b/build/games/RockDroid1/scenes/text/12.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/12.txt rename to build/games/RockDroid1/scenes/text/12.txt diff --git a/build/games/Rockbot1/scenes/text/13.txt b/build/games/RockDroid1/scenes/text/13.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/13.txt rename to build/games/RockDroid1/scenes/text/13.txt diff --git a/build/games/Rockbot1/scenes/text/14.txt b/build/games/RockDroid1/scenes/text/14.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/14.txt rename to build/games/RockDroid1/scenes/text/14.txt diff --git a/build/games/Rockbot1/scenes/text/15.txt b/build/games/RockDroid1/scenes/text/15.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/15.txt rename to build/games/RockDroid1/scenes/text/15.txt diff --git a/build/games/Rockbot1/scenes/text/16.txt b/build/games/RockDroid1/scenes/text/16.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/16.txt rename to build/games/RockDroid1/scenes/text/16.txt diff --git a/build/games/Rockbot1/scenes/text/17.txt b/build/games/RockDroid1/scenes/text/17.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/17.txt rename to build/games/RockDroid1/scenes/text/17.txt diff --git a/build/games/Rockbot1/scenes/text/18.txt b/build/games/RockDroid1/scenes/text/18.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/18.txt rename to build/games/RockDroid1/scenes/text/18.txt diff --git a/build/games/Rockbot1/scenes/text/2.txt b/build/games/RockDroid1/scenes/text/2.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/2.txt rename to build/games/RockDroid1/scenes/text/2.txt diff --git a/build/games/Rockbot1/scenes/text/3.txt b/build/games/RockDroid1/scenes/text/3.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/3.txt rename to build/games/RockDroid1/scenes/text/3.txt diff --git a/build/games/Rockbot1/scenes/text/4.txt b/build/games/RockDroid1/scenes/text/4.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/4.txt rename to build/games/RockDroid1/scenes/text/4.txt diff --git a/build/games/Rockbot1/scenes/text/5.txt b/build/games/RockDroid1/scenes/text/5.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/5.txt rename to build/games/RockDroid1/scenes/text/5.txt diff --git a/build/games/Rockbot1/scenes/text/6.txt b/build/games/RockDroid1/scenes/text/6.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/6.txt rename to build/games/RockDroid1/scenes/text/6.txt diff --git a/build/games/Rockbot1/scenes/text/7.txt b/build/games/RockDroid1/scenes/text/7.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/7.txt rename to build/games/RockDroid1/scenes/text/7.txt diff --git a/build/games/Rockbot1/scenes/text/8.txt b/build/games/RockDroid1/scenes/text/8.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/8.txt rename to build/games/RockDroid1/scenes/text/8.txt diff --git a/build/games/Rockbot1/scenes/text/9.txt b/build/games/RockDroid1/scenes/text/9.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/9.txt rename to build/games/RockDroid1/scenes/text/9.txt diff --git a/build/games/RockDroid1/scenes/text/en/0.txt b/build/games/RockDroid1/scenes/text/en/0.txt new file mode 100644 index 00000000..6180192b --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/0.txt @@ -0,0 +1,6 @@ +IN THE DISTANT FUTURE... +RIO GRANDE DO SUL, BRAZIL + + + + diff --git a/build/games/RockDroid1/scenes/text/en/1.txt b/build/games/RockDroid1/scenes/text/en/1.txt new file mode 100644 index 00000000..05cc5bbc --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/1.txt @@ -0,0 +1,6 @@ +GENETIC ENGEENERING MERGED +WITH ROBOTICS TO CREATE A NEW +RACE CALLED "BOTS". +BESIDES THE ETERNAL YOUTH +APPEARANCE, THEY ARE VERY +STRONG AND RESISTANT. diff --git a/build/games/Rockbot1/scenes/text/en/10.txt b/build/games/RockDroid1/scenes/text/en/10.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/en/10.txt rename to build/games/RockDroid1/scenes/text/en/10.txt diff --git a/build/games/RockDroid1/scenes/text/en/11.txt b/build/games/RockDroid1/scenes/text/en/11.txt new file mode 100644 index 00000000..bbdc837a --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/11.txt @@ -0,0 +1,6 @@ +BETA: I WILL END THIS NOW. +MAKE YOUR PRAYERS AND GET +READY TO BE DELETED. +DESTRIN: WHAT?! NO, YOU CAN'T +YOUR GENES DO NOT ALLOW +YOU HURT HUMANS! diff --git a/build/games/RockDroid1/scenes/text/en/12.txt b/build/games/RockDroid1/scenes/text/en/12.txt new file mode 100644 index 00000000..58c0a61b --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/12.txt @@ -0,0 +1,6 @@ +CANDY: NOW BIG MEANINE, +WILL YOU BE A GOOD BOY? +DESTRIN: THIS CHILDISH WAY +OF SPEAKING MAKES ME ANGRY! +CANDY: I WILL PUT YOU IN A +PLACE YOU CAN COOL YOUR HEAD. diff --git a/build/games/RockDroid1/scenes/text/en/13.txt b/build/games/RockDroid1/scenes/text/en/13.txt new file mode 100644 index 00000000..c052a061 --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/13.txt @@ -0,0 +1,6 @@ +WELL DOCTOR, WE MEET +AGAIN. +WHAT? I KNOW NOTHING OF +YOU, STRAY-BOT! +WHAT? I WILL MAKE SURE YOU +REMEMVER EVERYTHING... diff --git a/build/games/Rockbot1/scenes/text/en/14.txt b/build/games/RockDroid1/scenes/text/en/14.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/en/14.txt rename to build/games/RockDroid1/scenes/text/en/14.txt diff --git a/build/games/Rockbot1/scenes/text/en/15.txt b/build/games/RockDroid1/scenes/text/en/15.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/en/15.txt rename to build/games/RockDroid1/scenes/text/en/15.txt diff --git a/build/games/Rockbot1/scenes/text/en/16.txt b/build/games/RockDroid1/scenes/text/en/16.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/en/16.txt rename to build/games/RockDroid1/scenes/text/en/16.txt diff --git a/build/games/Rockbot1/scenes/text/en/17.txt b/build/games/RockDroid1/scenes/text/en/17.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/en/17.txt rename to build/games/RockDroid1/scenes/text/en/17.txt diff --git a/build/games/Rockbot1/scenes/text/en/18.txt b/build/games/RockDroid1/scenes/text/en/18.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/en/18.txt rename to build/games/RockDroid1/scenes/text/en/18.txt diff --git a/build/games/RockDroid1/scenes/text/en/2.txt b/build/games/RockDroid1/scenes/text/en/2.txt new file mode 100644 index 00000000..6b9c4fb0 --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/2.txt @@ -0,0 +1,6 @@ +HOWEVER, A SCIENTIST CALLED +DESTRIN, HACKED THE "BOTS" +EMBRYO SYSTEM, AND PLANTED +IN SOME OF THEM A MALWARE +CODE THAT ALLOWS HIM TO +DISTORT THEIR MINDS. diff --git a/build/games/RockDroid1/scenes/text/en/3.txt b/build/games/RockDroid1/scenes/text/en/3.txt new file mode 100644 index 00000000..cbc5a16e --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/3.txt @@ -0,0 +1,6 @@ +IN A STORMY NIGHT, +IN THE CAPITAL OF THE +RIO-GRANDE DO SUL REPUBLIC, +EXPLOSIONS HIT THE ENERGY +FACTORY THAT PROVIDE THE FUEL +"BOTS" USE AS POWER. diff --git a/build/games/RockDroid1/scenes/text/en/4.txt b/build/games/RockDroid1/scenes/text/en/4.txt new file mode 100644 index 00000000..bb575aa9 --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/4.txt @@ -0,0 +1,6 @@ +COULD IT BE THAT DESTRIN IS +TRYING TO OBTAIN THE RAW +MATERIALS NEEDED TO BUILD A +EMBRYONIC CHAMBER OF HIS +OWN AND CREATE A FULL +ARMY OF HAVOK "BOTS"!? diff --git a/build/games/RockDroid1/scenes/text/en/5.txt b/build/games/RockDroid1/scenes/text/en/5.txt new file mode 100644 index 00000000..f4b9782b --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/5.txt @@ -0,0 +1,6 @@ +BETA: I WILL END THIS NOW. +MAKE YOUR PRAYERS AND GET +READY TO BE DELETED. +DESTRIN: WHAT?! NO, YOU CAN'T +YOUR GENES WON'T LET +YOU TO HURT HUMANS! diff --git a/build/games/RockDroid1/scenes/text/en/6.txt b/build/games/RockDroid1/scenes/text/en/6.txt new file mode 100644 index 00000000..d10b6dc9 --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/6.txt @@ -0,0 +1,6 @@ +YOU ARE STRONGLY MISTAKEN +IF YOU DO BELIEVE I AM A +MERE "CODE" RUNNING ON +A FLESH AND METAL SHELL. + +NOW, BEGONE FOREVER! diff --git a/build/games/Rockbot1/scenes/text/en/7.txt b/build/games/RockDroid1/scenes/text/en/7.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/en/7.txt rename to build/games/RockDroid1/scenes/text/en/7.txt diff --git a/build/games/RockDroid1/scenes/text/en/8.txt b/build/games/RockDroid1/scenes/text/en/8.txt new file mode 100644 index 00000000..779e807e --- /dev/null +++ b/build/games/RockDroid1/scenes/text/en/8.txt @@ -0,0 +1,6 @@ +ROCK: IF YOU HURT HIM, IT CAN +START A WAR BETWEEN US AND +HUMANS. I CAN'T ALLOW THAT. + +I AM PROTECTING NOT HIM, +BUT YOU, MY BROTHER. diff --git a/build/games/Rockbot1/scenes/text/en/9.txt b/build/games/RockDroid1/scenes/text/en/9.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/en/9.txt rename to build/games/RockDroid1/scenes/text/en/9.txt diff --git a/build/games/RockDroid1/scenes/text/pt/0.txt b/build/games/RockDroid1/scenes/text/pt/0.txt new file mode 100644 index 00000000..09109d44 --- /dev/null +++ b/build/games/RockDroid1/scenes/text/pt/0.txt @@ -0,0 +1,6 @@ +NO FUTURO DISTANTE... +RIO GRANDE DO SUL, BRAZIL + + + + diff --git a/build/games/RockDroid1/scenes/text/pt/1.txt b/build/games/RockDroid1/scenes/text/pt/1.txt new file mode 100644 index 00000000..a2164eea --- /dev/null +++ b/build/games/RockDroid1/scenes/text/pt/1.txt @@ -0,0 +1,6 @@ +A ENGENHARIA GENÉTICA SE UNIU +À ROBÓTICA PARA CRIAR UMA RAÇA +MISTA, CHAMADA "BOTS". +APESAR DA APARÊNCIA ETERNA +DE JOVENS, SÃO INCRIVELMENTE +FORTES E RESISTENTES. diff --git a/build/games/Rockbot1/scenes/text/pt/10.txt b/build/games/RockDroid1/scenes/text/pt/10.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/pt/10.txt rename to build/games/RockDroid1/scenes/text/pt/10.txt diff --git a/build/games/RockDroid1/scenes/text/pt/11.txt b/build/games/RockDroid1/scenes/text/pt/11.txt new file mode 100644 index 00000000..6c0156ae --- /dev/null +++ b/build/games/RockDroid1/scenes/text/pt/11.txt @@ -0,0 +1,6 @@ +BETA: ACABAREI COM ISTO AGORA. +FAÇA SUAS PRECES E PREPARE-SE +PARA SER DELETADO. +DESTRIN: O QUÊ?! NÃO, OS SEUS +GENES DEVEM IMPEDÍ-LO DE +MACHUCAR QUALQUER HUMANO! diff --git a/build/games/RockDroid1/scenes/text/pt/12.txt b/build/games/RockDroid1/scenes/text/pt/12.txt new file mode 100644 index 00000000..2a712f5b --- /dev/null +++ b/build/games/RockDroid1/scenes/text/pt/12.txt @@ -0,0 +1,6 @@ +MUITO BEM SEU MALVADO, +VAI SER UM BOM MENINO AGORA? +SEU JEITO INFANTIL DE FALAR +ME IRRITA DEMAIS! +VOU TE MANDAR PARA UM LUGAR +ONDE VOCÊ VAI ESFRIAR A CUCA. diff --git a/build/games/RockDroid1/scenes/text/pt/13.txt b/build/games/RockDroid1/scenes/text/pt/13.txt new file mode 100644 index 00000000..d697dbba --- /dev/null +++ b/build/games/RockDroid1/scenes/text/pt/13.txt @@ -0,0 +1,6 @@ +BEM DOUTOR, NOS ENCONTRAMOS +NOVAMENTE. +O QUÊ? NÃO LEMBRO DE +VOCÊ, VIRA-LATAS! +COMO? ME ME ASSEGURAR QUE +VOCÊ LEMBRE DE TUDO... diff --git a/build/games/Rockbot1/scenes/text/pt/14.txt b/build/games/RockDroid1/scenes/text/pt/14.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/pt/14.txt rename to build/games/RockDroid1/scenes/text/pt/14.txt diff --git a/build/games/Rockbot1/scenes/text/pt/15.txt b/build/games/RockDroid1/scenes/text/pt/15.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/pt/15.txt rename to build/games/RockDroid1/scenes/text/pt/15.txt diff --git a/build/games/Rockbot1/scenes/text/pt/16.txt b/build/games/RockDroid1/scenes/text/pt/16.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/pt/16.txt rename to build/games/RockDroid1/scenes/text/pt/16.txt diff --git a/build/games/Rockbot1/scenes/text/pt/17.txt b/build/games/RockDroid1/scenes/text/pt/17.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/pt/17.txt rename to build/games/RockDroid1/scenes/text/pt/17.txt diff --git a/build/games/Rockbot1/scenes/text/pt/18.txt b/build/games/RockDroid1/scenes/text/pt/18.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/pt/18.txt rename to build/games/RockDroid1/scenes/text/pt/18.txt diff --git a/build/games/RockDroid1/scenes/text/pt/2.txt b/build/games/RockDroid1/scenes/text/pt/2.txt new file mode 100644 index 00000000..dc96ef81 --- /dev/null +++ b/build/games/RockDroid1/scenes/text/pt/2.txt @@ -0,0 +1,6 @@ +NO ENTANTO, UM CIENTISTA +CHAMADO DESTRIN, HACKEOU O +SISTEMA DE GESTAÇÃO DOS "BOTS" +E ADICIONOU EM ALGUNS UM +CÓDIGO MALICIOSO, QUE PERMITE +DISTORCER AS SUAS MENTES. diff --git a/build/games/RockDroid1/scenes/text/pt/3.txt b/build/games/RockDroid1/scenes/text/pt/3.txt new file mode 100644 index 00000000..70c13578 --- /dev/null +++ b/build/games/RockDroid1/scenes/text/pt/3.txt @@ -0,0 +1,6 @@ +EM UMA NOITE DE TEMPESTADES +NA CAPITAL DA REPÚBLICA +RIO-GRANDENSE... +EXPLOSÕES ATINGEM A CENTRAL DE +ENERGIA E DE MINERAÇÃO, +FONTE DO PODER DOS "BOTS". diff --git a/build/games/RockDroid1/scenes/text/pt/4.txt b/build/games/RockDroid1/scenes/text/pt/4.txt new file mode 100644 index 00000000..153fab3e --- /dev/null +++ b/build/games/RockDroid1/scenes/text/pt/4.txt @@ -0,0 +1,6 @@ +ESTARIA O DOUTOR DESTRIN +TENTANDO OBTER FONTES DE +MATÉRIA PRIMA, PARA CRIAR +SUAS PRÓPRIA CÂMARA DE +GESTAÇÃO DE "BOTS" E +TER SEU PRÓPRIO EXÉRCITO!? diff --git a/build/games/RockDroid1/scenes/text/pt/5.txt b/build/games/RockDroid1/scenes/text/pt/5.txt new file mode 100644 index 00000000..c3189a79 --- /dev/null +++ b/build/games/RockDroid1/scenes/text/pt/5.txt @@ -0,0 +1,6 @@ +BETA: ACABAREI COM ISTO AGORA. +FAÇA SUAS PRECES E PREPARE-SE +PARA SER DELETADO. +DESTRIN: O QUÊ?! NÃO, SEUS +GENES DEVERIAM IMPEDÍ-LO DE +MACHUCAR QUALQUER HUMANO! diff --git a/build/games/RockDroid1/scenes/text/pt/6.txt b/build/games/RockDroid1/scenes/text/pt/6.txt new file mode 100644 index 00000000..83344750 --- /dev/null +++ b/build/games/RockDroid1/scenes/text/pt/6.txt @@ -0,0 +1,6 @@ +VOCÊ ESTÁ MUITO ENGANADO, +SE PENSA QUE EU SOU APENAS +UM PROGRAMA EM UMA +CARCAÇA DE METAL E CARNE. + +AGORA... DESAPAREÇA! diff --git a/build/games/Rockbot1/scenes/text/pt/7.txt b/build/games/RockDroid1/scenes/text/pt/7.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/pt/7.txt rename to build/games/RockDroid1/scenes/text/pt/7.txt diff --git a/build/games/Rockbot1/scenes/text/pt/8.txt b/build/games/RockDroid1/scenes/text/pt/8.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/pt/8.txt rename to build/games/RockDroid1/scenes/text/pt/8.txt diff --git a/build/games/Rockbot1/scenes/text/pt/9.txt b/build/games/RockDroid1/scenes/text/pt/9.txt similarity index 100% rename from build/games/Rockbot1/scenes/text/pt/9.txt rename to build/games/RockDroid1/scenes/text/pt/9.txt diff --git a/build/games/Rockbot1/scenes_strings.dat b/build/games/RockDroid1/scenes_strings.dat similarity index 100% rename from build/games/Rockbot1/scenes_strings.dat rename to build/games/RockDroid1/scenes_strings.dat diff --git a/build/games/Rockbot1/sfx/LICENSE.txt b/build/games/RockDroid1/sfx/LICENSE.txt similarity index 100% rename from build/games/Rockbot1/sfx/LICENSE.txt rename to build/games/RockDroid1/sfx/LICENSE.txt diff --git a/build/games/Rockbot1/sfx/axe.wav b/build/games/RockDroid1/sfx/axe.wav similarity index 100% rename from build/games/Rockbot1/sfx/axe.wav rename to build/games/RockDroid1/sfx/axe.wav diff --git a/build/games/Rockbot1/sfx/bats.wav b/build/games/RockDroid1/sfx/bats.wav similarity index 100% rename from build/games/Rockbot1/sfx/bats.wav rename to build/games/RockDroid1/sfx/bats.wav diff --git a/build/games/Rockbot1/sfx/beam.wav b/build/games/RockDroid1/sfx/beam.wav similarity index 100% rename from build/games/Rockbot1/sfx/beam.wav rename to build/games/RockDroid1/sfx/beam.wav diff --git a/build/games/Rockbot1/sfx/big_explosion.wav b/build/games/RockDroid1/sfx/big_explosion.wav similarity index 100% rename from build/games/Rockbot1/sfx/big_explosion.wav rename to build/games/RockDroid1/sfx/big_explosion.wav diff --git a/build/games/Rockbot1/sfx/charged_shot.wav b/build/games/RockDroid1/sfx/charged_shot.wav similarity index 100% rename from build/games/Rockbot1/sfx/charged_shot.wav rename to build/games/RockDroid1/sfx/charged_shot.wav diff --git a/build/games/Rockbot1/sfx/charging1.wav b/build/games/RockDroid1/sfx/charging1.wav similarity index 100% rename from build/games/Rockbot1/sfx/charging1.wav rename to build/games/RockDroid1/sfx/charging1.wav diff --git a/build/games/Rockbot1/sfx/charging2.wav b/build/games/RockDroid1/sfx/charging2.wav similarity index 100% rename from build/games/Rockbot1/sfx/charging2.wav rename to build/games/RockDroid1/sfx/charging2.wav diff --git a/build/games/RockDroid1/sfx/classic_style_door_open.wav b/build/games/RockDroid1/sfx/classic_style_door_open.wav new file mode 100644 index 00000000..12c114a1 Binary files /dev/null and b/build/games/RockDroid1/sfx/classic_style_door_open.wav differ diff --git a/build/games/Rockbot1/sfx/claw.wav b/build/games/RockDroid1/sfx/claw.wav similarity index 100% rename from build/games/Rockbot1/sfx/claw.wav rename to build/games/RockDroid1/sfx/claw.wav diff --git a/build/games/Rockbot1/sfx/cursor.wav b/build/games/RockDroid1/sfx/cursor.wav similarity index 100% rename from build/games/Rockbot1/sfx/cursor.wav rename to build/games/RockDroid1/sfx/cursor.wav diff --git a/build/games/Rockbot1/sfx/destrin_ship.wav b/build/games/RockDroid1/sfx/destrin_ship.wav similarity index 100% rename from build/games/Rockbot1/sfx/destrin_ship.wav rename to build/games/RockDroid1/sfx/destrin_ship.wav diff --git a/build/games/Rockbot1/sfx/disappearning_block.wav b/build/games/RockDroid1/sfx/disappearning_block.wav similarity index 100% rename from build/games/Rockbot1/sfx/disappearning_block.wav rename to build/games/RockDroid1/sfx/disappearning_block.wav diff --git a/build/games/Rockbot1/sfx/door_open.wav b/build/games/RockDroid1/sfx/door_open.wav similarity index 100% rename from build/games/Rockbot1/sfx/door_open.wav rename to build/games/RockDroid1/sfx/door_open.wav diff --git a/build/games/Rockbot1/sfx/energy.wav b/build/games/RockDroid1/sfx/energy.wav similarity index 100% rename from build/games/Rockbot1/sfx/energy.wav rename to build/games/RockDroid1/sfx/energy.wav diff --git a/build/games/RockDroid1/sfx/enter_platform.wav b/build/games/RockDroid1/sfx/enter_platform.wav new file mode 100644 index 00000000..f2b1f917 Binary files /dev/null and b/build/games/RockDroid1/sfx/enter_platform.wav differ diff --git a/build/games/Rockbot1/sfx/got_energy_pill.wav b/build/games/RockDroid1/sfx/got_energy_pill.wav similarity index 100% rename from build/games/Rockbot1/sfx/got_energy_pill.wav rename to build/games/RockDroid1/sfx/got_energy_pill.wav diff --git a/build/games/Rockbot1/sfx/got_item.wav b/build/games/RockDroid1/sfx/got_item.wav similarity index 100% rename from build/games/Rockbot1/sfx/got_item.wav rename to build/games/RockDroid1/sfx/got_item.wav diff --git a/build/games/Rockbot1/sfx/got_weapon.wav b/build/games/RockDroid1/sfx/got_weapon.wav similarity index 100% rename from build/games/Rockbot1/sfx/got_weapon.wav rename to build/games/RockDroid1/sfx/got_weapon.wav diff --git a/build/games/Rockbot1/sfx/hadouken_girl.wav b/build/games/RockDroid1/sfx/hadouken_girl.wav similarity index 100% rename from build/games/Rockbot1/sfx/hadouken_girl.wav rename to build/games/RockDroid1/sfx/hadouken_girl.wav diff --git a/build/games/Rockbot1/sfx/hou.wav b/build/games/RockDroid1/sfx/hou.wav similarity index 100% rename from build/games/Rockbot1/sfx/hou.wav rename to build/games/RockDroid1/sfx/hou.wav diff --git a/build/games/Rockbot1/sfx/implosion.wav b/build/games/RockDroid1/sfx/implosion.wav similarity index 100% rename from build/games/Rockbot1/sfx/implosion.wav rename to build/games/RockDroid1/sfx/implosion.wav diff --git a/build/games/Rockbot1/sfx/npc_hit.wav b/build/games/RockDroid1/sfx/npc_hit.wav similarity index 100% rename from build/games/Rockbot1/sfx/npc_hit.wav rename to build/games/RockDroid1/sfx/npc_hit.wav diff --git a/build/games/Rockbot1/sfx/npc_killed.wav b/build/games/RockDroid1/sfx/npc_killed.wav similarity index 100% rename from build/games/Rockbot1/sfx/npc_killed.wav rename to build/games/RockDroid1/sfx/npc_killed.wav diff --git a/build/games/RockDroid1/sfx/object_break.wav b/build/games/RockDroid1/sfx/object_break.wav new file mode 100644 index 00000000..67cf90d7 Binary files /dev/null and b/build/games/RockDroid1/sfx/object_break.wav differ diff --git a/build/games/RockDroid1/sfx/platform_break.wav b/build/games/RockDroid1/sfx/platform_break.wav new file mode 100644 index 00000000..38512d4d Binary files /dev/null and b/build/games/RockDroid1/sfx/platform_break.wav differ diff --git a/build/games/Rockbot1/sfx/player_death.wav b/build/games/RockDroid1/sfx/player_death.wav similarity index 100% rename from build/games/Rockbot1/sfx/player_death.wav rename to build/games/RockDroid1/sfx/player_death.wav diff --git a/build/games/Rockbot1/sfx/player_hit.wav b/build/games/RockDroid1/sfx/player_hit.wav similarity index 100% rename from build/games/Rockbot1/sfx/player_hit.wav rename to build/games/RockDroid1/sfx/player_hit.wav diff --git a/build/games/Rockbot1/sfx/player_jump.wav b/build/games/RockDroid1/sfx/player_jump.wav similarity index 100% rename from build/games/Rockbot1/sfx/player_jump.wav rename to build/games/RockDroid1/sfx/player_jump.wav diff --git a/build/games/Rockbot1/sfx/player_shot.wav b/build/games/RockDroid1/sfx/player_shot.wav similarity index 100% rename from build/games/Rockbot1/sfx/player_shot.wav rename to build/games/RockDroid1/sfx/player_shot.wav diff --git a/build/games/Rockbot1/sfx/point.wav b/build/games/RockDroid1/sfx/point.wav similarity index 100% rename from build/games/Rockbot1/sfx/point.wav rename to build/games/RockDroid1/sfx/point.wav diff --git a/build/games/Rockbot1/sfx/recharge.wav b/build/games/RockDroid1/sfx/recharge.wav similarity index 100% rename from build/games/Rockbot1/sfx/recharge.wav rename to build/games/RockDroid1/sfx/recharge.wav diff --git a/build/games/Rockbot1/sfx/shoot.wav b/build/games/RockDroid1/sfx/shoot.wav similarity index 100% rename from build/games/Rockbot1/sfx/shoot.wav rename to build/games/RockDroid1/sfx/shoot.wav diff --git a/build/games/Rockbot1/sfx/shoryuken_girl.wav b/build/games/RockDroid1/sfx/shoryuken_girl.wav similarity index 100% rename from build/games/Rockbot1/sfx/shoryuken_girl.wav rename to build/games/RockDroid1/sfx/shoryuken_girl.wav diff --git a/build/games/Rockbot1/sfx/shot_reflected.wav b/build/games/RockDroid1/sfx/shot_reflected.wav similarity index 100% rename from build/games/Rockbot1/sfx/shot_reflected.wav rename to build/games/RockDroid1/sfx/shot_reflected.wav diff --git a/build/games/Rockbot1/sfx/skull_castle_intro.wav b/build/games/RockDroid1/sfx/skull_castle_intro.wav similarity index 100% rename from build/games/Rockbot1/sfx/skull_castle_intro.wav rename to build/games/RockDroid1/sfx/skull_castle_intro.wav diff --git a/build/games/Rockbot1/sfx/stage_selected.wav b/build/games/RockDroid1/sfx/stage_selected.wav similarity index 100% rename from build/games/Rockbot1/sfx/stage_selected.wav rename to build/games/RockDroid1/sfx/stage_selected.wav diff --git a/build/games/Rockbot1/sfx/teleport.wav b/build/games/RockDroid1/sfx/teleport.wav similarity index 100% rename from build/games/Rockbot1/sfx/teleport.wav rename to build/games/RockDroid1/sfx/teleport.wav diff --git a/build/games/RockDroid1/sfx/teleporter_activated.wav b/build/games/RockDroid1/sfx/teleporter_activated.wav new file mode 100644 index 00000000..12c114a1 Binary files /dev/null and b/build/games/RockDroid1/sfx/teleporter_activated.wav differ diff --git a/build/games/Rockbot1/sfx/thunder.wav b/build/games/RockDroid1/sfx/thunder.wav similarity index 100% rename from build/games/Rockbot1/sfx/thunder.wav rename to build/games/RockDroid1/sfx/thunder.wav diff --git a/build/games/RockDroid1/sfx/timed_bomb_count.wav b/build/games/RockDroid1/sfx/timed_bomb_count.wav new file mode 100644 index 00000000..b0800735 Binary files /dev/null and b/build/games/RockDroid1/sfx/timed_bomb_count.wav differ diff --git a/build/games/Rockbot1/sfx/train.wav b/build/games/RockDroid1/sfx/train.wav similarity index 100% rename from build/games/Rockbot1/sfx/train.wav rename to build/games/RockDroid1/sfx/train.wav diff --git a/build/games/Rockbot1/sfx/train_chunk.wav b/build/games/RockDroid1/sfx/train_chunk.wav similarity index 100% rename from build/games/Rockbot1/sfx/train_chunk.wav rename to build/games/RockDroid1/sfx/train_chunk.wav diff --git a/build/games/Rockbot1/sfx/train_horn_2x.aiff b/build/games/RockDroid1/sfx/train_horn_2x.aiff similarity index 100% rename from build/games/Rockbot1/sfx/train_horn_2x.aiff rename to build/games/RockDroid1/sfx/train_horn_2x.aiff diff --git a/build/games/Rockbot1/sfx/water_enter.wav b/build/games/RockDroid1/sfx/water_enter.wav similarity index 100% rename from build/games/Rockbot1/sfx/water_enter.wav rename to build/games/RockDroid1/sfx/water_enter.wav diff --git a/build/games/Rockbot1/sfx/water_leave.wav b/build/games/RockDroid1/sfx/water_leave.wav similarity index 100% rename from build/games/Rockbot1/sfx/water_leave.wav rename to build/games/RockDroid1/sfx/water_leave.wav diff --git a/build/games/Rockbot1/sfx/wave.wav b/build/games/RockDroid1/sfx/wave.wav similarity index 100% rename from build/games/Rockbot1/sfx/wave.wav rename to build/games/RockDroid1/sfx/wave.wav diff --git a/build/games/Rockbot1/sfx/wind.wav b/build/games/RockDroid1/sfx/wind.wav similarity index 100% rename from build/games/Rockbot1/sfx/wind.wav rename to build/games/RockDroid1/sfx/wind.wav diff --git a/build/games/Rockbot1/stage_select_data_v301.dat b/build/games/RockDroid1/stage_select_data_v301.dat similarity index 100% rename from build/games/Rockbot1/stage_select_data_v301.dat rename to build/games/RockDroid1/stage_select_data_v301.dat diff --git a/build/games/RockDroid1/stages_v301.dat b/build/games/RockDroid1/stages_v301.dat new file mode 100644 index 00000000..e9601a10 Binary files /dev/null and b/build/games/RockDroid1/stages_v301.dat differ diff --git a/build/games/RockDroid2/anim_block_list.dat b/build/games/RockDroid2/anim_block_list.dat new file mode 100644 index 00000000..99fd582f Binary files /dev/null and b/build/games/RockDroid2/anim_block_list.dat differ diff --git a/build/games/Rockbot2/anim_tiles.dat b/build/games/RockDroid2/anim_tiles.dat similarity index 100% rename from build/games/Rockbot2/anim_tiles.dat rename to build/games/RockDroid2/anim_tiles.dat diff --git a/build/games/RockDroid2/boss_credits.txt b/build/games/RockDroid2/boss_credits.txt new file mode 100644 index 00000000..aa7718a1 --- /dev/null +++ b/build/games/RockDroid2/boss_credits.txt @@ -0,0 +1,115 @@ +DDN.XX +DARK DROID +IURI FIEDORUK +IURI FIEDORUK +DDN.09 +GEAR DROID +IURI FIEDORUK +IURI FIEDORUK +DDN.10 +DRAGON DROID +ARISMEIRE K. S. FIEDORUK +BOBERATU +DDN.11 +VALKYRIE DROID +ARISMEIRE K. S. FIEDORUK +BOBERATU +DDN.12 +KURUPIRA DROID +IURI FIEDORUK +ARISMEIRE K. S. FIEDORUK +DDN.13 +BEAST DROID +IURI FIEDORUK +BOBERATU +DDN.14 +MAGE DROID +ARISMEIRE K. S. FIEDORUK +BOBERATU +DDN.15 +ZODIAC DROID +IURI FIEDORUK +ARISMEIRE K. S. FIEDORUK +DDN.16 +SNOW DROID +IURI FIEDORUK +ARISMEIRE K. S. FIEDORUK +DDS.05 +GIANT SQUID +IURI FIEDORUK +BOBERATU +DDS.06 +BULLDOZER +IURI FIEDORUK +IURI FIEDORUK +DDS.06 +DYNOSSAUR0 +IURI FIEDORUK +IURI FIEDORUK +DDS.08 +TORAK +IURI FIEDORUK +BOBERATU +DDS.09 +DESTRIN MACHINE +IURI FIEDORUK +BOBERATU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/Rockbot2/castle1_points.dat b/build/games/RockDroid2/castle1_points.dat similarity index 100% rename from build/games/Rockbot2/castle1_points.dat rename to build/games/RockDroid2/castle1_points.dat diff --git a/build/games/Rockbot2/castle2_points.dat b/build/games/RockDroid2/castle2_points.dat similarity index 100% rename from build/games/Rockbot2/castle2_points.dat rename to build/games/RockDroid2/castle2_points.dat diff --git a/build/games/Rockbot2/castle_data_v301.dat b/build/games/RockDroid2/castle_data_v301.dat similarity index 100% rename from build/games/Rockbot2/castle_data_v301.dat rename to build/games/RockDroid2/castle_data_v301.dat diff --git a/build/games/Rockbot2/common_strings.dat b/build/games/RockDroid2/common_strings.dat similarity index 100% rename from build/games/Rockbot2/common_strings.dat rename to build/games/RockDroid2/common_strings.dat diff --git a/build/games/Rockbot2/common_strings_en.dat b/build/games/RockDroid2/common_strings_en.dat similarity index 100% rename from build/games/Rockbot2/common_strings_en.dat rename to build/games/RockDroid2/common_strings_en.dat diff --git a/build/games/Rockbot2/common_strings_es.dat b/build/games/RockDroid2/common_strings_es.dat similarity index 100% rename from build/games/Rockbot2/common_strings_es.dat rename to build/games/RockDroid2/common_strings_es.dat diff --git a/build/games/Rockbot2/common_strings_fr.dat b/build/games/RockDroid2/common_strings_fr.dat similarity index 100% rename from build/games/Rockbot2/common_strings_fr.dat rename to build/games/RockDroid2/common_strings_fr.dat diff --git a/build/games/Rockbot2/common_strings_it.dat b/build/games/RockDroid2/common_strings_it.dat similarity index 100% rename from build/games/Rockbot2/common_strings_it.dat rename to build/games/RockDroid2/common_strings_it.dat diff --git a/build/games/Rockbot2/common_strings_pt.dat b/build/games/RockDroid2/common_strings_pt.dat similarity index 100% rename from build/games/Rockbot2/common_strings_pt.dat rename to build/games/RockDroid2/common_strings_pt.dat diff --git a/build/games/Rockbot2/data/game_projectile_list_v2.dat b/build/games/RockDroid2/data/game_projectile_list_v2.dat similarity index 100% rename from build/games/Rockbot2/data/game_projectile_list_v2.dat rename to build/games/RockDroid2/data/game_projectile_list_v2.dat diff --git a/build/games/RockDroid2/data/game_projectile_list_v3.dat b/build/games/RockDroid2/data/game_projectile_list_v3.dat new file mode 100644 index 00000000..47bb8993 Binary files /dev/null and b/build/games/RockDroid2/data/game_projectile_list_v3.dat differ diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_0_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_0_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_0_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_0_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_0_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_0_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_0_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_0_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_0_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_0_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_0_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_0_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_10_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_10_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_10_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_10_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_10_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_10_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_10_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_10_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_10_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_10_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_10_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_10_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_11_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_11_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_11_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_11_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_11_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_11_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_11_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_11_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_11_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_11_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_11_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_11_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_12_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_12_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_12_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_12_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_12_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_12_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_12_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_12_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_12_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_12_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_12_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_12_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_13_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_13_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_13_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_13_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_13_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_13_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_13_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_13_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_13_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_13_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_13_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_13_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_14_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_14_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_14_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_14_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_14_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_14_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_14_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_14_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_14_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_14_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_14_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_14_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_15_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_15_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_15_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_15_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_15_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_15_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_15_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_15_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_15_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_15_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_15_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_15_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_16_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_16_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_16_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_16_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_16_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_16_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_16_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_16_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_16_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_16_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_16_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_16_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_17_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_17_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_17_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_17_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_17_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_17_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_17_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_17_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_17_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_17_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_17_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_17_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_18_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_18_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_18_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_18_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_18_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_18_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_18_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_18_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_18_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_18_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_18_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_18_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_19_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_19_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_19_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_19_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_19_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_19_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_19_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_19_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_19_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_19_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_19_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_19_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_1_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_1_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_1_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_1_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_1_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_1_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_1_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_1_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_1_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_1_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_1_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_1_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_2_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_2_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_2_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_2_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_2_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_2_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_2_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_2_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_2_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_2_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_2_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_2_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_3_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_3_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_3_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_3_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_3_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_3_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_3_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_3_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_3_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_3_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_3_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_3_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_4_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_4_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_4_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_4_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_4_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_4_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_4_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_4_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_4_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_4_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_4_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_4_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_5_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_5_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_5_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_5_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_5_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_5_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_5_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_5_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_5_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_5_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_5_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_5_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_6_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_6_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_6_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_6_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_6_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_6_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_6_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_6_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_6_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_6_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_6_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_6_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_7_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_7_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_7_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_7_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_7_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_7_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_7_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_7_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_7_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_7_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_7_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_7_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_8_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_8_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_8_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_8_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_8_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_8_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_8_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_8_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_8_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_8_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_8_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_8_2.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_9_0.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_9_0.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_9_0.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_9_0.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_9_1.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_9_1.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_9_1.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_9_1.dat diff --git a/build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_9_2.dat b/build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_9_2.dat similarity index 100% rename from build/games/Rockbot2/data/map_anim_tiles/map_anim_tiles_9_2.dat rename to build/games/RockDroid2/data/map_anim_tiles/map_anim_tiles_9_2.dat diff --git a/build/games/Rockbot2/data/stages_extra_data_v301.dat b/build/games/RockDroid2/data/stages_extra_data_v301.dat similarity index 100% rename from build/games/Rockbot2/data/stages_extra_data_v301.dat rename to build/games/RockDroid2/data/stages_extra_data_v301.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_0.dat b/build/games/RockDroid2/dialogs/stage_dialogs_0.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_0.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_0.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_12.dat b/build/games/RockDroid2/dialogs/stage_dialogs_0_es.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_12.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_0_es.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_13.dat b/build/games/RockDroid2/dialogs/stage_dialogs_0_fr.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_13.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_0_fr.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_5_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_0_it.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_5_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_0_it.dat diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_0_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_0_pt.dat new file mode 100644 index 00000000..6d852d90 --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_0_pt.dat @@ -0,0 +1,60 @@ +ALGUÉM ESTÁ ATACANDO A +PENITENCIÁRIA. IMPEÇA A +FUGA DOS CRIMINOSOS!! + + + +O DR. KANOTUS ESTÁ LÁ. +SERÁ QUE ELE ESTÁ TRAMANDO +UMA FUGA DA CADEIA? + + + +Ó CÉUS! TEM UM MONTE +DE GENTE RUIM LÁ. NÃO +POSSO DEIXAR QUE ESCAPEM. + + + +FAREI O MEU MELHOR. +VEREMOS SE NINGUÉM... +VAI SER MUITO FERIDO. + + + +IDIOTAS NUNCA APRENDEM. +ME PERGUNTO SE DESTA VEZ +ELES VÃO SABER SE RENDER. + + + +SUMA DAQUI! +EU TENHO UMA MISSÃO E +VOCÊ NÃO PODE INTERFERIR. + + + +QUEM É VOCÊ? +ESTA ARMADURA... SERÁ +QUE... BETA? + + + +VOCÊ ME PARECE COM... +NÃO, VOCÊ NÃO PODE.. +IRMÃO MAIS VELHO? + + + +PORQUE VOCÊ PARECE COMIGO? +É COMO OLHAR PARA UM +ESPELHO DISTORCIDO... + + + +SUA APARÊNCIA É.. ESTRANHA. +OLHE SENHOR, RENDA-SE +E NÃO VOU CHUTAR SUA BUNDA. + + + diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_1.dat b/build/games/RockDroid2/dialogs/stage_dialogs_1.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_1.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_1.dat index 785c3905..d1353ae5 100644 --- a/build/games/Rockbot2/dialogs/stage_dialogs_1.dat +++ b/build/games/RockDroid2/dialogs/stage_dialogs_1.dat @@ -1,30 +1,16 @@ -ALERT: INTRUDER DETECTED. -SECURITY MEASURES WILL BE -ACTIVATED. LEAVE OR DIE! -THIS SOUNDS SERIOUS. -SORRY TO TRESPASS, BUT -I CAN'T GO BACK. -OH, PLEASE FORGIVE ME. -BUT THERE IS SOMETHING -WE NEED TO DISCUSS. -YOU ARE AS MUCH A -INTRUDER THAN I AM. -OH! ALL THOSE SHINY AND -LOUD SIRENTS. MY EARS -ARE HURTING. STOP NOW! @@ -42,19 +28,33 @@ ARE HURTING. STOP NOW! +ALERT: INTRUDER DETECTED. +SECURITY MEASURES WILL BE +ACTIVATED. LEAVE OR DIE! +THIS SOUNDS SERIOUS. +SORRY TO TRESPASS, BUT +I CAN'T GO BACK. +OH, PLEASE FORGIVE ME. +BUT THERE IS SOMETHING +WE NEED TO DISCUSS. +YOU ARE AS MUCH A +INTRUDER THAN I AM. +OH! ALL THOSE SHINY AND +LOUD SIRENTS. MY EARS +ARE HURTING. STOP NOW! diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_6_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_10.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_6_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_10.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_8_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_10_es.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_8_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_10_es.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_9.dat b/build/games/RockDroid2/dialogs/stage_dialogs_10_fr.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_9.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_10_fr.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_9_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_10_it.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_9_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_10_it.dat diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_10_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_10_pt.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_10_pt.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_11.dat b/build/games/RockDroid2/dialogs/stage_dialogs_11.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_11.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_11_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_11_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_11_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_11_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_11_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_11_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_11_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_11_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_11_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_11_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_11_pt.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_11_pt.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_12.dat b/build/games/RockDroid2/dialogs/stage_dialogs_12.dat new file mode 100644 index 00000000..cbd04764 --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_12.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +... + + +KAROT.INVERSE() + + +YOU... YOU LOOK LIKE BETA, +BUT IT IS NOT HIM. +WHO ARE YOU? +TORAK? + + +WHY IS THAT YOU +LOOK LIKE MY OLDEST +BROTHER, MISTER? + + + +THERE IS SOMETHING +ABOUT YOUR DESIGN... +SOMETHING CURIOUS. +THE RESULT IS THE SAME, +NO MATTER THE ORDER. + +MEOW? + + +HOW MISTERIOUS YOU ARE. + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_12_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_12_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_12_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_12_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_12_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_12_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_12_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_12_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_12_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_12_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_12_pt.dat new file mode 100644 index 00000000..574b0266 --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_12_pt.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +... + + +KAROT.INVERSO() + + +VOCÊ SE PARECE COM BETA, +MAS NÃO É ELE. +QUEM É VOCÊ? +TO-RA-K? + + +SENHOR, PORQUE VOCÊ +SE PARECE COM MEU +IRMÃO MAIS VELHO? +? + + +TEM ALGO ESTRANHO +NO SEU DESIGN... +ALGO CURIOSO. +OS RESULTADOS SÃO OS +MESMOS, NÃO IMPORTA +A ORDEM. +MEOW? + + +QUE MISTERIOSO VOCÊ É. + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_13.dat b/build/games/RockDroid2/dialogs/stage_dialogs_13.dat new file mode 100644 index 00000000..9c5f0a5d --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_13.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +WELCOME TO YOUR DOOM! + + +SOMEONE WHO LOST HIS SON +STOLE KANOTU'S BLUEPRINTS, +SO I HELPED HIM. +I SHOULD HAVE GUESSED! +WHY DID YOU CREATE THAT +BOT SO SIMILAR TO BETA? +HELPED? +YOU ONLY HELP YOUR SELF! +THIS ENDS HOW! +OH NOT, IT IS YOU AGAIN. +TELL ME SIR, WHY DARK WAS +SO LIKE MY OLDEST BROTHER? +SO THAT POOR THING WAS A +BADLY MADE CLONE OF BETA? +I WILL NOT FORGIVE YOU! +I WAS WAITING FOR YOU TO +SHOW YOURSELF. HOW DID YOU +BUILT A CLONE OF ME? +SO THAT IS IT. BUT YOU +FAILED, YOUR REPLICA WAS A +FAILURE. NOW FIGHT! +HEY BIG MUSTACHE, LONG TIME +NO SEE. WAS YOU BUSY DOING +CLONES OF BETA? +YOU USED SOMEONE'S +TRAGEDY TO YOUR EVIL +SCHEMES? DISGUSTING! diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_13_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_13_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_13_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_13_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_13_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_13_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_13_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_13_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_13_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_13_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_13_pt.dat new file mode 100644 index 00000000..4769d183 --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_13_pt.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +BEM VINDO À SUA +DESTRUIÇÃO! + +ALGUÉM QUE PERDEU O FILHO +ROUBOU AS PLANTAS DO +KANOTUS, E EU O AJUDEI. +EU DEVIA TER IMAGINADO! +PORQUE VOCÊ CRIOU UM BOT +PARECIDO COM O BETA? +AJUDAR? VOCÊ SÓ +AJUDA VOCÊ MESMO! +ISSO ACABA HOJE! +OH NÃO, VOCÊ DE NOVO. ME +DIGA, PORQUE TEM UM BOT +PARECIDO COM MEU IRMÃO? +ENTÃO AQUELA POBRE CRIATURA +ERA UM CLONE MAL-FEITO? +NÃO VOU PERDOAR VOCÊ! +ESTAVA ESPERANDO VOCÊ SAIR +DAS TREVAS. PORQUE CRIOU +UM CLONE MEU? +ENTÃO FOI ISSO. MAS VOCÊ +FALHOU, SEUA RÉPLICA FOI +UM FRACASSO. AGORA LUTE! +EI BIGODÃO, QUANTO TEMPO. +ESTAVA OCUPADO FAZENDO +CLONES DO BETA? +VOCÊ USOU O SOFRIMENTO +DE ALGUÉM PARA SEUS PLANOS? +NOJENTO! IMPERDOÁVEL! diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_14.dat b/build/games/RockDroid2/dialogs/stage_dialogs_14.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_14.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_14.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_14_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_14_es.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_14_es.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_14_es.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_14_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_14_fr.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_14_fr.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_14_fr.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_14_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_14_it.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_14_it.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_14_it.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_14_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_14_pt.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_14_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_14_pt.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_15.dat b/build/games/RockDroid2/dialogs/stage_dialogs_15.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_15.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_15.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_15_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_15_es.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_15_es.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_15_es.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_15_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_15_fr.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_15_fr.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_15_fr.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_15_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_15_it.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_15_it.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_15_it.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_15_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_15_pt.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_15_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_15_pt.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_16.dat b/build/games/RockDroid2/dialogs/stage_dialogs_16.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_16.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_16.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_16_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_16_es.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_16_es.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_16_es.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_16_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_16_fr.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_16_fr.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_16_fr.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_16_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_16_it.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_16_it.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_16_it.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_16_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_16_pt.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_16_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_16_pt.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_17.dat b/build/games/RockDroid2/dialogs/stage_dialogs_17.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_17.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_17.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_17_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_17_es.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_17_es.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_17_es.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_17_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_17_fr.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_17_fr.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_17_fr.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_17_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_17_it.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_17_it.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_17_it.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_17_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_17_pt.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_17_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_17_pt.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_18.dat b/build/games/RockDroid2/dialogs/stage_dialogs_18.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_18.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_18.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_18_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_18_es.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_18_es.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_18_es.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_18_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_18_fr.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_18_fr.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_18_fr.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_18_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_18_it.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_18_it.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_18_it.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_18_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_18_pt.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_18_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_18_pt.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_19.dat b/build/games/RockDroid2/dialogs/stage_dialogs_19.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_19.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_19.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_19_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_19_es.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_19_es.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_19_es.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_19_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_19_fr.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_19_fr.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_19_fr.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_19_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_19_it.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_19_it.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_19_it.dat diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_19_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_19_pt.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_19_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_19_pt.dat diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_1_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_1_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_1_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_1_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_1_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_1_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_1_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_1_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_1_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_1_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_1_pt.dat similarity index 93% rename from build/games/Rockbot2/dialogs/stage_dialogs_1_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_1_pt.dat index d2e3d3b2..2fdb1143 100644 --- a/build/games/Rockbot2/dialogs/stage_dialogs_1_pt.dat +++ b/build/games/RockDroid2/dialogs/stage_dialogs_1_pt.dat @@ -1,30 +1,16 @@ -ALERTA: INTRUSO DETECTADO! -MEDIDAS DE SEGURANÇA -ATIVADA. SAIA OU MORRA! -ISSO PARECE SÉRIO. -DESCULPA INVADIR, MAS -NÃO POSSO MAIS VOLTAR. -OH, POR FAVOR ME PERDOE! -MAS TEM ALGO QUE NÓS -DOIS TEMOS QUE DISCUTIR. -VOCÊ É TÃO INTRUSO -QUANDO EU SOU. -OH! ESSAS BARULHENTAS E -BRILHANTES SIRENES MACHUCAM -MEUS OUVIDOS, PARE ISSO! @@ -42,19 +28,33 @@ MEUS OUVIDOS, PARE ISSO! +ALERTA: INTRUSO DETECTADO! +MEDIDAS DE SEGURANÇA +ATIVADAS. SAIA OU MORRA! +ISSO PARECE SÉRIO. +DESCULPA INVADIR, MAS +NÃO POSSO MAIS VOLTAR. +OH, POR FAVOR ME PERDOE! +MAS TEM ALGO QUE NÓS +DOIS TEMOS QUE DISCUTIR. +VOCÊ É TÃO INTRUSO +QUANDO EU SOU. +OH! ESSAS BARULHENTAS E +BRILHANTES SIRENES MACHUCAM +MEUS OUVIDOS, PARE ISSO! diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_2.dat b/build/games/RockDroid2/dialogs/stage_dialogs_2.dat similarity index 92% rename from build/games/Rockbot2/dialogs/stage_dialogs_2.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_2.dat index b8ad4f16..341b95ae 100644 --- a/build/games/Rockbot2/dialogs/stage_dialogs_2.dat +++ b/build/games/RockDroid2/dialogs/stage_dialogs_2.dat @@ -1,29 +1,15 @@ -WELCOME TO SHANGRI-LA, -A LAND OF MYSTICAL POWERS -THAT YOU CAN'T BEAT. -I AM EQUIPPED WITH -ANTI-MAGIC TECH. -SO, BRING IT ON! -THERE WAS A GUY ONCE THAT -HAD RABITTS IN HIS TOPHAD. -HE DIDN'T MADE IT. -I REMEMBER OF A MAGICAL -ENEMY. HE HAD NO LUCK. -YOU WON'T EITHER! -PUURRR. ALL THIS CHI IN -THE AIR MAKES ME VIBE. @@ -42,18 +28,32 @@ THE AIR MAKES ME VIBE. +WELCOME TO SHANGRI-LA, +A LAND OF MYSTICAL POWERS +THAT YOU CAN'T BEAT. +I AM EQUIPPED WITH +ANTI-MAGIC TECH. +SO, BRING IT ON! +I FOUGHT A BADDIE THAT +HAD RABITTS IN HIS TOPHAD. +HE DIDN'T MADE IT. +I REMEMBER OF A MAGICAL +ENEMY. HE HAD NO LUCK. +YOU WON'T EITHER! +PUURRR. ALL THIS CHI IN +THE AIR MAKES ME VIBE. diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_2_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_2_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_2_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_2_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_2_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_2_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_2_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_2_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_2_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_2_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_2_pt.dat new file mode 100644 index 00000000..6cc93f38 --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_2_pt.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +BEM-VINDO À SHANGRI-LA, +TERRA DE PODERES MÍSTICOS +QUE VOCÊ NÃO PODE VENCER. + + + +ESTOU EQUIPADO COM +TECNOLOGIA ANTI-MAGIA. +PODE MANDAR VER! + + + +JÁ LUTEI CONTRA UM CARA QUE +TIRAVA COELHOS DA CARTOLA. +ELE NÃO SOBREVIVEU. + + + +TALVEZ VOCÊ TENHA MAIS +SORTE ONDE O ÚLTIMO MAGO +FALHOU. VEREMOS! + + + +PURRRR. TODO ESTE KI NO AR, +ME FAZ RONRONAR. + + + + diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_3.dat b/build/games/RockDroid2/dialogs/stage_dialogs_3.dat similarity index 88% rename from build/games/Rockbot2/dialogs/stage_dialogs_3.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_3.dat index 793e6c5b..87c1e328 100644 --- a/build/games/Rockbot2/dialogs/stage_dialogs_3.dat +++ b/build/games/RockDroid2/dialogs/stage_dialogs_3.dat @@ -1,30 +1,15 @@ -THE WIND CAN POWER THE -ENTIRE CITY. IT CAN EASILY -CRUSH YOU. -SEVERAL TRIED THAT. -THEY ARE ALL JUST NUMBERS -NOW. YOU WILL BE TOO. -SISTER, PLEASE! -DON'T USE NATURE POWER -AS IF WAS YOURS TO PLAY. -YOU WILL NEED MORE THAN -A BREEZE TO STOP ME. -LETS FIGHT! -WHAT A LOVELY ROBOT -YOU ARE. LOVED THE RED -HAIR. I WANT IT! @@ -43,18 +28,33 @@ HAIR. I WANT IT! +THE WIND CAN POWER THE +ENTIRE CITY. IT CAN EASILY +CRUSH YOU. +SEVERAL TRIED THAT. +THEY ARE ALL JUST NUMBERS +NOW. YOU WILL BE TOO. +SISTER, PLEASE! +DON'T USE NATURE POWER +AS IF WAS YOURS TO PLAY. +YOU WILL NEED MORE THAN +A BREEZE TO STOP ME. +LETS FIGHT! +WHAT A LOVELY ROBOT +YOU ARE. I LIKE THE RED +HAIR. GIVE ME IT! diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_3_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_3_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_3_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_3_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_3_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_3_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_3_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_3_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_3_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_3_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_3_pt.dat similarity index 86% rename from build/games/Rockbot2/dialogs/stage_dialogs_3_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_3_pt.dat index 1b104b43..3030005b 100644 --- a/build/games/Rockbot2/dialogs/stage_dialogs_3_pt.dat +++ b/build/games/RockDroid2/dialogs/stage_dialogs_3_pt.dat @@ -1,30 +1,15 @@ -O VENTO DÁ ENERGIA PARA -A CIDADE INTEIRA. E IRÁ -ESMAGAR VOCÊ FACILMENTE. -MUITOS JÁ TENTARAM. -TODOS SÃO APENAS MEMÓRIAS -AGORA. VOCÊ TAMBÉM SERÁ. -IRMÃZINHA, POR FAVOR! -NÃO USE A FORÇA DA NATUREZA -COMO SE FOSSE SUA. -VAI PRECISAR MAIS DO QUE -UMA BRIZA PARA ME DERRUBAR. -VAMOS LUTAR! -QUE BONITINHA É VOCÊ. -AMEI O CABELO VERMELHO. -QUERO ELE PARA MIM!! @@ -43,18 +28,33 @@ QUERO ELE PARA MIM!! +O VENTO DÁ ENERGIA PARA +A CIDADE INTEIRA. E IRÁ +ESMAGAR VOCÊ FACILMENTE. +MUITOS JÁ TENTARAM. +TODOS SÃO MEMÓRIAS AGORA. +VOCÊ TAMBÉM SERÁ! +IRMÃZINHA, POR FAVOR! +NÃO USE A FORÇA DA NATUREZA +COMO SE FOSSE SUA. +VAI PRECISAR MAIS DO QUE +UMA BRIZA PARA ME DERRUBAR. +VAMOS LUTAR! +QUE BONITINHA É VOCÊ. +AMEI O CABELO VERMELHO. +QUERO ELE PARA MIM!! diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_4.dat b/build/games/RockDroid2/dialogs/stage_dialogs_4.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_4.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_4.dat diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_4_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_4_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_4_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_4_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_4_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_4_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_4_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_4_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_4_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_4_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_4_pt.dat similarity index 100% rename from build/games/Rockbot2/dialogs/stage_dialogs_4_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_4_pt.dat diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_5.dat b/build/games/RockDroid2/dialogs/stage_dialogs_5.dat new file mode 100644 index 00000000..08f55693 --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_5.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +C'MON, C'MON! +THE FAIR IS OPEN! ALL THE +BEASTS TO KILL YOU! + + + +SOUNDS DANGEROUS. +HEY, WAIT! I LOVE DANGER! + + + + +PLEASE, PLEASE, MISTER. +DON'T SEND SCARY MONSTERS! + + + + +CURIOUS. +I WILL PLAY YOUR GAME. + + + + +BIG CATS! BIG CATS! +I LOOOVE BIG CATS! +LETS PLAY, BROTHERS! + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_5_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_5_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_5_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_5_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_5_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_5_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_5_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_5_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_5_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_5_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_5_pt.dat new file mode 100644 index 00000000..889c2e7d --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_5_pt.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +VENHAM! VENHAM! +O PARQUE ESTÁ ABERTO CHEIO +DE FERAS PARA MATÁ-LOS! + + + +PARECE PERIGOSO. +ESPERA! EU ADORO O PERIGO! + + + + +POR, POR FAVOR, SENHOR. +NÃO MANDE MONSTROS +CONTRA MIM! + + + +CURIOSO. +MUITO BOM, JOGAREI +SEU JOGO. + + + +GATÕES! GATÕES! +EU AMOOO GATOS GRANDES! +VAMOS BRINCAR, IRMÃOS! + + + diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_6.dat b/build/games/RockDroid2/dialogs/stage_dialogs_6.dat similarity index 94% rename from build/games/Rockbot2/dialogs/stage_dialogs_6.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_6.dat index 37f95e59..21d9f953 100644 --- a/build/games/Rockbot2/dialogs/stage_dialogs_6.dat +++ b/build/games/RockDroid2/dialogs/stage_dialogs_6.dat @@ -1,30 +1,16 @@ -FOLLOW VICTOR TO THE -SACRED PLACE. THIS AIN'T -A DREAM, YOU CAN'T SCAPE! -I DON'T WANT TO BE BURIED -IN A ROBOT CEMETARY. -SPOOKY MISTER, PE-PLEASE, -PLEASE BE A NICE ROBOT -AND DO-DON'T SCARE ME-ME. -TRYING TO SCARE ME OFF? -C'MON, YOU CAN DO BETTER. -SHOW ME ALL YOU HAVE! -OH, SO SPOOKY! -I LOVE HORROR MOVIES. -SO MUCH FUN! @@ -42,19 +28,33 @@ SO MUCH FUN! +FOLLOW VICTOR TO THE +SACRED PLACE. THIS AIN'T +A DREAM, YOU CAN'T SCAPE! +I DON'T WANT TO BE BURIED +IN A ROBOT SEMATARY. +SPOOKY MISTER, PE-PLEASE, +PLEASE BE A NICE ROBOT +AND DO-DON'T SCARE ME-ME. +TRYING TO SCARE ME OFF? +C'MON, YOU CAN DO BETTER. +SHOW ME ALL YOU HAVE! +OH, SO SPOOKY! +I LOVE HORROR MOVIES. +SO MUCH FUN! diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_6_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_6_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_6_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_6_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_6_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_6_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_6_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_6_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_6_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_6_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_6_pt.dat new file mode 100644 index 00000000..ee4c7182 --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_6_pt.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SIGA VICTOR ATÉ O LUGAR +SAGRADO. NÃO É UM SONHO, +VOCÊ NÃO PODE ESCAPAR. + + + +NÃO QUERO SER ENTERRADO +EM UM CEMITÉRIO DE BOTS. + + + + +QUE ASSUSTA-TA-DOR, SE- +SENHOR! PO-POR FAVOR +NÃO ME-ME ASSUS-TE! + + + +TENTANDO ME ASSUSTAR? +VOCÊ PODE FAZER MELHOR. +VENHA COM TUDO! + + + +UHM QUE ASSUSTADOR! +ADORO FILMES DE HORROR, +SÃO TÃO DIVERTIDOS! + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_7.dat b/build/games/RockDroid2/dialogs/stage_dialogs_7.dat new file mode 100644 index 00000000..214754ca --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_7.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +THE STARS ARE ALL ALIGNED, +YOUR FATE IS DECIDED, +DEFEAT IS IN YOUR FUTURE. + + + +FATE? DESTINY? FOR A ROBOT? +SORRY, BUT I CAN'T BELIEVE +THAT. PROVE ME WRONG. + + + +SORRY MISTER, I DON'T +TRUST IN HOROSCOPES. +I WILL SHOW YOU. + + + +THOSE RUINS ARE A +BEAUTIFUL PLACE. DON'T RUIN +IT WITH SUCH NONSENSE. + + + +THEN I HAVE NO CHOISE BUT +TO FIGHT MY DESTINY AND +DEFEAT YOU ANYWAY POSSIBLE. + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_7_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_7_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_7_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_7_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_7_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_7_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_7_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_7_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_7_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_7_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_7_pt.dat similarity index 93% rename from build/games/Rockbot2/dialogs/stage_dialogs_7_pt.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_7_pt.dat index 675c7b11..9a5dc139 100644 --- a/build/games/Rockbot2/dialogs/stage_dialogs_7_pt.dat +++ b/build/games/RockDroid2/dialogs/stage_dialogs_7_pt.dat @@ -1,30 +1,15 @@ -ESTRELAS ESTÃO ALINHADAS, -SEU DESTINO ESTÁ SELADO, -SUA DERROTA ESTÁ PRÓXIMA. -DESTINO? PARA UM ROBÔ? -DESCULPE, MAS ISSO NÃO -EXISTE. PROVE OU DESISTA. -DESCULPE SENHOR, MAS -NÃO ACREDITO EM HORÓSCOPO. -VOU TE MOSTRAR. -ESTAS RUÍNAS SÃO UM LOCAL -BONITO. NÃO DESTRUA ISSO -COM COISAS ILÓGICAS. -ENTÃO NÃO TENHO ESCOLHA, -VOU LUTAR CONTRA O DESTINO -DE TODAS AS FORMAS. @@ -43,18 +28,33 @@ DE TODAS AS FORMAS. +ESTRELAS ESTÃO ALINHADAS, +SEU DESTINO ESTÁ SELADO, +SUA DERROTA ESTÁ PRÓXIMA. +DESTINO? PARA UM ROBÔ? +DESCULPE, MAS ISSO NÃO +EXISTE. PROVE OU DESISTA. +DESCULPE SENHOR, MAS +NÃO CONFIO EM HORÓSCOPO. +VOU TE MOSTRAR. +ESTAS RUÍNAS SÃO UM LOCAL +BONITO. NÃO DESTRUA ISSO +COM COISAS ILÓGICAS. +ENTÃO NÃO TENHO ESCOLHA, +VOU LUTAR CONTRA O DESTINO +DE TODAS AS FORMAS. diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_8.dat b/build/games/RockDroid2/dialogs/stage_dialogs_8.dat similarity index 89% rename from build/games/Rockbot2/dialogs/stage_dialogs_8.dat rename to build/games/RockDroid2/dialogs/stage_dialogs_8.dat index b701d070..f9d80eb6 100644 --- a/build/games/Rockbot2/dialogs/stage_dialogs_8.dat +++ b/build/games/RockDroid2/dialogs/stage_dialogs_8.dat @@ -34,9 +34,9 @@ TIME TO PAYBACK. -I JUST CRASHED A FEW TOYS -TO STOP A ROBBER IN THE -SHOP FOR KIDS. +THIS PLACE IS TOO +SLIPERRY TO LOOSE +TIME ARGUING. diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_8_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_8_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_8_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_8_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_8_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_8_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_8_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_8_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_8_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_8_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_8_pt.dat new file mode 100644 index 00000000..9dadde35 --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_8_pt.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +VOCÊ DESTRUIU A +MINHA FÁBRICA DE GELO. +HORA DA VINGANÇA! + + + +ESSE LUGAR É ESCORREGARIO +DEMAIS PARA PERDERMOS +TEMPO DISCUTINDO. + + + +ACHO QUE VOCÊ FICOU +MEIO DOIDO COM TANTO +FRIO. RENDA-SE! + + + +VOCÊ NÃO ME DEU ESCOLHA. +ENCARE AS CONSEQUÊNCIAS +DE SEUS ATOS. + + + +SÉRIO? PUXA, DESCULPA! +VOU CONSERTAR TUDO, +DEPOIS DE DERROTAR VOCÊ! + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_9.dat b/build/games/RockDroid2/dialogs/stage_dialogs_9.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_9.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_9_es.dat b/build/games/RockDroid2/dialogs/stage_dialogs_9_es.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_9_es.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_9_fr.dat b/build/games/RockDroid2/dialogs/stage_dialogs_9_fr.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_9_fr.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_9_it.dat b/build/games/RockDroid2/dialogs/stage_dialogs_9_it.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_9_it.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/dialogs/stage_dialogs_9_pt.dat b/build/games/RockDroid2/dialogs/stage_dialogs_9_pt.dat new file mode 100644 index 00000000..818ec2dc --- /dev/null +++ b/build/games/RockDroid2/dialogs/stage_dialogs_9_pt.dat @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/games/RockDroid2/game_ai_list.dat b/build/games/RockDroid2/game_ai_list.dat new file mode 100644 index 00000000..848d5969 Binary files /dev/null and b/build/games/RockDroid2/game_ai_list.dat differ diff --git a/build/games/Rockbot2/game_ai_list_v3.dat b/build/games/RockDroid2/game_ai_list_v3.dat similarity index 100% rename from build/games/Rockbot2/game_ai_list_v3.dat rename to build/games/RockDroid2/game_ai_list_v3.dat diff --git a/build/games/Rockbot2/game_armorPieces_v301.dat b/build/games/RockDroid2/game_armorPieces_v301.dat similarity index 100% rename from build/games/Rockbot2/game_armorPieces_v301.dat rename to build/games/RockDroid2/game_armorPieces_v301.dat diff --git a/build/games/RockDroid2/game_credits.txt b/build/games/RockDroid2/game_credits.txt new file mode 100644 index 00000000..9a9c6c19 --- /dev/null +++ b/build/games/RockDroid2/game_credits.txt @@ -0,0 +1,96 @@ +# ROCKBOT 2 GAME CREDITS # + + +- CHARACTER DESIGN - +IURI FIEDORUK +ARISMEIRE KUMMER SILVA FIEDORUK +BOBERATU +NELSON ROSENBERG + + +- ILLUSTRATION - +IURI FIEDORUK +ARISMEIRE KUMMER SILVA FIEDORUK + + +- PIXEL ART - +BOBERATU +IURI FIEDORUK +@OPENGAMEART.ORG +SURT +USR_SHARE +THE CHAYED KIIRA +MOIKMELLAH +@CUTSTUFF.NET +NEMZ +@DEVIANTART.COM +AVERAGE-HANZO +BAR-KUN +STOFFHIMEL +HFBN2 +CAPT CHRIS AND KB +JOSEPHSERAPH +SHRAM +KAITHEHEDGEFOX10 +BONGWATER-BANDIT +ANSIMUZ + + +- MUSIC - +SIMONE "JMD" BERNACCHIA +MODARCHIVE.ORG + + +- TEXT FONT - +KAPEL BY JETI + + +- VOICES - +IURI FIEDORUK +ARISMEIRE KUMMER SILVA FIEDORUK +NELSON ROSENBERG + + +- PROGRAMMING - +IURI FIEDORUK + + +- SPECIAL THANKS - +DEVIANTART.COM +PIXELJOINT.COM +OPENGAMEART.ORG +BFXR.NET +MODARCHIVE.ORG +SHIN-NIL (DINGUX) +SIGMA NL (PANDORA) +RAGNAROK2040 (PS2) +WOON-YUNG LIU (PS2) +SP193 (PS2) +PELYA (ANDROID) + + +- TOOLS AND SOFTWARE - +QT.IO +LIBSDL.ORG +GCC.GNU.ORG +LLVM.ORG +LINUXMINT.COM +UBUNTU.COM +GIMP.ORG +PAINT TOOL SAI +SIMPLE SCREEN RECORD +AUDACIOUS PLAYER +AUDACITY EDITOR +KDE + + +- INSPIRATION GAMES - +MEGAMAN +DUCK TALES +LITTLE NEMO +ROKKO CHAN +SHOVEL KNIGHT + +- DIRECTOR - +IURI FIEDORUK + diff --git a/build/games/Rockbot2/game_enemy_list.dat b/build/games/RockDroid2/game_enemy_list.dat similarity index 100% rename from build/games/Rockbot2/game_enemy_list.dat rename to build/games/RockDroid2/game_enemy_list.dat diff --git a/build/games/Rockbot2/game_enemy_list_3_1_1.dat b/build/games/RockDroid2/game_enemy_list_3_1_1.dat similarity index 100% rename from build/games/Rockbot2/game_enemy_list_3_1_1.dat rename to build/games/RockDroid2/game_enemy_list_3_1_1.dat diff --git a/build/games/RockDroid2/game_enemy_list_3_1_2.dat b/build/games/RockDroid2/game_enemy_list_3_1_2.dat new file mode 100644 index 00000000..7d682769 Binary files /dev/null and b/build/games/RockDroid2/game_enemy_list_3_1_2.dat differ diff --git a/build/games/RockDroid2/game_object_list.dat b/build/games/RockDroid2/game_object_list.dat new file mode 100644 index 00000000..73f4f0da Binary files /dev/null and b/build/games/RockDroid2/game_object_list.dat differ diff --git a/build/games/Rockbot2/game_players_v301.dat b/build/games/RockDroid2/game_players_v301.dat similarity index 100% rename from build/games/Rockbot2/game_players_v301.dat rename to build/games/RockDroid2/game_players_v301.dat diff --git a/build/games/Rockbot2/game_projectile_list.dat b/build/games/RockDroid2/game_projectile_list.dat similarity index 100% rename from build/games/Rockbot2/game_projectile_list.dat rename to build/games/RockDroid2/game_projectile_list.dat diff --git a/build/games/RockDroid2/game_properties_v301.dat b/build/games/RockDroid2/game_properties_v301.dat new file mode 100644 index 00000000..e247c760 Binary files /dev/null and b/build/games/RockDroid2/game_properties_v301.dat differ diff --git a/build/games/Rockbot2/game_trophies_v301.dat b/build/games/RockDroid2/game_trophies_v301.dat similarity index 100% rename from build/games/Rockbot2/game_trophies_v301.dat rename to build/games/RockDroid2/game_trophies_v301.dat diff --git a/build/games/Rockbot2/game_weaponMenuColors_v301.dat b/build/games/RockDroid2/game_weaponMenuColors_v301.dat similarity index 100% rename from build/games/Rockbot2/game_weaponMenuColors_v301.dat rename to build/games/RockDroid2/game_weaponMenuColors_v301.dat diff --git a/build/games/Rockbot2/game_weapons_v301.dat b/build/games/RockDroid2/game_weapons_v301.dat similarity index 94% rename from build/games/Rockbot2/game_weapons_v301.dat rename to build/games/RockDroid2/game_weapons_v301.dat index b0ac3845..0481200e 100644 Binary files a/build/games/Rockbot2/game_weapons_v301.dat and b/build/games/RockDroid2/game_weapons_v301.dat differ diff --git a/build/games/Rockbot2/images/animations/big_boss_explosion.png b/build/games/RockDroid2/images/animations/big_boss_explosion.png similarity index 100% rename from build/games/Rockbot2/images/animations/big_boss_explosion.png rename to build/games/RockDroid2/images/animations/big_boss_explosion.png diff --git a/build/games/Rockbot2/images/animations/bubble.png b/build/games/RockDroid2/images/animations/bubble.png similarity index 100% rename from build/games/Rockbot2/images/animations/bubble.png rename to build/games/RockDroid2/images/animations/bubble.png diff --git a/build/games/Rockbot2/images/animations/city_explosion_left.png b/build/games/RockDroid2/images/animations/city_explosion_left.png similarity index 100% rename from build/games/Rockbot2/images/animations/city_explosion_left.png rename to build/games/RockDroid2/images/animations/city_explosion_left.png diff --git a/build/games/Rockbot2/images/animations/city_explosion_right.png b/build/games/RockDroid2/images/animations/city_explosion_right.png similarity index 100% rename from build/games/Rockbot2/images/animations/city_explosion_right.png rename to build/games/RockDroid2/images/animations/city_explosion_right.png diff --git a/build/games/Rockbot2/images/animations/dash_dust.png b/build/games/RockDroid2/images/animations/dash_dust.png similarity index 100% rename from build/games/Rockbot2/images/animations/dash_dust.png rename to build/games/RockDroid2/images/animations/dash_dust.png diff --git a/build/games/Rockbot2/images/animations/explosion_16.png b/build/games/RockDroid2/images/animations/explosion_16.png similarity index 100% rename from build/games/Rockbot2/images/animations/explosion_16.png rename to build/games/RockDroid2/images/animations/explosion_16.png diff --git a/build/games/Rockbot2/images/animations/explosion_32.png b/build/games/RockDroid2/images/animations/explosion_32.png similarity index 100% rename from build/games/Rockbot2/images/animations/explosion_32.png rename to build/games/RockDroid2/images/animations/explosion_32.png diff --git a/build/games/Rockbot2/images/animations/explosion_boss.png b/build/games/RockDroid2/images/animations/explosion_boss.png similarity index 100% rename from build/games/Rockbot2/images/animations/explosion_boss.png rename to build/games/RockDroid2/images/animations/explosion_boss.png diff --git a/build/games/Rockbot2/images/animations/flash.png b/build/games/RockDroid2/images/animations/flash.png similarity index 100% rename from build/games/Rockbot2/images/animations/flash.png rename to build/games/RockDroid2/images/animations/flash.png diff --git a/build/games/Rockbot2/images/animations/hit.png b/build/games/RockDroid2/images/animations/hit.png similarity index 100% rename from build/games/Rockbot2/images/animations/hit.png rename to build/games/RockDroid2/images/animations/hit.png diff --git a/build/games/Rockbot2/images/animations/player_death_explosion.png b/build/games/RockDroid2/images/animations/player_death_explosion.png similarity index 100% rename from build/games/Rockbot2/images/animations/player_death_explosion.png rename to build/games/RockDroid2/images/animations/player_death_explosion.png diff --git a/build/games/Rockbot2/images/animations/rain.png b/build/games/RockDroid2/images/animations/rain.png similarity index 100% rename from build/games/Rockbot2/images/animations/rain.png rename to build/games/RockDroid2/images/animations/rain.png diff --git a/build/games/RockDroid2/images/animations/water_splash.png b/build/games/RockDroid2/images/animations/water_splash.png new file mode 100644 index 00000000..19bec842 Binary files /dev/null and b/build/games/RockDroid2/images/animations/water_splash.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/00.png b/build/games/RockDroid2/images/backgrounds/boss_intro/00.png new file mode 100644 index 00000000..2def4318 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/00.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/01.png b/build/games/RockDroid2/images/backgrounds/boss_intro/01.png new file mode 100644 index 00000000..a5238b74 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/01.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/02.png b/build/games/RockDroid2/images/backgrounds/boss_intro/02.png new file mode 100644 index 00000000..d9ab92b9 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/02.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/03.png b/build/games/RockDroid2/images/backgrounds/boss_intro/03.png new file mode 100644 index 00000000..688c1221 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/03.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/04.png b/build/games/RockDroid2/images/backgrounds/boss_intro/04.png new file mode 100644 index 00000000..4a5abe8d Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/04.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/05.png b/build/games/RockDroid2/images/backgrounds/boss_intro/05.png new file mode 100644 index 00000000..9763c839 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/05.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/06.png b/build/games/RockDroid2/images/backgrounds/boss_intro/06.png new file mode 100644 index 00000000..32d1a4e4 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/06.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/07.png b/build/games/RockDroid2/images/backgrounds/boss_intro/07.png new file mode 100644 index 00000000..dd462887 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/07.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/08.png b/build/games/RockDroid2/images/backgrounds/boss_intro/08.png new file mode 100644 index 00000000..2235617e Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/08.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/09.png b/build/games/RockDroid2/images/backgrounds/boss_intro/09.png new file mode 100644 index 00000000..8ccf05df Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/09.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/10.png b/build/games/RockDroid2/images/backgrounds/boss_intro/10.png new file mode 100644 index 00000000..ca5acfb3 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/10.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/11.png b/build/games/RockDroid2/images/backgrounds/boss_intro/11.png new file mode 100644 index 00000000..d6ddc0d3 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/11.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/12.png b/build/games/RockDroid2/images/backgrounds/boss_intro/12.png new file mode 100644 index 00000000..2b8dc087 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/12.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/13.png b/build/games/RockDroid2/images/backgrounds/boss_intro/13.png new file mode 100644 index 00000000..2e6ccf33 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/13.png differ diff --git a/build/games/RockDroid2/images/backgrounds/boss_intro/boss_intro_bg.png b/build/games/RockDroid2/images/backgrounds/boss_intro/boss_intro_bg.png new file mode 100644 index 00000000..0db91adc Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/boss_intro/boss_intro_bg.png differ diff --git a/build/games/Rockbot2/images/backgrounds/btn_a.png b/build/games/RockDroid2/images/backgrounds/btn_a.png similarity index 100% rename from build/games/Rockbot2/images/backgrounds/btn_a.png rename to build/games/RockDroid2/images/backgrounds/btn_a.png diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_castle.png b/build/games/RockDroid2/images/backgrounds/classic_style_castle.png new file mode 100644 index 00000000..50212e16 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_castle.png differ diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_castle_point.png b/build/games/RockDroid2/images/backgrounds/classic_style_castle_point.png new file mode 100644 index 00000000..a08fec76 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_castle_point.png differ diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_castle_skull_point.png b/build/games/RockDroid2/images/backgrounds/classic_style_castle_skull_point.png new file mode 100644 index 00000000..c07eb4a1 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_castle_skull_point.png differ diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_death_explosion.png b/build/games/RockDroid2/images/backgrounds/classic_style_death_explosion.png new file mode 100644 index 00000000..d528744a Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_death_explosion.png differ diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_bg.png b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_bg.png new file mode 100644 index 00000000..3b3af483 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_bg.png differ diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_cursor.png b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_cursor.png new file mode 100644 index 00000000..f23d31b5 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_cursor.png differ diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_faces.png b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_faces.png new file mode 100644 index 00000000..6ea95fe6 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_faces.png differ diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_faces_p1.png b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_faces_p1.png new file mode 100644 index 00000000..37543548 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_faces_p1.png differ diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_faces_p2.png b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_faces_p2.png new file mode 100644 index 00000000..9c4076e4 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_faces_p2.png differ diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_r1button.png b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_r1button.png new file mode 100644 index 00000000..c4292ffc Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_stage_select_r1button.png differ diff --git a/build/games/RockDroid2/images/backgrounds/classic_style_weapon_menu.png b/build/games/RockDroid2/images/backgrounds/classic_style_weapon_menu.png new file mode 100644 index 00000000..b69391e4 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/classic_style_weapon_menu.png differ diff --git a/build/games/Rockbot2/images/backgrounds/config.png b/build/games/RockDroid2/images/backgrounds/config.png similarity index 100% rename from build/games/Rockbot2/images/backgrounds/config.png rename to build/games/RockDroid2/images/backgrounds/config.png diff --git a/build/games/RockDroid2/images/backgrounds/dialog.png b/build/games/RockDroid2/images/backgrounds/dialog.png new file mode 100644 index 00000000..35188a79 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/dialog.png differ diff --git a/build/games/Rockbot2/images/backgrounds/menu.png b/build/games/RockDroid2/images/backgrounds/menu.png similarity index 100% rename from build/games/Rockbot2/images/backgrounds/menu.png rename to build/games/RockDroid2/images/backgrounds/menu.png diff --git a/build/games/RockDroid2/images/backgrounds/player_armor_pieces.png b/build/games/RockDroid2/images/backgrounds/player_armor_pieces.png new file mode 100644 index 00000000..88af038f Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/player_armor_pieces.png differ diff --git a/build/games/Rockbot2/images/backgrounds/player_faces_front.png b/build/games/RockDroid2/images/backgrounds/player_faces_front.png similarity index 100% rename from build/games/Rockbot2/images/backgrounds/player_faces_front.png rename to build/games/RockDroid2/images/backgrounds/player_faces_front.png diff --git a/build/games/RockDroid2/images/backgrounds/player_select_p1.png b/build/games/RockDroid2/images/backgrounds/player_select_p1.png new file mode 100644 index 00000000..06b3999e Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/player_select_p1.png differ diff --git a/build/games/RockDroid2/images/backgrounds/player_select_p2.png b/build/games/RockDroid2/images/backgrounds/player_select_p2.png new file mode 100644 index 00000000..d83023e0 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/player_select_p2.png differ diff --git a/build/games/RockDroid2/images/backgrounds/player_select_p3.png b/build/games/RockDroid2/images/backgrounds/player_select_p3.png new file mode 100644 index 00000000..116a14f2 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/player_select_p3.png differ diff --git a/build/games/RockDroid2/images/backgrounds/player_select_p4.png b/build/games/RockDroid2/images/backgrounds/player_select_p4.png new file mode 100644 index 00000000..849a523f Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/player_select_p4.png differ diff --git a/build/games/RockDroid2/images/backgrounds/player_selection.png b/build/games/RockDroid2/images/backgrounds/player_selection.png new file mode 100644 index 00000000..f1e6929c Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/player_selection.png differ diff --git a/build/games/Rockbot2/images/backgrounds/save_selector_disabled.png b/build/games/RockDroid2/images/backgrounds/save_selector_disabled.png similarity index 100% rename from build/games/Rockbot2/images/backgrounds/save_selector_disabled.png rename to build/games/RockDroid2/images/backgrounds/save_selector_disabled.png diff --git a/build/games/Rockbot2/images/backgrounds/save_selector_enabled.png b/build/games/RockDroid2/images/backgrounds/save_selector_enabled.png similarity index 100% rename from build/games/Rockbot2/images/backgrounds/save_selector_enabled.png rename to build/games/RockDroid2/images/backgrounds/save_selector_enabled.png diff --git a/build/games/Rockbot1/images/backgrounds/stage_select_darkned.png b/build/games/RockDroid2/images/backgrounds/stage_select_darkned.png similarity index 100% rename from build/games/Rockbot1/images/backgrounds/stage_select_darkned.png rename to build/games/RockDroid2/images/backgrounds/stage_select_darkned.png diff --git a/build/games/Rockbot1/images/backgrounds/stage_select_highlighted.png b/build/games/RockDroid2/images/backgrounds/stage_select_highlighted.png similarity index 100% rename from build/games/Rockbot1/images/backgrounds/stage_select_highlighted.png rename to build/games/RockDroid2/images/backgrounds/stage_select_highlighted.png diff --git a/build/games/RockDroid2/images/backgrounds/stage_selection_icon.png b/build/games/RockDroid2/images/backgrounds/stage_selection_icon.png new file mode 100644 index 00000000..e952adb4 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/stage_selection_icon.png differ diff --git a/build/games/RockDroid2/images/backgrounds/weapon_menu.png b/build/games/RockDroid2/images/backgrounds/weapon_menu.png new file mode 100644 index 00000000..56531014 Binary files /dev/null and b/build/games/RockDroid2/images/backgrounds/weapon_menu.png differ diff --git a/build/games/Rockbot2/images/empty.png b/build/games/RockDroid2/images/empty.png similarity index 100% rename from build/games/Rockbot2/images/empty.png rename to build/games/RockDroid2/images/empty.png diff --git a/build/games/RockDroid2/images/ending/player_walking_layer1.png b/build/games/RockDroid2/images/ending/player_walking_layer1.png new file mode 100644 index 00000000..9a52134f Binary files /dev/null and b/build/games/RockDroid2/images/ending/player_walking_layer1.png differ diff --git a/build/games/RockDroid2/images/ending/player_walking_layer2.png b/build/games/RockDroid2/images/ending/player_walking_layer2.png new file mode 100644 index 00000000..4d8353c7 Binary files /dev/null and b/build/games/RockDroid2/images/ending/player_walking_layer2.png differ diff --git a/build/games/RockDroid2/images/ending/player_walking_layer3.png b/build/games/RockDroid2/images/ending/player_walking_layer3.png new file mode 100644 index 00000000..d91a4f8c Binary files /dev/null and b/build/games/RockDroid2/images/ending/player_walking_layer3.png differ diff --git a/build/games/RockDroid2/images/faces/00.png b/build/games/RockDroid2/images/faces/00.png new file mode 100644 index 00000000..8c9865c5 Binary files /dev/null and b/build/games/RockDroid2/images/faces/00.png differ diff --git a/build/games/RockDroid2/images/faces/01.png b/build/games/RockDroid2/images/faces/01.png new file mode 100644 index 00000000..02bb07bf Binary files /dev/null and b/build/games/RockDroid2/images/faces/01.png differ diff --git a/build/games/RockDroid2/images/faces/02.png b/build/games/RockDroid2/images/faces/02.png new file mode 100644 index 00000000..63f266fa Binary files /dev/null and b/build/games/RockDroid2/images/faces/02.png differ diff --git a/build/games/RockDroid2/images/faces/03.png b/build/games/RockDroid2/images/faces/03.png new file mode 100644 index 00000000..df4145f1 Binary files /dev/null and b/build/games/RockDroid2/images/faces/03.png differ diff --git a/build/games/RockDroid2/images/faces/04.png b/build/games/RockDroid2/images/faces/04.png new file mode 100644 index 00000000..4e72921a Binary files /dev/null and b/build/games/RockDroid2/images/faces/04.png differ diff --git a/build/games/RockDroid2/images/faces/05.png b/build/games/RockDroid2/images/faces/05.png new file mode 100644 index 00000000..14e80877 Binary files /dev/null and b/build/games/RockDroid2/images/faces/05.png differ diff --git a/build/games/RockDroid2/images/faces/06.png b/build/games/RockDroid2/images/faces/06.png new file mode 100644 index 00000000..da3ff675 Binary files /dev/null and b/build/games/RockDroid2/images/faces/06.png differ diff --git a/build/games/RockDroid2/images/faces/07.png b/build/games/RockDroid2/images/faces/07.png new file mode 100644 index 00000000..cdb272c6 Binary files /dev/null and b/build/games/RockDroid2/images/faces/07.png differ diff --git a/build/games/RockDroid2/images/faces/08.png b/build/games/RockDroid2/images/faces/08.png new file mode 100644 index 00000000..3ddcde1c Binary files /dev/null and b/build/games/RockDroid2/images/faces/08.png differ diff --git a/build/games/RockDroid2/images/faces/09.png b/build/games/RockDroid2/images/faces/09.png new file mode 100644 index 00000000..fcab6663 Binary files /dev/null and b/build/games/RockDroid2/images/faces/09.png differ diff --git a/build/games/RockDroid2/images/faces/10.png b/build/games/RockDroid2/images/faces/10.png new file mode 100644 index 00000000..22b62825 Binary files /dev/null and b/build/games/RockDroid2/images/faces/10.png differ diff --git a/build/games/RockDroid2/images/faces/11.png b/build/games/RockDroid2/images/faces/11.png new file mode 100644 index 00000000..6b877f93 Binary files /dev/null and b/build/games/RockDroid2/images/faces/11.png differ diff --git a/build/games/RockDroid2/images/faces/12.png b/build/games/RockDroid2/images/faces/12.png new file mode 100644 index 00000000..b11464f0 Binary files /dev/null and b/build/games/RockDroid2/images/faces/12.png differ diff --git a/build/games/RockDroid2/images/faces/13.png b/build/games/RockDroid2/images/faces/13.png new file mode 100644 index 00000000..c59032ac Binary files /dev/null and b/build/games/RockDroid2/images/faces/13.png differ diff --git a/build/games/RockDroid2/images/faces/betabot.png b/build/games/RockDroid2/images/faces/betabot.png new file mode 100644 index 00000000..a2e18e66 Binary files /dev/null and b/build/games/RockDroid2/images/faces/betabot.png differ diff --git a/build/games/Rockbot2/images/faces/darkbot.png b/build/games/RockDroid2/images/faces/boss_0.png similarity index 100% rename from build/games/Rockbot2/images/faces/darkbot.png rename to build/games/RockDroid2/images/faces/boss_0.png diff --git a/build/games/Rockbot2/images/faces/gear.png b/build/games/RockDroid2/images/faces/boss_1.png similarity index 100% rename from build/games/Rockbot2/images/faces/gear.png rename to build/games/RockDroid2/images/faces/boss_1.png diff --git a/build/games/Rockbot2/images/faces/dragonbot.png b/build/games/RockDroid2/images/faces/boss_2.png similarity index 100% rename from build/games/Rockbot2/images/faces/dragonbot.png rename to build/games/RockDroid2/images/faces/boss_2.png diff --git a/build/games/Rockbot2/images/faces/valkyriebot.png b/build/games/RockDroid2/images/faces/boss_3.png similarity index 100% rename from build/games/Rockbot2/images/faces/valkyriebot.png rename to build/games/RockDroid2/images/faces/boss_3.png diff --git a/build/games/Rockbot2/images/faces/kurupirabot.png b/build/games/RockDroid2/images/faces/boss_4.png similarity index 100% rename from build/games/Rockbot2/images/faces/kurupirabot.png rename to build/games/RockDroid2/images/faces/boss_4.png diff --git a/build/games/Rockbot2/images/faces/beastbot.png b/build/games/RockDroid2/images/faces/boss_5.png similarity index 100% rename from build/games/Rockbot2/images/faces/beastbot.png rename to build/games/RockDroid2/images/faces/boss_5.png diff --git a/build/games/Rockbot2/images/faces/phantombot.png b/build/games/RockDroid2/images/faces/boss_6.png similarity index 100% rename from build/games/Rockbot2/images/faces/phantombot.png rename to build/games/RockDroid2/images/faces/boss_6.png diff --git a/build/games/Rockbot2/images/faces/zodiac.png b/build/games/RockDroid2/images/faces/boss_7.png similarity index 100% rename from build/games/Rockbot2/images/faces/zodiac.png rename to build/games/RockDroid2/images/faces/boss_7.png diff --git a/build/games/Rockbot2/images/faces/snow.png b/build/games/RockDroid2/images/faces/boss_8.png similarity index 100% rename from build/games/Rockbot2/images/faces/snow.png rename to build/games/RockDroid2/images/faces/boss_8.png diff --git a/build/games/RockDroid2/images/faces/candybot.png b/build/games/RockDroid2/images/faces/candybot.png new file mode 100644 index 00000000..c465480e Binary files /dev/null and b/build/games/RockDroid2/images/faces/candybot.png differ diff --git a/build/games/RockDroid2/images/faces/canotus_face.png b/build/games/RockDroid2/images/faces/canotus_face.png new file mode 100644 index 00000000..1ba3529e Binary files /dev/null and b/build/games/RockDroid2/images/faces/canotus_face.png differ diff --git a/build/games/RockDroid2/images/faces/kittybot.png b/build/games/RockDroid2/images/faces/kittybot.png new file mode 100644 index 00000000..6ce52586 Binary files /dev/null and b/build/games/RockDroid2/images/faces/kittybot.png differ diff --git a/build/games/RockDroid2/images/faces/p1.png b/build/games/RockDroid2/images/faces/p1.png new file mode 100644 index 00000000..510ef00b Binary files /dev/null and b/build/games/RockDroid2/images/faces/p1.png differ diff --git a/build/games/RockDroid2/images/faces/p1_eyes.png b/build/games/RockDroid2/images/faces/p1_eyes.png new file mode 100644 index 00000000..ed6bcbcc Binary files /dev/null and b/build/games/RockDroid2/images/faces/p1_eyes.png differ diff --git a/build/games/RockDroid2/images/faces/p2.png b/build/games/RockDroid2/images/faces/p2.png new file mode 100644 index 00000000..6009bb80 Binary files /dev/null and b/build/games/RockDroid2/images/faces/p2.png differ diff --git a/build/games/RockDroid2/images/faces/p2_eyes.png b/build/games/RockDroid2/images/faces/p2_eyes.png new file mode 100644 index 00000000..37cb5483 Binary files /dev/null and b/build/games/RockDroid2/images/faces/p2_eyes.png differ diff --git a/build/games/RockDroid2/images/faces/p3.png b/build/games/RockDroid2/images/faces/p3.png new file mode 100644 index 00000000..254cbafa Binary files /dev/null and b/build/games/RockDroid2/images/faces/p3.png differ diff --git a/build/games/RockDroid2/images/faces/p3_eyes.png b/build/games/RockDroid2/images/faces/p3_eyes.png new file mode 100644 index 00000000..a878eaef Binary files /dev/null and b/build/games/RockDroid2/images/faces/p3_eyes.png differ diff --git a/build/games/RockDroid2/images/faces/p4.png b/build/games/RockDroid2/images/faces/p4.png new file mode 100644 index 00000000..85d7aefa Binary files /dev/null and b/build/games/RockDroid2/images/faces/p4.png differ diff --git a/build/games/RockDroid2/images/faces/p4_eyes.png b/build/games/RockDroid2/images/faces/p4_eyes.png new file mode 100644 index 00000000..8f8eb79f Binary files /dev/null and b/build/games/RockDroid2/images/faces/p4_eyes.png differ diff --git a/build/games/RockDroid2/images/faces/rockbot.png b/build/games/RockDroid2/images/faces/rockbot.png new file mode 100644 index 00000000..e7b63f12 Binary files /dev/null and b/build/games/RockDroid2/images/faces/rockbot.png differ diff --git a/build/games/RockDroid2/images/faces/stage_select_castle.png b/build/games/RockDroid2/images/faces/stage_select_castle.png new file mode 100644 index 00000000..d8b57821 Binary files /dev/null and b/build/games/RockDroid2/images/faces/stage_select_castle.png differ diff --git a/build/games/RockDroid2/images/icon_32px.png b/build/games/RockDroid2/images/icon_32px.png new file mode 100644 index 00000000..7e57fd9d Binary files /dev/null and b/build/games/RockDroid2/images/icon_32px.png differ diff --git a/build/games/RockDroid2/images/icons.png b/build/games/RockDroid2/images/icons.png new file mode 100644 index 00000000..e4200a60 Binary files /dev/null and b/build/games/RockDroid2/images/icons.png differ diff --git a/build/games/RockDroid2/images/icons_small.png b/build/games/RockDroid2/images/icons_small.png new file mode 100644 index 00000000..41922b2c Binary files /dev/null and b/build/games/RockDroid2/images/icons_small.png differ diff --git a/build/games/RockDroid2/images/icons_small_disabled.png b/build/games/RockDroid2/images/icons_small_disabled.png new file mode 100644 index 00000000..d90ae166 Binary files /dev/null and b/build/games/RockDroid2/images/icons_small_disabled.png differ diff --git a/build/games/Rockbot2/images/license.txt b/build/games/RockDroid2/images/license.txt similarity index 100% rename from build/games/Rockbot2/images/license.txt rename to build/games/RockDroid2/images/license.txt diff --git a/build/games/RockDroid2/images/logo.png b/build/games/RockDroid2/images/logo.png new file mode 100644 index 00000000..c9ba9c6d Binary files /dev/null and b/build/games/RockDroid2/images/logo.png differ diff --git a/build/games/RockDroid2/images/logo.xcf b/build/games/RockDroid2/images/logo.xcf new file mode 100644 index 00000000..a2df617a Binary files /dev/null and b/build/games/RockDroid2/images/logo.xcf differ diff --git a/build/games/RockDroid2/images/map_backgrounds/beach.png b/build/games/RockDroid2/images/map_backgrounds/beach.png new file mode 100644 index 00000000..e32df4c3 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/beach.png differ diff --git a/build/games/Rockbot2/images/map_backgrounds/beach_sand.png b/build/games/RockDroid2/images/map_backgrounds/beach_sand.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/beach_sand.png rename to build/games/RockDroid2/images/map_backgrounds/beach_sand.png diff --git a/build/games/RockDroid2/images/map_backgrounds/beach_volcano.png b/build/games/RockDroid2/images/map_backgrounds/beach_volcano.png new file mode 100644 index 00000000..6f3057e3 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/beach_volcano.png differ diff --git a/build/games/Rockbot2/images/map_backgrounds/beach_water.png b/build/games/RockDroid2/images/map_backgrounds/beach_water.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/beach_water.png rename to build/games/RockDroid2/images/map_backgrounds/beach_water.png diff --git a/build/games/Rockbot2/images/map_backgrounds/castle_01.png b/build/games/RockDroid2/images/map_backgrounds/castle_01.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/castle_01.png rename to build/games/RockDroid2/images/map_backgrounds/castle_01.png diff --git a/build/games/Rockbot2/images/map_backgrounds/castle_02_mine_dark.png b/build/games/RockDroid2/images/map_backgrounds/castle_02_mine_dark.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/castle_02_mine_dark.png rename to build/games/RockDroid2/images/map_backgrounds/castle_02_mine_dark.png diff --git a/build/games/Rockbot2/images/map_backgrounds/castle_04.png b/build/games/RockDroid2/images/map_backgrounds/castle_04.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/castle_04.png rename to build/games/RockDroid2/images/map_backgrounds/castle_04.png diff --git a/build/games/Rockbot2/images/map_backgrounds/castle_04_city.png b/build/games/RockDroid2/images/map_backgrounds/castle_04_city.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/castle_04_city.png rename to build/games/RockDroid2/images/map_backgrounds/castle_04_city.png diff --git a/build/games/RockDroid2/images/map_backgrounds/castle_04_city_sky.png b/build/games/RockDroid2/images/map_backgrounds/castle_04_city_sky.png new file mode 100644 index 00000000..346ec597 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/castle_04_city_sky.png differ diff --git a/build/games/Rockbot2/images/map_backgrounds/chains.png b/build/games/RockDroid2/images/map_backgrounds/chains.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/chains.png rename to build/games/RockDroid2/images/map_backgrounds/chains.png diff --git a/build/games/Rockbot2/images/map_backgrounds/circus.png b/build/games/RockDroid2/images/map_backgrounds/circus.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/circus.png rename to build/games/RockDroid2/images/map_backgrounds/circus.png diff --git a/build/games/RockDroid2/images/map_backgrounds/circus_roller_coaster.png b/build/games/RockDroid2/images/map_backgrounds/circus_roller_coaster.png new file mode 100644 index 00000000..06a97ee1 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/circus_roller_coaster.png differ diff --git a/build/games/Rockbot2/images/map_backgrounds/circus_sky.png b/build/games/RockDroid2/images/map_backgrounds/circus_sky.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/circus_sky.png rename to build/games/RockDroid2/images/map_backgrounds/circus_sky.png diff --git a/build/games/Rockbot2/images/map_backgrounds/circus_tent.png b/build/games/RockDroid2/images/map_backgrounds/circus_tent.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/circus_tent.png rename to build/games/RockDroid2/images/map_backgrounds/circus_tent.png diff --git a/build/games/Rockbot2/images/map_backgrounds/clouds.png b/build/games/RockDroid2/images/map_backgrounds/clouds.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/clouds.png rename to build/games/RockDroid2/images/map_backgrounds/clouds.png diff --git a/build/games/Rockbot2/images/map_backgrounds/dragon.png b/build/games/RockDroid2/images/map_backgrounds/dragon.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/dragon.png rename to build/games/RockDroid2/images/map_backgrounds/dragon.png diff --git a/build/games/Rockbot2/images/map_backgrounds/dragon_internal.png b/build/games/RockDroid2/images/map_backgrounds/dragon_internal.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/dragon_internal.png rename to build/games/RockDroid2/images/map_backgrounds/dragon_internal.png diff --git a/build/games/Rockbot2/images/map_backgrounds/dungeon.png b/build/games/RockDroid2/images/map_backgrounds/dungeon.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/dungeon.png rename to build/games/RockDroid2/images/map_backgrounds/dungeon.png diff --git a/build/games/Rockbot2/images/map_backgrounds/fg_clouds.png b/build/games/RockDroid2/images/map_backgrounds/fg_clouds.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/fg_clouds.png rename to build/games/RockDroid2/images/map_backgrounds/fg_clouds.png diff --git a/build/games/Rockbot2/images/map_backgrounds/fg_hot.png b/build/games/RockDroid2/images/map_backgrounds/fg_hot.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/fg_hot.png rename to build/games/RockDroid2/images/map_backgrounds/fg_hot.png diff --git a/build/games/Rockbot2/images/map_backgrounds/forest.png b/build/games/RockDroid2/images/map_backgrounds/forest.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/forest.png rename to build/games/RockDroid2/images/map_backgrounds/forest.png diff --git a/build/games/Rockbot2/images/map_backgrounds/gear.png b/build/games/RockDroid2/images/map_backgrounds/gear.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/gear.png rename to build/games/RockDroid2/images/map_backgrounds/gear.png diff --git a/build/games/Rockbot2/images/map_backgrounds/gear_red_skies.png b/build/games/RockDroid2/images/map_backgrounds/gear_red_skies.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/gear_red_skies.png rename to build/games/RockDroid2/images/map_backgrounds/gear_red_skies.png diff --git a/build/games/Rockbot2/images/map_backgrounds/ghost_house_wallpaper.png b/build/games/RockDroid2/images/map_backgrounds/ghost_house_wallpaper.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/ghost_house_wallpaper.png rename to build/games/RockDroid2/images/map_backgrounds/ghost_house_wallpaper.png diff --git a/build/games/Rockbot2/images/map_backgrounds/green_grid.png b/build/games/RockDroid2/images/map_backgrounds/green_grid.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/green_grid.png rename to build/games/RockDroid2/images/map_backgrounds/green_grid.png diff --git a/build/games/RockDroid2/images/map_backgrounds/intro_stage.png b/build/games/RockDroid2/images/map_backgrounds/intro_stage.png new file mode 100644 index 00000000..bd6eee93 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/intro_stage.png differ diff --git a/build/games/RockDroid2/images/map_backgrounds/intro_stage_inside.png b/build/games/RockDroid2/images/map_backgrounds/intro_stage_inside.png new file mode 100644 index 00000000..d82bb812 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/intro_stage_inside.png differ diff --git a/build/games/RockDroid2/images/map_backgrounds/kremlin.png b/build/games/RockDroid2/images/map_backgrounds/kremlin.png new file mode 100644 index 00000000..9606f674 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/kremlin.png differ diff --git a/build/games/Rockbot2/images/map_backgrounds/montains_purple.png b/build/games/RockDroid2/images/map_backgrounds/montains_purple.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/montains_purple.png rename to build/games/RockDroid2/images/map_backgrounds/montains_purple.png diff --git a/build/games/RockDroid2/images/map_backgrounds/moon_stars.png b/build/games/RockDroid2/images/map_backgrounds/moon_stars.png new file mode 100644 index 00000000..d1a28d4d Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/moon_stars.png differ diff --git a/build/games/Rockbot2/images/map_backgrounds/red_clouds.png b/build/games/RockDroid2/images/map_backgrounds/red_clouds.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/red_clouds.png rename to build/games/RockDroid2/images/map_backgrounds/red_clouds.png diff --git a/build/games/RockDroid2/images/map_backgrounds/rock_montains.png b/build/games/RockDroid2/images/map_backgrounds/rock_montains.png new file mode 100644 index 00000000..2579ca35 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/rock_montains.png differ diff --git a/build/games/RockDroid2/images/map_backgrounds/sewers.png b/build/games/RockDroid2/images/map_backgrounds/sewers.png new file mode 100644 index 00000000..dfe18f12 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/sewers.png differ diff --git a/build/games/RockDroid2/images/map_backgrounds/snow_internal.png b/build/games/RockDroid2/images/map_backgrounds/snow_internal.png new file mode 100644 index 00000000..c6b75e0c Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/snow_internal.png differ diff --git a/build/games/RockDroid2/images/map_backgrounds/space_station.png b/build/games/RockDroid2/images/map_backgrounds/space_station.png new file mode 100644 index 00000000..0d9cd5b0 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/space_station.png differ diff --git a/build/games/Rockbot2/images/map_backgrounds/stars_and_moon.png b/build/games/RockDroid2/images/map_backgrounds/stars_and_moon.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/stars_and_moon.png rename to build/games/RockDroid2/images/map_backgrounds/stars_and_moon.png diff --git a/build/games/Rockbot2/images/map_backgrounds/stars_fullsize.png b/build/games/RockDroid2/images/map_backgrounds/stars_fullsize.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/stars_fullsize.png rename to build/games/RockDroid2/images/map_backgrounds/stars_fullsize.png diff --git a/build/games/RockDroid2/images/map_backgrounds/toy_room.png b/build/games/RockDroid2/images/map_backgrounds/toy_room.png new file mode 100644 index 00000000..ffb31a29 Binary files /dev/null and b/build/games/RockDroid2/images/map_backgrounds/toy_room.png differ diff --git a/build/games/Rockbot2/images/map_backgrounds/trees.png b/build/games/RockDroid2/images/map_backgrounds/trees.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/trees.png rename to build/games/RockDroid2/images/map_backgrounds/trees.png diff --git a/build/games/Rockbot2/images/map_backgrounds/trees2.png b/build/games/RockDroid2/images/map_backgrounds/trees2.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/trees2.png rename to build/games/RockDroid2/images/map_backgrounds/trees2.png diff --git a/build/games/Rockbot2/images/map_backgrounds/valkyrie.png b/build/games/RockDroid2/images/map_backgrounds/valkyrie.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/valkyrie.png rename to build/games/RockDroid2/images/map_backgrounds/valkyrie.png diff --git a/build/games/Rockbot2/images/map_backgrounds/zodiac.png b/build/games/RockDroid2/images/map_backgrounds/zodiac.png similarity index 100% rename from build/games/Rockbot2/images/map_backgrounds/zodiac.png rename to build/games/RockDroid2/images/map_backgrounds/zodiac.png diff --git a/build/games/RockDroid2/images/p1.png b/build/games/RockDroid2/images/p1.png new file mode 100644 index 00000000..d482c03e Binary files /dev/null and b/build/games/RockDroid2/images/p1.png differ diff --git a/build/games/RockDroid2/images/p2.png b/build/games/RockDroid2/images/p2.png new file mode 100644 index 00000000..d077c0b7 Binary files /dev/null and b/build/games/RockDroid2/images/p2.png differ diff --git a/build/games/RockDroid2/images/p3.png b/build/games/RockDroid2/images/p3.png new file mode 100644 index 00000000..eb696f3d Binary files /dev/null and b/build/games/RockDroid2/images/p3.png differ diff --git a/build/games/RockDroid2/images/p4.png b/build/games/RockDroid2/images/p4.png new file mode 100644 index 00000000..b5d9e9d9 Binary files /dev/null and b/build/games/RockDroid2/images/p4.png differ diff --git a/build/games/Rockbot2/images/projectiles/axe.png b/build/games/RockDroid2/images/projectiles/axe.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/axe.png rename to build/games/RockDroid2/images/projectiles/axe.png diff --git a/build/games/Rockbot2/images/projectiles/bats.png b/build/games/RockDroid2/images/projectiles/bats.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/bats.png rename to build/games/RockDroid2/images/projectiles/bats.png diff --git a/build/games/Rockbot2/images/projectiles/beam_pink.png b/build/games/RockDroid2/images/projectiles/beam_pink.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/beam_pink.png rename to build/games/RockDroid2/images/projectiles/beam_pink.png diff --git a/build/games/Rockbot2/images/projectiles/beast_claw.png b/build/games/RockDroid2/images/projectiles/beast_claw.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/beast_claw.png rename to build/games/RockDroid2/images/projectiles/beast_claw.png diff --git a/build/games/Rockbot2/images/projectiles/betabot_normal.png b/build/games/RockDroid2/images/projectiles/betabot_normal.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/betabot_normal.png rename to build/games/RockDroid2/images/projectiles/betabot_normal.png diff --git a/build/games/Rockbot2/images/projectiles/candybot_normal.png b/build/games/RockDroid2/images/projectiles/candybot_normal.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/candybot_normal.png rename to build/games/RockDroid2/images/projectiles/candybot_normal.png diff --git a/build/games/Rockbot2/images/projectiles/charged_card.png b/build/games/RockDroid2/images/projectiles/charged_card.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/charged_card.png rename to build/games/RockDroid2/images/projectiles/charged_card.png diff --git a/build/games/Rockbot2/images/projectiles/charged_semi.png b/build/games/RockDroid2/images/projectiles/charged_semi.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/charged_semi.png rename to build/games/RockDroid2/images/projectiles/charged_semi.png diff --git a/build/games/Rockbot2/images/projectiles/charged_shot.png b/build/games/RockDroid2/images/projectiles/charged_shot.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/charged_shot.png rename to build/games/RockDroid2/images/projectiles/charged_shot.png diff --git a/build/games/Rockbot2/images/projectiles/claw_slash.png b/build/games/RockDroid2/images/projectiles/claw_slash.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/claw_slash.png rename to build/games/RockDroid2/images/projectiles/claw_slash.png diff --git a/build/games/Rockbot2/images/projectiles/destrin_energy_ball.png b/build/games/RockDroid2/images/projectiles/destrin_energy_ball.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/destrin_energy_ball.png rename to build/games/RockDroid2/images/projectiles/destrin_energy_ball.png diff --git a/build/games/Rockbot2/images/projectiles/drop_bomb.png b/build/games/RockDroid2/images/projectiles/drop_bomb.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/drop_bomb.png rename to build/games/RockDroid2/images/projectiles/drop_bomb.png diff --git a/build/games/Rockbot2/images/projectiles/gear_energy_shot.png b/build/games/RockDroid2/images/projectiles/gear_energy_shot.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/gear_energy_shot.png rename to build/games/RockDroid2/images/projectiles/gear_energy_shot.png diff --git a/build/games/Rockbot2/images/projectiles/gear_ring.png b/build/games/RockDroid2/images/projectiles/gear_ring.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/gear_ring.png rename to build/games/RockDroid2/images/projectiles/gear_ring.png diff --git a/build/games/Rockbot2/images/projectiles/golden_arrow.png b/build/games/RockDroid2/images/projectiles/golden_arrow.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/golden_arrow.png rename to build/games/RockDroid2/images/projectiles/golden_arrow.png diff --git a/build/games/Rockbot2/images/projectiles/griffin_fireball.png b/build/games/RockDroid2/images/projectiles/griffin_fireball.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/griffin_fireball.png rename to build/games/RockDroid2/images/projectiles/griffin_fireball.png diff --git a/build/games/Rockbot2/images/projectiles/hadouken.png b/build/games/RockDroid2/images/projectiles/hadouken.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/hadouken.png rename to build/games/RockDroid2/images/projectiles/hadouken.png diff --git a/build/games/Rockbot2/images/projectiles/ice_ground_spear.png b/build/games/RockDroid2/images/projectiles/ice_ground_spear.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/ice_ground_spear.png rename to build/games/RockDroid2/images/projectiles/ice_ground_spear.png diff --git a/build/games/Rockbot2/images/projectiles/ice_lemon.png b/build/games/RockDroid2/images/projectiles/ice_lemon.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/ice_lemon.png rename to build/games/RockDroid2/images/projectiles/ice_lemon.png diff --git a/build/games/Rockbot2/images/projectiles/kitty_charged.png b/build/games/RockDroid2/images/projectiles/kitty_charged.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/kitty_charged.png rename to build/games/RockDroid2/images/projectiles/kitty_charged.png diff --git a/build/games/Rockbot2/images/projectiles/kitty_normal.png b/build/games/RockDroid2/images/projectiles/kitty_normal.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/kitty_normal.png rename to build/games/RockDroid2/images/projectiles/kitty_normal.png diff --git a/build/games/Rockbot2/images/projectiles/kitty_slash.png b/build/games/RockDroid2/images/projectiles/kitty_slash.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/kitty_slash.png rename to build/games/RockDroid2/images/projectiles/kitty_slash.png diff --git a/build/games/Rockbot2/images/projectiles/kurupira_boar.png b/build/games/RockDroid2/images/projectiles/kurupira_boar.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/kurupira_boar.png rename to build/games/RockDroid2/images/projectiles/kurupira_boar.png diff --git a/build/games/Rockbot2/images/projectiles/large_beam.png b/build/games/RockDroid2/images/projectiles/large_beam.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/large_beam.png rename to build/games/RockDroid2/images/projectiles/large_beam.png diff --git a/build/games/Rockbot2/images/projectiles/laser.png b/build/games/RockDroid2/images/projectiles/laser.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/laser.png rename to build/games/RockDroid2/images/projectiles/laser.png diff --git a/build/games/Rockbot2/images/projectiles/laser_shot.png b/build/games/RockDroid2/images/projectiles/laser_shot.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/laser_shot.png rename to build/games/RockDroid2/images/projectiles/laser_shot.png diff --git a/build/games/Rockbot2/images/projectiles/lullaby.png b/build/games/RockDroid2/images/projectiles/lullaby.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/lullaby.png rename to build/games/RockDroid2/images/projectiles/lullaby.png diff --git a/build/games/Rockbot2/images/projectiles/machinegun.png b/build/games/RockDroid2/images/projectiles/machinegun.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/machinegun.png rename to build/games/RockDroid2/images/projectiles/machinegun.png diff --git a/build/games/Rockbot2/images/projectiles/missile.png b/build/games/RockDroid2/images/projectiles/missile.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/missile.png rename to build/games/RockDroid2/images/projectiles/missile.png diff --git a/build/games/Rockbot2/images/projectiles/palometa_fish.png b/build/games/RockDroid2/images/projectiles/palometa_fish.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/palometa_fish.png rename to build/games/RockDroid2/images/projectiles/palometa_fish.png diff --git a/build/games/Rockbot2/images/projectiles/potion.png b/build/games/RockDroid2/images/projectiles/potion.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/potion.png rename to build/games/RockDroid2/images/projectiles/potion.png diff --git a/build/games/Rockbot2/images/projectiles/projectile_normal.png b/build/games/RockDroid2/images/projectiles/projectile_normal.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/projectile_normal.png rename to build/games/RockDroid2/images/projectiles/projectile_normal.png diff --git a/build/games/Rockbot2/images/projectiles/red_ball.png b/build/games/RockDroid2/images/projectiles/red_ball.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/red_ball.png rename to build/games/RockDroid2/images/projectiles/red_ball.png diff --git a/build/games/Rockbot2/images/projectiles/rings.png b/build/games/RockDroid2/images/projectiles/rings.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/rings.png rename to build/games/RockDroid2/images/projectiles/rings.png diff --git a/build/games/Rockbot2/images/projectiles/scales_armor.png b/build/games/RockDroid2/images/projectiles/scales_armor.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/scales_armor.png rename to build/games/RockDroid2/images/projectiles/scales_armor.png diff --git a/build/games/Rockbot2/images/projectiles/shock_ball.png b/build/games/RockDroid2/images/projectiles/shock_ball.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/shock_ball.png rename to build/games/RockDroid2/images/projectiles/shock_ball.png diff --git a/build/games/Rockbot2/images/projectiles/snow_gale.png b/build/games/RockDroid2/images/projectiles/snow_gale.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/snow_gale.png rename to build/games/RockDroid2/images/projectiles/snow_gale.png diff --git a/build/games/Rockbot2/images/projectiles/sting.png b/build/games/RockDroid2/images/projectiles/sting.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/sting.png rename to build/games/RockDroid2/images/projectiles/sting.png diff --git a/build/games/Rockbot2/images/projectiles/supershot.png b/build/games/RockDroid2/images/projectiles/supershot.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/supershot.png rename to build/games/RockDroid2/images/projectiles/supershot.png diff --git a/build/games/Rockbot2/images/projectiles/thunderstrike.png b/build/games/RockDroid2/images/projectiles/thunderstrike.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/thunderstrike.png rename to build/games/RockDroid2/images/projectiles/thunderstrike.png diff --git a/build/games/Rockbot2/images/projectiles/timer_bomb.png b/build/games/RockDroid2/images/projectiles/timer_bomb.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/timer_bomb.png rename to build/games/RockDroid2/images/projectiles/timer_bomb.png diff --git a/build/games/Rockbot2/images/projectiles/tornado.png b/build/games/RockDroid2/images/projectiles/tornado.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/tornado.png rename to build/games/RockDroid2/images/projectiles/tornado.png diff --git a/build/games/Rockbot2/images/projectiles/whill_o_whisp.png b/build/games/RockDroid2/images/projectiles/whill_o_whisp.png similarity index 100% rename from build/games/Rockbot2/images/projectiles/whill_o_whisp.png rename to build/games/RockDroid2/images/projectiles/whill_o_whisp.png diff --git a/build/games/Rockbot2/images/scenes/animations/upperland.png b/build/games/RockDroid2/images/scenes/animations/upperland.png similarity index 100% rename from build/games/Rockbot2/images/scenes/animations/upperland.png rename to build/games/RockDroid2/images/scenes/animations/upperland.png diff --git a/build/games/RockDroid2/images/scenes/betabot.png b/build/games/RockDroid2/images/scenes/betabot.png new file mode 100644 index 00000000..e79e565e Binary files /dev/null and b/build/games/RockDroid2/images/scenes/betabot.png differ diff --git a/build/games/RockDroid2/images/scenes/candybot.png b/build/games/RockDroid2/images/scenes/candybot.png new file mode 100644 index 00000000..0ade5de2 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/candybot.png differ diff --git a/build/games/RockDroid2/images/scenes/cityscape_beta.png b/build/games/RockDroid2/images/scenes/cityscape_beta.png new file mode 100644 index 00000000..b2bdf428 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/cityscape_beta.png differ diff --git a/build/games/RockDroid2/images/scenes/cityscape_candy.png b/build/games/RockDroid2/images/scenes/cityscape_candy.png new file mode 100644 index 00000000..3ddbd551 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/cityscape_candy.png differ diff --git a/build/games/RockDroid2/images/scenes/cityscape_kitty.png b/build/games/RockDroid2/images/scenes/cityscape_kitty.png new file mode 100644 index 00000000..056371b8 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/cityscape_kitty.png differ diff --git a/build/games/RockDroid2/images/scenes/cityscape_rock.png b/build/games/RockDroid2/images/scenes/cityscape_rock.png new file mode 100644 index 00000000..54216640 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/cityscape_rock.png differ diff --git a/build/games/RockDroid2/images/scenes/dr_destrin.png b/build/games/RockDroid2/images/scenes/dr_destrin.png new file mode 100644 index 00000000..dfa358a9 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/dr_destrin.png differ diff --git a/build/games/RockDroid2/images/scenes/ending_cityscape.png b/build/games/RockDroid2/images/scenes/ending_cityscape.png new file mode 100644 index 00000000..e712b94a Binary files /dev/null and b/build/games/RockDroid2/images/scenes/ending_cityscape.png differ diff --git a/build/games/RockDroid2/images/scenes/ending_cityscape_layer.png b/build/games/RockDroid2/images/scenes/ending_cityscape_layer.png new file mode 100644 index 00000000..a556bae8 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/ending_cityscape_layer.png differ diff --git a/build/games/RockDroid2/images/scenes/intro_cityscape.png b/build/games/RockDroid2/images/scenes/intro_cityscape.png new file mode 100644 index 00000000..114c3569 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/intro_cityscape.png differ diff --git a/build/games/Rockbot2/images/scenes/intro_rock_candy_running.png b/build/games/RockDroid2/images/scenes/intro_rock_candy_running.png similarity index 100% rename from build/games/Rockbot2/images/scenes/intro_rock_candy_running.png rename to build/games/RockDroid2/images/scenes/intro_rock_candy_running.png diff --git a/build/games/RockDroid2/images/scenes/kanotus.png b/build/games/RockDroid2/images/scenes/kanotus.png new file mode 100644 index 00000000..72279f73 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/kanotus.png differ diff --git a/build/games/RockDroid2/images/scenes/kittybot.png b/build/games/RockDroid2/images/scenes/kittybot.png new file mode 100644 index 00000000..c90fc7db Binary files /dev/null and b/build/games/RockDroid2/images/scenes/kittybot.png differ diff --git a/build/games/RockDroid2/images/scenes/rock_and_candy.png b/build/games/RockDroid2/images/scenes/rock_and_candy.png new file mode 100644 index 00000000..f1e3e817 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/rock_and_candy.png differ diff --git a/build/games/RockDroid2/images/scenes/rockbot.png b/build/games/RockDroid2/images/scenes/rockbot.png new file mode 100644 index 00000000..16e67070 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/rockbot.png differ diff --git a/build/games/RockDroid2/images/scenes/upperland_times.png b/build/games/RockDroid2/images/scenes/upperland_times.png new file mode 100644 index 00000000..3c7a91e0 Binary files /dev/null and b/build/games/RockDroid2/images/scenes/upperland_times.png differ diff --git a/build/games/Rockbot2/images/sprites/candybot_ending.png b/build/games/RockDroid2/images/sprites/candybot_ending.png similarity index 100% rename from build/games/Rockbot2/images/sprites/candybot_ending.png rename to build/games/RockDroid2/images/sprites/candybot_ending.png diff --git a/build/games/Rockbot2/images/sprites/canotus.png b/build/games/RockDroid2/images/sprites/canotus.png similarity index 100% rename from build/games/Rockbot2/images/sprites/canotus.png rename to build/games/RockDroid2/images/sprites/canotus.png diff --git a/build/games/Rockbot2/images/sprites/destrin.png b/build/games/RockDroid2/images/sprites/destrin.png similarity index 100% rename from build/games/Rockbot2/images/sprites/destrin.png rename to build/games/RockDroid2/images/sprites/destrin.png diff --git a/build/games/RockDroid2/images/sprites/enemies/backgrounds/octopus.png b/build/games/RockDroid2/images/sprites/enemies/backgrounds/octopus.png new file mode 100644 index 00000000..f1c8293d Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/backgrounds/octopus.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/bat.png b/build/games/RockDroid2/images/sprites/enemies/bat.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/bat.png rename to build/games/RockDroid2/images/sprites/enemies/bat.png diff --git a/build/games/Rockbot2/images/sprites/enemies/beastbot.png b/build/games/RockDroid2/images/sprites/enemies/beastbot.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/beastbot.png rename to build/games/RockDroid2/images/sprites/enemies/beastbot.png diff --git a/build/games/Rockbot2/images/sprites/enemies/bee.png b/build/games/RockDroid2/images/sprites/enemies/bee.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/bee.png rename to build/games/RockDroid2/images/sprites/enemies/bee.png diff --git a/build/games/Rockbot2/images/sprites/enemies/bee_green.png b/build/games/RockDroid2/images/sprites/enemies/bee_green.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/bee_green.png rename to build/games/RockDroid2/images/sprites/enemies/bee_green.png diff --git a/build/games/Rockbot2/images/sprites/enemies/brick_monster.png b/build/games/RockDroid2/images/sprites/enemies/brick_monster.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/brick_monster.png rename to build/games/RockDroid2/images/sprites/enemies/brick_monster.png diff --git a/build/games/Rockbot2/images/sprites/enemies/bulldog.png b/build/games/RockDroid2/images/sprites/enemies/bulldog.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/bulldog.png rename to build/games/RockDroid2/images/sprites/enemies/bulldog.png diff --git a/build/games/Rockbot2/images/sprites/enemies/bulldozer.png b/build/games/RockDroid2/images/sprites/enemies/bulldozer.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/bulldozer.png rename to build/games/RockDroid2/images/sprites/enemies/bulldozer.png diff --git a/build/games/Rockbot2/images/sprites/enemies/bunny.png b/build/games/RockDroid2/images/sprites/enemies/bunny.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/bunny.png rename to build/games/RockDroid2/images/sprites/enemies/bunny.png diff --git a/build/games/RockDroid2/images/sprites/enemies/classic_metool.png b/build/games/RockDroid2/images/sprites/enemies/classic_metool.png new file mode 100644 index 00000000..ec66438b Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/classic_metool.png differ diff --git a/build/games/RockDroid2/images/sprites/enemies/classic_metool_blue.png b/build/games/RockDroid2/images/sprites/enemies/classic_metool_blue.png new file mode 100644 index 00000000..6ac29402 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/classic_metool_blue.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/coil.png b/build/games/RockDroid2/images/sprites/enemies/coil.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/coil.png rename to build/games/RockDroid2/images/sprites/enemies/coil.png diff --git a/build/games/Rockbot2/images/sprites/enemies/darkbot.png b/build/games/RockDroid2/images/sprites/enemies/darkbot.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/darkbot.png rename to build/games/RockDroid2/images/sprites/enemies/darkbot.png diff --git a/build/games/RockDroid2/images/sprites/enemies/destrin_machine.png b/build/games/RockDroid2/images/sprites/enemies/destrin_machine.png new file mode 100644 index 00000000..a090687e Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/destrin_machine.png differ diff --git a/build/games/RockDroid2/images/sprites/enemies/destrin_ship.png b/build/games/RockDroid2/images/sprites/enemies/destrin_ship.png new file mode 100644 index 00000000..f54cdbaa Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/destrin_ship.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/destrin_tank_small.png b/build/games/RockDroid2/images/sprites/enemies/destrin_tank_small.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/destrin_tank_small.png rename to build/games/RockDroid2/images/sprites/enemies/destrin_tank_small.png diff --git a/build/games/RockDroid2/images/sprites/enemies/dinotoy.png b/build/games/RockDroid2/images/sprites/enemies/dinotoy.png new file mode 100644 index 00000000..506a72e1 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/dinotoy.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/dragon_redlantern.png b/build/games/RockDroid2/images/sprites/enemies/dragon_redlantern.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/dragon_redlantern.png rename to build/games/RockDroid2/images/sprites/enemies/dragon_redlantern.png diff --git a/build/games/Rockbot2/images/sprites/enemies/dragon_snake.png b/build/games/RockDroid2/images/sprites/enemies/dragon_snake.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/dragon_snake.png rename to build/games/RockDroid2/images/sprites/enemies/dragon_snake.png diff --git a/build/games/Rockbot2/images/sprites/enemies/dragonbot.png b/build/games/RockDroid2/images/sprites/enemies/dragonbot.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/dragonbot.png rename to build/games/RockDroid2/images/sprites/enemies/dragonbot.png diff --git a/build/games/Rockbot2/images/sprites/enemies/gambit.png b/build/games/RockDroid2/images/sprites/enemies/gambit.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/gambit.png rename to build/games/RockDroid2/images/sprites/enemies/gambit.png diff --git a/build/games/Rockbot2/images/sprites/enemies/gear_metool.png b/build/games/RockDroid2/images/sprites/enemies/gear_metool.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/gear_metool.png rename to build/games/RockDroid2/images/sprites/enemies/gear_metool.png diff --git a/build/games/Rockbot2/images/sprites/enemies/gear_peace_walker.png b/build/games/RockDroid2/images/sprites/enemies/gear_peace_walker.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/gear_peace_walker.png rename to build/games/RockDroid2/images/sprites/enemies/gear_peace_walker.png diff --git a/build/games/Rockbot2/images/sprites/enemies/gear_shooting_joe.png b/build/games/RockDroid2/images/sprites/enemies/gear_shooting_joe.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/gear_shooting_joe.png rename to build/games/RockDroid2/images/sprites/enemies/gear_shooting_joe.png diff --git a/build/games/Rockbot2/images/sprites/enemies/gear_tank_droid.png b/build/games/RockDroid2/images/sprites/enemies/gear_tank_droid.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/gear_tank_droid.png rename to build/games/RockDroid2/images/sprites/enemies/gear_tank_droid.png diff --git a/build/games/Rockbot2/images/sprites/enemies/gear_tank_metool.png b/build/games/RockDroid2/images/sprites/enemies/gear_tank_metool.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/gear_tank_metool.png rename to build/games/RockDroid2/images/sprites/enemies/gear_tank_metool.png diff --git a/build/games/Rockbot2/images/sprites/enemies/gearbot.png b/build/games/RockDroid2/images/sprites/enemies/gearbot.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/gearbot.png rename to build/games/RockDroid2/images/sprites/enemies/gearbot.png diff --git a/build/games/RockDroid2/images/sprites/enemies/gluer.png b/build/games/RockDroid2/images/sprites/enemies/gluer.png new file mode 100644 index 00000000..4968be81 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/gluer.png differ diff --git a/build/games/RockDroid2/images/sprites/enemies/golden_metool.png b/build/games/RockDroid2/images/sprites/enemies/golden_metool.png new file mode 100644 index 00000000..f041efd1 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/golden_metool.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/guard_system.png b/build/games/RockDroid2/images/sprites/enemies/guard_system.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/guard_system.png rename to build/games/RockDroid2/images/sprites/enemies/guard_system.png diff --git a/build/games/Rockbot2/images/sprites/enemies/harlechine.png b/build/games/RockDroid2/images/sprites/enemies/harlechine.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/harlechine.png rename to build/games/RockDroid2/images/sprites/enemies/harlechine.png diff --git a/build/games/Rockbot2/images/sprites/enemies/iceballs.png b/build/games/RockDroid2/images/sprites/enemies/iceballs.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/iceballs.png rename to build/games/RockDroid2/images/sprites/enemies/iceballs.png diff --git a/build/games/Rockbot2/images/sprites/enemies/jet_beetle.png b/build/games/RockDroid2/images/sprites/enemies/jet_beetle.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/jet_beetle.png rename to build/games/RockDroid2/images/sprites/enemies/jet_beetle.png diff --git a/build/games/RockDroid2/images/sprites/enemies/karotbot.png b/build/games/RockDroid2/images/sprites/enemies/karotbot.png new file mode 100644 index 00000000..152cc217 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/karotbot.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/kurupira_firey_serpent.png b/build/games/RockDroid2/images/sprites/enemies/kurupira_firey_serpent.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/kurupira_firey_serpent.png rename to build/games/RockDroid2/images/sprites/enemies/kurupira_firey_serpent.png diff --git a/build/games/Rockbot2/images/sprites/enemies/kurupirabot.png b/build/games/RockDroid2/images/sprites/enemies/kurupirabot.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/kurupirabot.png rename to build/games/RockDroid2/images/sprites/enemies/kurupirabot.png diff --git a/build/games/Rockbot2/images/sprites/enemies/kurupirabot_pigless.png b/build/games/RockDroid2/images/sprites/enemies/kurupirabot_pigless.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/kurupirabot_pigless.png rename to build/games/RockDroid2/images/sprites/enemies/kurupirabot_pigless.png diff --git a/build/games/Rockbot2/images/sprites/enemies/mega_griffin.png b/build/games/RockDroid2/images/sprites/enemies/mega_griffin.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/mega_griffin.png rename to build/games/RockDroid2/images/sprites/enemies/mega_griffin.png diff --git a/build/games/Rockbot2/images/sprites/enemies/metool_tophat.png b/build/games/RockDroid2/images/sprites/enemies/metool_tophat.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/metool_tophat.png rename to build/games/RockDroid2/images/sprites/enemies/metool_tophat.png diff --git a/build/games/Rockbot2/images/sprites/enemies/milonga.png b/build/games/RockDroid2/images/sprites/enemies/milonga.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/milonga.png rename to build/games/RockDroid2/images/sprites/enemies/milonga.png diff --git a/build/games/Rockbot2/images/sprites/enemies/mine_cart.png b/build/games/RockDroid2/images/sprites/enemies/mine_cart.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/mine_cart.png rename to build/games/RockDroid2/images/sprites/enemies/mine_cart.png diff --git a/build/games/RockDroid2/images/sprites/enemies/octopus.png b/build/games/RockDroid2/images/sprites/enemies/octopus.png new file mode 100644 index 00000000..fda2b99e Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/octopus.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/octopus_tentacle.png b/build/games/RockDroid2/images/sprites/enemies/octopus_tentacle.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/octopus_tentacle.png rename to build/games/RockDroid2/images/sprites/enemies/octopus_tentacle.png diff --git a/build/games/Rockbot2/images/sprites/enemies/phantombot.png b/build/games/RockDroid2/images/sprites/enemies/phantombot.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/phantombot.png rename to build/games/RockDroid2/images/sprites/enemies/phantombot.png diff --git a/build/games/Rockbot2/images/sprites/enemies/plug.png b/build/games/RockDroid2/images/sprites/enemies/plug.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/plug.png rename to build/games/RockDroid2/images/sprites/enemies/plug.png diff --git a/build/games/Rockbot2/images/sprites/enemies/polar_bear.png b/build/games/RockDroid2/images/sprites/enemies/polar_bear.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/polar_bear.png rename to build/games/RockDroid2/images/sprites/enemies/polar_bear.png diff --git a/build/games/RockDroid2/images/sprites/enemies/red_metool.png b/build/games/RockDroid2/images/sprites/enemies/red_metool.png new file mode 100644 index 00000000..2bdf7f7b Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/red_metool.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/sacy.png b/build/games/RockDroid2/images/sprites/enemies/sacy.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/sacy.png rename to build/games/RockDroid2/images/sprites/enemies/sacy.png diff --git a/build/games/Rockbot2/images/sprites/enemies/screwface.png b/build/games/RockDroid2/images/sprites/enemies/screwface.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/screwface.png rename to build/games/RockDroid2/images/sprites/enemies/screwface.png diff --git a/build/games/RockDroid2/images/sprites/enemies/shield.png b/build/games/RockDroid2/images/sprites/enemies/shield.png new file mode 100644 index 00000000..8a214304 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/shield.png differ diff --git a/build/games/RockDroid2/images/sprites/enemies/shield_blue.png b/build/games/RockDroid2/images/sprites/enemies/shield_blue.png new file mode 100644 index 00000000..6d235100 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/shield_blue.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/skull_metool.png b/build/games/RockDroid2/images/sprites/enemies/skull_metool.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/skull_metool.png rename to build/games/RockDroid2/images/sprites/enemies/skull_metool.png diff --git a/build/games/Rockbot2/images/sprites/enemies/snow_bear.png b/build/games/RockDroid2/images/sprites/enemies/snow_bear.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/snow_bear.png rename to build/games/RockDroid2/images/sprites/enemies/snow_bear.png diff --git a/build/games/Rockbot2/images/sprites/enemies/snow_joe.png b/build/games/RockDroid2/images/sprites/enemies/snow_joe.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/snow_joe.png rename to build/games/RockDroid2/images/sprites/enemies/snow_joe.png diff --git a/build/games/Rockbot2/images/sprites/enemies/snowbot.png b/build/games/RockDroid2/images/sprites/enemies/snowbot.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/snowbot.png rename to build/games/RockDroid2/images/sprites/enemies/snowbot.png diff --git a/build/games/Rockbot2/images/sprites/enemies/spinner_ball.png b/build/games/RockDroid2/images/sprites/enemies/spinner_ball.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/spinner_ball.png rename to build/games/RockDroid2/images/sprites/enemies/spinner_ball.png diff --git a/build/games/RockDroid2/images/sprites/enemies/spinner_ball_orange.png b/build/games/RockDroid2/images/sprites/enemies/spinner_ball_orange.png new file mode 100644 index 00000000..9610f4ea Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/spinner_ball_orange.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/spinner_ball_red.png b/build/games/RockDroid2/images/sprites/enemies/spinner_ball_red.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/spinner_ball_red.png rename to build/games/RockDroid2/images/sprites/enemies/spinner_ball_red.png diff --git a/build/games/Rockbot2/images/sprites/enemies/surprise_box.png b/build/games/RockDroid2/images/sprites/enemies/surprise_box.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/surprise_box.png rename to build/games/RockDroid2/images/sprites/enemies/surprise_box.png diff --git a/build/games/Rockbot2/images/sprites/enemies/tamandua.png b/build/games/RockDroid2/images/sprites/enemies/tamandua.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/tamandua.png rename to build/games/RockDroid2/images/sprites/enemies/tamandua.png diff --git a/build/games/Rockbot2/images/sprites/enemies/the_creature.png b/build/games/RockDroid2/images/sprites/enemies/the_creature.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/the_creature.png rename to build/games/RockDroid2/images/sprites/enemies/the_creature.png diff --git a/build/games/Rockbot2/images/sprites/enemies/the_foreigner.png b/build/games/RockDroid2/images/sprites/enemies/the_foreigner.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/the_foreigner.png rename to build/games/RockDroid2/images/sprites/enemies/the_foreigner.png diff --git a/build/games/Rockbot2/images/sprites/enemies/tin_soldier.png b/build/games/RockDroid2/images/sprites/enemies/tin_soldier.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/tin_soldier.png rename to build/games/RockDroid2/images/sprites/enemies/tin_soldier.png diff --git a/build/games/Rockbot2/images/sprites/enemies/top_hat.png b/build/games/RockDroid2/images/sprites/enemies/top_hat.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/top_hat.png rename to build/games/RockDroid2/images/sprites/enemies/top_hat.png diff --git a/build/games/Rockbot2/images/sprites/enemies/tucano.png b/build/games/RockDroid2/images/sprites/enemies/tucano.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/tucano.png rename to build/games/RockDroid2/images/sprites/enemies/tucano.png diff --git a/build/games/Rockbot2/images/sprites/enemies/valkyrie_air_joe.png b/build/games/RockDroid2/images/sprites/enemies/valkyrie_air_joe.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/valkyrie_air_joe.png rename to build/games/RockDroid2/images/sprites/enemies/valkyrie_air_joe.png diff --git a/build/games/Rockbot2/images/sprites/enemies/valkyrie_air_pusher.png b/build/games/RockDroid2/images/sprites/enemies/valkyrie_air_pusher.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/valkyrie_air_pusher.png rename to build/games/RockDroid2/images/sprites/enemies/valkyrie_air_pusher.png diff --git a/build/games/Rockbot2/images/sprites/enemies/valkyrie_axe_thrower.png b/build/games/RockDroid2/images/sprites/enemies/valkyrie_axe_thrower.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/valkyrie_axe_thrower.png rename to build/games/RockDroid2/images/sprites/enemies/valkyrie_axe_thrower.png diff --git a/build/games/Rockbot2/images/sprites/enemies/valkyrie_ground_joe.png b/build/games/RockDroid2/images/sprites/enemies/valkyrie_ground_joe.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/valkyrie_ground_joe.png rename to build/games/RockDroid2/images/sprites/enemies/valkyrie_ground_joe.png diff --git a/build/games/Rockbot2/images/sprites/enemies/valkyrie_metool.png b/build/games/RockDroid2/images/sprites/enemies/valkyrie_metool.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/valkyrie_metool.png rename to build/games/RockDroid2/images/sprites/enemies/valkyrie_metool.png diff --git a/build/games/Rockbot2/images/sprites/enemies/valkyriebot.png b/build/games/RockDroid2/images/sprites/enemies/valkyriebot.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/valkyriebot.png rename to build/games/RockDroid2/images/sprites/enemies/valkyriebot.png diff --git a/build/games/Rockbot2/images/sprites/enemies/vampionic.png b/build/games/RockDroid2/images/sprites/enemies/vampionic.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/vampionic.png rename to build/games/RockDroid2/images/sprites/enemies/vampionic.png diff --git a/build/games/RockDroid2/images/sprites/enemies/wall_shooter.png b/build/games/RockDroid2/images/sprites/enemies/wall_shooter.png new file mode 100644 index 00000000..833d5c71 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/wall_shooter.png differ diff --git a/build/games/RockDroid2/images/sprites/enemies/wall_shooter_h.png b/build/games/RockDroid2/images/sprites/enemies/wall_shooter_h.png new file mode 100644 index 00000000..2ebe9ba7 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/wall_shooter_h.png differ diff --git a/build/games/RockDroid2/images/sprites/enemies/wall_shooter_h_top.png b/build/games/RockDroid2/images/sprites/enemies/wall_shooter_h_top.png new file mode 100644 index 00000000..6e76aee9 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/wall_shooter_h_top.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/wheels_penguin.png b/build/games/RockDroid2/images/sprites/enemies/wheels_penguin.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/wheels_penguin.png rename to build/games/RockDroid2/images/sprites/enemies/wheels_penguin.png diff --git a/build/games/Rockbot2/images/sprites/enemies/wyvern_industrial.png b/build/games/RockDroid2/images/sprites/enemies/wyvern_industrial.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/wyvern_industrial.png rename to build/games/RockDroid2/images/sprites/enemies/wyvern_industrial.png diff --git a/build/games/RockDroid2/images/sprites/enemies/ymst.png b/build/games/RockDroid2/images/sprites/enemies/ymst.png new file mode 100644 index 00000000..8dbc7d01 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/enemies/ymst.png differ diff --git a/build/games/Rockbot2/images/sprites/enemies/zodiac_harpy.png b/build/games/RockDroid2/images/sprites/enemies/zodiac_harpy.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/zodiac_harpy.png rename to build/games/RockDroid2/images/sprites/enemies/zodiac_harpy.png diff --git a/build/games/Rockbot2/images/sprites/enemies/zodiac_snake.png b/build/games/RockDroid2/images/sprites/enemies/zodiac_snake.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/zodiac_snake.png rename to build/games/RockDroid2/images/sprites/enemies/zodiac_snake.png diff --git a/build/games/Rockbot2/images/sprites/enemies/zodiacbot.png b/build/games/RockDroid2/images/sprites/enemies/zodiacbot.png similarity index 100% rename from build/games/Rockbot2/images/sprites/enemies/zodiacbot.png rename to build/games/RockDroid2/images/sprites/enemies/zodiacbot.png diff --git a/build/games/Rockbot2/images/sprites/kittybot.png b/build/games/RockDroid2/images/sprites/kittybot.png similarity index 100% rename from build/games/Rockbot2/images/sprites/kittybot.png rename to build/games/RockDroid2/images/sprites/kittybot.png diff --git a/build/games/RockDroid2/images/sprites/objects/1up.png b/build/games/RockDroid2/images/sprites/objects/1up.png new file mode 100644 index 00000000..f6210751 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/1up.png differ diff --git a/build/games/Rockbot2/images/sprites/objects/armor_arms.png b/build/games/RockDroid2/images/sprites/objects/armor_arms.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/armor_arms.png rename to build/games/RockDroid2/images/sprites/objects/armor_arms.png diff --git a/build/games/Rockbot2/images/sprites/objects/armor_body.png b/build/games/RockDroid2/images/sprites/objects/armor_body.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/armor_body.png rename to build/games/RockDroid2/images/sprites/objects/armor_body.png diff --git a/build/games/Rockbot2/images/sprites/objects/armor_legs.png b/build/games/RockDroid2/images/sprites/objects/armor_legs.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/armor_legs.png rename to build/games/RockDroid2/images/sprites/objects/armor_legs.png diff --git a/build/games/Rockbot2/images/sprites/objects/block001.png b/build/games/RockDroid2/images/sprites/objects/block001.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/block001.png rename to build/games/RockDroid2/images/sprites/objects/block001.png diff --git a/build/games/Rockbot2/images/sprites/objects/block002.png b/build/games/RockDroid2/images/sprites/objects/block002.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/block002.png rename to build/games/RockDroid2/images/sprites/objects/block002.png diff --git a/build/games/Rockbot2/images/sprites/objects/block003.png b/build/games/RockDroid2/images/sprites/objects/block003.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/block003.png rename to build/games/RockDroid2/images/sprites/objects/block003.png diff --git a/build/games/Rockbot2/images/sprites/objects/block004.png b/build/games/RockDroid2/images/sprites/objects/block004.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/block004.png rename to build/games/RockDroid2/images/sprites/objects/block004.png diff --git a/build/games/Rockbot2/images/sprites/objects/checkpoint.png b/build/games/RockDroid2/images/sprites/objects/checkpoint.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/checkpoint.png rename to build/games/RockDroid2/images/sprites/objects/checkpoint.png diff --git a/build/games/Rockbot2/images/sprites/objects/damaging_platform.png b/build/games/RockDroid2/images/sprites/objects/damaging_platform.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/damaging_platform.png rename to build/games/RockDroid2/images/sprites/objects/damaging_platform.png diff --git a/build/games/Rockbot2/images/sprites/objects/deathray_small_horz.png b/build/games/RockDroid2/images/sprites/objects/deathray_small_horz.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/deathray_small_horz.png rename to build/games/RockDroid2/images/sprites/objects/deathray_small_horz.png diff --git a/build/games/Rockbot2/images/sprites/objects/disappearing_block.png b/build/games/RockDroid2/images/sprites/objects/disappearing_block.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/disappearing_block.png rename to build/games/RockDroid2/images/sprites/objects/disappearing_block.png diff --git a/build/games/Rockbot2/images/sprites/objects/disappearing_block_blue.png b/build/games/RockDroid2/images/sprites/objects/disappearing_block_blue.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/disappearing_block_blue.png rename to build/games/RockDroid2/images/sprites/objects/disappearing_block_blue.png diff --git a/build/games/Rockbot2/images/sprites/objects/disappearing_block_green.png b/build/games/RockDroid2/images/sprites/objects/disappearing_block_green.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/disappearing_block_green.png rename to build/games/RockDroid2/images/sprites/objects/disappearing_block_green.png diff --git a/build/games/Rockbot2/images/sprites/objects/disappearing_block_orange.png b/build/games/RockDroid2/images/sprites/objects/disappearing_block_orange.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/disappearing_block_orange.png rename to build/games/RockDroid2/images/sprites/objects/disappearing_block_orange.png diff --git a/build/games/Rockbot2/images/sprites/objects/disappearing_block_purple.png b/build/games/RockDroid2/images/sprites/objects/disappearing_block_purple.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/disappearing_block_purple.png rename to build/games/RockDroid2/images/sprites/objects/disappearing_block_purple.png diff --git a/build/games/RockDroid2/images/sprites/objects/door_3.png b/build/games/RockDroid2/images/sprites/objects/door_3.png new file mode 100644 index 00000000..a231b461 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/door_3.png differ diff --git a/build/games/RockDroid2/images/sprites/objects/door_4.png b/build/games/RockDroid2/images/sprites/objects/door_4.png new file mode 100644 index 00000000..0fad98d2 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/door_4.png differ diff --git a/build/games/Rockbot2/images/sprites/objects/energy_balancer.png b/build/games/RockDroid2/images/sprites/objects/energy_balancer.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/energy_balancer.png rename to build/games/RockDroid2/images/sprites/objects/energy_balancer.png diff --git a/build/games/RockDroid2/images/sprites/objects/energy_pill_big.png b/build/games/RockDroid2/images/sprites/objects/energy_pill_big.png new file mode 100644 index 00000000..0ee3f0f3 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/energy_pill_big.png differ diff --git a/build/games/RockDroid2/images/sprites/objects/energy_pill_small.png b/build/games/RockDroid2/images/sprites/objects/energy_pill_small.png new file mode 100644 index 00000000..ab60549d Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/energy_pill_small.png differ diff --git a/build/games/RockDroid2/images/sprites/objects/energy_tank.png b/build/games/RockDroid2/images/sprites/objects/energy_tank.png new file mode 100644 index 00000000..30ee76f6 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/energy_tank.png differ diff --git a/build/games/Rockbot2/images/sprites/objects/fall_block.png b/build/games/RockDroid2/images/sprites/objects/fall_block.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/fall_block.png rename to build/games/RockDroid2/images/sprites/objects/fall_block.png diff --git a/build/games/Rockbot2/images/sprites/objects/fire_ray_horizontal.png b/build/games/RockDroid2/images/sprites/objects/fire_ray_horizontal.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/fire_ray_horizontal.png rename to build/games/RockDroid2/images/sprites/objects/fire_ray_horizontal.png diff --git a/build/games/Rockbot2/images/sprites/objects/fire_ray_vertical.png b/build/games/RockDroid2/images/sprites/objects/fire_ray_vertical.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/fire_ray_vertical.png rename to build/games/RockDroid2/images/sprites/objects/fire_ray_vertical.png diff --git a/build/games/Rockbot2/images/sprites/objects/fly_block.png b/build/games/RockDroid2/images/sprites/objects/fly_block.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/fly_block.png rename to build/games/RockDroid2/images/sprites/objects/fly_block.png diff --git a/build/games/Rockbot2/images/sprites/objects/fragile_block_4x4.png b/build/games/RockDroid2/images/sprites/objects/fragile_block_4x4.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/fragile_block_4x4.png rename to build/games/RockDroid2/images/sprites/objects/fragile_block_4x4.png diff --git a/build/games/RockDroid2/images/sprites/objects/glove_crusher.png b/build/games/RockDroid2/images/sprites/objects/glove_crusher.png new file mode 100644 index 00000000..0d3b4521 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/glove_crusher.png differ diff --git a/build/games/Rockbot2/images/sprites/objects/gray_energy_tank.png b/build/games/RockDroid2/images/sprites/objects/gray_energy_tank.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/gray_energy_tank.png rename to build/games/RockDroid2/images/sprites/objects/gray_energy_tank.png diff --git a/build/games/Rockbot2/images/sprites/objects/gray_special_tank.png b/build/games/RockDroid2/images/sprites/objects/gray_special_tank.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/gray_special_tank.png rename to build/games/RockDroid2/images/sprites/objects/gray_special_tank.png diff --git a/build/games/Rockbot2/images/sprites/objects/gray_weapons_tank.png b/build/games/RockDroid2/images/sprites/objects/gray_weapons_tank.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/gray_weapons_tank.png rename to build/games/RockDroid2/images/sprites/objects/gray_weapons_tank.png diff --git a/build/games/RockDroid2/images/sprites/objects/item_jet.png b/build/games/RockDroid2/images/sprites/objects/item_jet.png new file mode 100644 index 00000000..0ac81d5b Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/item_jet.png differ diff --git a/build/games/RockDroid2/images/sprites/objects/item_jump.png b/build/games/RockDroid2/images/sprites/objects/item_jump.png new file mode 100644 index 00000000..0f3437b8 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/item_jump.png differ diff --git a/build/games/Rockbot2/images/sprites/objects/lava_beam.png b/build/games/RockDroid2/images/sprites/objects/lava_beam.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/lava_beam.png rename to build/games/RockDroid2/images/sprites/objects/lava_beam.png diff --git a/build/games/Rockbot2/images/sprites/objects/lava_beam_horizontal.png b/build/games/RockDroid2/images/sprites/objects/lava_beam_horizontal.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/lava_beam_horizontal.png rename to build/games/RockDroid2/images/sprites/objects/lava_beam_horizontal.png diff --git a/build/games/Rockbot2/images/sprites/objects/opening_platform_slim.png b/build/games/RockDroid2/images/sprites/objects/opening_platform_slim.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/opening_platform_slim.png rename to build/games/RockDroid2/images/sprites/objects/opening_platform_slim.png diff --git a/build/games/Rockbot2/images/sprites/objects/platform.png b/build/games/RockDroid2/images/sprites/objects/platform.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/platform.png rename to build/games/RockDroid2/images/sprites/objects/platform.png diff --git a/build/games/Rockbot2/images/sprites/objects/platform_disappear2x.png b/build/games/RockDroid2/images/sprites/objects/platform_disappear2x.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/platform_disappear2x.png rename to build/games/RockDroid2/images/sprites/objects/platform_disappear2x.png diff --git a/build/games/Rockbot2/images/sprites/objects/platform_down.png b/build/games/RockDroid2/images/sprites/objects/platform_down.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/platform_down.png rename to build/games/RockDroid2/images/sprites/objects/platform_down.png diff --git a/build/games/Rockbot2/images/sprites/objects/platform_up.png b/build/games/RockDroid2/images/sprites/objects/platform_up.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/platform_up.png rename to build/games/RockDroid2/images/sprites/objects/platform_up.png diff --git a/build/games/Rockbot2/images/sprites/objects/platform_up_down.png b/build/games/RockDroid2/images/sprites/objects/platform_up_down.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/platform_up_down.png rename to build/games/RockDroid2/images/sprites/objects/platform_up_down.png diff --git a/build/games/RockDroid2/images/sprites/objects/portal.png b/build/games/RockDroid2/images/sprites/objects/portal.png new file mode 100644 index 00000000..0777426f Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/portal.png differ diff --git a/build/games/RockDroid2/images/sprites/objects/special_tank.png b/build/games/RockDroid2/images/sprites/objects/special_tank.png new file mode 100644 index 00000000..d1ef0b5e Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/special_tank.png differ diff --git a/build/games/RockDroid2/images/sprites/objects/teleport_base.png b/build/games/RockDroid2/images/sprites/objects/teleport_base.png new file mode 100644 index 00000000..c0eb3415 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/teleport_base.png differ diff --git a/build/games/RockDroid2/images/sprites/objects/teleporter.png b/build/games/RockDroid2/images/sprites/objects/teleporter.png new file mode 100644 index 00000000..dd639006 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/teleporter.png differ diff --git a/build/games/RockDroid2/images/sprites/objects/teleporter_final_boss.png b/build/games/RockDroid2/images/sprites/objects/teleporter_final_boss.png new file mode 100644 index 00000000..81fc2ee0 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/teleporter_final_boss.png differ diff --git a/build/games/Rockbot2/images/sprites/objects/track_platform.png b/build/games/RockDroid2/images/sprites/objects/track_platform.png similarity index 100% rename from build/games/Rockbot2/images/sprites/objects/track_platform.png rename to build/games/RockDroid2/images/sprites/objects/track_platform.png diff --git a/build/games/RockDroid2/images/sprites/objects/weapons_pill_big.png b/build/games/RockDroid2/images/sprites/objects/weapons_pill_big.png new file mode 100644 index 00000000..e3b040a6 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/weapons_pill_big.png differ diff --git a/build/games/RockDroid2/images/sprites/objects/weapons_pill_small.png b/build/games/RockDroid2/images/sprites/objects/weapons_pill_small.png new file mode 100644 index 00000000..f3a38f59 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/weapons_pill_small.png differ diff --git a/build/games/RockDroid2/images/sprites/objects/weapons_tank.png b/build/games/RockDroid2/images/sprites/objects/weapons_tank.png new file mode 100644 index 00000000..f8d7e58a Binary files /dev/null and b/build/games/RockDroid2/images/sprites/objects/weapons_tank.png differ diff --git a/build/games/RockDroid2/images/sprites/p1.png b/build/games/RockDroid2/images/sprites/p1.png new file mode 100644 index 00000000..7565d4ca Binary files /dev/null and b/build/games/RockDroid2/images/sprites/p1.png differ diff --git a/build/games/RockDroid2/images/sprites/p2.png b/build/games/RockDroid2/images/sprites/p2.png new file mode 100644 index 00000000..0d464057 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/p2.png differ diff --git a/build/games/RockDroid2/images/sprites/p3.png b/build/games/RockDroid2/images/sprites/p3.png new file mode 100644 index 00000000..3c53d3f3 Binary files /dev/null and b/build/games/RockDroid2/images/sprites/p3.png differ diff --git a/build/games/RockDroid2/images/sprites/p4.png b/build/games/RockDroid2/images/sprites/p4.png new file mode 100644 index 00000000..417b61df Binary files /dev/null and b/build/games/RockDroid2/images/sprites/p4.png differ diff --git a/build/games/Rockbot2/images/tilesets/001.png b/build/games/RockDroid2/images/tilesets/001.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/001.png rename to build/games/RockDroid2/images/tilesets/001.png diff --git a/build/games/Rockbot2/images/tilesets/002.png b/build/games/RockDroid2/images/tilesets/002.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/002.png rename to build/games/RockDroid2/images/tilesets/002.png diff --git a/build/games/Rockbot2/images/tilesets/anim/block_move_left.png b/build/games/RockDroid2/images/tilesets/anim/block_move_left.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/block_move_left.png rename to build/games/RockDroid2/images/tilesets/anim/block_move_left.png diff --git a/build/games/Rockbot2/images/tilesets/anim/block_move_right.png b/build/games/RockDroid2/images/tilesets/anim/block_move_right.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/block_move_right.png rename to build/games/RockDroid2/images/tilesets/anim/block_move_right.png diff --git a/build/games/Rockbot2/images/tilesets/anim/candle_ghost_mansion.png b/build/games/RockDroid2/images/tilesets/anim/candle_ghost_mansion.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/candle_ghost_mansion.png rename to build/games/RockDroid2/images/tilesets/anim/candle_ghost_mansion.png diff --git a/build/games/RockDroid2/images/tilesets/anim/candles.png b/build/games/RockDroid2/images/tilesets/anim/candles.png new file mode 100644 index 00000000..c0d31b8e Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/candles.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/castle1_water.png b/build/games/RockDroid2/images/tilesets/anim/castle1_water.png new file mode 100644 index 00000000..5335f226 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/castle1_water.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/esgoto_muro_direita.png b/build/games/RockDroid2/images/tilesets/anim/esgoto_muro_direita.png new file mode 100644 index 00000000..25412d94 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/esgoto_muro_direita.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/esgoto_muro_esquerda.png b/build/games/RockDroid2/images/tilesets/anim/esgoto_muro_esquerda.png new file mode 100644 index 00000000..e70ca5a2 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/esgoto_muro_esquerda.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/esgoto_saida_direita.png b/build/games/RockDroid2/images/tilesets/anim/esgoto_saida_direita.png new file mode 100644 index 00000000..238bee13 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/esgoto_saida_direita.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/esgoto_saida_esquerda.png b/build/games/RockDroid2/images/tilesets/anim/esgoto_saida_esquerda.png new file mode 100644 index 00000000..18af8553 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/esgoto_saida_esquerda.png differ diff --git a/build/games/Rockbot2/images/tilesets/anim/fan_bottom_left.png b/build/games/RockDroid2/images/tilesets/anim/fan_bottom_left.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/fan_bottom_left.png rename to build/games/RockDroid2/images/tilesets/anim/fan_bottom_left.png diff --git a/build/games/Rockbot2/images/tilesets/anim/fan_bottom_right.png b/build/games/RockDroid2/images/tilesets/anim/fan_bottom_right.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/fan_bottom_right.png rename to build/games/RockDroid2/images/tilesets/anim/fan_bottom_right.png diff --git a/build/games/Rockbot2/images/tilesets/anim/fan_top_left.png b/build/games/RockDroid2/images/tilesets/anim/fan_top_left.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/fan_top_left.png rename to build/games/RockDroid2/images/tilesets/anim/fan_top_left.png diff --git a/build/games/Rockbot2/images/tilesets/anim/fan_top_right.png b/build/games/RockDroid2/images/tilesets/anim/fan_top_right.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/fan_top_right.png rename to build/games/RockDroid2/images/tilesets/anim/fan_top_right.png diff --git a/build/games/RockDroid2/images/tilesets/anim/gear_001.png b/build/games/RockDroid2/images/tilesets/anim/gear_001.png new file mode 100644 index 00000000..a05aeeb1 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/gear_001.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/gear_002.png b/build/games/RockDroid2/images/tilesets/anim/gear_002.png new file mode 100644 index 00000000..6a0b2030 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/gear_002.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/gear_003.png b/build/games/RockDroid2/images/tilesets/anim/gear_003.png new file mode 100644 index 00000000..98e74c66 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/gear_003.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/gear_004.png b/build/games/RockDroid2/images/tilesets/anim/gear_004.png new file mode 100644 index 00000000..615c2826 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/gear_004.png differ diff --git a/build/games/Rockbot2/images/tilesets/anim/gear_panel.png b/build/games/RockDroid2/images/tilesets/anim/gear_panel.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/gear_panel.png rename to build/games/RockDroid2/images/tilesets/anim/gear_panel.png diff --git a/build/games/RockDroid2/images/tilesets/anim/ghost_window.png b/build/games/RockDroid2/images/tilesets/anim/ghost_window.png new file mode 100644 index 00000000..f91cdc8e Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/ghost_window.png differ diff --git a/build/games/Rockbot2/images/tilesets/anim/ice_block_bottom_left.png b/build/games/RockDroid2/images/tilesets/anim/ice_block_bottom_left.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/ice_block_bottom_left.png rename to build/games/RockDroid2/images/tilesets/anim/ice_block_bottom_left.png diff --git a/build/games/Rockbot2/images/tilesets/anim/ice_block_bottom_right.png b/build/games/RockDroid2/images/tilesets/anim/ice_block_bottom_right.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/ice_block_bottom_right.png rename to build/games/RockDroid2/images/tilesets/anim/ice_block_bottom_right.png diff --git a/build/games/Rockbot2/images/tilesets/anim/ice_block_top_left.png b/build/games/RockDroid2/images/tilesets/anim/ice_block_top_left.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/ice_block_top_left.png rename to build/games/RockDroid2/images/tilesets/anim/ice_block_top_left.png diff --git a/build/games/Rockbot2/images/tilesets/anim/ice_block_top_right.png b/build/games/RockDroid2/images/tilesets/anim/ice_block_top_right.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/ice_block_top_right.png rename to build/games/RockDroid2/images/tilesets/anim/ice_block_top_right.png diff --git a/build/games/RockDroid2/images/tilesets/anim/lab_lava.png b/build/games/RockDroid2/images/tilesets/anim/lab_lava.png new file mode 100644 index 00000000..dbc6e3fb Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/lab_lava.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/lab_lava_duct1.png b/build/games/RockDroid2/images/tilesets/anim/lab_lava_duct1.png new file mode 100644 index 00000000..8322baac Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/lab_lava_duct1.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/lab_lava_duct2.png b/build/games/RockDroid2/images/tilesets/anim/lab_lava_duct2.png new file mode 100644 index 00000000..0d39e0a9 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/lab_lava_duct2.png differ diff --git a/build/games/Rockbot2/images/tilesets/anim/lava_001.png b/build/games/RockDroid2/images/tilesets/anim/lava_001.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/lava_001.png rename to build/games/RockDroid2/images/tilesets/anim/lava_001.png diff --git a/build/games/Rockbot2/images/tilesets/anim/lava_002.png b/build/games/RockDroid2/images/tilesets/anim/lava_002.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/lava_002.png rename to build/games/RockDroid2/images/tilesets/anim/lava_002.png diff --git a/build/games/RockDroid2/images/tilesets/anim/moon_base_block1.png b/build/games/RockDroid2/images/tilesets/anim/moon_base_block1.png new file mode 100644 index 00000000..be0aff7e Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/moon_base_block1.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/moon_base_block2.png b/build/games/RockDroid2/images/tilesets/anim/moon_base_block2.png new file mode 100644 index 00000000..df7929a3 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/moon_base_block2.png differ diff --git a/build/games/Rockbot2/images/tilesets/anim/move_left_platform_1.png b/build/games/RockDroid2/images/tilesets/anim/move_left_platform_1.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/move_left_platform_1.png rename to build/games/RockDroid2/images/tilesets/anim/move_left_platform_1.png diff --git a/build/games/Rockbot2/images/tilesets/anim/move_left_platform_2.png b/build/games/RockDroid2/images/tilesets/anim/move_left_platform_2.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/move_left_platform_2.png rename to build/games/RockDroid2/images/tilesets/anim/move_left_platform_2.png diff --git a/build/games/Rockbot2/images/tilesets/anim/move_left_platform_3.png b/build/games/RockDroid2/images/tilesets/anim/move_left_platform_3.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/move_left_platform_3.png rename to build/games/RockDroid2/images/tilesets/anim/move_left_platform_3.png diff --git a/build/games/Rockbot2/images/tilesets/anim/move_right_platform_1.png b/build/games/RockDroid2/images/tilesets/anim/move_right_platform_1.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/move_right_platform_1.png rename to build/games/RockDroid2/images/tilesets/anim/move_right_platform_1.png diff --git a/build/games/Rockbot2/images/tilesets/anim/move_right_platform_2.png b/build/games/RockDroid2/images/tilesets/anim/move_right_platform_2.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/move_right_platform_2.png rename to build/games/RockDroid2/images/tilesets/anim/move_right_platform_2.png diff --git a/build/games/Rockbot2/images/tilesets/anim/move_right_platform_3.png b/build/games/RockDroid2/images/tilesets/anim/move_right_platform_3.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/move_right_platform_3.png rename to build/games/RockDroid2/images/tilesets/anim/move_right_platform_3.png diff --git a/build/games/Rockbot2/images/tilesets/anim/semaphore_left.png b/build/games/RockDroid2/images/tilesets/anim/semaphore_left.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/semaphore_left.png rename to build/games/RockDroid2/images/tilesets/anim/semaphore_left.png diff --git a/build/games/Rockbot2/images/tilesets/anim/semaphore_right.png b/build/games/RockDroid2/images/tilesets/anim/semaphore_right.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/semaphore_right.png rename to build/games/RockDroid2/images/tilesets/anim/semaphore_right.png diff --git a/build/games/RockDroid2/images/tilesets/anim/spark_o_meter.png b/build/games/RockDroid2/images/tilesets/anim/spark_o_meter.png new file mode 100644 index 00000000..505a22fd Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/spark_o_meter.png differ diff --git a/build/games/Rockbot2/images/tilesets/anim/spin_middle_left.png b/build/games/RockDroid2/images/tilesets/anim/spin_middle_left.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/spin_middle_left.png rename to build/games/RockDroid2/images/tilesets/anim/spin_middle_left.png diff --git a/build/games/Rockbot2/images/tilesets/anim/spin_middle_right.png b/build/games/RockDroid2/images/tilesets/anim/spin_middle_right.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/spin_middle_right.png rename to build/games/RockDroid2/images/tilesets/anim/spin_middle_right.png diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_001.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_001.png new file mode 100644 index 00000000..4481232e Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_001.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_002.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_002.png new file mode 100644 index 00000000..9b79d6ab Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_002.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_003.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_003.png new file mode 100644 index 00000000..417f27c7 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_003.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_004.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_004.png new file mode 100644 index 00000000..c67148a7 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_004.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_005.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_005.png new file mode 100644 index 00000000..54f8fd7b Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_005.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_006.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_006.png new file mode 100644 index 00000000..4b936546 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_006.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_007.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_007.png new file mode 100644 index 00000000..3f8c3e1d Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_007.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_008.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_008.png new file mode 100644 index 00000000..b95a0d95 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_008.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_009.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_009.png new file mode 100644 index 00000000..8c9f8317 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_009.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_010.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_010.png new file mode 100644 index 00000000..c0102c89 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_010.png differ diff --git a/build/games/RockDroid2/images/tilesets/anim/toy_castle_011.png b/build/games/RockDroid2/images/tilesets/anim/toy_castle_011.png new file mode 100644 index 00000000..ed48c76f Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/anim/toy_castle_011.png differ diff --git a/build/games/Rockbot2/images/tilesets/anim/train_line_001.png b/build/games/RockDroid2/images/tilesets/anim/train_line_001.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/train_line_001.png rename to build/games/RockDroid2/images/tilesets/anim/train_line_001.png diff --git a/build/games/Rockbot2/images/tilesets/anim/train_line_002.png b/build/games/RockDroid2/images/tilesets/anim/train_line_002.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/train_line_002.png rename to build/games/RockDroid2/images/tilesets/anim/train_line_002.png diff --git a/build/games/Rockbot2/images/tilesets/anim/water_1.png b/build/games/RockDroid2/images/tilesets/anim/water_1.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/water_1.png rename to build/games/RockDroid2/images/tilesets/anim/water_1.png diff --git a/build/games/Rockbot2/images/tilesets/anim/water_2a.png b/build/games/RockDroid2/images/tilesets/anim/water_2a.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/water_2a.png rename to build/games/RockDroid2/images/tilesets/anim/water_2a.png diff --git a/build/games/Rockbot2/images/tilesets/anim/water_2b.png b/build/games/RockDroid2/images/tilesets/anim/water_2b.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/water_2b.png rename to build/games/RockDroid2/images/tilesets/anim/water_2b.png diff --git a/build/games/Rockbot2/images/tilesets/anim/water_top.png b/build/games/RockDroid2/images/tilesets/anim/water_top.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/water_top.png rename to build/games/RockDroid2/images/tilesets/anim/water_top.png diff --git a/build/games/Rockbot2/images/tilesets/anim/windwhirl.png b/build/games/RockDroid2/images/tilesets/anim/windwhirl.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/windwhirl.png rename to build/games/RockDroid2/images/tilesets/anim/windwhirl.png diff --git a/build/games/Rockbot2/images/tilesets/anim/windwhirl_left.png b/build/games/RockDroid2/images/tilesets/anim/windwhirl_left.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/windwhirl_left.png rename to build/games/RockDroid2/images/tilesets/anim/windwhirl_left.png diff --git a/build/games/Rockbot2/images/tilesets/anim/windwhirl_right.png b/build/games/RockDroid2/images/tilesets/anim/windwhirl_right.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/anim/windwhirl_right.png rename to build/games/RockDroid2/images/tilesets/anim/windwhirl_right.png diff --git a/build/games/RockDroid2/images/tilesets/beach.png b/build/games/RockDroid2/images/tilesets/beach.png new file mode 100644 index 00000000..c48e9920 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/beach.png differ diff --git a/build/games/Rockbot2/images/tilesets/blocks/easymode.png b/build/games/RockDroid2/images/tilesets/blocks/easymode.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/blocks/easymode.png rename to build/games/RockDroid2/images/tilesets/blocks/easymode.png diff --git a/build/games/Rockbot2/images/tilesets/blocks/hardmode.png b/build/games/RockDroid2/images/tilesets/blocks/hardmode.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/blocks/hardmode.png rename to build/games/RockDroid2/images/tilesets/blocks/hardmode.png diff --git a/build/games/Rockbot2/images/tilesets/castle_01.png b/build/games/RockDroid2/images/tilesets/castle_01.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/castle_01.png rename to build/games/RockDroid2/images/tilesets/castle_01.png diff --git a/build/games/Rockbot2/images/tilesets/castle_02.png b/build/games/RockDroid2/images/tilesets/castle_02.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/castle_02.png rename to build/games/RockDroid2/images/tilesets/castle_02.png diff --git a/build/games/RockDroid2/images/tilesets/castle_03.png b/build/games/RockDroid2/images/tilesets/castle_03.png new file mode 100644 index 00000000..14f96efe Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/castle_03.png differ diff --git a/build/games/RockDroid2/images/tilesets/castle_04.png b/build/games/RockDroid2/images/tilesets/castle_04.png new file mode 100644 index 00000000..20734b9e Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/castle_04.png differ diff --git a/build/games/RockDroid2/images/tilesets/castle_05.png b/build/games/RockDroid2/images/tilesets/castle_05.png new file mode 100644 index 00000000..5136f8ff Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/castle_05.png differ diff --git a/build/games/Rockbot2/images/tilesets/circus.png b/build/games/RockDroid2/images/tilesets/circus.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/circus.png rename to build/games/RockDroid2/images/tilesets/circus.png diff --git a/build/games/RockDroid2/images/tilesets/dragon.png b/build/games/RockDroid2/images/tilesets/dragon.png new file mode 100644 index 00000000..5557dd0a Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/dragon.png differ diff --git a/build/games/RockDroid2/images/tilesets/gear.png b/build/games/RockDroid2/images/tilesets/gear.png new file mode 100644 index 00000000..3c07ed7b Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/gear.png differ diff --git a/build/games/Rockbot2/images/tilesets/ghost_mansion.png b/build/games/RockDroid2/images/tilesets/ghost_mansion.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/ghost_mansion.png rename to build/games/RockDroid2/images/tilesets/ghost_mansion.png diff --git a/build/games/RockDroid2/images/tilesets/intro_stage.png b/build/games/RockDroid2/images/tilesets/intro_stage.png new file mode 100644 index 00000000..fe5646d9 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/intro_stage.png differ diff --git a/build/games/Rockbot2/images/tilesets/snow.png b/build/games/RockDroid2/images/tilesets/snow.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/snow.png rename to build/games/RockDroid2/images/tilesets/snow.png diff --git a/build/games/Rockbot2/images/tilesets/valkyrie.png b/build/games/RockDroid2/images/tilesets/valkyrie.png similarity index 100% rename from build/games/Rockbot2/images/tilesets/valkyrie.png rename to build/games/RockDroid2/images/tilesets/valkyrie.png diff --git a/build/games/RockDroid2/images/tilesets/zodiac.png b/build/games/RockDroid2/images/tilesets/zodiac.png new file mode 100644 index 00000000..2d0f1141 Binary files /dev/null and b/build/games/RockDroid2/images/tilesets/zodiac.png differ diff --git a/build/games/Rockbot2/lang/armor_digalogs_en.txt b/build/games/RockDroid2/lang/armor_digalogs_en.txt similarity index 100% rename from build/games/Rockbot2/lang/armor_digalogs_en.txt rename to build/games/RockDroid2/lang/armor_digalogs_en.txt diff --git a/build/games/Rockbot2/lang/armor_digalogs_es.txt b/build/games/RockDroid2/lang/armor_digalogs_es.txt similarity index 100% rename from build/games/Rockbot2/lang/armor_digalogs_es.txt rename to build/games/RockDroid2/lang/armor_digalogs_es.txt diff --git a/build/games/Rockbot2/lang/armor_digalogs_fr.txt b/build/games/RockDroid2/lang/armor_digalogs_fr.txt similarity index 100% rename from build/games/Rockbot2/lang/armor_digalogs_fr.txt rename to build/games/RockDroid2/lang/armor_digalogs_fr.txt diff --git a/build/games/Rockbot2/lang/armor_digalogs_it.txt b/build/games/RockDroid2/lang/armor_digalogs_it.txt similarity index 100% rename from build/games/Rockbot2/lang/armor_digalogs_it.txt rename to build/games/RockDroid2/lang/armor_digalogs_it.txt diff --git a/build/games/Rockbot2/lang/armor_digalogs_pt.txt b/build/games/RockDroid2/lang/armor_digalogs_pt.txt similarity index 100% rename from build/games/Rockbot2/lang/armor_digalogs_pt.txt rename to build/games/RockDroid2/lang/armor_digalogs_pt.txt diff --git a/build/games/Rockbot2/lang/strings_ingame_English.dat b/build/games/RockDroid2/lang/strings_ingame_English.dat similarity index 100% rename from build/games/Rockbot2/lang/strings_ingame_English.dat rename to build/games/RockDroid2/lang/strings_ingame_English.dat diff --git a/build/games/Rockbot1/lang/strings_ingame_French.dat b/build/games/RockDroid2/lang/strings_ingame_French.dat similarity index 100% rename from build/games/Rockbot1/lang/strings_ingame_French.dat rename to build/games/RockDroid2/lang/strings_ingame_French.dat diff --git a/build/games/Rockbot1/lang/strings_ingame_Italian.dat b/build/games/RockDroid2/lang/strings_ingame_Italian.dat similarity index 100% rename from build/games/Rockbot1/lang/strings_ingame_Italian.dat rename to build/games/RockDroid2/lang/strings_ingame_Italian.dat diff --git a/build/games/Rockbot1/lang/strings_ingame_Portuguese.dat b/build/games/RockDroid2/lang/strings_ingame_Portuguese.dat similarity index 100% rename from build/games/Rockbot1/lang/strings_ingame_Portuguese.dat rename to build/games/RockDroid2/lang/strings_ingame_Portuguese.dat diff --git a/build/games/Rockbot1/lang/strings_ingame_Spanish.dat b/build/games/RockDroid2/lang/strings_ingame_Spanish.dat similarity index 100% rename from build/games/Rockbot1/lang/strings_ingame_Spanish.dat rename to build/games/RockDroid2/lang/strings_ingame_Spanish.dat diff --git a/build/games/RockDroid2/map_npc_data.dat b/build/games/RockDroid2/map_npc_data.dat new file mode 100644 index 00000000..9d11a04e Binary files /dev/null and b/build/games/RockDroid2/map_npc_data.dat differ diff --git a/build/games/RockDroid2/map_object_data.dat b/build/games/RockDroid2/map_object_data.dat new file mode 100644 index 00000000..f95a8e64 Binary files /dev/null and b/build/games/RockDroid2/map_object_data.dat differ diff --git a/build/games/Rockbot2/maps.dat b/build/games/RockDroid2/maps.dat similarity index 100% rename from build/games/Rockbot2/maps.dat rename to build/games/RockDroid2/maps.dat diff --git a/build/games/RockDroid2/maps_v2.dat b/build/games/RockDroid2/maps_v2.dat new file mode 100644 index 00000000..34dd374c Binary files /dev/null and b/build/games/RockDroid2/maps_v2.dat differ diff --git a/build/template/music/INFO.txt b/build/games/RockDroid2/music/INFO.txt similarity index 100% rename from build/template/music/INFO.txt rename to build/games/RockDroid2/music/INFO.txt diff --git a/build/games/RockDroid2/music/beast.mod b/build/games/RockDroid2/music/beast.mod new file mode 100644 index 00000000..df38395d Binary files /dev/null and b/build/games/RockDroid2/music/beast.mod differ diff --git a/build/games/Rockbot2/music/bgmusic.mod b/build/games/RockDroid2/music/bgmusic.mod similarity index 100% rename from build/games/Rockbot2/music/bgmusic.mod rename to build/games/RockDroid2/music/bgmusic.mod diff --git a/build/games/RockDroid2/music/boss_battle.mod b/build/games/RockDroid2/music/boss_battle.mod new file mode 100644 index 00000000..7d3c8e2c Binary files /dev/null and b/build/games/RockDroid2/music/boss_battle.mod differ diff --git a/build/games/RockDroid2/music/castle1.mod b/build/games/RockDroid2/music/castle1.mod new file mode 100644 index 00000000..09ac4d5a Binary files /dev/null and b/build/games/RockDroid2/music/castle1.mod differ diff --git a/build/games/RockDroid2/music/castle2.mod b/build/games/RockDroid2/music/castle2.mod new file mode 100644 index 00000000..af5eb564 Binary files /dev/null and b/build/games/RockDroid2/music/castle2.mod differ diff --git a/build/games/RockDroid2/music/castle3.mod b/build/games/RockDroid2/music/castle3.mod new file mode 100644 index 00000000..19302905 Binary files /dev/null and b/build/games/RockDroid2/music/castle3.mod differ diff --git a/build/games/RockDroid2/music/castle4.mod b/build/games/RockDroid2/music/castle4.mod new file mode 100644 index 00000000..9b870f8a Binary files /dev/null and b/build/games/RockDroid2/music/castle4.mod differ diff --git a/build/games/RockDroid2/music/castle5.mod b/build/games/RockDroid2/music/castle5.mod new file mode 100644 index 00000000..2f276b64 Binary files /dev/null and b/build/games/RockDroid2/music/castle5.mod differ diff --git a/build/games/RockDroid2/music/classic_style_boss_intro.s3m b/build/games/RockDroid2/music/classic_style_boss_intro.s3m new file mode 100644 index 00000000..53b069e9 Binary files /dev/null and b/build/games/RockDroid2/music/classic_style_boss_intro.s3m differ diff --git a/build/games/RockDroid2/music/classic_style_castle_intro.mp3 b/build/games/RockDroid2/music/classic_style_castle_intro.mp3 new file mode 100644 index 00000000..a1a2c550 Binary files /dev/null and b/build/games/RockDroid2/music/classic_style_castle_intro.mp3 differ diff --git a/build/games/RockDroid2/music/dragon.mod b/build/games/RockDroid2/music/dragon.mod new file mode 100644 index 00000000..1af6ecad Binary files /dev/null and b/build/games/RockDroid2/music/dragon.mod differ diff --git a/build/games/RockDroid2/music/final_boss.mod b/build/games/RockDroid2/music/final_boss.mod new file mode 100644 index 00000000..f2c8c94c Binary files /dev/null and b/build/games/RockDroid2/music/final_boss.mod differ diff --git a/build/games/RockDroid2/music/gear.mod b/build/games/RockDroid2/music/gear.mod new file mode 100644 index 00000000..2858b3f1 Binary files /dev/null and b/build/games/RockDroid2/music/gear.mod differ diff --git a/build/games/Rockbot2/music/got_weapon.it b/build/games/RockDroid2/music/got_weapon.it similarity index 100% rename from build/games/Rockbot2/music/got_weapon.it rename to build/games/RockDroid2/music/got_weapon.it diff --git a/build/games/RockDroid2/music/intro_scene.mod b/build/games/RockDroid2/music/intro_scene.mod new file mode 100644 index 00000000..c6f183ec Binary files /dev/null and b/build/games/RockDroid2/music/intro_scene.mod differ diff --git a/build/games/Rockbot2/music/intro_screen.mod b/build/games/RockDroid2/music/intro_screen.mod similarity index 100% rename from build/games/Rockbot2/music/intro_screen.mod rename to build/games/RockDroid2/music/intro_screen.mod diff --git a/build/games/RockDroid2/music/intro_screen.xm b/build/games/RockDroid2/music/intro_screen.xm new file mode 100644 index 00000000..552b956d Binary files /dev/null and b/build/games/RockDroid2/music/intro_screen.xm differ diff --git a/build/games/RockDroid2/music/kurupira.mod b/build/games/RockDroid2/music/kurupira.mod new file mode 100644 index 00000000..7370faf9 Binary files /dev/null and b/build/games/RockDroid2/music/kurupira.mod differ diff --git a/build/games/RockDroid2/music/mp3/beast.mod.mp3 b/build/games/RockDroid2/music/mp3/beast.mod.mp3 new file mode 100644 index 00000000..7a0b1337 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/beast.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/bgmusic.mod.mp3 b/build/games/RockDroid2/music/mp3/bgmusic.mod.mp3 new file mode 100644 index 00000000..cb49d41b Binary files /dev/null and b/build/games/RockDroid2/music/mp3/bgmusic.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/boss_battle.mod.mp3 b/build/games/RockDroid2/music/mp3/boss_battle.mod.mp3 new file mode 100644 index 00000000..ada44e6d Binary files /dev/null and b/build/games/RockDroid2/music/mp3/boss_battle.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/castle1.mod.mp3 b/build/games/RockDroid2/music/mp3/castle1.mod.mp3 new file mode 100644 index 00000000..a340cbc2 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/castle1.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/castle2.mod.mp3 b/build/games/RockDroid2/music/mp3/castle2.mod.mp3 new file mode 100644 index 00000000..068e20d7 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/castle2.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/castle3.mod.mp3 b/build/games/RockDroid2/music/mp3/castle3.mod.mp3 new file mode 100644 index 00000000..2bab22f7 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/castle3.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/castle4.mod.mp3 b/build/games/RockDroid2/music/mp3/castle4.mod.mp3 new file mode 100644 index 00000000..f7dbf504 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/castle4.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/castle5.mod.mp3 b/build/games/RockDroid2/music/mp3/castle5.mod.mp3 new file mode 100644 index 00000000..a4821bae Binary files /dev/null and b/build/games/RockDroid2/music/mp3/castle5.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/dragon.mod.mp3 b/build/games/RockDroid2/music/mp3/dragon.mod.mp3 new file mode 100644 index 00000000..61b5e4a0 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/dragon.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/final_boss.mod.mp3 b/build/games/RockDroid2/music/mp3/final_boss.mod.mp3 new file mode 100644 index 00000000..844f947d Binary files /dev/null and b/build/games/RockDroid2/music/mp3/final_boss.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/gear.mod.mp3 b/build/games/RockDroid2/music/mp3/gear.mod.mp3 new file mode 100644 index 00000000..5b3780c7 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/gear.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/got_weapon.it.mp3 b/build/games/RockDroid2/music/mp3/got_weapon.it.mp3 new file mode 100644 index 00000000..a7a3c4ac Binary files /dev/null and b/build/games/RockDroid2/music/mp3/got_weapon.it.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/intro_scene.mod.mp3 b/build/games/RockDroid2/music/mp3/intro_scene.mod.mp3 new file mode 100644 index 00000000..0fc7256f Binary files /dev/null and b/build/games/RockDroid2/music/mp3/intro_scene.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/intro_screen.mod.mp3 b/build/games/RockDroid2/music/mp3/intro_screen.mod.mp3 new file mode 100644 index 00000000..9a953953 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/intro_screen.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/intro_screen.xm.mp3 b/build/games/RockDroid2/music/mp3/intro_screen.xm.mp3 new file mode 100644 index 00000000..bbea0662 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/intro_screen.xm.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/kurupira.mod.mp3 b/build/games/RockDroid2/music/mp3/kurupira.mod.mp3 new file mode 100644 index 00000000..10a2000d Binary files /dev/null and b/build/games/RockDroid2/music/mp3/kurupira.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/password.mod.mp3 b/build/games/RockDroid2/music/mp3/password.mod.mp3 new file mode 100644 index 00000000..1c4ab6ca Binary files /dev/null and b/build/games/RockDroid2/music/mp3/password.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/phantom.mod.mp3 b/build/games/RockDroid2/music/mp3/phantom.mod.mp3 new file mode 100644 index 00000000..5c2f7b3f Binary files /dev/null and b/build/games/RockDroid2/music/mp3/phantom.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/porto_alegre.mod.mp3 b/build/games/RockDroid2/music/mp3/porto_alegre.mod.mp3 new file mode 100644 index 00000000..812d2eed Binary files /dev/null and b/build/games/RockDroid2/music/mp3/porto_alegre.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/rockbot_2_open_final.mod.mp3 b/build/games/RockDroid2/music/mp3/rockbot_2_open_final.mod.mp3 new file mode 100644 index 00000000..869e11e1 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/rockbot_2_open_final.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/rockbot_boss.mod.mp3 b/build/games/RockDroid2/music/mp3/rockbot_boss.mod.mp3 new file mode 100644 index 00000000..10e17667 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/rockbot_boss.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/rockbot_end_animation.mod.mp3 b/build/games/RockDroid2/music/mp3/rockbot_end_animation.mod.mp3 new file mode 100644 index 00000000..61d09625 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/rockbot_end_animation.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/rockbot_endcredits.mod.mp3 b/build/games/RockDroid2/music/mp3/rockbot_endcredits.mod.mp3 new file mode 100644 index 00000000..4c16e7b4 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/rockbot_endcredits.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/rockbot_enemy_parade.mod.mp3 b/build/games/RockDroid2/music/mp3/rockbot_enemy_parade.mod.mp3 new file mode 100644 index 00000000..073f9382 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/rockbot_enemy_parade.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/rockbot_gameover.mod.mp3 b/build/games/RockDroid2/music/mp3/rockbot_gameover.mod.mp3 new file mode 100644 index 00000000..35ab3dd0 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/rockbot_gameover.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/rockbot_selector.mod.mp3 b/build/games/RockDroid2/music/mp3/rockbot_selector.mod.mp3 new file mode 100644 index 00000000..90ba2056 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/rockbot_selector.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/rockbot_stage_complete_00.mod.mp3 b/build/games/RockDroid2/music/mp3/rockbot_stage_complete_00.mod.mp3 new file mode 100644 index 00000000..a90a26cc Binary files /dev/null and b/build/games/RockDroid2/music/mp3/rockbot_stage_complete_00.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/rockbot_stage_start.mod.mp3 b/build/games/RockDroid2/music/mp3/rockbot_stage_start.mod.mp3 new file mode 100644 index 00000000..b8bc97dd Binary files /dev/null and b/build/games/RockDroid2/music/mp3/rockbot_stage_start.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/rockbot_weapon_aquired.mod.mp3 b/build/games/RockDroid2/music/mp3/rockbot_weapon_aquired.mod.mp3 new file mode 100644 index 00000000..63b84045 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/rockbot_weapon_aquired.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/snow.mod.mp3 b/build/games/RockDroid2/music/mp3/snow.mod.mp3 new file mode 100644 index 00000000..5c1f075f Binary files /dev/null and b/build/games/RockDroid2/music/mp3/snow.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/valkyre.mod.mp3 b/build/games/RockDroid2/music/mp3/valkyre.mod.mp3 new file mode 100644 index 00000000..f2d1cd20 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/valkyre.mod.mp3 differ diff --git a/build/games/RockDroid2/music/mp3/zodiac.mod.mp3 b/build/games/RockDroid2/music/mp3/zodiac.mod.mp3 new file mode 100644 index 00000000..1721f039 Binary files /dev/null and b/build/games/RockDroid2/music/mp3/zodiac.mod.mp3 differ diff --git a/build/games/Rockbot2/music/password.mod b/build/games/RockDroid2/music/password.mod similarity index 100% rename from build/games/Rockbot2/music/password.mod rename to build/games/RockDroid2/music/password.mod diff --git a/build/games/RockDroid2/music/phantom.mod b/build/games/RockDroid2/music/phantom.mod new file mode 100644 index 00000000..33d29a95 Binary files /dev/null and b/build/games/RockDroid2/music/phantom.mod differ diff --git a/build/games/RockDroid2/music/porto_alegre.mod b/build/games/RockDroid2/music/porto_alegre.mod new file mode 100644 index 00000000..b2b5c0e7 Binary files /dev/null and b/build/games/RockDroid2/music/porto_alegre.mod differ diff --git a/build/games/RockDroid2/music/rockbot_2_open_final.mod b/build/games/RockDroid2/music/rockbot_2_open_final.mod new file mode 100644 index 00000000..fe3e7fd3 Binary files /dev/null and b/build/games/RockDroid2/music/rockbot_2_open_final.mod differ diff --git a/build/games/RockDroid2/music/rockbot_boss.mod b/build/games/RockDroid2/music/rockbot_boss.mod new file mode 100644 index 00000000..16303e88 Binary files /dev/null and b/build/games/RockDroid2/music/rockbot_boss.mod differ diff --git a/build/games/RockDroid2/music/rockbot_end_animation.mod b/build/games/RockDroid2/music/rockbot_end_animation.mod new file mode 100644 index 00000000..aba009d3 Binary files /dev/null and b/build/games/RockDroid2/music/rockbot_end_animation.mod differ diff --git a/build/games/RockDroid2/music/rockbot_endcredits.mod b/build/games/RockDroid2/music/rockbot_endcredits.mod new file mode 100644 index 00000000..7552df06 Binary files /dev/null and b/build/games/RockDroid2/music/rockbot_endcredits.mod differ diff --git a/build/games/RockDroid2/music/rockbot_enemy_parade.mod b/build/games/RockDroid2/music/rockbot_enemy_parade.mod new file mode 100644 index 00000000..b1227885 Binary files /dev/null and b/build/games/RockDroid2/music/rockbot_enemy_parade.mod differ diff --git a/build/games/RockDroid2/music/rockbot_gameover.mod b/build/games/RockDroid2/music/rockbot_gameover.mod new file mode 100644 index 00000000..82516c12 Binary files /dev/null and b/build/games/RockDroid2/music/rockbot_gameover.mod differ diff --git a/build/games/RockDroid2/music/rockbot_selector.mod b/build/games/RockDroid2/music/rockbot_selector.mod new file mode 100644 index 00000000..a8d56ec6 Binary files /dev/null and b/build/games/RockDroid2/music/rockbot_selector.mod differ diff --git a/build/games/RockDroid2/music/rockbot_stage_complete_00.mod b/build/games/RockDroid2/music/rockbot_stage_complete_00.mod new file mode 100644 index 00000000..53b069e9 Binary files /dev/null and b/build/games/RockDroid2/music/rockbot_stage_complete_00.mod differ diff --git a/build/games/RockDroid2/music/rockbot_stage_start.mod b/build/games/RockDroid2/music/rockbot_stage_start.mod new file mode 100644 index 00000000..35d63242 Binary files /dev/null and b/build/games/RockDroid2/music/rockbot_stage_start.mod differ diff --git a/build/games/RockDroid2/music/rockbot_weapon_aquired.mod b/build/games/RockDroid2/music/rockbot_weapon_aquired.mod new file mode 100644 index 00000000..7d762dc5 Binary files /dev/null and b/build/games/RockDroid2/music/rockbot_weapon_aquired.mod differ diff --git a/build/games/RockDroid2/music/snow.mod b/build/games/RockDroid2/music/snow.mod new file mode 100644 index 00000000..e0eb26f0 Binary files /dev/null and b/build/games/RockDroid2/music/snow.mod differ diff --git a/build/games/RockDroid2/music/valkyre.mod b/build/games/RockDroid2/music/valkyre.mod new file mode 100644 index 00000000..d6f1d488 Binary files /dev/null and b/build/games/RockDroid2/music/valkyre.mod differ diff --git a/build/games/RockDroid2/music/zodiac.mod b/build/games/RockDroid2/music/zodiac.mod new file mode 100644 index 00000000..37df8560 Binary files /dev/null and b/build/games/RockDroid2/music/zodiac.mod differ diff --git a/build/games/Rockbot2/player_list.dat b/build/games/RockDroid2/player_list.dat similarity index 100% rename from build/games/Rockbot2/player_list.dat rename to build/games/RockDroid2/player_list.dat diff --git a/build/games/Rockbot2/player_list_v3_1.dat b/build/games/RockDroid2/player_list_v3_1.dat similarity index 100% rename from build/games/Rockbot2/player_list_v3_1.dat rename to build/games/RockDroid2/player_list_v3_1.dat diff --git a/build/games/RockDroid2/player_list_v3_1_1.dat b/build/games/RockDroid2/player_list_v3_1_1.dat new file mode 100644 index 00000000..a3f71942 Binary files /dev/null and b/build/games/RockDroid2/player_list_v3_1_1.dat differ diff --git a/build/games/RockDroid2/scenes/game_scenes.dat b/build/games/RockDroid2/scenes/game_scenes.dat new file mode 100644 index 00000000..6275ca63 Binary files /dev/null and b/build/games/RockDroid2/scenes/game_scenes.dat differ diff --git a/build/games/RockDroid2/scenes/scenes_clear_area.dat b/build/games/RockDroid2/scenes/scenes_clear_area.dat new file mode 100644 index 00000000..f364705a Binary files /dev/null and b/build/games/RockDroid2/scenes/scenes_clear_area.dat differ diff --git a/build/games/RockDroid2/scenes/scenes_list.dat b/build/games/RockDroid2/scenes/scenes_list.dat new file mode 100644 index 00000000..d828479a Binary files /dev/null and b/build/games/RockDroid2/scenes/scenes_list.dat differ diff --git a/build/games/Rockbot2/lang/strings_ingame_French.dat b/build/games/RockDroid2/scenes/scenes_parallax.dat similarity index 100% rename from build/games/Rockbot2/lang/strings_ingame_French.dat rename to build/games/RockDroid2/scenes/scenes_parallax.dat diff --git a/build/games/RockDroid2/scenes/scenes_play_music.dat b/build/games/RockDroid2/scenes/scenes_play_music.dat new file mode 100644 index 00000000..fdfbce57 Binary files /dev/null and b/build/games/RockDroid2/scenes/scenes_play_music.dat differ diff --git a/build/games/Rockbot2/scenes/scenes_play_sfx.dat b/build/games/RockDroid2/scenes/scenes_play_sfx.dat similarity index 100% rename from build/games/Rockbot2/scenes/scenes_play_sfx.dat rename to build/games/RockDroid2/scenes/scenes_play_sfx.dat diff --git a/build/games/Rockbot2/scenes/scenes_show_animation.dat b/build/games/RockDroid2/scenes/scenes_show_animation.dat similarity index 100% rename from build/games/Rockbot2/scenes/scenes_show_animation.dat rename to build/games/RockDroid2/scenes/scenes_show_animation.dat diff --git a/build/games/RockDroid2/scenes/scenes_show_image.dat b/build/games/RockDroid2/scenes/scenes_show_image.dat new file mode 100644 index 00000000..6475af8b Binary files /dev/null and b/build/games/RockDroid2/scenes/scenes_show_image.dat differ diff --git a/build/games/RockDroid2/scenes/scenes_show_text.dat b/build/games/RockDroid2/scenes/scenes_show_text.dat new file mode 100644 index 00000000..6f4047b4 Binary files /dev/null and b/build/games/RockDroid2/scenes/scenes_show_text.dat differ diff --git a/build/games/Rockbot2/scenes/scenes_show_viewpoint.dat b/build/games/RockDroid2/scenes/scenes_show_viewpoint.dat similarity index 100% rename from build/games/Rockbot2/scenes/scenes_show_viewpoint.dat rename to build/games/RockDroid2/scenes/scenes_show_viewpoint.dat diff --git a/build/games/Rockbot2/scenes/text/0.txt b/build/games/RockDroid2/scenes/text/0.txt similarity index 100% rename from build/games/Rockbot2/scenes/text/0.txt rename to build/games/RockDroid2/scenes/text/0.txt diff --git a/build/games/Rockbot2/scenes/text/1.txt b/build/games/RockDroid2/scenes/text/1.txt similarity index 100% rename from build/games/Rockbot2/scenes/text/1.txt rename to build/games/RockDroid2/scenes/text/1.txt diff --git a/build/games/Rockbot2/scenes/text/2.txt b/build/games/RockDroid2/scenes/text/2.txt similarity index 100% rename from build/games/Rockbot2/scenes/text/2.txt rename to build/games/RockDroid2/scenes/text/2.txt diff --git a/build/games/Rockbot2/scenes/text/3.txt b/build/games/RockDroid2/scenes/text/3.txt similarity index 100% rename from build/games/Rockbot2/scenes/text/3.txt rename to build/games/RockDroid2/scenes/text/3.txt diff --git a/build/games/RockDroid2/scenes/text/en/0.txt b/build/games/RockDroid2/scenes/text/en/0.txt new file mode 100644 index 00000000..6898713a --- /dev/null +++ b/build/games/RockDroid2/scenes/text/en/0.txt @@ -0,0 +1,6 @@ +IN THE YEAR 20XX. + + + + + diff --git a/build/games/RockDroid2/scenes/text/en/1.txt b/build/games/RockDroid2/scenes/text/en/1.txt new file mode 100644 index 00000000..36b549a7 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/en/1.txt @@ -0,0 +1,6 @@ +THE WORLD IS AT PEACE, AFTER +THE BOTS CREATED BY DR.KANOTUS +DEFEATED THE EVIL DR.DESTRIN. + + + diff --git a/build/games/RockDroid2/scenes/text/en/2.txt b/build/games/RockDroid2/scenes/text/en/2.txt new file mode 100644 index 00000000..01f86884 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/en/2.txt @@ -0,0 +1,6 @@ +AFTER BEING ARRESTED, KANUTOS +SWEARS TO RETURN AND TAKE +VENGEANCE. +BETA BOT IS NOWHERE TO BE +FOUND, WHILE CANDY JOINS +ROCK IN DEFENDING THE WORLD. diff --git a/build/games/RockDroid2/scenes/text/en/3.txt b/build/games/RockDroid2/scenes/text/en/3.txt new file mode 100644 index 00000000..5440b8d7 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/en/3.txt @@ -0,0 +1,6 @@ +WHEN NEWS OF AN ATTACK TO +SEVERAL CITIES COME, BOTH +ROCK AND CANDY RUSH INTO IT! +GO FORTH BOT HEROES! +FIGHT FOR OUR BRIGHT +FUTURE! diff --git a/build/games/RockDroid2/scenes/text/en/4.txt b/build/games/RockDroid2/scenes/text/en/4.txt new file mode 100644 index 00000000..d7030f71 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/en/4.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: HOW? HOW DID YOU +MANAGE TO DEFEAT ME AGAIN? +ROCK: HOW MANY TIMES? +HOW MANY TIMES WILL YOU ESCAPE +AND SHOULD I FIGHT YOU AGAIN? +WHEN WILL THIS END? diff --git a/build/games/RockDroid2/scenes/text/en/5.txt b/build/games/RockDroid2/scenes/text/en/5.txt new file mode 100644 index 00000000..573ce2f7 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/en/5.txt @@ -0,0 +1,6 @@ +DR.DESTRING: YOU BRAT! +LOSING TO SUCH A KID IS A +HUMULIATION! +CANDY: LOOK MISTER. THIS TIME, +CAN YOU PLEASE JUST STAY IN +PRISION PLEASE? diff --git a/build/games/RockDroid2/scenes/text/en/6.txt b/build/games/RockDroid2/scenes/text/en/6.txt new file mode 100644 index 00000000..11d6a652 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/en/6.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: AGAIN, YOU MANAGE +TO DISRUPT MY PLANS. +BETA: IT TOOK ME A WHILE. BUT +I MANMAGED TO UNDERSTAND WHY +ROCK SAVED YOU LAST TIME. +YOU VERMIN IS NOT WORTH! diff --git a/build/games/RockDroid2/scenes/text/en/7.txt b/build/games/RockDroid2/scenes/text/en/7.txt new file mode 100644 index 00000000..824f7874 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/en/7.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: WHAT? I LOST TO A +STREET KITTEN? +KITTY: HEY OLD MAN. +YOU KNOW, SOMEDAY, SOMEONE +WILL GET TIRED, AND MIGHT +JUST END IT, FOR GOOD. diff --git a/build/games/RockDroid2/scenes/text/es/0.txt b/build/games/RockDroid2/scenes/text/es/0.txt new file mode 100644 index 00000000..6898713a --- /dev/null +++ b/build/games/RockDroid2/scenes/text/es/0.txt @@ -0,0 +1,6 @@ +IN THE YEAR 20XX. + + + + + diff --git a/build/games/RockDroid2/scenes/text/es/1.txt b/build/games/RockDroid2/scenes/text/es/1.txt new file mode 100644 index 00000000..36b549a7 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/es/1.txt @@ -0,0 +1,6 @@ +THE WORLD IS AT PEACE, AFTER +THE BOTS CREATED BY DR.KANOTUS +DEFEATED THE EVIL DR.DESTRIN. + + + diff --git a/build/games/RockDroid2/scenes/text/es/2.txt b/build/games/RockDroid2/scenes/text/es/2.txt new file mode 100644 index 00000000..01f86884 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/es/2.txt @@ -0,0 +1,6 @@ +AFTER BEING ARRESTED, KANUTOS +SWEARS TO RETURN AND TAKE +VENGEANCE. +BETA BOT IS NOWHERE TO BE +FOUND, WHILE CANDY JOINS +ROCK IN DEFENDING THE WORLD. diff --git a/build/games/RockDroid2/scenes/text/es/3.txt b/build/games/RockDroid2/scenes/text/es/3.txt new file mode 100644 index 00000000..5440b8d7 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/es/3.txt @@ -0,0 +1,6 @@ +WHEN NEWS OF AN ATTACK TO +SEVERAL CITIES COME, BOTH +ROCK AND CANDY RUSH INTO IT! +GO FORTH BOT HEROES! +FIGHT FOR OUR BRIGHT +FUTURE! diff --git a/build/games/RockDroid2/scenes/text/es/4.txt b/build/games/RockDroid2/scenes/text/es/4.txt new file mode 100644 index 00000000..d7030f71 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/es/4.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: HOW? HOW DID YOU +MANAGE TO DEFEAT ME AGAIN? +ROCK: HOW MANY TIMES? +HOW MANY TIMES WILL YOU ESCAPE +AND SHOULD I FIGHT YOU AGAIN? +WHEN WILL THIS END? diff --git a/build/games/RockDroid2/scenes/text/es/6.txt b/build/games/RockDroid2/scenes/text/es/6.txt new file mode 100644 index 00000000..11d6a652 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/es/6.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: AGAIN, YOU MANAGE +TO DISRUPT MY PLANS. +BETA: IT TOOK ME A WHILE. BUT +I MANMAGED TO UNDERSTAND WHY +ROCK SAVED YOU LAST TIME. +YOU VERMIN IS NOT WORTH! diff --git a/build/games/RockDroid2/scenes/text/es/7.txt b/build/games/RockDroid2/scenes/text/es/7.txt new file mode 100644 index 00000000..6fb66a5e --- /dev/null +++ b/build/games/RockDroid2/scenes/text/es/7.txt @@ -0,0 +1,6 @@ + + + + + + diff --git a/build/games/RockDroid2/scenes/text/fr/0.txt b/build/games/RockDroid2/scenes/text/fr/0.txt new file mode 100644 index 00000000..6898713a --- /dev/null +++ b/build/games/RockDroid2/scenes/text/fr/0.txt @@ -0,0 +1,6 @@ +IN THE YEAR 20XX. + + + + + diff --git a/build/games/RockDroid2/scenes/text/fr/1.txt b/build/games/RockDroid2/scenes/text/fr/1.txt new file mode 100644 index 00000000..36b549a7 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/fr/1.txt @@ -0,0 +1,6 @@ +THE WORLD IS AT PEACE, AFTER +THE BOTS CREATED BY DR.KANOTUS +DEFEATED THE EVIL DR.DESTRIN. + + + diff --git a/build/games/RockDroid2/scenes/text/fr/2.txt b/build/games/RockDroid2/scenes/text/fr/2.txt new file mode 100644 index 00000000..01f86884 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/fr/2.txt @@ -0,0 +1,6 @@ +AFTER BEING ARRESTED, KANUTOS +SWEARS TO RETURN AND TAKE +VENGEANCE. +BETA BOT IS NOWHERE TO BE +FOUND, WHILE CANDY JOINS +ROCK IN DEFENDING THE WORLD. diff --git a/build/games/RockDroid2/scenes/text/fr/3.txt b/build/games/RockDroid2/scenes/text/fr/3.txt new file mode 100644 index 00000000..5440b8d7 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/fr/3.txt @@ -0,0 +1,6 @@ +WHEN NEWS OF AN ATTACK TO +SEVERAL CITIES COME, BOTH +ROCK AND CANDY RUSH INTO IT! +GO FORTH BOT HEROES! +FIGHT FOR OUR BRIGHT +FUTURE! diff --git a/build/games/RockDroid2/scenes/text/fr/4.txt b/build/games/RockDroid2/scenes/text/fr/4.txt new file mode 100644 index 00000000..d7030f71 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/fr/4.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: HOW? HOW DID YOU +MANAGE TO DEFEAT ME AGAIN? +ROCK: HOW MANY TIMES? +HOW MANY TIMES WILL YOU ESCAPE +AND SHOULD I FIGHT YOU AGAIN? +WHEN WILL THIS END? diff --git a/build/games/RockDroid2/scenes/text/fr/6.txt b/build/games/RockDroid2/scenes/text/fr/6.txt new file mode 100644 index 00000000..11d6a652 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/fr/6.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: AGAIN, YOU MANAGE +TO DISRUPT MY PLANS. +BETA: IT TOOK ME A WHILE. BUT +I MANMAGED TO UNDERSTAND WHY +ROCK SAVED YOU LAST TIME. +YOU VERMIN IS NOT WORTH! diff --git a/build/games/RockDroid2/scenes/text/fr/7.txt b/build/games/RockDroid2/scenes/text/fr/7.txt new file mode 100644 index 00000000..6fb66a5e --- /dev/null +++ b/build/games/RockDroid2/scenes/text/fr/7.txt @@ -0,0 +1,6 @@ + + + + + + diff --git a/build/games/RockDroid2/scenes/text/it/0.txt b/build/games/RockDroid2/scenes/text/it/0.txt new file mode 100644 index 00000000..6898713a --- /dev/null +++ b/build/games/RockDroid2/scenes/text/it/0.txt @@ -0,0 +1,6 @@ +IN THE YEAR 20XX. + + + + + diff --git a/build/games/RockDroid2/scenes/text/it/1.txt b/build/games/RockDroid2/scenes/text/it/1.txt new file mode 100644 index 00000000..36b549a7 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/it/1.txt @@ -0,0 +1,6 @@ +THE WORLD IS AT PEACE, AFTER +THE BOTS CREATED BY DR.KANOTUS +DEFEATED THE EVIL DR.DESTRIN. + + + diff --git a/build/games/RockDroid2/scenes/text/it/2.txt b/build/games/RockDroid2/scenes/text/it/2.txt new file mode 100644 index 00000000..01f86884 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/it/2.txt @@ -0,0 +1,6 @@ +AFTER BEING ARRESTED, KANUTOS +SWEARS TO RETURN AND TAKE +VENGEANCE. +BETA BOT IS NOWHERE TO BE +FOUND, WHILE CANDY JOINS +ROCK IN DEFENDING THE WORLD. diff --git a/build/games/RockDroid2/scenes/text/it/3.txt b/build/games/RockDroid2/scenes/text/it/3.txt new file mode 100644 index 00000000..5440b8d7 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/it/3.txt @@ -0,0 +1,6 @@ +WHEN NEWS OF AN ATTACK TO +SEVERAL CITIES COME, BOTH +ROCK AND CANDY RUSH INTO IT! +GO FORTH BOT HEROES! +FIGHT FOR OUR BRIGHT +FUTURE! diff --git a/build/games/RockDroid2/scenes/text/it/4.txt b/build/games/RockDroid2/scenes/text/it/4.txt new file mode 100644 index 00000000..d7030f71 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/it/4.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: HOW? HOW DID YOU +MANAGE TO DEFEAT ME AGAIN? +ROCK: HOW MANY TIMES? +HOW MANY TIMES WILL YOU ESCAPE +AND SHOULD I FIGHT YOU AGAIN? +WHEN WILL THIS END? diff --git a/build/games/RockDroid2/scenes/text/it/6.txt b/build/games/RockDroid2/scenes/text/it/6.txt new file mode 100644 index 00000000..11d6a652 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/it/6.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: AGAIN, YOU MANAGE +TO DISRUPT MY PLANS. +BETA: IT TOOK ME A WHILE. BUT +I MANMAGED TO UNDERSTAND WHY +ROCK SAVED YOU LAST TIME. +YOU VERMIN IS NOT WORTH! diff --git a/build/games/RockDroid2/scenes/text/pt/0.txt b/build/games/RockDroid2/scenes/text/pt/0.txt new file mode 100644 index 00000000..9a59155b --- /dev/null +++ b/build/games/RockDroid2/scenes/text/pt/0.txt @@ -0,0 +1,6 @@ +NO ANO DE 20XX. + + + + + diff --git a/build/games/RockDroid2/scenes/text/pt/1.txt b/build/games/RockDroid2/scenes/text/pt/1.txt new file mode 100644 index 00000000..53395a5f --- /dev/null +++ b/build/games/RockDroid2/scenes/text/pt/1.txt @@ -0,0 +1,6 @@ +O MUNDO ESTÁ EM PAZ, DEPOIS +QUE OS BOTS CRIADOS PELO +DR.DESTRIN DERROTARAM O +MALVADO DR.KANOTUS. + + diff --git a/build/games/RockDroid2/scenes/text/pt/2.txt b/build/games/RockDroid2/scenes/text/pt/2.txt new file mode 100644 index 00000000..9adc74dc --- /dev/null +++ b/build/games/RockDroid2/scenes/text/pt/2.txt @@ -0,0 +1,6 @@ +APÓS SER PRESO, KANOTUS JURA +VOLTAR E SE VINGAR. +BETA BOT ESTÁ SUMIDO, E +ENQUANTO ISTO, CANDY SE JUNTA +ÀS FORÇAS DE DEFESA, JUNTO COM +ROCK, PARA DEFENDER O MUNDO. diff --git a/build/games/RockDroid2/scenes/text/pt/3.txt b/build/games/RockDroid2/scenes/text/pt/3.txt new file mode 100644 index 00000000..d30c2c1f --- /dev/null +++ b/build/games/RockDroid2/scenes/text/pt/3.txt @@ -0,0 +1,6 @@ +QUANDO UM NOVO ATAQUE CONTRA +VÁRIAS CIDADES OCORRE, AMBOS +ROCK E CANDY CORREM PARA LÁ! +ADIANTE HERÓIS ROBÔS! +LUTEM PELO NOSSO FUTURO +BRILHANTE! diff --git a/build/games/RockDroid2/scenes/text/pt/4.txt b/build/games/RockDroid2/scenes/text/pt/4.txt new file mode 100644 index 00000000..d7030f71 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/pt/4.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: HOW? HOW DID YOU +MANAGE TO DEFEAT ME AGAIN? +ROCK: HOW MANY TIMES? +HOW MANY TIMES WILL YOU ESCAPE +AND SHOULD I FIGHT YOU AGAIN? +WHEN WILL THIS END? diff --git a/build/games/RockDroid2/scenes/text/pt/6.txt b/build/games/RockDroid2/scenes/text/pt/6.txt new file mode 100644 index 00000000..11d6a652 --- /dev/null +++ b/build/games/RockDroid2/scenes/text/pt/6.txt @@ -0,0 +1,6 @@ +DR.DESTRIN: AGAIN, YOU MANAGE +TO DISRUPT MY PLANS. +BETA: IT TOOK ME A WHILE. BUT +I MANMAGED TO UNDERSTAND WHY +ROCK SAVED YOU LAST TIME. +YOU VERMIN IS NOT WORTH! diff --git a/build/games/Rockbot2/scenes_strings.dat b/build/games/RockDroid2/scenes_strings.dat similarity index 100% rename from build/games/Rockbot2/scenes_strings.dat rename to build/games/RockDroid2/scenes_strings.dat diff --git a/build/games/Rockbot2/sfx/LICENSE.txt b/build/games/RockDroid2/sfx/LICENSE.txt similarity index 100% rename from build/games/Rockbot2/sfx/LICENSE.txt rename to build/games/RockDroid2/sfx/LICENSE.txt diff --git a/build/games/Rockbot2/sfx/Powerup3.wav b/build/games/RockDroid2/sfx/Powerup3.wav similarity index 100% rename from build/games/Rockbot2/sfx/Powerup3.wav rename to build/games/RockDroid2/sfx/Powerup3.wav diff --git a/build/games/Rockbot2/sfx/axe.wav b/build/games/RockDroid2/sfx/axe.wav similarity index 100% rename from build/games/Rockbot2/sfx/axe.wav rename to build/games/RockDroid2/sfx/axe.wav diff --git a/build/games/Rockbot2/sfx/beam.wav b/build/games/RockDroid2/sfx/beam.wav similarity index 100% rename from build/games/Rockbot2/sfx/beam.wav rename to build/games/RockDroid2/sfx/beam.wav diff --git a/build/games/Rockbot2/sfx/big_explosion.wav b/build/games/RockDroid2/sfx/big_explosion.wav similarity index 100% rename from build/games/Rockbot2/sfx/big_explosion.wav rename to build/games/RockDroid2/sfx/big_explosion.wav diff --git a/build/games/Rockbot2/sfx/charged_shot.wav b/build/games/RockDroid2/sfx/charged_shot.wav similarity index 100% rename from build/games/Rockbot2/sfx/charged_shot.wav rename to build/games/RockDroid2/sfx/charged_shot.wav diff --git a/build/games/Rockbot2/sfx/charging1.wav b/build/games/RockDroid2/sfx/charging1.wav similarity index 100% rename from build/games/Rockbot2/sfx/charging1.wav rename to build/games/RockDroid2/sfx/charging1.wav diff --git a/build/games/Rockbot2/sfx/charging2.wav b/build/games/RockDroid2/sfx/charging2.wav similarity index 100% rename from build/games/Rockbot2/sfx/charging2.wav rename to build/games/RockDroid2/sfx/charging2.wav diff --git a/build/games/RockDroid2/sfx/classic_style_door_open.wav b/build/games/RockDroid2/sfx/classic_style_door_open.wav new file mode 100644 index 00000000..12c114a1 Binary files /dev/null and b/build/games/RockDroid2/sfx/classic_style_door_open.wav differ diff --git a/build/games/Rockbot2/sfx/claw.wav b/build/games/RockDroid2/sfx/claw.wav similarity index 100% rename from build/games/Rockbot2/sfx/claw.wav rename to build/games/RockDroid2/sfx/claw.wav diff --git a/build/games/Rockbot2/sfx/cursor.wav b/build/games/RockDroid2/sfx/cursor.wav similarity index 100% rename from build/games/Rockbot2/sfx/cursor.wav rename to build/games/RockDroid2/sfx/cursor.wav diff --git a/build/games/Rockbot2/sfx/destrin_ship.wav b/build/games/RockDroid2/sfx/destrin_ship.wav similarity index 100% rename from build/games/Rockbot2/sfx/destrin_ship.wav rename to build/games/RockDroid2/sfx/destrin_ship.wav diff --git a/build/games/Rockbot2/sfx/disappearning_block.wav b/build/games/RockDroid2/sfx/disappearning_block.wav similarity index 100% rename from build/games/Rockbot2/sfx/disappearning_block.wav rename to build/games/RockDroid2/sfx/disappearning_block.wav diff --git a/build/games/Rockbot2/sfx/door_open.wav b/build/games/RockDroid2/sfx/door_open.wav similarity index 100% rename from build/games/Rockbot2/sfx/door_open.wav rename to build/games/RockDroid2/sfx/door_open.wav diff --git a/build/games/Rockbot2/sfx/energy.wav b/build/games/RockDroid2/sfx/energy.wav similarity index 100% rename from build/games/Rockbot2/sfx/energy.wav rename to build/games/RockDroid2/sfx/energy.wav diff --git a/build/games/RockDroid2/sfx/enter_platform.wav b/build/games/RockDroid2/sfx/enter_platform.wav new file mode 100644 index 00000000..f2b1f917 Binary files /dev/null and b/build/games/RockDroid2/sfx/enter_platform.wav differ diff --git a/build/games/Rockbot2/sfx/got_energy_pill.wav b/build/games/RockDroid2/sfx/got_energy_pill.wav similarity index 100% rename from build/games/Rockbot2/sfx/got_energy_pill.wav rename to build/games/RockDroid2/sfx/got_energy_pill.wav diff --git a/build/games/Rockbot2/sfx/got_item.wav b/build/games/RockDroid2/sfx/got_item.wav similarity index 100% rename from build/games/Rockbot2/sfx/got_item.wav rename to build/games/RockDroid2/sfx/got_item.wav diff --git a/build/games/Rockbot2/sfx/got_weapon.wav b/build/games/RockDroid2/sfx/got_weapon.wav similarity index 100% rename from build/games/Rockbot2/sfx/got_weapon.wav rename to build/games/RockDroid2/sfx/got_weapon.wav diff --git a/build/games/Rockbot2/sfx/hadouken_girl.wav b/build/games/RockDroid2/sfx/hadouken_girl.wav similarity index 100% rename from build/games/Rockbot2/sfx/hadouken_girl.wav rename to build/games/RockDroid2/sfx/hadouken_girl.wav diff --git a/build/games/Rockbot2/sfx/hou.wav b/build/games/RockDroid2/sfx/hou.wav similarity index 100% rename from build/games/Rockbot2/sfx/hou.wav rename to build/games/RockDroid2/sfx/hou.wav diff --git a/build/games/Rockbot2/sfx/implosion.wav b/build/games/RockDroid2/sfx/implosion.wav similarity index 100% rename from build/games/Rockbot2/sfx/implosion.wav rename to build/games/RockDroid2/sfx/implosion.wav diff --git a/build/games/Rockbot2/sfx/npc_hit.wav b/build/games/RockDroid2/sfx/npc_hit.wav similarity index 100% rename from build/games/Rockbot2/sfx/npc_hit.wav rename to build/games/RockDroid2/sfx/npc_hit.wav diff --git a/build/games/Rockbot2/sfx/npc_killed.wav b/build/games/RockDroid2/sfx/npc_killed.wav similarity index 100% rename from build/games/Rockbot2/sfx/npc_killed.wav rename to build/games/RockDroid2/sfx/npc_killed.wav diff --git a/build/games/RockDroid2/sfx/object_break.wav b/build/games/RockDroid2/sfx/object_break.wav new file mode 100644 index 00000000..67cf90d7 Binary files /dev/null and b/build/games/RockDroid2/sfx/object_break.wav differ diff --git a/build/games/RockDroid2/sfx/platform_break.wav b/build/games/RockDroid2/sfx/platform_break.wav new file mode 100644 index 00000000..38512d4d Binary files /dev/null and b/build/games/RockDroid2/sfx/platform_break.wav differ diff --git a/build/games/Rockbot2/sfx/player_death.wav b/build/games/RockDroid2/sfx/player_death.wav similarity index 100% rename from build/games/Rockbot2/sfx/player_death.wav rename to build/games/RockDroid2/sfx/player_death.wav diff --git a/build/games/Rockbot2/sfx/player_hit.wav b/build/games/RockDroid2/sfx/player_hit.wav similarity index 100% rename from build/games/Rockbot2/sfx/player_hit.wav rename to build/games/RockDroid2/sfx/player_hit.wav diff --git a/build/games/Rockbot2/sfx/player_jump.wav b/build/games/RockDroid2/sfx/player_jump.wav similarity index 100% rename from build/games/Rockbot2/sfx/player_jump.wav rename to build/games/RockDroid2/sfx/player_jump.wav diff --git a/build/games/Rockbot2/sfx/player_shot.wav b/build/games/RockDroid2/sfx/player_shot.wav similarity index 100% rename from build/games/Rockbot2/sfx/player_shot.wav rename to build/games/RockDroid2/sfx/player_shot.wav diff --git a/build/games/Rockbot2/sfx/point.wav b/build/games/RockDroid2/sfx/point.wav similarity index 100% rename from build/games/Rockbot2/sfx/point.wav rename to build/games/RockDroid2/sfx/point.wav diff --git a/build/games/Rockbot2/sfx/recharge.wav b/build/games/RockDroid2/sfx/recharge.wav similarity index 100% rename from build/games/Rockbot2/sfx/recharge.wav rename to build/games/RockDroid2/sfx/recharge.wav diff --git a/build/games/Rockbot2/sfx/shoot.wav b/build/games/RockDroid2/sfx/shoot.wav similarity index 100% rename from build/games/Rockbot2/sfx/shoot.wav rename to build/games/RockDroid2/sfx/shoot.wav diff --git a/build/games/Rockbot2/sfx/shoryuken_girl.wav b/build/games/RockDroid2/sfx/shoryuken_girl.wav similarity index 100% rename from build/games/Rockbot2/sfx/shoryuken_girl.wav rename to build/games/RockDroid2/sfx/shoryuken_girl.wav diff --git a/build/games/Rockbot2/sfx/shot_reflected.wav b/build/games/RockDroid2/sfx/shot_reflected.wav similarity index 100% rename from build/games/Rockbot2/sfx/shot_reflected.wav rename to build/games/RockDroid2/sfx/shot_reflected.wav diff --git a/build/games/Rockbot2/sfx/skull_castle_intro.wav b/build/games/RockDroid2/sfx/skull_castle_intro.wav similarity index 100% rename from build/games/Rockbot2/sfx/skull_castle_intro.wav rename to build/games/RockDroid2/sfx/skull_castle_intro.wav diff --git a/build/games/RockDroid2/sfx/stage_selected.wav b/build/games/RockDroid2/sfx/stage_selected.wav new file mode 100644 index 00000000..2173f6a9 Binary files /dev/null and b/build/games/RockDroid2/sfx/stage_selected.wav differ diff --git a/build/games/Rockbot2/sfx/teleport.wav b/build/games/RockDroid2/sfx/teleport.wav similarity index 100% rename from build/games/Rockbot2/sfx/teleport.wav rename to build/games/RockDroid2/sfx/teleport.wav diff --git a/build/games/RockDroid2/sfx/teleporter_activated.wav b/build/games/RockDroid2/sfx/teleporter_activated.wav new file mode 100644 index 00000000..12c114a1 Binary files /dev/null and b/build/games/RockDroid2/sfx/teleporter_activated.wav differ diff --git a/build/games/Rockbot2/sfx/thunder.wav b/build/games/RockDroid2/sfx/thunder.wav similarity index 100% rename from build/games/Rockbot2/sfx/thunder.wav rename to build/games/RockDroid2/sfx/thunder.wav diff --git a/build/games/RockDroid2/sfx/timed_bomb_count.wav b/build/games/RockDroid2/sfx/timed_bomb_count.wav new file mode 100644 index 00000000..b0800735 Binary files /dev/null and b/build/games/RockDroid2/sfx/timed_bomb_count.wav differ diff --git a/build/games/Rockbot2/sfx/train.wav b/build/games/RockDroid2/sfx/train.wav similarity index 100% rename from build/games/Rockbot2/sfx/train.wav rename to build/games/RockDroid2/sfx/train.wav diff --git a/build/games/Rockbot2/sfx/train_horn_2x.wav b/build/games/RockDroid2/sfx/train_horn_2x.wav similarity index 100% rename from build/games/Rockbot2/sfx/train_horn_2x.wav rename to build/games/RockDroid2/sfx/train_horn_2x.wav diff --git a/build/games/Rockbot2/sfx/water_enter.wav b/build/games/RockDroid2/sfx/water_enter.wav similarity index 100% rename from build/games/Rockbot2/sfx/water_enter.wav rename to build/games/RockDroid2/sfx/water_enter.wav diff --git a/build/games/Rockbot2/sfx/water_leave.wav b/build/games/RockDroid2/sfx/water_leave.wav similarity index 100% rename from build/games/Rockbot2/sfx/water_leave.wav rename to build/games/RockDroid2/sfx/water_leave.wav diff --git a/build/games/Rockbot2/sfx/wave.wav b/build/games/RockDroid2/sfx/wave.wav similarity index 100% rename from build/games/Rockbot2/sfx/wave.wav rename to build/games/RockDroid2/sfx/wave.wav diff --git a/build/games/Rockbot2/sfx/wind.wav b/build/games/RockDroid2/sfx/wind.wav similarity index 100% rename from build/games/Rockbot2/sfx/wind.wav rename to build/games/RockDroid2/sfx/wind.wav diff --git a/build/games/Rockbot2/stage_select_data_v301.dat b/build/games/RockDroid2/stage_select_data_v301.dat similarity index 100% rename from build/games/Rockbot2/stage_select_data_v301.dat rename to build/games/RockDroid2/stage_select_data_v301.dat diff --git a/build/games/RockDroid2/stages_v301.dat b/build/games/RockDroid2/stages_v301.dat new file mode 100644 index 00000000..f66fa44b Binary files /dev/null and b/build/games/RockDroid2/stages_v301.dat differ diff --git a/build/games/Rockbot1/anim_block_list.dat b/build/games/Rockbot1/anim_block_list.dat deleted file mode 100644 index 698fbccf..00000000 Binary files a/build/games/Rockbot1/anim_block_list.dat and /dev/null differ diff --git a/build/games/Rockbot1/boss_credits.txt b/build/games/Rockbot1/boss_credits.txt deleted file mode 100644 index 0a64df94..00000000 --- a/build/games/Rockbot1/boss_credits.txt +++ /dev/null @@ -1,56 +0,0 @@ -DDN.00 -MILONGA BOT -IURI FIEDORUK -IURI FIEDORUK -DDN.01 -APE BOT -IVAN FIEDORUK -IURI FIEDORUK -DDN.02 -DAISIE BOT -ARISMEIRE K. S. FIEDORUK -ARISMEIRE K. S. FIEDORUK -DDN.03 -SEAHORSE BOT -ARISMEIRE K. S. FIEDORUK -IURI FIEDORUK -DDN.04 -MUMMY BOT -ARISMEIRE K. S. FIEDORUK -ARISMEIRE K. S. FIEDORUK -DDN.05 -MAGE BOT -ARISMEIRE K. S. FIEDORUK -ARISMEIRE K. S. FIEDORUK -DDN.06 -DYNAMITE BOT -KOBOLD SACCOL -IURI FIEDORUK -DDN.07 -SPIKE BOT -IURI FIEDORUK -IURI FIEDORUK -DDN.08 -TECHNO BOT -CHIKAGO SACCOL -IURI FIEDORUK -DDS.01 -TECH CIRCLE -IURI FIEDORUK -IURI FIEDORUK -DDS.02 -SKULLPUNK -IURI FIEDORUK -IURI FIEDORUK -DDS.03 -IRON TANK -IURI FIEDORUK -IURI FIEDORUK -DDS.04 -WASPER -IURI FIEDORUK -IURI FIEDORUK -DDS.00 -DESTRIN TANK -IURI FIEDORUK -IURI FIEDORUK diff --git a/build/games/Rockbot1/data/game_projectile_list_v3.dat b/build/games/Rockbot1/data/game_projectile_list_v3.dat deleted file mode 100644 index 446b2400..00000000 Binary files a/build/games/Rockbot1/data/game_projectile_list_v3.dat and /dev/null differ diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_0_es.dat b/build/games/Rockbot1/dialogs/stage_dialogs_0_es.dat deleted file mode 100644 index edcb68f0..00000000 --- a/build/games/Rockbot1/dialogs/stage_dialogs_0_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[0] DLG #0 -START-STG[0] DLG #1 -START-STG[0] DLG #2 -START-STG[0] DLG #3 -START-STG[0] DLG #4 -START-STG[0] DLG #5 -START-STG[0] DLG P[1] 0 -START-STG[0] DLG P[1] 1 -START-STG[0] DLG P[1] 2 -START-STG[0] DLG P[1] 3 -START-STG[0] DLG P[1] 4 -START-STG[0] DLG P[1] 5 -START-STG[0] DLG P[2] 0 -START-STG[0] DLG P[2] 1 -START-STG[0] DLG P[2] 2 -START-STG[0] DLG P[2] 3 -START-STG[0] DLG P[2] 4 -START-STG[0] DLG P[2] 5 -START-STG[0] DLG P[3] 0 -START-STG[0] DLG P[3] 1 -START-STG[0] DLG P[3] 2 -START-STG[0] DLG P[3] 3 -START-STG[0] DLG P[3] 4 -START-STG[0] DLG P[3] 5 -START-STG[0] DLG P[4] 0 -START-STG[0] DLG P[4] 1 -START-STG[0] DLG P[4] 2 -START-STG[0] DLG P[4] 3 -START-STG[0] DLG P[4] 4 -START-STG[0] DLG P[4] 5 -BOSS STG[0] DLG #0 -BOSS STG[0] DLG #1 -BOSS STG[0] DLG #2 -BOSS STG[0] DLG #3 -BOSS STG[0] DLG #4 -BOSS STG[0] DLG #5 -BOSS STG[0] DLG P[1] 0 -BOSS STG[0] DLG P[1] 1 -BOSS STG[0] DLG P[1] 2 -BOSS STG[0] DLG P[1] 3 -BOSS STG[0] DLG P[1] 4 -BOSS STG[0] DLG P[1] 5 -BOSS STG[0] DLG P[2] 0 -BOSS STG[0] DLG P[2] 1 -BOSS STG[0] DLG P[2] 2 -BOSS STG[0] DLG P[2] 3 -BOSS STG[0] DLG P[2] 4 -BOSS STG[0] DLG P[2] 5 -BOSS STG[0] DLG P[3] 0 -BOSS STG[0] DLG P[3] 1 -BOSS STG[0] DLG P[3] 2 -BOSS STG[0] DLG P[3] 3 -BOSS STG[0] DLG P[3] 4 -BOSS STG[0] DLG P[3] 5 -BOSS STG[0] DLG P[4] 0 -BOSS STG[0] DLG P[4] 1 -BOSS STG[0] DLG P[4] 2 -BOSS STG[0] DLG P[4] 3 -BOSS STG[0] DLG P[4] 4 -BOSS STG[0] DLG P[4] 5 diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_0_fr.dat b/build/games/Rockbot1/dialogs/stage_dialogs_0_fr.dat deleted file mode 100644 index edcb68f0..00000000 --- a/build/games/Rockbot1/dialogs/stage_dialogs_0_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[0] DLG #0 -START-STG[0] DLG #1 -START-STG[0] DLG #2 -START-STG[0] DLG #3 -START-STG[0] DLG #4 -START-STG[0] DLG #5 -START-STG[0] DLG P[1] 0 -START-STG[0] DLG P[1] 1 -START-STG[0] DLG P[1] 2 -START-STG[0] DLG P[1] 3 -START-STG[0] DLG P[1] 4 -START-STG[0] DLG P[1] 5 -START-STG[0] DLG P[2] 0 -START-STG[0] DLG P[2] 1 -START-STG[0] DLG P[2] 2 -START-STG[0] DLG P[2] 3 -START-STG[0] DLG P[2] 4 -START-STG[0] DLG P[2] 5 -START-STG[0] DLG P[3] 0 -START-STG[0] DLG P[3] 1 -START-STG[0] DLG P[3] 2 -START-STG[0] DLG P[3] 3 -START-STG[0] DLG P[3] 4 -START-STG[0] DLG P[3] 5 -START-STG[0] DLG P[4] 0 -START-STG[0] DLG P[4] 1 -START-STG[0] DLG P[4] 2 -START-STG[0] DLG P[4] 3 -START-STG[0] DLG P[4] 4 -START-STG[0] DLG P[4] 5 -BOSS STG[0] DLG #0 -BOSS STG[0] DLG #1 -BOSS STG[0] DLG #2 -BOSS STG[0] DLG #3 -BOSS STG[0] DLG #4 -BOSS STG[0] DLG #5 -BOSS STG[0] DLG P[1] 0 -BOSS STG[0] DLG P[1] 1 -BOSS STG[0] DLG P[1] 2 -BOSS STG[0] DLG P[1] 3 -BOSS STG[0] DLG P[1] 4 -BOSS STG[0] DLG P[1] 5 -BOSS STG[0] DLG P[2] 0 -BOSS STG[0] DLG P[2] 1 -BOSS STG[0] DLG P[2] 2 -BOSS STG[0] DLG P[2] 3 -BOSS STG[0] DLG P[2] 4 -BOSS STG[0] DLG P[2] 5 -BOSS STG[0] DLG P[3] 0 -BOSS STG[0] DLG P[3] 1 -BOSS STG[0] DLG P[3] 2 -BOSS STG[0] DLG P[3] 3 -BOSS STG[0] DLG P[3] 4 -BOSS STG[0] DLG P[3] 5 -BOSS STG[0] DLG P[4] 0 -BOSS STG[0] DLG P[4] 1 -BOSS STG[0] DLG P[4] 2 -BOSS STG[0] DLG P[4] 3 -BOSS STG[0] DLG P[4] 4 -BOSS STG[0] DLG P[4] 5 diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_0_it.dat b/build/games/Rockbot1/dialogs/stage_dialogs_0_it.dat deleted file mode 100644 index edcb68f0..00000000 --- a/build/games/Rockbot1/dialogs/stage_dialogs_0_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[0] DLG #0 -START-STG[0] DLG #1 -START-STG[0] DLG #2 -START-STG[0] DLG #3 -START-STG[0] DLG #4 -START-STG[0] DLG #5 -START-STG[0] DLG P[1] 0 -START-STG[0] DLG P[1] 1 -START-STG[0] DLG P[1] 2 -START-STG[0] DLG P[1] 3 -START-STG[0] DLG P[1] 4 -START-STG[0] DLG P[1] 5 -START-STG[0] DLG P[2] 0 -START-STG[0] DLG P[2] 1 -START-STG[0] DLG P[2] 2 -START-STG[0] DLG P[2] 3 -START-STG[0] DLG P[2] 4 -START-STG[0] DLG P[2] 5 -START-STG[0] DLG P[3] 0 -START-STG[0] DLG P[3] 1 -START-STG[0] DLG P[3] 2 -START-STG[0] DLG P[3] 3 -START-STG[0] DLG P[3] 4 -START-STG[0] DLG P[3] 5 -START-STG[0] DLG P[4] 0 -START-STG[0] DLG P[4] 1 -START-STG[0] DLG P[4] 2 -START-STG[0] DLG P[4] 3 -START-STG[0] DLG P[4] 4 -START-STG[0] DLG P[4] 5 -BOSS STG[0] DLG #0 -BOSS STG[0] DLG #1 -BOSS STG[0] DLG #2 -BOSS STG[0] DLG #3 -BOSS STG[0] DLG #4 -BOSS STG[0] DLG #5 -BOSS STG[0] DLG P[1] 0 -BOSS STG[0] DLG P[1] 1 -BOSS STG[0] DLG P[1] 2 -BOSS STG[0] DLG P[1] 3 -BOSS STG[0] DLG P[1] 4 -BOSS STG[0] DLG P[1] 5 -BOSS STG[0] DLG P[2] 0 -BOSS STG[0] DLG P[2] 1 -BOSS STG[0] DLG P[2] 2 -BOSS STG[0] DLG P[2] 3 -BOSS STG[0] DLG P[2] 4 -BOSS STG[0] DLG P[2] 5 -BOSS STG[0] DLG P[3] 0 -BOSS STG[0] DLG P[3] 1 -BOSS STG[0] DLG P[3] 2 -BOSS STG[0] DLG P[3] 3 -BOSS STG[0] DLG P[3] 4 -BOSS STG[0] DLG P[3] 5 -BOSS STG[0] DLG P[4] 0 -BOSS STG[0] DLG P[4] 1 -BOSS STG[0] DLG P[4] 2 -BOSS STG[0] DLG P[4] 3 -BOSS STG[0] DLG P[4] 4 -BOSS STG[0] DLG P[4] 5 diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_0_pt.dat b/build/games/Rockbot1/dialogs/stage_dialogs_0_pt.dat deleted file mode 100644 index 634e7f12..00000000 --- a/build/games/Rockbot1/dialogs/stage_dialogs_0_pt.dat +++ /dev/null @@ -1,60 +0,0 @@ -KYOTO ESTÁ SOB ATAQUE! ÇÃ -DEVEMOS DESCOBRIR E -IMPEDIR QUEM FEZ ISTO. - - - -NÃO SE PREOCUPE, DR. -KANOTUS. IREI ACHAR O VILÃO -E O LEVAREI A JUSTIÇA. - - - -POSITIVO. -DEVLO OBLITERAR A -QUALQUER OPOSIÇÃO. - - - -FAREI MEU MELHOR DOUTOR. -TOMARA QUE NINGUÉM -SE MACHUQUE. - - - -ESSES IDIOTAS NÃO APRENDEM. -SERÁ QUE DESTA VEZ SABERÃO -SE RENDER? - - - - - - - - - - - - - - - - - - - - -BOSS STG[0] DLG P[2] 5 - - - - - - - - - - - - diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_10_pt.dat b/build/games/Rockbot1/dialogs/stage_dialogs_10_pt.dat deleted file mode 100644 index 6189648f..00000000 --- a/build/games/Rockbot1/dialogs/stage_dialogs_10_pt.dat +++ /dev/null @@ -1,60 +0,0 @@ -VOCÊ PODE TER PASSADO PELA -PRIMEIRA PARTE DO CASTELO, -MAS AGRA SERÁ ESMAGADO! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -BOSS STG[10] DLG P[2] 5 - - - - - -BOSS STG[10] DLG P[3] 5 - - - - - -BOSS STG[10] DLG P[4] 5 diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_2_pt.dat b/build/games/Rockbot1/dialogs/stage_dialogs_2_pt.dat deleted file mode 100644 index cb0c9b8b..00000000 --- a/build/games/Rockbot1/dialogs/stage_dialogs_2_pt.dat +++ /dev/null @@ -1,60 +0,0 @@ -VOCÊ É BRAVO, MAS -MEU PODER FLORAL IRÁ -COLOCAR VOCÊ PARA DORMIR. -SEU ROBÔ FEIO! -A MÃE NATUREZA SEMPRE IRÁ -PREVALECER À TECNOLOGIA. -SINTO MUITO, PRINCESA, -MAS NADA DE BEIJOS NO -PRIMEIRO ENCONTRO. - - - -EU NÃO DURMO OU RESPIRO, -SEUS PODERES SERÃO -DESPERDIÇADOS COMIGO. - - - -MAS AINDA NÃO ESTÁ NA -HORA DE MEU SONO DE BELEZA! -JÁ O SEU, VAI SER AGORA. - - - -SOU ALÉRGICA A FLORES, -ENTÃO É MELHOR VOCÊ -SIMPLESMENTE DESAPARECER. - - - -VOCÊ MACHUCOU MEUS -AMIGUINHOS. NÃO VOU -PERDOAR ISSO! -PARE DE FALAR E MORRA!! - - -NÃO GOSTO DE BATER EM -MENINAS. NÃO DÁ PARA VOCÊ -APENAS SE RENDER? - -BOSS STG[2] DLG P[1] 4 -BOSS STG[2] DLG P[1] 5 -ALERTA: USO DE FORÇA -AUTORIZADO EM CASO DE -ATOS HOSTIS. - - - -EU NÃO QUERIA! ELES ME -ME ATACARAM. QUEM SABE -PODEMOS SÓ CONVERSAR? - - - -NÃO ESTOU NEM AÍ, IRMÃ; -ELES DEVIAM SER ESPERTOS E -NÃO FICAR NO MEU CAMINHO. - - - diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_5.dat b/build/games/Rockbot1/dialogs/stage_dialogs_5.dat deleted file mode 100644 index eb7f0eaa..00000000 --- a/build/games/Rockbot1/dialogs/stage_dialogs_5.dat +++ /dev/null @@ -1,60 +0,0 @@ -GREETINGS AND SALUTATIONS. -I WONDER, CAN YOU FOLLOW -THE WHITE RABBIT? -REALLY? WELL, LOOK AT THE -TIME! HURRY OR HEADS -MAY ROLL! -WHAT? YOU'RE NOT MAKING -ANY SENSE, DUDE! - - - - -IT IS TOO LATE TO PLEDGE -INSANITY NOW. - - - - -YAY! I LOVE RABBITS! -THEY ARE SO FLUFFY! - - - - -WOW, YOUR MASTER REALLY DID -A NUMBER ON YOU, DIDN'T HE? -YOU'RE MAD AS A HATTER! - - - -WONDERFUL! I KNEW YOU COULD -DO IT. NOW LET ME SHOW YOU -SOME REAL MAGIC. -AREN'T YOU JUST LOVELY? - - -COME ON! YOUR MAGIC -AGAINST MY CANNON BLASTER. - - - - -I'LL TAKE MY SCIENCE OVER -YOUR MAGIC ANYDAY. - - - - -ARE YOU GOING TO PULL -A RABIT OUT OF YOUR -WEIRD POINTY HAT? - - - -I'M GETTING REALLY TIRED OF -YOUR CHILDISH TRICKS, DEAR. -TIME TO GROW UP. - - - diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_9.dat b/build/games/Rockbot1/dialogs/stage_dialogs_9.dat deleted file mode 100644 index 6cba146e..00000000 --- a/build/games/Rockbot1/dialogs/stage_dialogs_9.dat +++ /dev/null @@ -1,60 +0,0 @@ -WELCOME TO MY FORTRESS. -LET'S SEE WHAT YOU ARE -MADE OF, LITTLE ONE. - - - - - - - - - - - - - - - - - - - - - - - - - - - -THIS IS THE POWER DISC. -YOUR PLASMA IS NOTHING -COMPARED TO IT! - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/games/Rockbot1/dialogs/stage_dialogs_9_pt.dat b/build/games/Rockbot1/dialogs/stage_dialogs_9_pt.dat deleted file mode 100644 index e13374ce..00000000 --- a/build/games/Rockbot1/dialogs/stage_dialogs_9_pt.dat +++ /dev/null @@ -1,60 +0,0 @@ -BEM-VINDO AO MEU FORTE. -VAMOS VER DO QUE VOCÊ É -FEITO, PEQUENINO. - - - - - - - - - - - - - - - - - - - - - - - - - - - -ESTE É O POWER DISC. -SEU CANHÃO DE PLASMA É -NADA COMPARADO A ELE. - - - - - - - - - - - - - - -BOSS STG[9] DLG P[2] 5 - - - - - -BOSS STG[9] DLG P[3] 5 - - - - - -BOSS STG[9] DLG P[4] 5 diff --git a/build/games/Rockbot1/game_ai_list.dat b/build/games/Rockbot1/game_ai_list.dat deleted file mode 100644 index 51365317..00000000 Binary files a/build/games/Rockbot1/game_ai_list.dat and /dev/null differ diff --git a/build/games/Rockbot1/game_credits.txt b/build/games/Rockbot1/game_credits.txt deleted file mode 100644 index a6199111..00000000 --- a/build/games/Rockbot1/game_credits.txt +++ /dev/null @@ -1,47 +0,0 @@ -# ROCKBOT 1 GAME CREDITS # - -- MAIN PROGRAMMER - -IURI FIEDORUK - - -- CONCEPT ART - -ARIS KS FIEDORUK -IURI FIEDORUK -BOBERATU -NELSON ROSENBERG - - -- MARKETING - -MEGA CARTMAN - - -- PIXEL ART - -BOBERATU -@OPENGAMEART: -SURT -MOIKMELLAH -@DEVIANTART: -HFBN2 -CAPT. CHRIS AND KB -AVERAGE-HANZO -JOSEPHSERAPH -SHRAM -KAITHEHEDGEFOX10 -BONGWATER-BANDIT - - -- MUSIC - -SIMONE "JMD" BERNACCHIA - - -- SOUND EFFECTS - -BFXR.NET -IURI FIEDORUK - - -- INSPIRATION GAMES - -MEGAMAN -DUCK TALES -LITTLE NEMO -ROKKO CHAN -SHOVEL KNIGHT diff --git a/build/games/Rockbot1/game_enemy_list_3_1_2.dat b/build/games/Rockbot1/game_enemy_list_3_1_2.dat deleted file mode 100644 index 85fcdca4..00000000 Binary files a/build/games/Rockbot1/game_enemy_list_3_1_2.dat and /dev/null differ diff --git a/build/games/Rockbot1/game_object_list.dat b/build/games/Rockbot1/game_object_list.dat deleted file mode 100644 index 0e2700f7..00000000 Binary files a/build/games/Rockbot1/game_object_list.dat and /dev/null differ diff --git a/build/games/Rockbot1/game_properties_v301.dat b/build/games/Rockbot1/game_properties_v301.dat deleted file mode 100644 index aec033ee..00000000 Binary files a/build/games/Rockbot1/game_properties_v301.dat and /dev/null differ diff --git a/build/games/Rockbot1/images/1up_icons.png b/build/games/Rockbot1/images/1up_icons.png deleted file mode 100644 index 1bf10169..00000000 Binary files a/build/games/Rockbot1/images/1up_icons.png and /dev/null differ diff --git a/build/games/Rockbot1/images/animations/water_splash.png b/build/games/Rockbot1/images/animations/water_splash.png deleted file mode 100644 index ebf4c52c..00000000 Binary files a/build/games/Rockbot1/images/animations/water_splash.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/boss_intro/01.png b/build/games/Rockbot1/images/backgrounds/boss_intro/01.png deleted file mode 100644 index 59b5cfd8..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/boss_intro/01.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/boss_intro/02.png b/build/games/Rockbot1/images/backgrounds/boss_intro/02.png deleted file mode 100644 index a576aa57..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/boss_intro/02.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/boss_intro/03.png b/build/games/Rockbot1/images/backgrounds/boss_intro/03.png deleted file mode 100644 index 6385b6bf..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/boss_intro/03.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/boss_intro/04.png b/build/games/Rockbot1/images/backgrounds/boss_intro/04.png deleted file mode 100644 index cf1031ee..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/boss_intro/04.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/boss_intro/05.png b/build/games/Rockbot1/images/backgrounds/boss_intro/05.png deleted file mode 100644 index 4959c52c..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/boss_intro/05.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/boss_intro/06.png b/build/games/Rockbot1/images/backgrounds/boss_intro/06.png deleted file mode 100644 index 1ba8d4e9..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/boss_intro/06.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/boss_intro/07.png b/build/games/Rockbot1/images/backgrounds/boss_intro/07.png deleted file mode 100644 index e6576b74..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/boss_intro/07.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/boss_intro/08.png b/build/games/Rockbot1/images/backgrounds/boss_intro/08.png deleted file mode 100644 index edbc528c..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/boss_intro/08.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/boss_intro/09.png b/build/games/Rockbot1/images/backgrounds/boss_intro/09.png deleted file mode 100644 index ed22caef..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/boss_intro/09.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/castle.png b/build/games/Rockbot1/images/backgrounds/castle.png deleted file mode 100644 index 42e2a0b5..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/castle.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/castle_point.png b/build/games/Rockbot1/images/backgrounds/castle_point.png deleted file mode 100644 index 7b93539d..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/castle_point.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/castle_skull_point.png b/build/games/Rockbot1/images/backgrounds/castle_skull_point.png deleted file mode 100644 index 28d762fb..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/castle_skull_point.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/player_select_p1.png b/build/games/Rockbot1/images/backgrounds/player_select_p1.png deleted file mode 100644 index 11620e21..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/player_select_p1.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/player_select_p2.png b/build/games/Rockbot1/images/backgrounds/player_select_p2.png deleted file mode 100644 index 9f815ef0..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/player_select_p2.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/player_select_p3.png b/build/games/Rockbot1/images/backgrounds/player_select_p3.png deleted file mode 100644 index 28401681..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/player_select_p3.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/player_select_p4.png b/build/games/Rockbot1/images/backgrounds/player_select_p4.png deleted file mode 100644 index cd25b401..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/player_select_p4.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/stage_select.png b/build/games/Rockbot1/images/backgrounds/stage_select.png deleted file mode 100644 index 203036d3..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/stage_select.png and /dev/null differ diff --git a/build/games/Rockbot1/images/backgrounds/weapon_menu.png b/build/games/Rockbot1/images/backgrounds/weapon_menu.png deleted file mode 100644 index e53dfa8d..00000000 Binary files a/build/games/Rockbot1/images/backgrounds/weapon_menu.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/apebot.png b/build/games/Rockbot1/images/faces/apebot.png deleted file mode 100644 index 63ce429a..00000000 Binary files a/build/games/Rockbot1/images/faces/apebot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/background.png b/build/games/Rockbot1/images/faces/background.png deleted file mode 100644 index 2a03e1c3..00000000 Binary files a/build/games/Rockbot1/images/faces/background.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/background_dark.png b/build/games/Rockbot1/images/faces/background_dark.png deleted file mode 100644 index 57473d4e..00000000 Binary files a/build/games/Rockbot1/images/faces/background_dark.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/background_light.png b/build/games/Rockbot1/images/faces/background_light.png deleted file mode 100644 index 3be2e2d5..00000000 Binary files a/build/games/Rockbot1/images/faces/background_light.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/betabot.png b/build/games/Rockbot1/images/faces/betabot.png deleted file mode 100644 index d803fdb2..00000000 Binary files a/build/games/Rockbot1/images/faces/betabot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/betabot_eyes.png b/build/games/Rockbot1/images/faces/betabot_eyes.png deleted file mode 100644 index 3e29ac1f..00000000 Binary files a/build/games/Rockbot1/images/faces/betabot_eyes.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/big_eyes.png b/build/games/Rockbot1/images/faces/big_eyes.png deleted file mode 100644 index 85a81215..00000000 Binary files a/build/games/Rockbot1/images/faces/big_eyes.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/candybot.png b/build/games/Rockbot1/images/faces/candybot.png deleted file mode 100644 index ff70239d..00000000 Binary files a/build/games/Rockbot1/images/faces/candybot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/candybot_side.png b/build/games/Rockbot1/images/faces/candybot_side.png deleted file mode 100644 index 6c490b5a..00000000 Binary files a/build/games/Rockbot1/images/faces/candybot_side.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/canotus_face.png b/build/games/Rockbot1/images/faces/canotus_face.png deleted file mode 100644 index 7faefa78..00000000 Binary files a/build/games/Rockbot1/images/faces/canotus_face.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/dark_eyes.png b/build/games/Rockbot1/images/faces/dark_eyes.png deleted file mode 100644 index 725736e0..00000000 Binary files a/build/games/Rockbot1/images/faces/dark_eyes.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/destrin.png b/build/games/Rockbot1/images/faces/destrin.png deleted file mode 100644 index 27e9e2ea..00000000 Binary files a/build/games/Rockbot1/images/faces/destrin.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/dr_destrin.png b/build/games/Rockbot1/images/faces/dr_destrin.png deleted file mode 100644 index f91c5684..00000000 Binary files a/build/games/Rockbot1/images/faces/dr_destrin.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/dr_kanotus.png b/build/games/Rockbot1/images/faces/dr_kanotus.png deleted file mode 100644 index 44d430ea..00000000 Binary files a/build/games/Rockbot1/images/faces/dr_kanotus.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/dynamitebot.png b/build/games/Rockbot1/images/faces/dynamitebot.png deleted file mode 100644 index ccdd5e77..00000000 Binary files a/build/games/Rockbot1/images/faces/dynamitebot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/kittybot.png b/build/games/Rockbot1/images/faces/kittybot.png deleted file mode 100644 index dd2a0161..00000000 Binary files a/build/games/Rockbot1/images/faces/kittybot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/kittybot_side.png b/build/games/Rockbot1/images/faces/kittybot_side.png deleted file mode 100644 index 905a1b87..00000000 Binary files a/build/games/Rockbot1/images/faces/kittybot_side.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/magebot.png b/build/games/Rockbot1/images/faces/magebot.png deleted file mode 100644 index 3157cad1..00000000 Binary files a/build/games/Rockbot1/images/faces/magebot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/milonga.png b/build/games/Rockbot1/images/faces/milonga.png deleted file mode 100644 index 0fcd3903..00000000 Binary files a/build/games/Rockbot1/images/faces/milonga.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/mummybot.png b/build/games/Rockbot1/images/faces/mummybot.png deleted file mode 100644 index ba3bb6b2..00000000 Binary files a/build/games/Rockbot1/images/faces/mummybot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/p1_eyes.png b/build/games/Rockbot1/images/faces/p1_eyes.png deleted file mode 100644 index d8099c97..00000000 Binary files a/build/games/Rockbot1/images/faces/p1_eyes.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/p2_eyes.png b/build/games/Rockbot1/images/faces/p2_eyes.png deleted file mode 100644 index edc92a1e..00000000 Binary files a/build/games/Rockbot1/images/faces/p2_eyes.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/p3_eyes.png b/build/games/Rockbot1/images/faces/p3_eyes.png deleted file mode 100644 index 97bb67d4..00000000 Binary files a/build/games/Rockbot1/images/faces/p3_eyes.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/p4_eyes.png b/build/games/Rockbot1/images/faces/p4_eyes.png deleted file mode 100644 index 04c95a53..00000000 Binary files a/build/games/Rockbot1/images/faces/p4_eyes.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/player1.png b/build/games/Rockbot1/images/faces/player1.png deleted file mode 100644 index 9c03e379..00000000 Binary files a/build/games/Rockbot1/images/faces/player1.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/player2.png b/build/games/Rockbot1/images/faces/player2.png deleted file mode 100644 index 1bc7ceea..00000000 Binary files a/build/games/Rockbot1/images/faces/player2.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/player3.png b/build/games/Rockbot1/images/faces/player3.png deleted file mode 100644 index 2b5d1435..00000000 Binary files a/build/games/Rockbot1/images/faces/player3.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/player4.png b/build/games/Rockbot1/images/faces/player4.png deleted file mode 100644 index f21c072e..00000000 Binary files a/build/games/Rockbot1/images/faces/player4.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/rockbot.png b/build/games/Rockbot1/images/faces/rockbot.png deleted file mode 100644 index aa2f0b33..00000000 Binary files a/build/games/Rockbot1/images/faces/rockbot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/rockbot_eyes.png b/build/games/Rockbot1/images/faces/rockbot_eyes.png deleted file mode 100644 index 1119afa5..00000000 Binary files a/build/games/Rockbot1/images/faces/rockbot_eyes.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/rockbot_no_eyes.png b/build/games/Rockbot1/images/faces/rockbot_no_eyes.png deleted file mode 100644 index 24f6d8d4..00000000 Binary files a/build/games/Rockbot1/images/faces/rockbot_no_eyes.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/rockbot_sad.png b/build/games/Rockbot1/images/faces/rockbot_sad.png deleted file mode 100644 index 3cb84432..00000000 Binary files a/build/games/Rockbot1/images/faces/rockbot_sad.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/seahorsebot.png b/build/games/Rockbot1/images/faces/seahorsebot.png deleted file mode 100644 index 873eeeae..00000000 Binary files a/build/games/Rockbot1/images/faces/seahorsebot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/spikebot.png b/build/games/Rockbot1/images/faces/spikebot.png deleted file mode 100644 index 5315c893..00000000 Binary files a/build/games/Rockbot1/images/faces/spikebot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/technobot.png b/build/games/Rockbot1/images/faces/technobot.png deleted file mode 100644 index fd7c885a..00000000 Binary files a/build/games/Rockbot1/images/faces/technobot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/faces/yellow_eyes.png b/build/games/Rockbot1/images/faces/yellow_eyes.png deleted file mode 100644 index 68837507..00000000 Binary files a/build/games/Rockbot1/images/faces/yellow_eyes.png and /dev/null differ diff --git a/build/games/Rockbot1/images/icons.png b/build/games/Rockbot1/images/icons.png deleted file mode 100644 index f6fb0d0e..00000000 Binary files a/build/games/Rockbot1/images/icons.png and /dev/null differ diff --git a/build/games/Rockbot1/images/icons_small.png b/build/games/Rockbot1/images/icons_small.png deleted file mode 100644 index d04b67a3..00000000 Binary files a/build/games/Rockbot1/images/icons_small.png and /dev/null differ diff --git a/build/games/Rockbot1/images/logo.png b/build/games/Rockbot1/images/logo.png deleted file mode 100644 index 6e7dc062..00000000 Binary files a/build/games/Rockbot1/images/logo.png and /dev/null differ diff --git a/build/games/Rockbot1/images/logo.xcf b/build/games/Rockbot1/images/logo.xcf deleted file mode 100644 index ec4067bf..00000000 Binary files a/build/games/Rockbot1/images/logo.xcf and /dev/null differ diff --git a/build/games/Rockbot1/images/map_backgrounds/dark_castle.png b/build/games/Rockbot1/images/map_backgrounds/dark_castle.png deleted file mode 100644 index 960afb27..00000000 Binary files a/build/games/Rockbot1/images/map_backgrounds/dark_castle.png and /dev/null differ diff --git a/build/games/Rockbot1/images/map_backgrounds/egypt.png b/build/games/Rockbot1/images/map_backgrounds/egypt.png deleted file mode 100644 index 5905e66c..00000000 Binary files a/build/games/Rockbot1/images/map_backgrounds/egypt.png and /dev/null differ diff --git a/build/games/Rockbot1/images/map_backgrounds/egypt_bricks.png b/build/games/Rockbot1/images/map_backgrounds/egypt_bricks.png deleted file mode 100644 index af94d33a..00000000 Binary files a/build/games/Rockbot1/images/map_backgrounds/egypt_bricks.png and /dev/null differ diff --git a/build/games/Rockbot1/images/map_backgrounds/green_hills_clouds.png b/build/games/Rockbot1/images/map_backgrounds/green_hills_clouds.png deleted file mode 100644 index ad80531a..00000000 Binary files a/build/games/Rockbot1/images/map_backgrounds/green_hills_clouds.png and /dev/null differ diff --git a/build/games/Rockbot1/images/map_backgrounds/mine.png b/build/games/Rockbot1/images/map_backgrounds/mine.png deleted file mode 100644 index 183d726d..00000000 Binary files a/build/games/Rockbot1/images/map_backgrounds/mine.png and /dev/null differ diff --git a/build/games/Rockbot1/images/map_backgrounds/tiles_mosaic.png b/build/games/Rockbot1/images/map_backgrounds/tiles_mosaic.png deleted file mode 100644 index 13c632d3..00000000 Binary files a/build/games/Rockbot1/images/map_backgrounds/tiles_mosaic.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/betabot.png b/build/games/Rockbot1/images/scenes/betabot.png deleted file mode 100644 index e9b39e1b..00000000 Binary files a/build/games/Rockbot1/images/scenes/betabot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/dr_destrin.png b/build/games/Rockbot1/images/scenes/dr_destrin.png deleted file mode 100644 index 90055c20..00000000 Binary files a/build/games/Rockbot1/images/scenes/dr_destrin.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/kanotus.png b/build/games/Rockbot1/images/scenes/kanotus.png deleted file mode 100644 index e244756b..00000000 Binary files a/build/games/Rockbot1/images/scenes/kanotus.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/lab_ending.png b/build/games/Rockbot1/images/scenes/lab_ending.png deleted file mode 100644 index 2fc27cfd..00000000 Binary files a/build/games/Rockbot1/images/scenes/lab_ending.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/lab_intro1.png b/build/games/Rockbot1/images/scenes/lab_intro1.png deleted file mode 100644 index b5eef6a8..00000000 Binary files a/build/games/Rockbot1/images/scenes/lab_intro1.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/night.png b/build/games/Rockbot1/images/scenes/night.png deleted file mode 100644 index 4c7f6a5f..00000000 Binary files a/build/games/Rockbot1/images/scenes/night.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/presents.png b/build/games/Rockbot1/images/scenes/presents.png deleted file mode 100644 index 80c85f2e..00000000 Binary files a/build/games/Rockbot1/images/scenes/presents.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/rockbot.png b/build/games/Rockbot1/images/scenes/rockbot.png deleted file mode 100644 index 76f0ac1f..00000000 Binary files a/build/games/Rockbot1/images/scenes/rockbot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/rockbot_full_sleep.png b/build/games/Rockbot1/images/scenes/rockbot_full_sleep.png deleted file mode 100644 index 106fc329..00000000 Binary files a/build/games/Rockbot1/images/scenes/rockbot_full_sleep.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/rockbot_half_sleep.png b/build/games/Rockbot1/images/scenes/rockbot_half_sleep.png deleted file mode 100644 index ab559b46..00000000 Binary files a/build/games/Rockbot1/images/scenes/rockbot_half_sleep.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/rockbot_left.png b/build/games/Rockbot1/images/scenes/rockbot_left.png deleted file mode 100644 index f66816bf..00000000 Binary files a/build/games/Rockbot1/images/scenes/rockbot_left.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/skull_castle.png b/build/games/Rockbot1/images/scenes/skull_castle.png deleted file mode 100644 index 17ad01a4..00000000 Binary files a/build/games/Rockbot1/images/scenes/skull_castle.png and /dev/null differ diff --git a/build/games/Rockbot1/images/scenes/twilight.png b/build/games/Rockbot1/images/scenes/twilight.png deleted file mode 100644 index 95806e75..00000000 Binary files a/build/games/Rockbot1/images/scenes/twilight.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/destrin.png b/build/games/Rockbot1/images/sprites/destrin.png deleted file mode 100644 index a37a8a1a..00000000 Binary files a/build/games/Rockbot1/images/sprites/destrin.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/classic_metool.png b/build/games/Rockbot1/images/sprites/enemies/classic_metool.png deleted file mode 100644 index d5d4b560..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/classic_metool.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/daisiebot.png b/build/games/Rockbot1/images/sprites/enemies/daisiebot.png deleted file mode 100644 index 1d271c4a..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/daisiebot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/destrin_tank.png b/build/games/Rockbot1/images/sprites/enemies/destrin_tank.png deleted file mode 100644 index 70125846..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/destrin_tank.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/flower_metool.png b/build/games/Rockbot1/images/sprites/enemies/flower_metool.png deleted file mode 100644 index f6669ce5..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/flower_metool.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/giant_fly.png b/build/games/Rockbot1/images/sprites/enemies/giant_fly.png deleted file mode 100644 index aed7966e..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/giant_fly.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/magebot.png b/build/games/Rockbot1/images/sprites/enemies/magebot.png deleted file mode 100644 index 7abd9d22..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/magebot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/metal_metool.png b/build/games/Rockbot1/images/sprites/enemies/metal_metool.png deleted file mode 100644 index 42f5f954..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/metal_metool.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/milonga.png b/build/games/Rockbot1/images/sprites/enemies/milonga.png deleted file mode 100644 index 67e18bbb..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/milonga.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/rock_metool.png b/build/games/Rockbot1/images/sprites/enemies/rock_metool.png deleted file mode 100644 index b5c61df3..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/rock_metool.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/scorpion.png b/build/games/Rockbot1/images/sprites/enemies/scorpion.png deleted file mode 100644 index 0f86ae04..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/scorpion.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/shield.png b/build/games/Rockbot1/images/sprites/enemies/shield.png deleted file mode 100644 index 096c4bf4..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/shield.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/spikebot.png b/build/games/Rockbot1/images/sprites/enemies/spikebot.png deleted file mode 100644 index bd9195dd..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/spikebot.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/enemies/wood_shield.png b/build/games/Rockbot1/images/sprites/enemies/wood_shield.png deleted file mode 100644 index 523d9cf4..00000000 Binary files a/build/games/Rockbot1/images/sprites/enemies/wood_shield.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/1up.png b/build/games/Rockbot1/images/sprites/objects/1up.png deleted file mode 100644 index c784d419..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/1up.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/door_3.png b/build/games/Rockbot1/images/sprites/objects/door_3.png deleted file mode 100644 index 8f98d6d8..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/door_3.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/door_4.png b/build/games/Rockbot1/images/sprites/objects/door_4.png deleted file mode 100644 index e6c16aaa..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/door_4.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/energy_pill_big.png b/build/games/Rockbot1/images/sprites/objects/energy_pill_big.png deleted file mode 100644 index 2f3358e4..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/energy_pill_big.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/energy_pill_small.png b/build/games/Rockbot1/images/sprites/objects/energy_pill_small.png deleted file mode 100644 index e4d097f6..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/energy_pill_small.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/energy_tank.png b/build/games/Rockbot1/images/sprites/objects/energy_tank.png deleted file mode 100644 index f6d09266..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/energy_tank.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/item_jet.png b/build/games/Rockbot1/images/sprites/objects/item_jet.png deleted file mode 100644 index 14b77f16..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/item_jet.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/item_jump.png b/build/games/Rockbot1/images/sprites/objects/item_jump.png deleted file mode 100644 index a810039a..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/item_jump.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/special_tank.png b/build/games/Rockbot1/images/sprites/objects/special_tank.png deleted file mode 100644 index 46bffb22..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/special_tank.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/teleport_base.png b/build/games/Rockbot1/images/sprites/objects/teleport_base.png deleted file mode 100644 index ac51fe71..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/teleport_base.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/weapons_pill_big.png b/build/games/Rockbot1/images/sprites/objects/weapons_pill_big.png deleted file mode 100644 index 49fdfc11..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/weapons_pill_big.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/weapons_pill_small.png b/build/games/Rockbot1/images/sprites/objects/weapons_pill_small.png deleted file mode 100644 index d015917a..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/weapons_pill_small.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/objects/weapons_tank.png b/build/games/Rockbot1/images/sprites/objects/weapons_tank.png deleted file mode 100644 index aae41f87..00000000 Binary files a/build/games/Rockbot1/images/sprites/objects/weapons_tank.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/p1.png b/build/games/Rockbot1/images/sprites/p1.png deleted file mode 100644 index 92f842d8..00000000 Binary files a/build/games/Rockbot1/images/sprites/p1.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/p2.png b/build/games/Rockbot1/images/sprites/p2.png deleted file mode 100644 index 61cfac2b..00000000 Binary files a/build/games/Rockbot1/images/sprites/p2.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/p3.png b/build/games/Rockbot1/images/sprites/p3.png deleted file mode 100644 index c882f616..00000000 Binary files a/build/games/Rockbot1/images/sprites/p3.png and /dev/null differ diff --git a/build/games/Rockbot1/images/sprites/p4.png b/build/games/Rockbot1/images/sprites/p4.png deleted file mode 100644 index 67e80f2a..00000000 Binary files a/build/games/Rockbot1/images/sprites/p4.png and /dev/null differ diff --git a/build/games/Rockbot1/images/tilesets/anim/water_border_pipe_left.png b/build/games/Rockbot1/images/tilesets/anim/water_border_pipe_left.png deleted file mode 100644 index 20ffbe48..00000000 Binary files a/build/games/Rockbot1/images/tilesets/anim/water_border_pipe_left.png and /dev/null differ diff --git a/build/games/Rockbot1/images/tilesets/anim/water_border_pipe_right.png b/build/games/Rockbot1/images/tilesets/anim/water_border_pipe_right.png deleted file mode 100644 index f505fd6f..00000000 Binary files a/build/games/Rockbot1/images/tilesets/anim/water_border_pipe_right.png and /dev/null differ diff --git a/build/games/Rockbot1/images/tilesets/default.png b/build/games/Rockbot1/images/tilesets/default.png deleted file mode 100644 index 19a92256..00000000 Binary files a/build/games/Rockbot1/images/tilesets/default.png and /dev/null differ diff --git a/build/games/Rockbot1/images/tilesets/water_splash.png b/build/games/Rockbot1/images/tilesets/water_splash.png deleted file mode 100644 index 80396e4e..00000000 Binary files a/build/games/Rockbot1/images/tilesets/water_splash.png and /dev/null differ diff --git a/build/games/Rockbot1/map_npc_data.dat b/build/games/Rockbot1/map_npc_data.dat deleted file mode 100644 index 841626a4..00000000 Binary files a/build/games/Rockbot1/map_npc_data.dat and /dev/null differ diff --git a/build/games/Rockbot1/map_object_data.dat b/build/games/Rockbot1/map_object_data.dat deleted file mode 100644 index 087c1692..00000000 Binary files a/build/games/Rockbot1/map_object_data.dat and /dev/null differ diff --git a/build/games/Rockbot1/maps_v2.dat b/build/games/Rockbot1/maps_v2.dat deleted file mode 100644 index 6ecc49bc..00000000 Binary files a/build/games/Rockbot1/maps_v2.dat and /dev/null differ diff --git a/build/games/Rockbot1/player_list_v3_1_1.dat b/build/games/Rockbot1/player_list_v3_1_1.dat deleted file mode 100644 index ecca6aaa..00000000 Binary files a/build/games/Rockbot1/player_list_v3_1_1.dat and /dev/null differ diff --git a/build/games/Rockbot1/scenes/scenes_clear_area.dat b/build/games/Rockbot1/scenes/scenes_clear_area.dat deleted file mode 100644 index b1033e67..00000000 Binary files a/build/games/Rockbot1/scenes/scenes_clear_area.dat and /dev/null differ diff --git a/build/games/Rockbot1/scenes/scenes_list.dat b/build/games/Rockbot1/scenes/scenes_list.dat deleted file mode 100644 index b9119121..00000000 Binary files a/build/games/Rockbot1/scenes/scenes_list.dat and /dev/null differ diff --git a/build/games/Rockbot1/scenes/scenes_play_music.dat b/build/games/Rockbot1/scenes/scenes_play_music.dat deleted file mode 100644 index 179148bb..00000000 Binary files a/build/games/Rockbot1/scenes/scenes_play_music.dat and /dev/null differ diff --git a/build/games/Rockbot1/scenes/scenes_show_image.dat b/build/games/Rockbot1/scenes/scenes_show_image.dat deleted file mode 100644 index e36a97ab..00000000 Binary files a/build/games/Rockbot1/scenes/scenes_show_image.dat and /dev/null differ diff --git a/build/games/Rockbot1/scenes/scenes_show_text.dat b/build/games/Rockbot1/scenes/scenes_show_text.dat deleted file mode 100644 index 0d493c06..00000000 Binary files a/build/games/Rockbot1/scenes/scenes_show_text.dat and /dev/null differ diff --git a/build/games/Rockbot1/scenes/text/en/0.txt b/build/games/Rockbot1/scenes/text/en/0.txt deleted file mode 100644 index 4eab2b51..00000000 --- a/build/games/Rockbot1/scenes/text/en/0.txt +++ /dev/null @@ -1,6 +0,0 @@ -20XX A.D. -KYOTO CITY, JAPAN. - - - - diff --git a/build/games/Rockbot1/scenes/text/en/1.txt b/build/games/Rockbot1/scenes/text/en/1.txt deleted file mode 100644 index a7d6f060..00000000 --- a/build/games/Rockbot1/scenes/text/en/1.txt +++ /dev/null @@ -1,6 +0,0 @@ -STORM RAGES JAPAN'S CAPITAL. -HAVOK ROBOT FORCES ATTACK -HUMANS, CAUSING FEAR IN OTHER -PLACE THAT THE MACHINE'S -REBELLION COULD SPREAD FOR -THE ENTIRE WORLD. diff --git a/build/games/Rockbot1/scenes/text/en/11.txt b/build/games/Rockbot1/scenes/text/en/11.txt deleted file mode 100644 index c32ef1ce..00000000 --- a/build/games/Rockbot1/scenes/text/en/11.txt +++ /dev/null @@ -1,6 +0,0 @@ -UNABLE TO FIGHT THE ENEMY, -SECURITY FORCES CALL FOR HELP. - -A GROUP OF SCIENTISTS GET -TOGETHER TO CREATE A DEFENSE -SYSTEM TO PROTECT THE CITY. diff --git a/build/games/Rockbot1/scenes/text/en/12.txt b/build/games/Rockbot1/scenes/text/en/12.txt deleted file mode 100644 index aa29e8fb..00000000 --- a/build/games/Rockbot1/scenes/text/en/12.txt +++ /dev/null @@ -1,6 +0,0 @@ -A YOUNG PROFESSOR CALLED -DR. KANOTUS, CALLS FOR THE -CREATION OF A POLICE FORCE -MADE OF STEEL AS THE ENEMY. - - diff --git a/build/games/Rockbot1/scenes/text/en/13.txt b/build/games/Rockbot1/scenes/text/en/13.txt deleted file mode 100644 index 95aa22ed..00000000 --- a/build/games/Rockbot1/scenes/text/en/13.txt +++ /dev/null @@ -1,6 +0,0 @@ -AFTER A SUCCESSFUL FIRST -CREATION, CALLED BETABOT, -DR. KANOTUS IMPROVES UPON -THE INITIAL PROJECT AND CREATE -A SECOND ROBOT, THIS TIME -CALLED ROCKBOT. diff --git a/build/games/Rockbot1/scenes/text/en/2.txt b/build/games/Rockbot1/scenes/text/en/2.txt deleted file mode 100644 index a0883db1..00000000 --- a/build/games/Rockbot1/scenes/text/en/2.txt +++ /dev/null @@ -1,6 +0,0 @@ -IN KYOTO, SCIENTISTS AND -SECURITY FORCES WORK TO -PREVENT THE DANGER WITHOUT -REST. - -UNTIL ONE NIGHT... diff --git a/build/games/Rockbot1/scenes/text/en/3.txt b/build/games/Rockbot1/scenes/text/en/3.txt deleted file mode 100644 index baeab00d..00000000 --- a/build/games/Rockbot1/scenes/text/en/3.txt +++ /dev/null @@ -1,6 +0,0 @@ -BATTLE REACHES THE CITY -LIKE A TSUNAMI! -AN HORDE OF EVIL ROBOTS -WAGE WAR AND BRING CHAOS. - - diff --git a/build/games/Rockbot1/scenes/text/en/4.txt b/build/games/Rockbot1/scenes/text/en/4.txt deleted file mode 100644 index ebb2b16f..00000000 --- a/build/games/Rockbot1/scenes/text/en/4.txt +++ /dev/null @@ -1,6 +0,0 @@ -DESTRIN: THIS CAN'T BE! -YOU ARE NOT SUPPOSED TO BE -SO STRONG! YOU ARE A MONSTER! -BETA: YOU SPEAK NONSENSE. -I AM AS STRONG AS NEEDED -TO PROTECT THE ONES YOU HURT. diff --git a/build/games/Rockbot1/scenes/text/en/5.txt b/build/games/Rockbot1/scenes/text/en/5.txt deleted file mode 100644 index 5f830c37..00000000 --- a/build/games/Rockbot1/scenes/text/en/5.txt +++ /dev/null @@ -1,6 +0,0 @@ -BETA: I WILL END THIS NOW. -MAKE YOUR PRAYERS AND GET -READY TO BE DELETED. -DESTRIN: WHAT?! NO, YOU CAN'T -YOUR PROGRAMMING WON'T -LET YOU HURT HUMANS! diff --git a/build/games/Rockbot1/scenes/text/en/6.txt b/build/games/Rockbot1/scenes/text/en/6.txt deleted file mode 100644 index 11ea6815..00000000 --- a/build/games/Rockbot1/scenes/text/en/6.txt +++ /dev/null @@ -1,6 +0,0 @@ -YOU ARE STRONGLY MISTAKEN -IF YOU DO BELIEVE I AM A -MERE PROGRAM RUNNING ON -A METAL SHELL. - -NOW, BEGONE FOREVER! diff --git a/build/games/Rockbot1/scenes/text/en/8.txt b/build/games/Rockbot1/scenes/text/en/8.txt deleted file mode 100644 index 67de317d..00000000 --- a/build/games/Rockbot1/scenes/text/en/8.txt +++ /dev/null @@ -1,6 +0,0 @@ -ROCK: IF YOU HURT HIM, IT CAN -START A WAR BETWEEN ROBOTS AND -HUMANS. I CAN'T ALLOW THAT. - -I AM PROTECTTING NOT HIM, -BUT YOU, MY BROTHER. diff --git a/build/games/Rockbot1/scenes/text/pt/0.txt b/build/games/Rockbot1/scenes/text/pt/0.txt deleted file mode 100644 index 557c4028..00000000 --- a/build/games/Rockbot1/scenes/text/pt/0.txt +++ /dev/null @@ -1,6 +0,0 @@ -20XX A.D. -CIDADE DE KYOTO, JAPÃO. - - - - diff --git a/build/games/Rockbot1/scenes/text/pt/1.txt b/build/games/Rockbot1/scenes/text/pt/1.txt deleted file mode 100644 index a93e6b7c..00000000 --- a/build/games/Rockbot1/scenes/text/pt/1.txt +++ /dev/null @@ -1,6 +0,0 @@ -A CAPITAL JAPONESA É ATINGIDA. -FORÇAS CAÓTICAS DE ROBÔS -ATACAM HUMANOS, CAUSANDO TEMOR -EM OUTRAS CIDADES QUE ESTA -REBELIÃO SE ESPALHE PELO -MUNDO TODO. diff --git a/build/games/Rockbot1/scenes/text/pt/11.txt b/build/games/Rockbot1/scenes/text/pt/11.txt deleted file mode 100644 index a575ddc8..00000000 --- a/build/games/Rockbot1/scenes/text/pt/11.txt +++ /dev/null @@ -1,6 +0,0 @@ -INCAPAZ DE COMBATER O INIMIGO, -O EXÉRCITO PEDE AJUDA. - -CIENTISTAS FORMAM UM GRUPO -A FIM DE CRIAR UM SISTEMA DE -DEFESA PARA A CIDADE. diff --git a/build/games/Rockbot1/scenes/text/pt/12.txt b/build/games/Rockbot1/scenes/text/pt/12.txt deleted file mode 100644 index 0291b3a2..00000000 --- a/build/games/Rockbot1/scenes/text/pt/12.txt +++ /dev/null @@ -1,6 +0,0 @@ -UM JOVEM PROFESSOR, CHAMADO -DR. KANOTUS, PEDE QUE SEJA -CRIADA UMA FORÇA POLICIAL -COMPOSTA DE FERRO E AÇO, -TAL COMO OS INIMIGOS QUE -ENFRENTAM. diff --git a/build/games/Rockbot1/scenes/text/pt/13.txt b/build/games/Rockbot1/scenes/text/pt/13.txt deleted file mode 100644 index c4feb069..00000000 --- a/build/games/Rockbot1/scenes/text/pt/13.txt +++ /dev/null @@ -1,6 +0,0 @@ -APÓS CRIAR UM PRIMEIRO -ROBÔ, CHAMADO BETABOT, -DR. KANOTUS MELHORA O -PROJETO INICIAL E CRIA UM -SEGUNDO ROBÔ, DESTA VEZ -CHAMADO ROCKBOT. diff --git a/build/games/Rockbot1/scenes/text/pt/2.txt b/build/games/Rockbot1/scenes/text/pt/2.txt deleted file mode 100644 index b4b0269a..00000000 --- a/build/games/Rockbot1/scenes/text/pt/2.txt +++ /dev/null @@ -1,6 +0,0 @@ -NA CIDADE DE KYOTO, CIENTISTAS -E FORÇAS DE SEGURANÇA USEM-SE -EM TRABALHO SEM DESCANÇO PARA -PREVENIR O PERIGO IMINENTE. - -ATÉ QUE UMA FATÍDICA NOITE... diff --git a/build/games/Rockbot1/scenes/text/pt/3.txt b/build/games/Rockbot1/scenes/text/pt/3.txt deleted file mode 100644 index 34aad9a0..00000000 --- a/build/games/Rockbot1/scenes/text/pt/3.txt +++ /dev/null @@ -1,6 +0,0 @@ -BATALHAS ATINGEM A CIDADE -COMO UM MAREMOTO! -UMA HORDA DE ROBÔS MALVADOS -TRAZEM GUERRA E CAOS. - - diff --git a/build/games/Rockbot1/scenes/text/pt/4.txt b/build/games/Rockbot1/scenes/text/pt/4.txt deleted file mode 100644 index aafbf4f1..00000000 --- a/build/games/Rockbot1/scenes/text/pt/4.txt +++ /dev/null @@ -1,6 +0,0 @@ -DESTRIN: NÃO PODE SER! -VOCÊ NÃO DEVIA SER TÃO FORTE! -VOCÊ É UM MONSTRO! -BETA: VOCÊ FALA BOBAGENS. -SOU FORTE QUANTO PRECISAR PARA -PROTEGER QUEM VOCÊ ATACA. diff --git a/build/games/Rockbot1/scenes/text/pt/5.txt b/build/games/Rockbot1/scenes/text/pt/5.txt deleted file mode 100644 index a15669cb..00000000 --- a/build/games/Rockbot1/scenes/text/pt/5.txt +++ /dev/null @@ -1,6 +0,0 @@ -BETA: ACABAREI COM ISTO AGORA. -FAÇA SUAS PRECES E PREPARE-SE -PARA SER DELETADO. -DESTRIN: O QUÊ?! NÃO, O SEU -PROGRAMA DEVERIA IMPEDÍ-LO DE -MACHUCAR QUALQUER HUMANO! diff --git a/build/games/Rockbot1/scenes/text/pt/6.txt b/build/games/Rockbot1/scenes/text/pt/6.txt deleted file mode 100644 index 1e433e4d..00000000 --- a/build/games/Rockbot1/scenes/text/pt/6.txt +++ /dev/null @@ -1,6 +0,0 @@ -VOCÊ ESTÁ MUITO ENGANADO, -SE PENSA QUE EU SOU APENAS -UM PROGRAMA EM UMA -CARCAÇA DE METAL. - -AGORA... DESAPAREÇA! diff --git a/build/games/Rockbot1/stages_v301.dat b/build/games/Rockbot1/stages_v301.dat deleted file mode 100644 index d3f43541..00000000 Binary files a/build/games/Rockbot1/stages_v301.dat and /dev/null differ diff --git a/build/games/Rockbot2/anim_block_list.dat b/build/games/Rockbot2/anim_block_list.dat deleted file mode 100644 index a6614fed..00000000 Binary files a/build/games/Rockbot2/anim_block_list.dat and /dev/null differ diff --git a/build/games/Rockbot2/data/game_projectile_list_v3.dat b/build/games/Rockbot2/data/game_projectile_list_v3.dat deleted file mode 100644 index a8390ed9..00000000 Binary files a/build/games/Rockbot2/data/game_projectile_list_v3.dat and /dev/null differ diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_0_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_0_es.dat deleted file mode 100644 index edcb68f0..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_0_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[0] DLG #0 -START-STG[0] DLG #1 -START-STG[0] DLG #2 -START-STG[0] DLG #3 -START-STG[0] DLG #4 -START-STG[0] DLG #5 -START-STG[0] DLG P[1] 0 -START-STG[0] DLG P[1] 1 -START-STG[0] DLG P[1] 2 -START-STG[0] DLG P[1] 3 -START-STG[0] DLG P[1] 4 -START-STG[0] DLG P[1] 5 -START-STG[0] DLG P[2] 0 -START-STG[0] DLG P[2] 1 -START-STG[0] DLG P[2] 2 -START-STG[0] DLG P[2] 3 -START-STG[0] DLG P[2] 4 -START-STG[0] DLG P[2] 5 -START-STG[0] DLG P[3] 0 -START-STG[0] DLG P[3] 1 -START-STG[0] DLG P[3] 2 -START-STG[0] DLG P[3] 3 -START-STG[0] DLG P[3] 4 -START-STG[0] DLG P[3] 5 -START-STG[0] DLG P[4] 0 -START-STG[0] DLG P[4] 1 -START-STG[0] DLG P[4] 2 -START-STG[0] DLG P[4] 3 -START-STG[0] DLG P[4] 4 -START-STG[0] DLG P[4] 5 -BOSS STG[0] DLG #0 -BOSS STG[0] DLG #1 -BOSS STG[0] DLG #2 -BOSS STG[0] DLG #3 -BOSS STG[0] DLG #4 -BOSS STG[0] DLG #5 -BOSS STG[0] DLG P[1] 0 -BOSS STG[0] DLG P[1] 1 -BOSS STG[0] DLG P[1] 2 -BOSS STG[0] DLG P[1] 3 -BOSS STG[0] DLG P[1] 4 -BOSS STG[0] DLG P[1] 5 -BOSS STG[0] DLG P[2] 0 -BOSS STG[0] DLG P[2] 1 -BOSS STG[0] DLG P[2] 2 -BOSS STG[0] DLG P[2] 3 -BOSS STG[0] DLG P[2] 4 -BOSS STG[0] DLG P[2] 5 -BOSS STG[0] DLG P[3] 0 -BOSS STG[0] DLG P[3] 1 -BOSS STG[0] DLG P[3] 2 -BOSS STG[0] DLG P[3] 3 -BOSS STG[0] DLG P[3] 4 -BOSS STG[0] DLG P[3] 5 -BOSS STG[0] DLG P[4] 0 -BOSS STG[0] DLG P[4] 1 -BOSS STG[0] DLG P[4] 2 -BOSS STG[0] DLG P[4] 3 -BOSS STG[0] DLG P[4] 4 -BOSS STG[0] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_0_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_0_fr.dat deleted file mode 100644 index edcb68f0..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_0_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[0] DLG #0 -START-STG[0] DLG #1 -START-STG[0] DLG #2 -START-STG[0] DLG #3 -START-STG[0] DLG #4 -START-STG[0] DLG #5 -START-STG[0] DLG P[1] 0 -START-STG[0] DLG P[1] 1 -START-STG[0] DLG P[1] 2 -START-STG[0] DLG P[1] 3 -START-STG[0] DLG P[1] 4 -START-STG[0] DLG P[1] 5 -START-STG[0] DLG P[2] 0 -START-STG[0] DLG P[2] 1 -START-STG[0] DLG P[2] 2 -START-STG[0] DLG P[2] 3 -START-STG[0] DLG P[2] 4 -START-STG[0] DLG P[2] 5 -START-STG[0] DLG P[3] 0 -START-STG[0] DLG P[3] 1 -START-STG[0] DLG P[3] 2 -START-STG[0] DLG P[3] 3 -START-STG[0] DLG P[3] 4 -START-STG[0] DLG P[3] 5 -START-STG[0] DLG P[4] 0 -START-STG[0] DLG P[4] 1 -START-STG[0] DLG P[4] 2 -START-STG[0] DLG P[4] 3 -START-STG[0] DLG P[4] 4 -START-STG[0] DLG P[4] 5 -BOSS STG[0] DLG #0 -BOSS STG[0] DLG #1 -BOSS STG[0] DLG #2 -BOSS STG[0] DLG #3 -BOSS STG[0] DLG #4 -BOSS STG[0] DLG #5 -BOSS STG[0] DLG P[1] 0 -BOSS STG[0] DLG P[1] 1 -BOSS STG[0] DLG P[1] 2 -BOSS STG[0] DLG P[1] 3 -BOSS STG[0] DLG P[1] 4 -BOSS STG[0] DLG P[1] 5 -BOSS STG[0] DLG P[2] 0 -BOSS STG[0] DLG P[2] 1 -BOSS STG[0] DLG P[2] 2 -BOSS STG[0] DLG P[2] 3 -BOSS STG[0] DLG P[2] 4 -BOSS STG[0] DLG P[2] 5 -BOSS STG[0] DLG P[3] 0 -BOSS STG[0] DLG P[3] 1 -BOSS STG[0] DLG P[3] 2 -BOSS STG[0] DLG P[3] 3 -BOSS STG[0] DLG P[3] 4 -BOSS STG[0] DLG P[3] 5 -BOSS STG[0] DLG P[4] 0 -BOSS STG[0] DLG P[4] 1 -BOSS STG[0] DLG P[4] 2 -BOSS STG[0] DLG P[4] 3 -BOSS STG[0] DLG P[4] 4 -BOSS STG[0] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_0_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_0_it.dat deleted file mode 100644 index edcb68f0..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_0_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[0] DLG #0 -START-STG[0] DLG #1 -START-STG[0] DLG #2 -START-STG[0] DLG #3 -START-STG[0] DLG #4 -START-STG[0] DLG #5 -START-STG[0] DLG P[1] 0 -START-STG[0] DLG P[1] 1 -START-STG[0] DLG P[1] 2 -START-STG[0] DLG P[1] 3 -START-STG[0] DLG P[1] 4 -START-STG[0] DLG P[1] 5 -START-STG[0] DLG P[2] 0 -START-STG[0] DLG P[2] 1 -START-STG[0] DLG P[2] 2 -START-STG[0] DLG P[2] 3 -START-STG[0] DLG P[2] 4 -START-STG[0] DLG P[2] 5 -START-STG[0] DLG P[3] 0 -START-STG[0] DLG P[3] 1 -START-STG[0] DLG P[3] 2 -START-STG[0] DLG P[3] 3 -START-STG[0] DLG P[3] 4 -START-STG[0] DLG P[3] 5 -START-STG[0] DLG P[4] 0 -START-STG[0] DLG P[4] 1 -START-STG[0] DLG P[4] 2 -START-STG[0] DLG P[4] 3 -START-STG[0] DLG P[4] 4 -START-STG[0] DLG P[4] 5 -BOSS STG[0] DLG #0 -BOSS STG[0] DLG #1 -BOSS STG[0] DLG #2 -BOSS STG[0] DLG #3 -BOSS STG[0] DLG #4 -BOSS STG[0] DLG #5 -BOSS STG[0] DLG P[1] 0 -BOSS STG[0] DLG P[1] 1 -BOSS STG[0] DLG P[1] 2 -BOSS STG[0] DLG P[1] 3 -BOSS STG[0] DLG P[1] 4 -BOSS STG[0] DLG P[1] 5 -BOSS STG[0] DLG P[2] 0 -BOSS STG[0] DLG P[2] 1 -BOSS STG[0] DLG P[2] 2 -BOSS STG[0] DLG P[2] 3 -BOSS STG[0] DLG P[2] 4 -BOSS STG[0] DLG P[2] 5 -BOSS STG[0] DLG P[3] 0 -BOSS STG[0] DLG P[3] 1 -BOSS STG[0] DLG P[3] 2 -BOSS STG[0] DLG P[3] 3 -BOSS STG[0] DLG P[3] 4 -BOSS STG[0] DLG P[3] 5 -BOSS STG[0] DLG P[4] 0 -BOSS STG[0] DLG P[4] 1 -BOSS STG[0] DLG P[4] 2 -BOSS STG[0] DLG P[4] 3 -BOSS STG[0] DLG P[4] 4 -BOSS STG[0] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_0_pt.dat b/build/games/Rockbot2/dialogs/stage_dialogs_0_pt.dat deleted file mode 100644 index 19e4b91c..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_0_pt.dat +++ /dev/null @@ -1,60 +0,0 @@ -ALGUÉM ESTÁ ATACANDO A -PENITENCIÁRIA. IMPEÇA A -FUGA DOS CRIMINOSOS!! - - - -O DR. KANOTUS ESTÁ LÁ. -SERÁ QUE ELE ESTÁ TRAMANDO -UMA FUGA DA CADEIA? - - - -Ó CÉUS! TEM UM MONTE -DE GENTE RUIM LÁ. NÃO -POSSO DEIXAR QUE ESCAPEM. - - - -FAREI O MEU MELHOR. -VEREMOS SE NINGUÉM... -VAI SER MUITO FERIDO. - - - -IDIOTAS NUNCA APRENDEM. -ME PERGUNTO SE DESTA VEZ -ELES VÃO SABER SE RENDER. - - - -SUMA DAQUI! -EU TENHO UMA MISSÃO E -VOCÊ NÃO PODE INTERFERIR. - - - -QUEM É VOCÊ? -ESTA ARMADURA... SERÁ -QUE... BETA? - - - -VOCÊ ME PARECE COM... -NÃO, VOCÊ NÃO PODE.. -IRMÃO MAIS VELHO? - - - -PORQUE VOCÊ PARECE COMIGO? -É COMO OLHAR PARA UM -ESPELHO DISTORCIDO... - - - -SUA APARÊNCIA É.. ESTRANHA. -OLHE SENHOR, SE RENDA -E NÃO VOU CHUTAR SUA BUNDA. - - - diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_10_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_10_es.dat deleted file mode 100644 index afd02f23..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_10_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[10] DLG #0 -START-STG[10] DLG #1 -START-STG[10] DLG #2 -START-STG[10] DLG #3 -START-STG[10] DLG #4 -START-STG[10] DLG #5 -START-STG[10] DLG P[1] 0 -START-STG[10] DLG P[1] 1 -START-STG[10] DLG P[1] 2 -START-STG[10] DLG P[1] 3 -START-STG[10] DLG P[1] 4 -START-STG[10] DLG P[1] 5 -START-STG[10] DLG P[2] 0 -START-STG[10] DLG P[2] 1 -START-STG[10] DLG P[2] 2 -START-STG[10] DLG P[2] 3 -START-STG[10] DLG P[2] 4 -START-STG[10] DLG P[2] 5 -START-STG[10] DLG P[3] 0 -START-STG[10] DLG P[3] 1 -START-STG[10] DLG P[3] 2 -START-STG[10] DLG P[3] 3 -START-STG[10] DLG P[3] 4 -START-STG[10] DLG P[3] 5 -START-STG[10] DLG P[4] 0 -START-STG[10] DLG P[4] 1 -START-STG[10] DLG P[4] 2 -START-STG[10] DLG P[4] 3 -START-STG[10] DLG P[4] 4 -START-STG[10] DLG P[4] 5 -BOSS STG[10] DLG #0 -BOSS STG[10] DLG #1 -BOSS STG[10] DLG #2 -BOSS STG[10] DLG #3 -BOSS STG[10] DLG #4 -BOSS STG[10] DLG #5 -BOSS STG[10] DLG P[1] 0 -BOSS STG[10] DLG P[1] 1 -BOSS STG[10] DLG P[1] 2 -BOSS STG[10] DLG P[1] 3 -BOSS STG[10] DLG P[1] 4 -BOSS STG[10] DLG P[1] 5 -BOSS STG[10] DLG P[2] 0 -BOSS STG[10] DLG P[2] 1 -BOSS STG[10] DLG P[2] 2 -BOSS STG[10] DLG P[2] 3 -BOSS STG[10] DLG P[2] 4 -BOSS STG[10] DLG P[2] 5 -BOSS STG[10] DLG P[3] 0 -BOSS STG[10] DLG P[3] 1 -BOSS STG[10] DLG P[3] 2 -BOSS STG[10] DLG P[3] 3 -BOSS STG[10] DLG P[3] 4 -BOSS STG[10] DLG P[3] 5 -BOSS STG[10] DLG P[4] 0 -BOSS STG[10] DLG P[4] 1 -BOSS STG[10] DLG P[4] 2 -BOSS STG[10] DLG P[4] 3 -BOSS STG[10] DLG P[4] 4 -BOSS STG[10] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_10_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_10_fr.dat deleted file mode 100644 index afd02f23..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_10_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[10] DLG #0 -START-STG[10] DLG #1 -START-STG[10] DLG #2 -START-STG[10] DLG #3 -START-STG[10] DLG #4 -START-STG[10] DLG #5 -START-STG[10] DLG P[1] 0 -START-STG[10] DLG P[1] 1 -START-STG[10] DLG P[1] 2 -START-STG[10] DLG P[1] 3 -START-STG[10] DLG P[1] 4 -START-STG[10] DLG P[1] 5 -START-STG[10] DLG P[2] 0 -START-STG[10] DLG P[2] 1 -START-STG[10] DLG P[2] 2 -START-STG[10] DLG P[2] 3 -START-STG[10] DLG P[2] 4 -START-STG[10] DLG P[2] 5 -START-STG[10] DLG P[3] 0 -START-STG[10] DLG P[3] 1 -START-STG[10] DLG P[3] 2 -START-STG[10] DLG P[3] 3 -START-STG[10] DLG P[3] 4 -START-STG[10] DLG P[3] 5 -START-STG[10] DLG P[4] 0 -START-STG[10] DLG P[4] 1 -START-STG[10] DLG P[4] 2 -START-STG[10] DLG P[4] 3 -START-STG[10] DLG P[4] 4 -START-STG[10] DLG P[4] 5 -BOSS STG[10] DLG #0 -BOSS STG[10] DLG #1 -BOSS STG[10] DLG #2 -BOSS STG[10] DLG #3 -BOSS STG[10] DLG #4 -BOSS STG[10] DLG #5 -BOSS STG[10] DLG P[1] 0 -BOSS STG[10] DLG P[1] 1 -BOSS STG[10] DLG P[1] 2 -BOSS STG[10] DLG P[1] 3 -BOSS STG[10] DLG P[1] 4 -BOSS STG[10] DLG P[1] 5 -BOSS STG[10] DLG P[2] 0 -BOSS STG[10] DLG P[2] 1 -BOSS STG[10] DLG P[2] 2 -BOSS STG[10] DLG P[2] 3 -BOSS STG[10] DLG P[2] 4 -BOSS STG[10] DLG P[2] 5 -BOSS STG[10] DLG P[3] 0 -BOSS STG[10] DLG P[3] 1 -BOSS STG[10] DLG P[3] 2 -BOSS STG[10] DLG P[3] 3 -BOSS STG[10] DLG P[3] 4 -BOSS STG[10] DLG P[3] 5 -BOSS STG[10] DLG P[4] 0 -BOSS STG[10] DLG P[4] 1 -BOSS STG[10] DLG P[4] 2 -BOSS STG[10] DLG P[4] 3 -BOSS STG[10] DLG P[4] 4 -BOSS STG[10] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_10_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_10_it.dat deleted file mode 100644 index afd02f23..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_10_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[10] DLG #0 -START-STG[10] DLG #1 -START-STG[10] DLG #2 -START-STG[10] DLG #3 -START-STG[10] DLG #4 -START-STG[10] DLG #5 -START-STG[10] DLG P[1] 0 -START-STG[10] DLG P[1] 1 -START-STG[10] DLG P[1] 2 -START-STG[10] DLG P[1] 3 -START-STG[10] DLG P[1] 4 -START-STG[10] DLG P[1] 5 -START-STG[10] DLG P[2] 0 -START-STG[10] DLG P[2] 1 -START-STG[10] DLG P[2] 2 -START-STG[10] DLG P[2] 3 -START-STG[10] DLG P[2] 4 -START-STG[10] DLG P[2] 5 -START-STG[10] DLG P[3] 0 -START-STG[10] DLG P[3] 1 -START-STG[10] DLG P[3] 2 -START-STG[10] DLG P[3] 3 -START-STG[10] DLG P[3] 4 -START-STG[10] DLG P[3] 5 -START-STG[10] DLG P[4] 0 -START-STG[10] DLG P[4] 1 -START-STG[10] DLG P[4] 2 -START-STG[10] DLG P[4] 3 -START-STG[10] DLG P[4] 4 -START-STG[10] DLG P[4] 5 -BOSS STG[10] DLG #0 -BOSS STG[10] DLG #1 -BOSS STG[10] DLG #2 -BOSS STG[10] DLG #3 -BOSS STG[10] DLG #4 -BOSS STG[10] DLG #5 -BOSS STG[10] DLG P[1] 0 -BOSS STG[10] DLG P[1] 1 -BOSS STG[10] DLG P[1] 2 -BOSS STG[10] DLG P[1] 3 -BOSS STG[10] DLG P[1] 4 -BOSS STG[10] DLG P[1] 5 -BOSS STG[10] DLG P[2] 0 -BOSS STG[10] DLG P[2] 1 -BOSS STG[10] DLG P[2] 2 -BOSS STG[10] DLG P[2] 3 -BOSS STG[10] DLG P[2] 4 -BOSS STG[10] DLG P[2] 5 -BOSS STG[10] DLG P[3] 0 -BOSS STG[10] DLG P[3] 1 -BOSS STG[10] DLG P[3] 2 -BOSS STG[10] DLG P[3] 3 -BOSS STG[10] DLG P[3] 4 -BOSS STG[10] DLG P[3] 5 -BOSS STG[10] DLG P[4] 0 -BOSS STG[10] DLG P[4] 1 -BOSS STG[10] DLG P[4] 2 -BOSS STG[10] DLG P[4] 3 -BOSS STG[10] DLG P[4] 4 -BOSS STG[10] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_10_pt.dat b/build/games/Rockbot2/dialogs/stage_dialogs_10_pt.dat deleted file mode 100644 index afd02f23..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_10_pt.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[10] DLG #0 -START-STG[10] DLG #1 -START-STG[10] DLG #2 -START-STG[10] DLG #3 -START-STG[10] DLG #4 -START-STG[10] DLG #5 -START-STG[10] DLG P[1] 0 -START-STG[10] DLG P[1] 1 -START-STG[10] DLG P[1] 2 -START-STG[10] DLG P[1] 3 -START-STG[10] DLG P[1] 4 -START-STG[10] DLG P[1] 5 -START-STG[10] DLG P[2] 0 -START-STG[10] DLG P[2] 1 -START-STG[10] DLG P[2] 2 -START-STG[10] DLG P[2] 3 -START-STG[10] DLG P[2] 4 -START-STG[10] DLG P[2] 5 -START-STG[10] DLG P[3] 0 -START-STG[10] DLG P[3] 1 -START-STG[10] DLG P[3] 2 -START-STG[10] DLG P[3] 3 -START-STG[10] DLG P[3] 4 -START-STG[10] DLG P[3] 5 -START-STG[10] DLG P[4] 0 -START-STG[10] DLG P[4] 1 -START-STG[10] DLG P[4] 2 -START-STG[10] DLG P[4] 3 -START-STG[10] DLG P[4] 4 -START-STG[10] DLG P[4] 5 -BOSS STG[10] DLG #0 -BOSS STG[10] DLG #1 -BOSS STG[10] DLG #2 -BOSS STG[10] DLG #3 -BOSS STG[10] DLG #4 -BOSS STG[10] DLG #5 -BOSS STG[10] DLG P[1] 0 -BOSS STG[10] DLG P[1] 1 -BOSS STG[10] DLG P[1] 2 -BOSS STG[10] DLG P[1] 3 -BOSS STG[10] DLG P[1] 4 -BOSS STG[10] DLG P[1] 5 -BOSS STG[10] DLG P[2] 0 -BOSS STG[10] DLG P[2] 1 -BOSS STG[10] DLG P[2] 2 -BOSS STG[10] DLG P[2] 3 -BOSS STG[10] DLG P[2] 4 -BOSS STG[10] DLG P[2] 5 -BOSS STG[10] DLG P[3] 0 -BOSS STG[10] DLG P[3] 1 -BOSS STG[10] DLG P[3] 2 -BOSS STG[10] DLG P[3] 3 -BOSS STG[10] DLG P[3] 4 -BOSS STG[10] DLG P[3] 5 -BOSS STG[10] DLG P[4] 0 -BOSS STG[10] DLG P[4] 1 -BOSS STG[10] DLG P[4] 2 -BOSS STG[10] DLG P[4] 3 -BOSS STG[10] DLG P[4] 4 -BOSS STG[10] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_11_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_11_es.dat deleted file mode 100644 index f38668b4..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_11_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[11] DLG #0 -START-STG[11] DLG #1 -START-STG[11] DLG #2 -START-STG[11] DLG #3 -START-STG[11] DLG #4 -START-STG[11] DLG #5 -START-STG[11] DLG P[1] 0 -START-STG[11] DLG P[1] 1 -START-STG[11] DLG P[1] 2 -START-STG[11] DLG P[1] 3 -START-STG[11] DLG P[1] 4 -START-STG[11] DLG P[1] 5 -START-STG[11] DLG P[2] 0 -START-STG[11] DLG P[2] 1 -START-STG[11] DLG P[2] 2 -START-STG[11] DLG P[2] 3 -START-STG[11] DLG P[2] 4 -START-STG[11] DLG P[2] 5 -START-STG[11] DLG P[3] 0 -START-STG[11] DLG P[3] 1 -START-STG[11] DLG P[3] 2 -START-STG[11] DLG P[3] 3 -START-STG[11] DLG P[3] 4 -START-STG[11] DLG P[3] 5 -START-STG[11] DLG P[4] 0 -START-STG[11] DLG P[4] 1 -START-STG[11] DLG P[4] 2 -START-STG[11] DLG P[4] 3 -START-STG[11] DLG P[4] 4 -START-STG[11] DLG P[4] 5 -BOSS STG[11] DLG #0 -BOSS STG[11] DLG #1 -BOSS STG[11] DLG #2 -BOSS STG[11] DLG #3 -BOSS STG[11] DLG #4 -BOSS STG[11] DLG #5 -BOSS STG[11] DLG P[1] 0 -BOSS STG[11] DLG P[1] 1 -BOSS STG[11] DLG P[1] 2 -BOSS STG[11] DLG P[1] 3 -BOSS STG[11] DLG P[1] 4 -BOSS STG[11] DLG P[1] 5 -BOSS STG[11] DLG P[2] 0 -BOSS STG[11] DLG P[2] 1 -BOSS STG[11] DLG P[2] 2 -BOSS STG[11] DLG P[2] 3 -BOSS STG[11] DLG P[2] 4 -BOSS STG[11] DLG P[2] 5 -BOSS STG[11] DLG P[3] 0 -BOSS STG[11] DLG P[3] 1 -BOSS STG[11] DLG P[3] 2 -BOSS STG[11] DLG P[3] 3 -BOSS STG[11] DLG P[3] 4 -BOSS STG[11] DLG P[3] 5 -BOSS STG[11] DLG P[4] 0 -BOSS STG[11] DLG P[4] 1 -BOSS STG[11] DLG P[4] 2 -BOSS STG[11] DLG P[4] 3 -BOSS STG[11] DLG P[4] 4 -BOSS STG[11] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_11_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_11_fr.dat deleted file mode 100644 index f38668b4..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_11_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[11] DLG #0 -START-STG[11] DLG #1 -START-STG[11] DLG #2 -START-STG[11] DLG #3 -START-STG[11] DLG #4 -START-STG[11] DLG #5 -START-STG[11] DLG P[1] 0 -START-STG[11] DLG P[1] 1 -START-STG[11] DLG P[1] 2 -START-STG[11] DLG P[1] 3 -START-STG[11] DLG P[1] 4 -START-STG[11] DLG P[1] 5 -START-STG[11] DLG P[2] 0 -START-STG[11] DLG P[2] 1 -START-STG[11] DLG P[2] 2 -START-STG[11] DLG P[2] 3 -START-STG[11] DLG P[2] 4 -START-STG[11] DLG P[2] 5 -START-STG[11] DLG P[3] 0 -START-STG[11] DLG P[3] 1 -START-STG[11] DLG P[3] 2 -START-STG[11] DLG P[3] 3 -START-STG[11] DLG P[3] 4 -START-STG[11] DLG P[3] 5 -START-STG[11] DLG P[4] 0 -START-STG[11] DLG P[4] 1 -START-STG[11] DLG P[4] 2 -START-STG[11] DLG P[4] 3 -START-STG[11] DLG P[4] 4 -START-STG[11] DLG P[4] 5 -BOSS STG[11] DLG #0 -BOSS STG[11] DLG #1 -BOSS STG[11] DLG #2 -BOSS STG[11] DLG #3 -BOSS STG[11] DLG #4 -BOSS STG[11] DLG #5 -BOSS STG[11] DLG P[1] 0 -BOSS STG[11] DLG P[1] 1 -BOSS STG[11] DLG P[1] 2 -BOSS STG[11] DLG P[1] 3 -BOSS STG[11] DLG P[1] 4 -BOSS STG[11] DLG P[1] 5 -BOSS STG[11] DLG P[2] 0 -BOSS STG[11] DLG P[2] 1 -BOSS STG[11] DLG P[2] 2 -BOSS STG[11] DLG P[2] 3 -BOSS STG[11] DLG P[2] 4 -BOSS STG[11] DLG P[2] 5 -BOSS STG[11] DLG P[3] 0 -BOSS STG[11] DLG P[3] 1 -BOSS STG[11] DLG P[3] 2 -BOSS STG[11] DLG P[3] 3 -BOSS STG[11] DLG P[3] 4 -BOSS STG[11] DLG P[3] 5 -BOSS STG[11] DLG P[4] 0 -BOSS STG[11] DLG P[4] 1 -BOSS STG[11] DLG P[4] 2 -BOSS STG[11] DLG P[4] 3 -BOSS STG[11] DLG P[4] 4 -BOSS STG[11] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_11_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_11_it.dat deleted file mode 100644 index f38668b4..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_11_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[11] DLG #0 -START-STG[11] DLG #1 -START-STG[11] DLG #2 -START-STG[11] DLG #3 -START-STG[11] DLG #4 -START-STG[11] DLG #5 -START-STG[11] DLG P[1] 0 -START-STG[11] DLG P[1] 1 -START-STG[11] DLG P[1] 2 -START-STG[11] DLG P[1] 3 -START-STG[11] DLG P[1] 4 -START-STG[11] DLG P[1] 5 -START-STG[11] DLG P[2] 0 -START-STG[11] DLG P[2] 1 -START-STG[11] DLG P[2] 2 -START-STG[11] DLG P[2] 3 -START-STG[11] DLG P[2] 4 -START-STG[11] DLG P[2] 5 -START-STG[11] DLG P[3] 0 -START-STG[11] DLG P[3] 1 -START-STG[11] DLG P[3] 2 -START-STG[11] DLG P[3] 3 -START-STG[11] DLG P[3] 4 -START-STG[11] DLG P[3] 5 -START-STG[11] DLG P[4] 0 -START-STG[11] DLG P[4] 1 -START-STG[11] DLG P[4] 2 -START-STG[11] DLG P[4] 3 -START-STG[11] DLG P[4] 4 -START-STG[11] DLG P[4] 5 -BOSS STG[11] DLG #0 -BOSS STG[11] DLG #1 -BOSS STG[11] DLG #2 -BOSS STG[11] DLG #3 -BOSS STG[11] DLG #4 -BOSS STG[11] DLG #5 -BOSS STG[11] DLG P[1] 0 -BOSS STG[11] DLG P[1] 1 -BOSS STG[11] DLG P[1] 2 -BOSS STG[11] DLG P[1] 3 -BOSS STG[11] DLG P[1] 4 -BOSS STG[11] DLG P[1] 5 -BOSS STG[11] DLG P[2] 0 -BOSS STG[11] DLG P[2] 1 -BOSS STG[11] DLG P[2] 2 -BOSS STG[11] DLG P[2] 3 -BOSS STG[11] DLG P[2] 4 -BOSS STG[11] DLG P[2] 5 -BOSS STG[11] DLG P[3] 0 -BOSS STG[11] DLG P[3] 1 -BOSS STG[11] DLG P[3] 2 -BOSS STG[11] DLG P[3] 3 -BOSS STG[11] DLG P[3] 4 -BOSS STG[11] DLG P[3] 5 -BOSS STG[11] DLG P[4] 0 -BOSS STG[11] DLG P[4] 1 -BOSS STG[11] DLG P[4] 2 -BOSS STG[11] DLG P[4] 3 -BOSS STG[11] DLG P[4] 4 -BOSS STG[11] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_11_pt.dat b/build/games/Rockbot2/dialogs/stage_dialogs_11_pt.dat deleted file mode 100644 index f38668b4..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_11_pt.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[11] DLG #0 -START-STG[11] DLG #1 -START-STG[11] DLG #2 -START-STG[11] DLG #3 -START-STG[11] DLG #4 -START-STG[11] DLG #5 -START-STG[11] DLG P[1] 0 -START-STG[11] DLG P[1] 1 -START-STG[11] DLG P[1] 2 -START-STG[11] DLG P[1] 3 -START-STG[11] DLG P[1] 4 -START-STG[11] DLG P[1] 5 -START-STG[11] DLG P[2] 0 -START-STG[11] DLG P[2] 1 -START-STG[11] DLG P[2] 2 -START-STG[11] DLG P[2] 3 -START-STG[11] DLG P[2] 4 -START-STG[11] DLG P[2] 5 -START-STG[11] DLG P[3] 0 -START-STG[11] DLG P[3] 1 -START-STG[11] DLG P[3] 2 -START-STG[11] DLG P[3] 3 -START-STG[11] DLG P[3] 4 -START-STG[11] DLG P[3] 5 -START-STG[11] DLG P[4] 0 -START-STG[11] DLG P[4] 1 -START-STG[11] DLG P[4] 2 -START-STG[11] DLG P[4] 3 -START-STG[11] DLG P[4] 4 -START-STG[11] DLG P[4] 5 -BOSS STG[11] DLG #0 -BOSS STG[11] DLG #1 -BOSS STG[11] DLG #2 -BOSS STG[11] DLG #3 -BOSS STG[11] DLG #4 -BOSS STG[11] DLG #5 -BOSS STG[11] DLG P[1] 0 -BOSS STG[11] DLG P[1] 1 -BOSS STG[11] DLG P[1] 2 -BOSS STG[11] DLG P[1] 3 -BOSS STG[11] DLG P[1] 4 -BOSS STG[11] DLG P[1] 5 -BOSS STG[11] DLG P[2] 0 -BOSS STG[11] DLG P[2] 1 -BOSS STG[11] DLG P[2] 2 -BOSS STG[11] DLG P[2] 3 -BOSS STG[11] DLG P[2] 4 -BOSS STG[11] DLG P[2] 5 -BOSS STG[11] DLG P[3] 0 -BOSS STG[11] DLG P[3] 1 -BOSS STG[11] DLG P[3] 2 -BOSS STG[11] DLG P[3] 3 -BOSS STG[11] DLG P[3] 4 -BOSS STG[11] DLG P[3] 5 -BOSS STG[11] DLG P[4] 0 -BOSS STG[11] DLG P[4] 1 -BOSS STG[11] DLG P[4] 2 -BOSS STG[11] DLG P[4] 3 -BOSS STG[11] DLG P[4] 4 -BOSS STG[11] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_12_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_12_es.dat deleted file mode 100644 index abb181cd..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_12_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[12] DLG #0 -START-STG[12] DLG #1 -START-STG[12] DLG #2 -START-STG[12] DLG #3 -START-STG[12] DLG #4 -START-STG[12] DLG #5 -START-STG[12] DLG P[1] 0 -START-STG[12] DLG P[1] 1 -START-STG[12] DLG P[1] 2 -START-STG[12] DLG P[1] 3 -START-STG[12] DLG P[1] 4 -START-STG[12] DLG P[1] 5 -START-STG[12] DLG P[2] 0 -START-STG[12] DLG P[2] 1 -START-STG[12] DLG P[2] 2 -START-STG[12] DLG P[2] 3 -START-STG[12] DLG P[2] 4 -START-STG[12] DLG P[2] 5 -START-STG[12] DLG P[3] 0 -START-STG[12] DLG P[3] 1 -START-STG[12] DLG P[3] 2 -START-STG[12] DLG P[3] 3 -START-STG[12] DLG P[3] 4 -START-STG[12] DLG P[3] 5 -START-STG[12] DLG P[4] 0 -START-STG[12] DLG P[4] 1 -START-STG[12] DLG P[4] 2 -START-STG[12] DLG P[4] 3 -START-STG[12] DLG P[4] 4 -START-STG[12] DLG P[4] 5 -BOSS STG[12] DLG #0 -BOSS STG[12] DLG #1 -BOSS STG[12] DLG #2 -BOSS STG[12] DLG #3 -BOSS STG[12] DLG #4 -BOSS STG[12] DLG #5 -BOSS STG[12] DLG P[1] 0 -BOSS STG[12] DLG P[1] 1 -BOSS STG[12] DLG P[1] 2 -BOSS STG[12] DLG P[1] 3 -BOSS STG[12] DLG P[1] 4 -BOSS STG[12] DLG P[1] 5 -BOSS STG[12] DLG P[2] 0 -BOSS STG[12] DLG P[2] 1 -BOSS STG[12] DLG P[2] 2 -BOSS STG[12] DLG P[2] 3 -BOSS STG[12] DLG P[2] 4 -BOSS STG[12] DLG P[2] 5 -BOSS STG[12] DLG P[3] 0 -BOSS STG[12] DLG P[3] 1 -BOSS STG[12] DLG P[3] 2 -BOSS STG[12] DLG P[3] 3 -BOSS STG[12] DLG P[3] 4 -BOSS STG[12] DLG P[3] 5 -BOSS STG[12] DLG P[4] 0 -BOSS STG[12] DLG P[4] 1 -BOSS STG[12] DLG P[4] 2 -BOSS STG[12] DLG P[4] 3 -BOSS STG[12] DLG P[4] 4 -BOSS STG[12] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_12_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_12_fr.dat deleted file mode 100644 index abb181cd..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_12_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[12] DLG #0 -START-STG[12] DLG #1 -START-STG[12] DLG #2 -START-STG[12] DLG #3 -START-STG[12] DLG #4 -START-STG[12] DLG #5 -START-STG[12] DLG P[1] 0 -START-STG[12] DLG P[1] 1 -START-STG[12] DLG P[1] 2 -START-STG[12] DLG P[1] 3 -START-STG[12] DLG P[1] 4 -START-STG[12] DLG P[1] 5 -START-STG[12] DLG P[2] 0 -START-STG[12] DLG P[2] 1 -START-STG[12] DLG P[2] 2 -START-STG[12] DLG P[2] 3 -START-STG[12] DLG P[2] 4 -START-STG[12] DLG P[2] 5 -START-STG[12] DLG P[3] 0 -START-STG[12] DLG P[3] 1 -START-STG[12] DLG P[3] 2 -START-STG[12] DLG P[3] 3 -START-STG[12] DLG P[3] 4 -START-STG[12] DLG P[3] 5 -START-STG[12] DLG P[4] 0 -START-STG[12] DLG P[4] 1 -START-STG[12] DLG P[4] 2 -START-STG[12] DLG P[4] 3 -START-STG[12] DLG P[4] 4 -START-STG[12] DLG P[4] 5 -BOSS STG[12] DLG #0 -BOSS STG[12] DLG #1 -BOSS STG[12] DLG #2 -BOSS STG[12] DLG #3 -BOSS STG[12] DLG #4 -BOSS STG[12] DLG #5 -BOSS STG[12] DLG P[1] 0 -BOSS STG[12] DLG P[1] 1 -BOSS STG[12] DLG P[1] 2 -BOSS STG[12] DLG P[1] 3 -BOSS STG[12] DLG P[1] 4 -BOSS STG[12] DLG P[1] 5 -BOSS STG[12] DLG P[2] 0 -BOSS STG[12] DLG P[2] 1 -BOSS STG[12] DLG P[2] 2 -BOSS STG[12] DLG P[2] 3 -BOSS STG[12] DLG P[2] 4 -BOSS STG[12] DLG P[2] 5 -BOSS STG[12] DLG P[3] 0 -BOSS STG[12] DLG P[3] 1 -BOSS STG[12] DLG P[3] 2 -BOSS STG[12] DLG P[3] 3 -BOSS STG[12] DLG P[3] 4 -BOSS STG[12] DLG P[3] 5 -BOSS STG[12] DLG P[4] 0 -BOSS STG[12] DLG P[4] 1 -BOSS STG[12] DLG P[4] 2 -BOSS STG[12] DLG P[4] 3 -BOSS STG[12] DLG P[4] 4 -BOSS STG[12] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_12_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_12_it.dat deleted file mode 100644 index abb181cd..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_12_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[12] DLG #0 -START-STG[12] DLG #1 -START-STG[12] DLG #2 -START-STG[12] DLG #3 -START-STG[12] DLG #4 -START-STG[12] DLG #5 -START-STG[12] DLG P[1] 0 -START-STG[12] DLG P[1] 1 -START-STG[12] DLG P[1] 2 -START-STG[12] DLG P[1] 3 -START-STG[12] DLG P[1] 4 -START-STG[12] DLG P[1] 5 -START-STG[12] DLG P[2] 0 -START-STG[12] DLG P[2] 1 -START-STG[12] DLG P[2] 2 -START-STG[12] DLG P[2] 3 -START-STG[12] DLG P[2] 4 -START-STG[12] DLG P[2] 5 -START-STG[12] DLG P[3] 0 -START-STG[12] DLG P[3] 1 -START-STG[12] DLG P[3] 2 -START-STG[12] DLG P[3] 3 -START-STG[12] DLG P[3] 4 -START-STG[12] DLG P[3] 5 -START-STG[12] DLG P[4] 0 -START-STG[12] DLG P[4] 1 -START-STG[12] DLG P[4] 2 -START-STG[12] DLG P[4] 3 -START-STG[12] DLG P[4] 4 -START-STG[12] DLG P[4] 5 -BOSS STG[12] DLG #0 -BOSS STG[12] DLG #1 -BOSS STG[12] DLG #2 -BOSS STG[12] DLG #3 -BOSS STG[12] DLG #4 -BOSS STG[12] DLG #5 -BOSS STG[12] DLG P[1] 0 -BOSS STG[12] DLG P[1] 1 -BOSS STG[12] DLG P[1] 2 -BOSS STG[12] DLG P[1] 3 -BOSS STG[12] DLG P[1] 4 -BOSS STG[12] DLG P[1] 5 -BOSS STG[12] DLG P[2] 0 -BOSS STG[12] DLG P[2] 1 -BOSS STG[12] DLG P[2] 2 -BOSS STG[12] DLG P[2] 3 -BOSS STG[12] DLG P[2] 4 -BOSS STG[12] DLG P[2] 5 -BOSS STG[12] DLG P[3] 0 -BOSS STG[12] DLG P[3] 1 -BOSS STG[12] DLG P[3] 2 -BOSS STG[12] DLG P[3] 3 -BOSS STG[12] DLG P[3] 4 -BOSS STG[12] DLG P[3] 5 -BOSS STG[12] DLG P[4] 0 -BOSS STG[12] DLG P[4] 1 -BOSS STG[12] DLG P[4] 2 -BOSS STG[12] DLG P[4] 3 -BOSS STG[12] DLG P[4] 4 -BOSS STG[12] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_12_pt.dat b/build/games/Rockbot2/dialogs/stage_dialogs_12_pt.dat deleted file mode 100644 index abb181cd..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_12_pt.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[12] DLG #0 -START-STG[12] DLG #1 -START-STG[12] DLG #2 -START-STG[12] DLG #3 -START-STG[12] DLG #4 -START-STG[12] DLG #5 -START-STG[12] DLG P[1] 0 -START-STG[12] DLG P[1] 1 -START-STG[12] DLG P[1] 2 -START-STG[12] DLG P[1] 3 -START-STG[12] DLG P[1] 4 -START-STG[12] DLG P[1] 5 -START-STG[12] DLG P[2] 0 -START-STG[12] DLG P[2] 1 -START-STG[12] DLG P[2] 2 -START-STG[12] DLG P[2] 3 -START-STG[12] DLG P[2] 4 -START-STG[12] DLG P[2] 5 -START-STG[12] DLG P[3] 0 -START-STG[12] DLG P[3] 1 -START-STG[12] DLG P[3] 2 -START-STG[12] DLG P[3] 3 -START-STG[12] DLG P[3] 4 -START-STG[12] DLG P[3] 5 -START-STG[12] DLG P[4] 0 -START-STG[12] DLG P[4] 1 -START-STG[12] DLG P[4] 2 -START-STG[12] DLG P[4] 3 -START-STG[12] DLG P[4] 4 -START-STG[12] DLG P[4] 5 -BOSS STG[12] DLG #0 -BOSS STG[12] DLG #1 -BOSS STG[12] DLG #2 -BOSS STG[12] DLG #3 -BOSS STG[12] DLG #4 -BOSS STG[12] DLG #5 -BOSS STG[12] DLG P[1] 0 -BOSS STG[12] DLG P[1] 1 -BOSS STG[12] DLG P[1] 2 -BOSS STG[12] DLG P[1] 3 -BOSS STG[12] DLG P[1] 4 -BOSS STG[12] DLG P[1] 5 -BOSS STG[12] DLG P[2] 0 -BOSS STG[12] DLG P[2] 1 -BOSS STG[12] DLG P[2] 2 -BOSS STG[12] DLG P[2] 3 -BOSS STG[12] DLG P[2] 4 -BOSS STG[12] DLG P[2] 5 -BOSS STG[12] DLG P[3] 0 -BOSS STG[12] DLG P[3] 1 -BOSS STG[12] DLG P[3] 2 -BOSS STG[12] DLG P[3] 3 -BOSS STG[12] DLG P[3] 4 -BOSS STG[12] DLG P[3] 5 -BOSS STG[12] DLG P[4] 0 -BOSS STG[12] DLG P[4] 1 -BOSS STG[12] DLG P[4] 2 -BOSS STG[12] DLG P[4] 3 -BOSS STG[12] DLG P[4] 4 -BOSS STG[12] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_13_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_13_es.dat deleted file mode 100644 index dc277d12..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_13_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[13] DLG #0 -START-STG[13] DLG #1 -START-STG[13] DLG #2 -START-STG[13] DLG #3 -START-STG[13] DLG #4 -START-STG[13] DLG #5 -START-STG[13] DLG P[1] 0 -START-STG[13] DLG P[1] 1 -START-STG[13] DLG P[1] 2 -START-STG[13] DLG P[1] 3 -START-STG[13] DLG P[1] 4 -START-STG[13] DLG P[1] 5 -START-STG[13] DLG P[2] 0 -START-STG[13] DLG P[2] 1 -START-STG[13] DLG P[2] 2 -START-STG[13] DLG P[2] 3 -START-STG[13] DLG P[2] 4 -START-STG[13] DLG P[2] 5 -START-STG[13] DLG P[3] 0 -START-STG[13] DLG P[3] 1 -START-STG[13] DLG P[3] 2 -START-STG[13] DLG P[3] 3 -START-STG[13] DLG P[3] 4 -START-STG[13] DLG P[3] 5 -START-STG[13] DLG P[4] 0 -START-STG[13] DLG P[4] 1 -START-STG[13] DLG P[4] 2 -START-STG[13] DLG P[4] 3 -START-STG[13] DLG P[4] 4 -START-STG[13] DLG P[4] 5 -BOSS STG[13] DLG #0 -BOSS STG[13] DLG #1 -BOSS STG[13] DLG #2 -BOSS STG[13] DLG #3 -BOSS STG[13] DLG #4 -BOSS STG[13] DLG #5 -BOSS STG[13] DLG P[1] 0 -BOSS STG[13] DLG P[1] 1 -BOSS STG[13] DLG P[1] 2 -BOSS STG[13] DLG P[1] 3 -BOSS STG[13] DLG P[1] 4 -BOSS STG[13] DLG P[1] 5 -BOSS STG[13] DLG P[2] 0 -BOSS STG[13] DLG P[2] 1 -BOSS STG[13] DLG P[2] 2 -BOSS STG[13] DLG P[2] 3 -BOSS STG[13] DLG P[2] 4 -BOSS STG[13] DLG P[2] 5 -BOSS STG[13] DLG P[3] 0 -BOSS STG[13] DLG P[3] 1 -BOSS STG[13] DLG P[3] 2 -BOSS STG[13] DLG P[3] 3 -BOSS STG[13] DLG P[3] 4 -BOSS STG[13] DLG P[3] 5 -BOSS STG[13] DLG P[4] 0 -BOSS STG[13] DLG P[4] 1 -BOSS STG[13] DLG P[4] 2 -BOSS STG[13] DLG P[4] 3 -BOSS STG[13] DLG P[4] 4 -BOSS STG[13] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_13_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_13_fr.dat deleted file mode 100644 index dc277d12..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_13_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[13] DLG #0 -START-STG[13] DLG #1 -START-STG[13] DLG #2 -START-STG[13] DLG #3 -START-STG[13] DLG #4 -START-STG[13] DLG #5 -START-STG[13] DLG P[1] 0 -START-STG[13] DLG P[1] 1 -START-STG[13] DLG P[1] 2 -START-STG[13] DLG P[1] 3 -START-STG[13] DLG P[1] 4 -START-STG[13] DLG P[1] 5 -START-STG[13] DLG P[2] 0 -START-STG[13] DLG P[2] 1 -START-STG[13] DLG P[2] 2 -START-STG[13] DLG P[2] 3 -START-STG[13] DLG P[2] 4 -START-STG[13] DLG P[2] 5 -START-STG[13] DLG P[3] 0 -START-STG[13] DLG P[3] 1 -START-STG[13] DLG P[3] 2 -START-STG[13] DLG P[3] 3 -START-STG[13] DLG P[3] 4 -START-STG[13] DLG P[3] 5 -START-STG[13] DLG P[4] 0 -START-STG[13] DLG P[4] 1 -START-STG[13] DLG P[4] 2 -START-STG[13] DLG P[4] 3 -START-STG[13] DLG P[4] 4 -START-STG[13] DLG P[4] 5 -BOSS STG[13] DLG #0 -BOSS STG[13] DLG #1 -BOSS STG[13] DLG #2 -BOSS STG[13] DLG #3 -BOSS STG[13] DLG #4 -BOSS STG[13] DLG #5 -BOSS STG[13] DLG P[1] 0 -BOSS STG[13] DLG P[1] 1 -BOSS STG[13] DLG P[1] 2 -BOSS STG[13] DLG P[1] 3 -BOSS STG[13] DLG P[1] 4 -BOSS STG[13] DLG P[1] 5 -BOSS STG[13] DLG P[2] 0 -BOSS STG[13] DLG P[2] 1 -BOSS STG[13] DLG P[2] 2 -BOSS STG[13] DLG P[2] 3 -BOSS STG[13] DLG P[2] 4 -BOSS STG[13] DLG P[2] 5 -BOSS STG[13] DLG P[3] 0 -BOSS STG[13] DLG P[3] 1 -BOSS STG[13] DLG P[3] 2 -BOSS STG[13] DLG P[3] 3 -BOSS STG[13] DLG P[3] 4 -BOSS STG[13] DLG P[3] 5 -BOSS STG[13] DLG P[4] 0 -BOSS STG[13] DLG P[4] 1 -BOSS STG[13] DLG P[4] 2 -BOSS STG[13] DLG P[4] 3 -BOSS STG[13] DLG P[4] 4 -BOSS STG[13] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_13_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_13_it.dat deleted file mode 100644 index dc277d12..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_13_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[13] DLG #0 -START-STG[13] DLG #1 -START-STG[13] DLG #2 -START-STG[13] DLG #3 -START-STG[13] DLG #4 -START-STG[13] DLG #5 -START-STG[13] DLG P[1] 0 -START-STG[13] DLG P[1] 1 -START-STG[13] DLG P[1] 2 -START-STG[13] DLG P[1] 3 -START-STG[13] DLG P[1] 4 -START-STG[13] DLG P[1] 5 -START-STG[13] DLG P[2] 0 -START-STG[13] DLG P[2] 1 -START-STG[13] DLG P[2] 2 -START-STG[13] DLG P[2] 3 -START-STG[13] DLG P[2] 4 -START-STG[13] DLG P[2] 5 -START-STG[13] DLG P[3] 0 -START-STG[13] DLG P[3] 1 -START-STG[13] DLG P[3] 2 -START-STG[13] DLG P[3] 3 -START-STG[13] DLG P[3] 4 -START-STG[13] DLG P[3] 5 -START-STG[13] DLG P[4] 0 -START-STG[13] DLG P[4] 1 -START-STG[13] DLG P[4] 2 -START-STG[13] DLG P[4] 3 -START-STG[13] DLG P[4] 4 -START-STG[13] DLG P[4] 5 -BOSS STG[13] DLG #0 -BOSS STG[13] DLG #1 -BOSS STG[13] DLG #2 -BOSS STG[13] DLG #3 -BOSS STG[13] DLG #4 -BOSS STG[13] DLG #5 -BOSS STG[13] DLG P[1] 0 -BOSS STG[13] DLG P[1] 1 -BOSS STG[13] DLG P[1] 2 -BOSS STG[13] DLG P[1] 3 -BOSS STG[13] DLG P[1] 4 -BOSS STG[13] DLG P[1] 5 -BOSS STG[13] DLG P[2] 0 -BOSS STG[13] DLG P[2] 1 -BOSS STG[13] DLG P[2] 2 -BOSS STG[13] DLG P[2] 3 -BOSS STG[13] DLG P[2] 4 -BOSS STG[13] DLG P[2] 5 -BOSS STG[13] DLG P[3] 0 -BOSS STG[13] DLG P[3] 1 -BOSS STG[13] DLG P[3] 2 -BOSS STG[13] DLG P[3] 3 -BOSS STG[13] DLG P[3] 4 -BOSS STG[13] DLG P[3] 5 -BOSS STG[13] DLG P[4] 0 -BOSS STG[13] DLG P[4] 1 -BOSS STG[13] DLG P[4] 2 -BOSS STG[13] DLG P[4] 3 -BOSS STG[13] DLG P[4] 4 -BOSS STG[13] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_13_pt.dat b/build/games/Rockbot2/dialogs/stage_dialogs_13_pt.dat deleted file mode 100644 index dc277d12..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_13_pt.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[13] DLG #0 -START-STG[13] DLG #1 -START-STG[13] DLG #2 -START-STG[13] DLG #3 -START-STG[13] DLG #4 -START-STG[13] DLG #5 -START-STG[13] DLG P[1] 0 -START-STG[13] DLG P[1] 1 -START-STG[13] DLG P[1] 2 -START-STG[13] DLG P[1] 3 -START-STG[13] DLG P[1] 4 -START-STG[13] DLG P[1] 5 -START-STG[13] DLG P[2] 0 -START-STG[13] DLG P[2] 1 -START-STG[13] DLG P[2] 2 -START-STG[13] DLG P[2] 3 -START-STG[13] DLG P[2] 4 -START-STG[13] DLG P[2] 5 -START-STG[13] DLG P[3] 0 -START-STG[13] DLG P[3] 1 -START-STG[13] DLG P[3] 2 -START-STG[13] DLG P[3] 3 -START-STG[13] DLG P[3] 4 -START-STG[13] DLG P[3] 5 -START-STG[13] DLG P[4] 0 -START-STG[13] DLG P[4] 1 -START-STG[13] DLG P[4] 2 -START-STG[13] DLG P[4] 3 -START-STG[13] DLG P[4] 4 -START-STG[13] DLG P[4] 5 -BOSS STG[13] DLG #0 -BOSS STG[13] DLG #1 -BOSS STG[13] DLG #2 -BOSS STG[13] DLG #3 -BOSS STG[13] DLG #4 -BOSS STG[13] DLG #5 -BOSS STG[13] DLG P[1] 0 -BOSS STG[13] DLG P[1] 1 -BOSS STG[13] DLG P[1] 2 -BOSS STG[13] DLG P[1] 3 -BOSS STG[13] DLG P[1] 4 -BOSS STG[13] DLG P[1] 5 -BOSS STG[13] DLG P[2] 0 -BOSS STG[13] DLG P[2] 1 -BOSS STG[13] DLG P[2] 2 -BOSS STG[13] DLG P[2] 3 -BOSS STG[13] DLG P[2] 4 -BOSS STG[13] DLG P[2] 5 -BOSS STG[13] DLG P[3] 0 -BOSS STG[13] DLG P[3] 1 -BOSS STG[13] DLG P[3] 2 -BOSS STG[13] DLG P[3] 3 -BOSS STG[13] DLG P[3] 4 -BOSS STG[13] DLG P[3] 5 -BOSS STG[13] DLG P[4] 0 -BOSS STG[13] DLG P[4] 1 -BOSS STG[13] DLG P[4] 2 -BOSS STG[13] DLG P[4] 3 -BOSS STG[13] DLG P[4] 4 -BOSS STG[13] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_1_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_1_es.dat deleted file mode 100644 index ce408995..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_1_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[1] DLG #0 -START-STG[1] DLG #1 -START-STG[1] DLG #2 -START-STG[1] DLG #3 -START-STG[1] DLG #4 -START-STG[1] DLG #5 -START-STG[1] DLG P[1] 0 -START-STG[1] DLG P[1] 1 -START-STG[1] DLG P[1] 2 -START-STG[1] DLG P[1] 3 -START-STG[1] DLG P[1] 4 -START-STG[1] DLG P[1] 5 -START-STG[1] DLG P[2] 0 -START-STG[1] DLG P[2] 1 -START-STG[1] DLG P[2] 2 -START-STG[1] DLG P[2] 3 -START-STG[1] DLG P[2] 4 -START-STG[1] DLG P[2] 5 -START-STG[1] DLG P[3] 0 -START-STG[1] DLG P[3] 1 -START-STG[1] DLG P[3] 2 -START-STG[1] DLG P[3] 3 -START-STG[1] DLG P[3] 4 -START-STG[1] DLG P[3] 5 -START-STG[1] DLG P[4] 0 -START-STG[1] DLG P[4] 1 -START-STG[1] DLG P[4] 2 -START-STG[1] DLG P[4] 3 -START-STG[1] DLG P[4] 4 -START-STG[1] DLG P[4] 5 -BOSS STG[1] DLG #0 -BOSS STG[1] DLG #1 -BOSS STG[1] DLG #2 -BOSS STG[1] DLG #3 -BOSS STG[1] DLG #4 -BOSS STG[1] DLG #5 -BOSS STG[1] DLG P[1] 0 -BOSS STG[1] DLG P[1] 1 -BOSS STG[1] DLG P[1] 2 -BOSS STG[1] DLG P[1] 3 -BOSS STG[1] DLG P[1] 4 -BOSS STG[1] DLG P[1] 5 -BOSS STG[1] DLG P[2] 0 -BOSS STG[1] DLG P[2] 1 -BOSS STG[1] DLG P[2] 2 -BOSS STG[1] DLG P[2] 3 -BOSS STG[1] DLG P[2] 4 -BOSS STG[1] DLG P[2] 5 -BOSS STG[1] DLG P[3] 0 -BOSS STG[1] DLG P[3] 1 -BOSS STG[1] DLG P[3] 2 -BOSS STG[1] DLG P[3] 3 -BOSS STG[1] DLG P[3] 4 -BOSS STG[1] DLG P[3] 5 -BOSS STG[1] DLG P[4] 0 -BOSS STG[1] DLG P[4] 1 -BOSS STG[1] DLG P[4] 2 -BOSS STG[1] DLG P[4] 3 -BOSS STG[1] DLG P[4] 4 -BOSS STG[1] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_1_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_1_fr.dat deleted file mode 100644 index ce408995..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_1_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[1] DLG #0 -START-STG[1] DLG #1 -START-STG[1] DLG #2 -START-STG[1] DLG #3 -START-STG[1] DLG #4 -START-STG[1] DLG #5 -START-STG[1] DLG P[1] 0 -START-STG[1] DLG P[1] 1 -START-STG[1] DLG P[1] 2 -START-STG[1] DLG P[1] 3 -START-STG[1] DLG P[1] 4 -START-STG[1] DLG P[1] 5 -START-STG[1] DLG P[2] 0 -START-STG[1] DLG P[2] 1 -START-STG[1] DLG P[2] 2 -START-STG[1] DLG P[2] 3 -START-STG[1] DLG P[2] 4 -START-STG[1] DLG P[2] 5 -START-STG[1] DLG P[3] 0 -START-STG[1] DLG P[3] 1 -START-STG[1] DLG P[3] 2 -START-STG[1] DLG P[3] 3 -START-STG[1] DLG P[3] 4 -START-STG[1] DLG P[3] 5 -START-STG[1] DLG P[4] 0 -START-STG[1] DLG P[4] 1 -START-STG[1] DLG P[4] 2 -START-STG[1] DLG P[4] 3 -START-STG[1] DLG P[4] 4 -START-STG[1] DLG P[4] 5 -BOSS STG[1] DLG #0 -BOSS STG[1] DLG #1 -BOSS STG[1] DLG #2 -BOSS STG[1] DLG #3 -BOSS STG[1] DLG #4 -BOSS STG[1] DLG #5 -BOSS STG[1] DLG P[1] 0 -BOSS STG[1] DLG P[1] 1 -BOSS STG[1] DLG P[1] 2 -BOSS STG[1] DLG P[1] 3 -BOSS STG[1] DLG P[1] 4 -BOSS STG[1] DLG P[1] 5 -BOSS STG[1] DLG P[2] 0 -BOSS STG[1] DLG P[2] 1 -BOSS STG[1] DLG P[2] 2 -BOSS STG[1] DLG P[2] 3 -BOSS STG[1] DLG P[2] 4 -BOSS STG[1] DLG P[2] 5 -BOSS STG[1] DLG P[3] 0 -BOSS STG[1] DLG P[3] 1 -BOSS STG[1] DLG P[3] 2 -BOSS STG[1] DLG P[3] 3 -BOSS STG[1] DLG P[3] 4 -BOSS STG[1] DLG P[3] 5 -BOSS STG[1] DLG P[4] 0 -BOSS STG[1] DLG P[4] 1 -BOSS STG[1] DLG P[4] 2 -BOSS STG[1] DLG P[4] 3 -BOSS STG[1] DLG P[4] 4 -BOSS STG[1] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_1_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_1_it.dat deleted file mode 100644 index ce408995..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_1_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[1] DLG #0 -START-STG[1] DLG #1 -START-STG[1] DLG #2 -START-STG[1] DLG #3 -START-STG[1] DLG #4 -START-STG[1] DLG #5 -START-STG[1] DLG P[1] 0 -START-STG[1] DLG P[1] 1 -START-STG[1] DLG P[1] 2 -START-STG[1] DLG P[1] 3 -START-STG[1] DLG P[1] 4 -START-STG[1] DLG P[1] 5 -START-STG[1] DLG P[2] 0 -START-STG[1] DLG P[2] 1 -START-STG[1] DLG P[2] 2 -START-STG[1] DLG P[2] 3 -START-STG[1] DLG P[2] 4 -START-STG[1] DLG P[2] 5 -START-STG[1] DLG P[3] 0 -START-STG[1] DLG P[3] 1 -START-STG[1] DLG P[3] 2 -START-STG[1] DLG P[3] 3 -START-STG[1] DLG P[3] 4 -START-STG[1] DLG P[3] 5 -START-STG[1] DLG P[4] 0 -START-STG[1] DLG P[4] 1 -START-STG[1] DLG P[4] 2 -START-STG[1] DLG P[4] 3 -START-STG[1] DLG P[4] 4 -START-STG[1] DLG P[4] 5 -BOSS STG[1] DLG #0 -BOSS STG[1] DLG #1 -BOSS STG[1] DLG #2 -BOSS STG[1] DLG #3 -BOSS STG[1] DLG #4 -BOSS STG[1] DLG #5 -BOSS STG[1] DLG P[1] 0 -BOSS STG[1] DLG P[1] 1 -BOSS STG[1] DLG P[1] 2 -BOSS STG[1] DLG P[1] 3 -BOSS STG[1] DLG P[1] 4 -BOSS STG[1] DLG P[1] 5 -BOSS STG[1] DLG P[2] 0 -BOSS STG[1] DLG P[2] 1 -BOSS STG[1] DLG P[2] 2 -BOSS STG[1] DLG P[2] 3 -BOSS STG[1] DLG P[2] 4 -BOSS STG[1] DLG P[2] 5 -BOSS STG[1] DLG P[3] 0 -BOSS STG[1] DLG P[3] 1 -BOSS STG[1] DLG P[3] 2 -BOSS STG[1] DLG P[3] 3 -BOSS STG[1] DLG P[3] 4 -BOSS STG[1] DLG P[3] 5 -BOSS STG[1] DLG P[4] 0 -BOSS STG[1] DLG P[4] 1 -BOSS STG[1] DLG P[4] 2 -BOSS STG[1] DLG P[4] 3 -BOSS STG[1] DLG P[4] 4 -BOSS STG[1] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_2_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_2_es.dat deleted file mode 100644 index aa64ebba..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_2_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[2] DLG #0 -START-STG[2] DLG #1 -START-STG[2] DLG #2 -START-STG[2] DLG #3 -START-STG[2] DLG #4 -START-STG[2] DLG #5 -START-STG[2] DLG P[1] 0 -START-STG[2] DLG P[1] 1 -START-STG[2] DLG P[1] 2 -START-STG[2] DLG P[1] 3 -START-STG[2] DLG P[1] 4 -START-STG[2] DLG P[1] 5 -START-STG[2] DLG P[2] 0 -START-STG[2] DLG P[2] 1 -START-STG[2] DLG P[2] 2 -START-STG[2] DLG P[2] 3 -START-STG[2] DLG P[2] 4 -START-STG[2] DLG P[2] 5 -START-STG[2] DLG P[3] 0 -START-STG[2] DLG P[3] 1 -START-STG[2] DLG P[3] 2 -START-STG[2] DLG P[3] 3 -START-STG[2] DLG P[3] 4 -START-STG[2] DLG P[3] 5 -START-STG[2] DLG P[4] 0 -START-STG[2] DLG P[4] 1 -START-STG[2] DLG P[4] 2 -START-STG[2] DLG P[4] 3 -START-STG[2] DLG P[4] 4 -START-STG[2] DLG P[4] 5 -BOSS STG[2] DLG #0 -BOSS STG[2] DLG #1 -BOSS STG[2] DLG #2 -BOSS STG[2] DLG #3 -BOSS STG[2] DLG #4 -BOSS STG[2] DLG #5 -BOSS STG[2] DLG P[1] 0 -BOSS STG[2] DLG P[1] 1 -BOSS STG[2] DLG P[1] 2 -BOSS STG[2] DLG P[1] 3 -BOSS STG[2] DLG P[1] 4 -BOSS STG[2] DLG P[1] 5 -BOSS STG[2] DLG P[2] 0 -BOSS STG[2] DLG P[2] 1 -BOSS STG[2] DLG P[2] 2 -BOSS STG[2] DLG P[2] 3 -BOSS STG[2] DLG P[2] 4 -BOSS STG[2] DLG P[2] 5 -BOSS STG[2] DLG P[3] 0 -BOSS STG[2] DLG P[3] 1 -BOSS STG[2] DLG P[3] 2 -BOSS STG[2] DLG P[3] 3 -BOSS STG[2] DLG P[3] 4 -BOSS STG[2] DLG P[3] 5 -BOSS STG[2] DLG P[4] 0 -BOSS STG[2] DLG P[4] 1 -BOSS STG[2] DLG P[4] 2 -BOSS STG[2] DLG P[4] 3 -BOSS STG[2] DLG P[4] 4 -BOSS STG[2] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_2_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_2_fr.dat deleted file mode 100644 index aa64ebba..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_2_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[2] DLG #0 -START-STG[2] DLG #1 -START-STG[2] DLG #2 -START-STG[2] DLG #3 -START-STG[2] DLG #4 -START-STG[2] DLG #5 -START-STG[2] DLG P[1] 0 -START-STG[2] DLG P[1] 1 -START-STG[2] DLG P[1] 2 -START-STG[2] DLG P[1] 3 -START-STG[2] DLG P[1] 4 -START-STG[2] DLG P[1] 5 -START-STG[2] DLG P[2] 0 -START-STG[2] DLG P[2] 1 -START-STG[2] DLG P[2] 2 -START-STG[2] DLG P[2] 3 -START-STG[2] DLG P[2] 4 -START-STG[2] DLG P[2] 5 -START-STG[2] DLG P[3] 0 -START-STG[2] DLG P[3] 1 -START-STG[2] DLG P[3] 2 -START-STG[2] DLG P[3] 3 -START-STG[2] DLG P[3] 4 -START-STG[2] DLG P[3] 5 -START-STG[2] DLG P[4] 0 -START-STG[2] DLG P[4] 1 -START-STG[2] DLG P[4] 2 -START-STG[2] DLG P[4] 3 -START-STG[2] DLG P[4] 4 -START-STG[2] DLG P[4] 5 -BOSS STG[2] DLG #0 -BOSS STG[2] DLG #1 -BOSS STG[2] DLG #2 -BOSS STG[2] DLG #3 -BOSS STG[2] DLG #4 -BOSS STG[2] DLG #5 -BOSS STG[2] DLG P[1] 0 -BOSS STG[2] DLG P[1] 1 -BOSS STG[2] DLG P[1] 2 -BOSS STG[2] DLG P[1] 3 -BOSS STG[2] DLG P[1] 4 -BOSS STG[2] DLG P[1] 5 -BOSS STG[2] DLG P[2] 0 -BOSS STG[2] DLG P[2] 1 -BOSS STG[2] DLG P[2] 2 -BOSS STG[2] DLG P[2] 3 -BOSS STG[2] DLG P[2] 4 -BOSS STG[2] DLG P[2] 5 -BOSS STG[2] DLG P[3] 0 -BOSS STG[2] DLG P[3] 1 -BOSS STG[2] DLG P[3] 2 -BOSS STG[2] DLG P[3] 3 -BOSS STG[2] DLG P[3] 4 -BOSS STG[2] DLG P[3] 5 -BOSS STG[2] DLG P[4] 0 -BOSS STG[2] DLG P[4] 1 -BOSS STG[2] DLG P[4] 2 -BOSS STG[2] DLG P[4] 3 -BOSS STG[2] DLG P[4] 4 -BOSS STG[2] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_2_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_2_it.dat deleted file mode 100644 index aa64ebba..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_2_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[2] DLG #0 -START-STG[2] DLG #1 -START-STG[2] DLG #2 -START-STG[2] DLG #3 -START-STG[2] DLG #4 -START-STG[2] DLG #5 -START-STG[2] DLG P[1] 0 -START-STG[2] DLG P[1] 1 -START-STG[2] DLG P[1] 2 -START-STG[2] DLG P[1] 3 -START-STG[2] DLG P[1] 4 -START-STG[2] DLG P[1] 5 -START-STG[2] DLG P[2] 0 -START-STG[2] DLG P[2] 1 -START-STG[2] DLG P[2] 2 -START-STG[2] DLG P[2] 3 -START-STG[2] DLG P[2] 4 -START-STG[2] DLG P[2] 5 -START-STG[2] DLG P[3] 0 -START-STG[2] DLG P[3] 1 -START-STG[2] DLG P[3] 2 -START-STG[2] DLG P[3] 3 -START-STG[2] DLG P[3] 4 -START-STG[2] DLG P[3] 5 -START-STG[2] DLG P[4] 0 -START-STG[2] DLG P[4] 1 -START-STG[2] DLG P[4] 2 -START-STG[2] DLG P[4] 3 -START-STG[2] DLG P[4] 4 -START-STG[2] DLG P[4] 5 -BOSS STG[2] DLG #0 -BOSS STG[2] DLG #1 -BOSS STG[2] DLG #2 -BOSS STG[2] DLG #3 -BOSS STG[2] DLG #4 -BOSS STG[2] DLG #5 -BOSS STG[2] DLG P[1] 0 -BOSS STG[2] DLG P[1] 1 -BOSS STG[2] DLG P[1] 2 -BOSS STG[2] DLG P[1] 3 -BOSS STG[2] DLG P[1] 4 -BOSS STG[2] DLG P[1] 5 -BOSS STG[2] DLG P[2] 0 -BOSS STG[2] DLG P[2] 1 -BOSS STG[2] DLG P[2] 2 -BOSS STG[2] DLG P[2] 3 -BOSS STG[2] DLG P[2] 4 -BOSS STG[2] DLG P[2] 5 -BOSS STG[2] DLG P[3] 0 -BOSS STG[2] DLG P[3] 1 -BOSS STG[2] DLG P[3] 2 -BOSS STG[2] DLG P[3] 3 -BOSS STG[2] DLG P[3] 4 -BOSS STG[2] DLG P[3] 5 -BOSS STG[2] DLG P[4] 0 -BOSS STG[2] DLG P[4] 1 -BOSS STG[2] DLG P[4] 2 -BOSS STG[2] DLG P[4] 3 -BOSS STG[2] DLG P[4] 4 -BOSS STG[2] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_2_pt.dat b/build/games/Rockbot2/dialogs/stage_dialogs_2_pt.dat deleted file mode 100644 index 02289692..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_2_pt.dat +++ /dev/null @@ -1,60 +0,0 @@ -BEM-VINDO À SHANGRI-LA, -TERRA DE PODERES MÍSTICOS -QUE VOCÊ NÃO PODE VENCER. - - - -ESTOU EQUIPADO COM -TECNOLOGIA ANTI-MAGIA. -PODE MANDAR VER! - - - -UMA VEZ HOUVE UM CARA QUE -TIRAVA COELHOS DA CARTOLA. -ELE NÃO SOBREVIVEU. - - - -TALVEZ VOCÊ TENHA MAIS -SORTE ONDE O ÚLTIMO MAGO -FALHOU. VEREMOS! - - - -PURRRR. TODO ESTE KI NO AR, -ME FAZ RONRONAR. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_3_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_3_es.dat deleted file mode 100644 index 3854727f..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_3_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[3] DLG #0 -START-STG[3] DLG #1 -START-STG[3] DLG #2 -START-STG[3] DLG #3 -START-STG[3] DLG #4 -START-STG[3] DLG #5 -START-STG[3] DLG P[1] 0 -START-STG[3] DLG P[1] 1 -START-STG[3] DLG P[1] 2 -START-STG[3] DLG P[1] 3 -START-STG[3] DLG P[1] 4 -START-STG[3] DLG P[1] 5 -START-STG[3] DLG P[2] 0 -START-STG[3] DLG P[2] 1 -START-STG[3] DLG P[2] 2 -START-STG[3] DLG P[2] 3 -START-STG[3] DLG P[2] 4 -START-STG[3] DLG P[2] 5 -START-STG[3] DLG P[3] 0 -START-STG[3] DLG P[3] 1 -START-STG[3] DLG P[3] 2 -START-STG[3] DLG P[3] 3 -START-STG[3] DLG P[3] 4 -START-STG[3] DLG P[3] 5 -START-STG[3] DLG P[4] 0 -START-STG[3] DLG P[4] 1 -START-STG[3] DLG P[4] 2 -START-STG[3] DLG P[4] 3 -START-STG[3] DLG P[4] 4 -START-STG[3] DLG P[4] 5 -BOSS STG[3] DLG #0 -BOSS STG[3] DLG #1 -BOSS STG[3] DLG #2 -BOSS STG[3] DLG #3 -BOSS STG[3] DLG #4 -BOSS STG[3] DLG #5 -BOSS STG[3] DLG P[1] 0 -BOSS STG[3] DLG P[1] 1 -BOSS STG[3] DLG P[1] 2 -BOSS STG[3] DLG P[1] 3 -BOSS STG[3] DLG P[1] 4 -BOSS STG[3] DLG P[1] 5 -BOSS STG[3] DLG P[2] 0 -BOSS STG[3] DLG P[2] 1 -BOSS STG[3] DLG P[2] 2 -BOSS STG[3] DLG P[2] 3 -BOSS STG[3] DLG P[2] 4 -BOSS STG[3] DLG P[2] 5 -BOSS STG[3] DLG P[3] 0 -BOSS STG[3] DLG P[3] 1 -BOSS STG[3] DLG P[3] 2 -BOSS STG[3] DLG P[3] 3 -BOSS STG[3] DLG P[3] 4 -BOSS STG[3] DLG P[3] 5 -BOSS STG[3] DLG P[4] 0 -BOSS STG[3] DLG P[4] 1 -BOSS STG[3] DLG P[4] 2 -BOSS STG[3] DLG P[4] 3 -BOSS STG[3] DLG P[4] 4 -BOSS STG[3] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_3_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_3_fr.dat deleted file mode 100644 index 3854727f..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_3_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[3] DLG #0 -START-STG[3] DLG #1 -START-STG[3] DLG #2 -START-STG[3] DLG #3 -START-STG[3] DLG #4 -START-STG[3] DLG #5 -START-STG[3] DLG P[1] 0 -START-STG[3] DLG P[1] 1 -START-STG[3] DLG P[1] 2 -START-STG[3] DLG P[1] 3 -START-STG[3] DLG P[1] 4 -START-STG[3] DLG P[1] 5 -START-STG[3] DLG P[2] 0 -START-STG[3] DLG P[2] 1 -START-STG[3] DLG P[2] 2 -START-STG[3] DLG P[2] 3 -START-STG[3] DLG P[2] 4 -START-STG[3] DLG P[2] 5 -START-STG[3] DLG P[3] 0 -START-STG[3] DLG P[3] 1 -START-STG[3] DLG P[3] 2 -START-STG[3] DLG P[3] 3 -START-STG[3] DLG P[3] 4 -START-STG[3] DLG P[3] 5 -START-STG[3] DLG P[4] 0 -START-STG[3] DLG P[4] 1 -START-STG[3] DLG P[4] 2 -START-STG[3] DLG P[4] 3 -START-STG[3] DLG P[4] 4 -START-STG[3] DLG P[4] 5 -BOSS STG[3] DLG #0 -BOSS STG[3] DLG #1 -BOSS STG[3] DLG #2 -BOSS STG[3] DLG #3 -BOSS STG[3] DLG #4 -BOSS STG[3] DLG #5 -BOSS STG[3] DLG P[1] 0 -BOSS STG[3] DLG P[1] 1 -BOSS STG[3] DLG P[1] 2 -BOSS STG[3] DLG P[1] 3 -BOSS STG[3] DLG P[1] 4 -BOSS STG[3] DLG P[1] 5 -BOSS STG[3] DLG P[2] 0 -BOSS STG[3] DLG P[2] 1 -BOSS STG[3] DLG P[2] 2 -BOSS STG[3] DLG P[2] 3 -BOSS STG[3] DLG P[2] 4 -BOSS STG[3] DLG P[2] 5 -BOSS STG[3] DLG P[3] 0 -BOSS STG[3] DLG P[3] 1 -BOSS STG[3] DLG P[3] 2 -BOSS STG[3] DLG P[3] 3 -BOSS STG[3] DLG P[3] 4 -BOSS STG[3] DLG P[3] 5 -BOSS STG[3] DLG P[4] 0 -BOSS STG[3] DLG P[4] 1 -BOSS STG[3] DLG P[4] 2 -BOSS STG[3] DLG P[4] 3 -BOSS STG[3] DLG P[4] 4 -BOSS STG[3] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_3_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_3_it.dat deleted file mode 100644 index 3854727f..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_3_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[3] DLG #0 -START-STG[3] DLG #1 -START-STG[3] DLG #2 -START-STG[3] DLG #3 -START-STG[3] DLG #4 -START-STG[3] DLG #5 -START-STG[3] DLG P[1] 0 -START-STG[3] DLG P[1] 1 -START-STG[3] DLG P[1] 2 -START-STG[3] DLG P[1] 3 -START-STG[3] DLG P[1] 4 -START-STG[3] DLG P[1] 5 -START-STG[3] DLG P[2] 0 -START-STG[3] DLG P[2] 1 -START-STG[3] DLG P[2] 2 -START-STG[3] DLG P[2] 3 -START-STG[3] DLG P[2] 4 -START-STG[3] DLG P[2] 5 -START-STG[3] DLG P[3] 0 -START-STG[3] DLG P[3] 1 -START-STG[3] DLG P[3] 2 -START-STG[3] DLG P[3] 3 -START-STG[3] DLG P[3] 4 -START-STG[3] DLG P[3] 5 -START-STG[3] DLG P[4] 0 -START-STG[3] DLG P[4] 1 -START-STG[3] DLG P[4] 2 -START-STG[3] DLG P[4] 3 -START-STG[3] DLG P[4] 4 -START-STG[3] DLG P[4] 5 -BOSS STG[3] DLG #0 -BOSS STG[3] DLG #1 -BOSS STG[3] DLG #2 -BOSS STG[3] DLG #3 -BOSS STG[3] DLG #4 -BOSS STG[3] DLG #5 -BOSS STG[3] DLG P[1] 0 -BOSS STG[3] DLG P[1] 1 -BOSS STG[3] DLG P[1] 2 -BOSS STG[3] DLG P[1] 3 -BOSS STG[3] DLG P[1] 4 -BOSS STG[3] DLG P[1] 5 -BOSS STG[3] DLG P[2] 0 -BOSS STG[3] DLG P[2] 1 -BOSS STG[3] DLG P[2] 2 -BOSS STG[3] DLG P[2] 3 -BOSS STG[3] DLG P[2] 4 -BOSS STG[3] DLG P[2] 5 -BOSS STG[3] DLG P[3] 0 -BOSS STG[3] DLG P[3] 1 -BOSS STG[3] DLG P[3] 2 -BOSS STG[3] DLG P[3] 3 -BOSS STG[3] DLG P[3] 4 -BOSS STG[3] DLG P[3] 5 -BOSS STG[3] DLG P[4] 0 -BOSS STG[3] DLG P[4] 1 -BOSS STG[3] DLG P[4] 2 -BOSS STG[3] DLG P[4] 3 -BOSS STG[3] DLG P[4] 4 -BOSS STG[3] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_4_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_4_es.dat deleted file mode 100644 index d02beaa3..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_4_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[4] DLG #0 -START-STG[4] DLG #1 -START-STG[4] DLG #2 -START-STG[4] DLG #3 -START-STG[4] DLG #4 -START-STG[4] DLG #5 -START-STG[4] DLG P[1] 0 -START-STG[4] DLG P[1] 1 -START-STG[4] DLG P[1] 2 -START-STG[4] DLG P[1] 3 -START-STG[4] DLG P[1] 4 -START-STG[4] DLG P[1] 5 -START-STG[4] DLG P[2] 0 -START-STG[4] DLG P[2] 1 -START-STG[4] DLG P[2] 2 -START-STG[4] DLG P[2] 3 -START-STG[4] DLG P[2] 4 -START-STG[4] DLG P[2] 5 -START-STG[4] DLG P[3] 0 -START-STG[4] DLG P[3] 1 -START-STG[4] DLG P[3] 2 -START-STG[4] DLG P[3] 3 -START-STG[4] DLG P[3] 4 -START-STG[4] DLG P[3] 5 -START-STG[4] DLG P[4] 0 -START-STG[4] DLG P[4] 1 -START-STG[4] DLG P[4] 2 -START-STG[4] DLG P[4] 3 -START-STG[4] DLG P[4] 4 -START-STG[4] DLG P[4] 5 -BOSS STG[4] DLG #0 -BOSS STG[4] DLG #1 -BOSS STG[4] DLG #2 -BOSS STG[4] DLG #3 -BOSS STG[4] DLG #4 -BOSS STG[4] DLG #5 -BOSS STG[4] DLG P[1] 0 -BOSS STG[4] DLG P[1] 1 -BOSS STG[4] DLG P[1] 2 -BOSS STG[4] DLG P[1] 3 -BOSS STG[4] DLG P[1] 4 -BOSS STG[4] DLG P[1] 5 -BOSS STG[4] DLG P[2] 0 -BOSS STG[4] DLG P[2] 1 -BOSS STG[4] DLG P[2] 2 -BOSS STG[4] DLG P[2] 3 -BOSS STG[4] DLG P[2] 4 -BOSS STG[4] DLG P[2] 5 -BOSS STG[4] DLG P[3] 0 -BOSS STG[4] DLG P[3] 1 -BOSS STG[4] DLG P[3] 2 -BOSS STG[4] DLG P[3] 3 -BOSS STG[4] DLG P[3] 4 -BOSS STG[4] DLG P[3] 5 -BOSS STG[4] DLG P[4] 0 -BOSS STG[4] DLG P[4] 1 -BOSS STG[4] DLG P[4] 2 -BOSS STG[4] DLG P[4] 3 -BOSS STG[4] DLG P[4] 4 -BOSS STG[4] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_4_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_4_fr.dat deleted file mode 100644 index d02beaa3..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_4_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[4] DLG #0 -START-STG[4] DLG #1 -START-STG[4] DLG #2 -START-STG[4] DLG #3 -START-STG[4] DLG #4 -START-STG[4] DLG #5 -START-STG[4] DLG P[1] 0 -START-STG[4] DLG P[1] 1 -START-STG[4] DLG P[1] 2 -START-STG[4] DLG P[1] 3 -START-STG[4] DLG P[1] 4 -START-STG[4] DLG P[1] 5 -START-STG[4] DLG P[2] 0 -START-STG[4] DLG P[2] 1 -START-STG[4] DLG P[2] 2 -START-STG[4] DLG P[2] 3 -START-STG[4] DLG P[2] 4 -START-STG[4] DLG P[2] 5 -START-STG[4] DLG P[3] 0 -START-STG[4] DLG P[3] 1 -START-STG[4] DLG P[3] 2 -START-STG[4] DLG P[3] 3 -START-STG[4] DLG P[3] 4 -START-STG[4] DLG P[3] 5 -START-STG[4] DLG P[4] 0 -START-STG[4] DLG P[4] 1 -START-STG[4] DLG P[4] 2 -START-STG[4] DLG P[4] 3 -START-STG[4] DLG P[4] 4 -START-STG[4] DLG P[4] 5 -BOSS STG[4] DLG #0 -BOSS STG[4] DLG #1 -BOSS STG[4] DLG #2 -BOSS STG[4] DLG #3 -BOSS STG[4] DLG #4 -BOSS STG[4] DLG #5 -BOSS STG[4] DLG P[1] 0 -BOSS STG[4] DLG P[1] 1 -BOSS STG[4] DLG P[1] 2 -BOSS STG[4] DLG P[1] 3 -BOSS STG[4] DLG P[1] 4 -BOSS STG[4] DLG P[1] 5 -BOSS STG[4] DLG P[2] 0 -BOSS STG[4] DLG P[2] 1 -BOSS STG[4] DLG P[2] 2 -BOSS STG[4] DLG P[2] 3 -BOSS STG[4] DLG P[2] 4 -BOSS STG[4] DLG P[2] 5 -BOSS STG[4] DLG P[3] 0 -BOSS STG[4] DLG P[3] 1 -BOSS STG[4] DLG P[3] 2 -BOSS STG[4] DLG P[3] 3 -BOSS STG[4] DLG P[3] 4 -BOSS STG[4] DLG P[3] 5 -BOSS STG[4] DLG P[4] 0 -BOSS STG[4] DLG P[4] 1 -BOSS STG[4] DLG P[4] 2 -BOSS STG[4] DLG P[4] 3 -BOSS STG[4] DLG P[4] 4 -BOSS STG[4] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_4_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_4_it.dat deleted file mode 100644 index d02beaa3..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_4_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[4] DLG #0 -START-STG[4] DLG #1 -START-STG[4] DLG #2 -START-STG[4] DLG #3 -START-STG[4] DLG #4 -START-STG[4] DLG #5 -START-STG[4] DLG P[1] 0 -START-STG[4] DLG P[1] 1 -START-STG[4] DLG P[1] 2 -START-STG[4] DLG P[1] 3 -START-STG[4] DLG P[1] 4 -START-STG[4] DLG P[1] 5 -START-STG[4] DLG P[2] 0 -START-STG[4] DLG P[2] 1 -START-STG[4] DLG P[2] 2 -START-STG[4] DLG P[2] 3 -START-STG[4] DLG P[2] 4 -START-STG[4] DLG P[2] 5 -START-STG[4] DLG P[3] 0 -START-STG[4] DLG P[3] 1 -START-STG[4] DLG P[3] 2 -START-STG[4] DLG P[3] 3 -START-STG[4] DLG P[3] 4 -START-STG[4] DLG P[3] 5 -START-STG[4] DLG P[4] 0 -START-STG[4] DLG P[4] 1 -START-STG[4] DLG P[4] 2 -START-STG[4] DLG P[4] 3 -START-STG[4] DLG P[4] 4 -START-STG[4] DLG P[4] 5 -BOSS STG[4] DLG #0 -BOSS STG[4] DLG #1 -BOSS STG[4] DLG #2 -BOSS STG[4] DLG #3 -BOSS STG[4] DLG #4 -BOSS STG[4] DLG #5 -BOSS STG[4] DLG P[1] 0 -BOSS STG[4] DLG P[1] 1 -BOSS STG[4] DLG P[1] 2 -BOSS STG[4] DLG P[1] 3 -BOSS STG[4] DLG P[1] 4 -BOSS STG[4] DLG P[1] 5 -BOSS STG[4] DLG P[2] 0 -BOSS STG[4] DLG P[2] 1 -BOSS STG[4] DLG P[2] 2 -BOSS STG[4] DLG P[2] 3 -BOSS STG[4] DLG P[2] 4 -BOSS STG[4] DLG P[2] 5 -BOSS STG[4] DLG P[3] 0 -BOSS STG[4] DLG P[3] 1 -BOSS STG[4] DLG P[3] 2 -BOSS STG[4] DLG P[3] 3 -BOSS STG[4] DLG P[3] 4 -BOSS STG[4] DLG P[3] 5 -BOSS STG[4] DLG P[4] 0 -BOSS STG[4] DLG P[4] 1 -BOSS STG[4] DLG P[4] 2 -BOSS STG[4] DLG P[4] 3 -BOSS STG[4] DLG P[4] 4 -BOSS STG[4] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_5.dat b/build/games/Rockbot2/dialogs/stage_dialogs_5.dat deleted file mode 100644 index c0e7cfd6..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_5.dat +++ /dev/null @@ -1,60 +0,0 @@ -C'MON, C'MON! -THE FAIR IS OPEN! ALL THE -BEASTS TO KILL YOU! - - - -SOUNDS DANGEROUS. -HEY, WAIT! I LOVE DANGER! - - - - -PLEASE, PLEASE, MISTER. -DON'T SEND SCARY ANIMALS! - - - - -SOUNDS FUN. -I WILL PLAY YOUR GAME. - - - - -BIG CATS! BIG CATS! -I LOOOVE BIG CATS! -LETS PLAY, BROTHERS! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_5_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_5_es.dat deleted file mode 100644 index 945fa93c..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_5_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[5] DLG #0 -START-STG[5] DLG #1 -START-STG[5] DLG #2 -START-STG[5] DLG #3 -START-STG[5] DLG #4 -START-STG[5] DLG #5 -START-STG[5] DLG P[1] 0 -START-STG[5] DLG P[1] 1 -START-STG[5] DLG P[1] 2 -START-STG[5] DLG P[1] 3 -START-STG[5] DLG P[1] 4 -START-STG[5] DLG P[1] 5 -START-STG[5] DLG P[2] 0 -START-STG[5] DLG P[2] 1 -START-STG[5] DLG P[2] 2 -START-STG[5] DLG P[2] 3 -START-STG[5] DLG P[2] 4 -START-STG[5] DLG P[2] 5 -START-STG[5] DLG P[3] 0 -START-STG[5] DLG P[3] 1 -START-STG[5] DLG P[3] 2 -START-STG[5] DLG P[3] 3 -START-STG[5] DLG P[3] 4 -START-STG[5] DLG P[3] 5 -START-STG[5] DLG P[4] 0 -START-STG[5] DLG P[4] 1 -START-STG[5] DLG P[4] 2 -START-STG[5] DLG P[4] 3 -START-STG[5] DLG P[4] 4 -START-STG[5] DLG P[4] 5 -BOSS STG[5] DLG #0 -BOSS STG[5] DLG #1 -BOSS STG[5] DLG #2 -BOSS STG[5] DLG #3 -BOSS STG[5] DLG #4 -BOSS STG[5] DLG #5 -BOSS STG[5] DLG P[1] 0 -BOSS STG[5] DLG P[1] 1 -BOSS STG[5] DLG P[1] 2 -BOSS STG[5] DLG P[1] 3 -BOSS STG[5] DLG P[1] 4 -BOSS STG[5] DLG P[1] 5 -BOSS STG[5] DLG P[2] 0 -BOSS STG[5] DLG P[2] 1 -BOSS STG[5] DLG P[2] 2 -BOSS STG[5] DLG P[2] 3 -BOSS STG[5] DLG P[2] 4 -BOSS STG[5] DLG P[2] 5 -BOSS STG[5] DLG P[3] 0 -BOSS STG[5] DLG P[3] 1 -BOSS STG[5] DLG P[3] 2 -BOSS STG[5] DLG P[3] 3 -BOSS STG[5] DLG P[3] 4 -BOSS STG[5] DLG P[3] 5 -BOSS STG[5] DLG P[4] 0 -BOSS STG[5] DLG P[4] 1 -BOSS STG[5] DLG P[4] 2 -BOSS STG[5] DLG P[4] 3 -BOSS STG[5] DLG P[4] 4 -BOSS STG[5] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_5_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_5_fr.dat deleted file mode 100644 index 945fa93c..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_5_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[5] DLG #0 -START-STG[5] DLG #1 -START-STG[5] DLG #2 -START-STG[5] DLG #3 -START-STG[5] DLG #4 -START-STG[5] DLG #5 -START-STG[5] DLG P[1] 0 -START-STG[5] DLG P[1] 1 -START-STG[5] DLG P[1] 2 -START-STG[5] DLG P[1] 3 -START-STG[5] DLG P[1] 4 -START-STG[5] DLG P[1] 5 -START-STG[5] DLG P[2] 0 -START-STG[5] DLG P[2] 1 -START-STG[5] DLG P[2] 2 -START-STG[5] DLG P[2] 3 -START-STG[5] DLG P[2] 4 -START-STG[5] DLG P[2] 5 -START-STG[5] DLG P[3] 0 -START-STG[5] DLG P[3] 1 -START-STG[5] DLG P[3] 2 -START-STG[5] DLG P[3] 3 -START-STG[5] DLG P[3] 4 -START-STG[5] DLG P[3] 5 -START-STG[5] DLG P[4] 0 -START-STG[5] DLG P[4] 1 -START-STG[5] DLG P[4] 2 -START-STG[5] DLG P[4] 3 -START-STG[5] DLG P[4] 4 -START-STG[5] DLG P[4] 5 -BOSS STG[5] DLG #0 -BOSS STG[5] DLG #1 -BOSS STG[5] DLG #2 -BOSS STG[5] DLG #3 -BOSS STG[5] DLG #4 -BOSS STG[5] DLG #5 -BOSS STG[5] DLG P[1] 0 -BOSS STG[5] DLG P[1] 1 -BOSS STG[5] DLG P[1] 2 -BOSS STG[5] DLG P[1] 3 -BOSS STG[5] DLG P[1] 4 -BOSS STG[5] DLG P[1] 5 -BOSS STG[5] DLG P[2] 0 -BOSS STG[5] DLG P[2] 1 -BOSS STG[5] DLG P[2] 2 -BOSS STG[5] DLG P[2] 3 -BOSS STG[5] DLG P[2] 4 -BOSS STG[5] DLG P[2] 5 -BOSS STG[5] DLG P[3] 0 -BOSS STG[5] DLG P[3] 1 -BOSS STG[5] DLG P[3] 2 -BOSS STG[5] DLG P[3] 3 -BOSS STG[5] DLG P[3] 4 -BOSS STG[5] DLG P[3] 5 -BOSS STG[5] DLG P[4] 0 -BOSS STG[5] DLG P[4] 1 -BOSS STG[5] DLG P[4] 2 -BOSS STG[5] DLG P[4] 3 -BOSS STG[5] DLG P[4] 4 -BOSS STG[5] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_5_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_5_it.dat deleted file mode 100644 index 945fa93c..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_5_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[5] DLG #0 -START-STG[5] DLG #1 -START-STG[5] DLG #2 -START-STG[5] DLG #3 -START-STG[5] DLG #4 -START-STG[5] DLG #5 -START-STG[5] DLG P[1] 0 -START-STG[5] DLG P[1] 1 -START-STG[5] DLG P[1] 2 -START-STG[5] DLG P[1] 3 -START-STG[5] DLG P[1] 4 -START-STG[5] DLG P[1] 5 -START-STG[5] DLG P[2] 0 -START-STG[5] DLG P[2] 1 -START-STG[5] DLG P[2] 2 -START-STG[5] DLG P[2] 3 -START-STG[5] DLG P[2] 4 -START-STG[5] DLG P[2] 5 -START-STG[5] DLG P[3] 0 -START-STG[5] DLG P[3] 1 -START-STG[5] DLG P[3] 2 -START-STG[5] DLG P[3] 3 -START-STG[5] DLG P[3] 4 -START-STG[5] DLG P[3] 5 -START-STG[5] DLG P[4] 0 -START-STG[5] DLG P[4] 1 -START-STG[5] DLG P[4] 2 -START-STG[5] DLG P[4] 3 -START-STG[5] DLG P[4] 4 -START-STG[5] DLG P[4] 5 -BOSS STG[5] DLG #0 -BOSS STG[5] DLG #1 -BOSS STG[5] DLG #2 -BOSS STG[5] DLG #3 -BOSS STG[5] DLG #4 -BOSS STG[5] DLG #5 -BOSS STG[5] DLG P[1] 0 -BOSS STG[5] DLG P[1] 1 -BOSS STG[5] DLG P[1] 2 -BOSS STG[5] DLG P[1] 3 -BOSS STG[5] DLG P[1] 4 -BOSS STG[5] DLG P[1] 5 -BOSS STG[5] DLG P[2] 0 -BOSS STG[5] DLG P[2] 1 -BOSS STG[5] DLG P[2] 2 -BOSS STG[5] DLG P[2] 3 -BOSS STG[5] DLG P[2] 4 -BOSS STG[5] DLG P[2] 5 -BOSS STG[5] DLG P[3] 0 -BOSS STG[5] DLG P[3] 1 -BOSS STG[5] DLG P[3] 2 -BOSS STG[5] DLG P[3] 3 -BOSS STG[5] DLG P[3] 4 -BOSS STG[5] DLG P[3] 5 -BOSS STG[5] DLG P[4] 0 -BOSS STG[5] DLG P[4] 1 -BOSS STG[5] DLG P[4] 2 -BOSS STG[5] DLG P[4] 3 -BOSS STG[5] DLG P[4] 4 -BOSS STG[5] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_6_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_6_es.dat deleted file mode 100644 index 76cfa211..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_6_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[6] DLG #0 -START-STG[6] DLG #1 -START-STG[6] DLG #2 -START-STG[6] DLG #3 -START-STG[6] DLG #4 -START-STG[6] DLG #5 -START-STG[6] DLG P[1] 0 -START-STG[6] DLG P[1] 1 -START-STG[6] DLG P[1] 2 -START-STG[6] DLG P[1] 3 -START-STG[6] DLG P[1] 4 -START-STG[6] DLG P[1] 5 -START-STG[6] DLG P[2] 0 -START-STG[6] DLG P[2] 1 -START-STG[6] DLG P[2] 2 -START-STG[6] DLG P[2] 3 -START-STG[6] DLG P[2] 4 -START-STG[6] DLG P[2] 5 -START-STG[6] DLG P[3] 0 -START-STG[6] DLG P[3] 1 -START-STG[6] DLG P[3] 2 -START-STG[6] DLG P[3] 3 -START-STG[6] DLG P[3] 4 -START-STG[6] DLG P[3] 5 -START-STG[6] DLG P[4] 0 -START-STG[6] DLG P[4] 1 -START-STG[6] DLG P[4] 2 -START-STG[6] DLG P[4] 3 -START-STG[6] DLG P[4] 4 -START-STG[6] DLG P[4] 5 -BOSS STG[6] DLG #0 -BOSS STG[6] DLG #1 -BOSS STG[6] DLG #2 -BOSS STG[6] DLG #3 -BOSS STG[6] DLG #4 -BOSS STG[6] DLG #5 -BOSS STG[6] DLG P[1] 0 -BOSS STG[6] DLG P[1] 1 -BOSS STG[6] DLG P[1] 2 -BOSS STG[6] DLG P[1] 3 -BOSS STG[6] DLG P[1] 4 -BOSS STG[6] DLG P[1] 5 -BOSS STG[6] DLG P[2] 0 -BOSS STG[6] DLG P[2] 1 -BOSS STG[6] DLG P[2] 2 -BOSS STG[6] DLG P[2] 3 -BOSS STG[6] DLG P[2] 4 -BOSS STG[6] DLG P[2] 5 -BOSS STG[6] DLG P[3] 0 -BOSS STG[6] DLG P[3] 1 -BOSS STG[6] DLG P[3] 2 -BOSS STG[6] DLG P[3] 3 -BOSS STG[6] DLG P[3] 4 -BOSS STG[6] DLG P[3] 5 -BOSS STG[6] DLG P[4] 0 -BOSS STG[6] DLG P[4] 1 -BOSS STG[6] DLG P[4] 2 -BOSS STG[6] DLG P[4] 3 -BOSS STG[6] DLG P[4] 4 -BOSS STG[6] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_6_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_6_fr.dat deleted file mode 100644 index 76cfa211..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_6_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[6] DLG #0 -START-STG[6] DLG #1 -START-STG[6] DLG #2 -START-STG[6] DLG #3 -START-STG[6] DLG #4 -START-STG[6] DLG #5 -START-STG[6] DLG P[1] 0 -START-STG[6] DLG P[1] 1 -START-STG[6] DLG P[1] 2 -START-STG[6] DLG P[1] 3 -START-STG[6] DLG P[1] 4 -START-STG[6] DLG P[1] 5 -START-STG[6] DLG P[2] 0 -START-STG[6] DLG P[2] 1 -START-STG[6] DLG P[2] 2 -START-STG[6] DLG P[2] 3 -START-STG[6] DLG P[2] 4 -START-STG[6] DLG P[2] 5 -START-STG[6] DLG P[3] 0 -START-STG[6] DLG P[3] 1 -START-STG[6] DLG P[3] 2 -START-STG[6] DLG P[3] 3 -START-STG[6] DLG P[3] 4 -START-STG[6] DLG P[3] 5 -START-STG[6] DLG P[4] 0 -START-STG[6] DLG P[4] 1 -START-STG[6] DLG P[4] 2 -START-STG[6] DLG P[4] 3 -START-STG[6] DLG P[4] 4 -START-STG[6] DLG P[4] 5 -BOSS STG[6] DLG #0 -BOSS STG[6] DLG #1 -BOSS STG[6] DLG #2 -BOSS STG[6] DLG #3 -BOSS STG[6] DLG #4 -BOSS STG[6] DLG #5 -BOSS STG[6] DLG P[1] 0 -BOSS STG[6] DLG P[1] 1 -BOSS STG[6] DLG P[1] 2 -BOSS STG[6] DLG P[1] 3 -BOSS STG[6] DLG P[1] 4 -BOSS STG[6] DLG P[1] 5 -BOSS STG[6] DLG P[2] 0 -BOSS STG[6] DLG P[2] 1 -BOSS STG[6] DLG P[2] 2 -BOSS STG[6] DLG P[2] 3 -BOSS STG[6] DLG P[2] 4 -BOSS STG[6] DLG P[2] 5 -BOSS STG[6] DLG P[3] 0 -BOSS STG[6] DLG P[3] 1 -BOSS STG[6] DLG P[3] 2 -BOSS STG[6] DLG P[3] 3 -BOSS STG[6] DLG P[3] 4 -BOSS STG[6] DLG P[3] 5 -BOSS STG[6] DLG P[4] 0 -BOSS STG[6] DLG P[4] 1 -BOSS STG[6] DLG P[4] 2 -BOSS STG[6] DLG P[4] 3 -BOSS STG[6] DLG P[4] 4 -BOSS STG[6] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_6_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_6_it.dat deleted file mode 100644 index 76cfa211..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_6_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[6] DLG #0 -START-STG[6] DLG #1 -START-STG[6] DLG #2 -START-STG[6] DLG #3 -START-STG[6] DLG #4 -START-STG[6] DLG #5 -START-STG[6] DLG P[1] 0 -START-STG[6] DLG P[1] 1 -START-STG[6] DLG P[1] 2 -START-STG[6] DLG P[1] 3 -START-STG[6] DLG P[1] 4 -START-STG[6] DLG P[1] 5 -START-STG[6] DLG P[2] 0 -START-STG[6] DLG P[2] 1 -START-STG[6] DLG P[2] 2 -START-STG[6] DLG P[2] 3 -START-STG[6] DLG P[2] 4 -START-STG[6] DLG P[2] 5 -START-STG[6] DLG P[3] 0 -START-STG[6] DLG P[3] 1 -START-STG[6] DLG P[3] 2 -START-STG[6] DLG P[3] 3 -START-STG[6] DLG P[3] 4 -START-STG[6] DLG P[3] 5 -START-STG[6] DLG P[4] 0 -START-STG[6] DLG P[4] 1 -START-STG[6] DLG P[4] 2 -START-STG[6] DLG P[4] 3 -START-STG[6] DLG P[4] 4 -START-STG[6] DLG P[4] 5 -BOSS STG[6] DLG #0 -BOSS STG[6] DLG #1 -BOSS STG[6] DLG #2 -BOSS STG[6] DLG #3 -BOSS STG[6] DLG #4 -BOSS STG[6] DLG #5 -BOSS STG[6] DLG P[1] 0 -BOSS STG[6] DLG P[1] 1 -BOSS STG[6] DLG P[1] 2 -BOSS STG[6] DLG P[1] 3 -BOSS STG[6] DLG P[1] 4 -BOSS STG[6] DLG P[1] 5 -BOSS STG[6] DLG P[2] 0 -BOSS STG[6] DLG P[2] 1 -BOSS STG[6] DLG P[2] 2 -BOSS STG[6] DLG P[2] 3 -BOSS STG[6] DLG P[2] 4 -BOSS STG[6] DLG P[2] 5 -BOSS STG[6] DLG P[3] 0 -BOSS STG[6] DLG P[3] 1 -BOSS STG[6] DLG P[3] 2 -BOSS STG[6] DLG P[3] 3 -BOSS STG[6] DLG P[3] 4 -BOSS STG[6] DLG P[3] 5 -BOSS STG[6] DLG P[4] 0 -BOSS STG[6] DLG P[4] 1 -BOSS STG[6] DLG P[4] 2 -BOSS STG[6] DLG P[4] 3 -BOSS STG[6] DLG P[4] 4 -BOSS STG[6] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_7.dat b/build/games/Rockbot2/dialogs/stage_dialogs_7.dat deleted file mode 100644 index 3e803166..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_7.dat +++ /dev/null @@ -1,60 +0,0 @@ -THE STARS ARE ALL ALIGNED, -YOUR FATE IS DECIDED, -DEFEAT IS IN YOUR FUTURE. - - - -FATE? DESTINY? FOR A ROBOT? -SORRY, BUT I CAN'T BELIEVE -THAT. PROVE ME WRONG. - - - -SORRY MISTER, I DON'T -BELIEVE IN HOROSCOPES. -I WILL SHOW YOU. - - - -THOSE RUINS ARE A -BEAUTIFUL PLACE. DON'T RUIN -IT WITH SUCH NONSENSE. - - - -THEN I HAVE NO CHOISE BUT -TO FIGHT MY DESTINY AND -DEFEAT YOU ANYWAY POSSIBLE. - - - - - - - - - - - - - - - - - - - - - -BOSS STG[7] DLG P[3] 0 -BOSS STG[7] DLG P[3] 1 -BOSS STG[7] DLG P[3] 2 -BOSS STG[7] DLG P[3] 3 -BOSS STG[7] DLG P[3] 4 -BOSS STG[7] DLG P[3] 5 - - - - - - diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_7_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_7_es.dat deleted file mode 100644 index 96bfb850..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_7_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[7] DLG #0 -START-STG[7] DLG #1 -START-STG[7] DLG #2 -START-STG[7] DLG #3 -START-STG[7] DLG #4 -START-STG[7] DLG #5 -START-STG[7] DLG P[1] 0 -START-STG[7] DLG P[1] 1 -START-STG[7] DLG P[1] 2 -START-STG[7] DLG P[1] 3 -START-STG[7] DLG P[1] 4 -START-STG[7] DLG P[1] 5 -START-STG[7] DLG P[2] 0 -START-STG[7] DLG P[2] 1 -START-STG[7] DLG P[2] 2 -START-STG[7] DLG P[2] 3 -START-STG[7] DLG P[2] 4 -START-STG[7] DLG P[2] 5 -START-STG[7] DLG P[3] 0 -START-STG[7] DLG P[3] 1 -START-STG[7] DLG P[3] 2 -START-STG[7] DLG P[3] 3 -START-STG[7] DLG P[3] 4 -START-STG[7] DLG P[3] 5 -START-STG[7] DLG P[4] 0 -START-STG[7] DLG P[4] 1 -START-STG[7] DLG P[4] 2 -START-STG[7] DLG P[4] 3 -START-STG[7] DLG P[4] 4 -START-STG[7] DLG P[4] 5 -BOSS STG[7] DLG #0 -BOSS STG[7] DLG #1 -BOSS STG[7] DLG #2 -BOSS STG[7] DLG #3 -BOSS STG[7] DLG #4 -BOSS STG[7] DLG #5 -BOSS STG[7] DLG P[1] 0 -BOSS STG[7] DLG P[1] 1 -BOSS STG[7] DLG P[1] 2 -BOSS STG[7] DLG P[1] 3 -BOSS STG[7] DLG P[1] 4 -BOSS STG[7] DLG P[1] 5 -BOSS STG[7] DLG P[2] 0 -BOSS STG[7] DLG P[2] 1 -BOSS STG[7] DLG P[2] 2 -BOSS STG[7] DLG P[2] 3 -BOSS STG[7] DLG P[2] 4 -BOSS STG[7] DLG P[2] 5 -BOSS STG[7] DLG P[3] 0 -BOSS STG[7] DLG P[3] 1 -BOSS STG[7] DLG P[3] 2 -BOSS STG[7] DLG P[3] 3 -BOSS STG[7] DLG P[3] 4 -BOSS STG[7] DLG P[3] 5 -BOSS STG[7] DLG P[4] 0 -BOSS STG[7] DLG P[4] 1 -BOSS STG[7] DLG P[4] 2 -BOSS STG[7] DLG P[4] 3 -BOSS STG[7] DLG P[4] 4 -BOSS STG[7] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_7_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_7_fr.dat deleted file mode 100644 index 96bfb850..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_7_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[7] DLG #0 -START-STG[7] DLG #1 -START-STG[7] DLG #2 -START-STG[7] DLG #3 -START-STG[7] DLG #4 -START-STG[7] DLG #5 -START-STG[7] DLG P[1] 0 -START-STG[7] DLG P[1] 1 -START-STG[7] DLG P[1] 2 -START-STG[7] DLG P[1] 3 -START-STG[7] DLG P[1] 4 -START-STG[7] DLG P[1] 5 -START-STG[7] DLG P[2] 0 -START-STG[7] DLG P[2] 1 -START-STG[7] DLG P[2] 2 -START-STG[7] DLG P[2] 3 -START-STG[7] DLG P[2] 4 -START-STG[7] DLG P[2] 5 -START-STG[7] DLG P[3] 0 -START-STG[7] DLG P[3] 1 -START-STG[7] DLG P[3] 2 -START-STG[7] DLG P[3] 3 -START-STG[7] DLG P[3] 4 -START-STG[7] DLG P[3] 5 -START-STG[7] DLG P[4] 0 -START-STG[7] DLG P[4] 1 -START-STG[7] DLG P[4] 2 -START-STG[7] DLG P[4] 3 -START-STG[7] DLG P[4] 4 -START-STG[7] DLG P[4] 5 -BOSS STG[7] DLG #0 -BOSS STG[7] DLG #1 -BOSS STG[7] DLG #2 -BOSS STG[7] DLG #3 -BOSS STG[7] DLG #4 -BOSS STG[7] DLG #5 -BOSS STG[7] DLG P[1] 0 -BOSS STG[7] DLG P[1] 1 -BOSS STG[7] DLG P[1] 2 -BOSS STG[7] DLG P[1] 3 -BOSS STG[7] DLG P[1] 4 -BOSS STG[7] DLG P[1] 5 -BOSS STG[7] DLG P[2] 0 -BOSS STG[7] DLG P[2] 1 -BOSS STG[7] DLG P[2] 2 -BOSS STG[7] DLG P[2] 3 -BOSS STG[7] DLG P[2] 4 -BOSS STG[7] DLG P[2] 5 -BOSS STG[7] DLG P[3] 0 -BOSS STG[7] DLG P[3] 1 -BOSS STG[7] DLG P[3] 2 -BOSS STG[7] DLG P[3] 3 -BOSS STG[7] DLG P[3] 4 -BOSS STG[7] DLG P[3] 5 -BOSS STG[7] DLG P[4] 0 -BOSS STG[7] DLG P[4] 1 -BOSS STG[7] DLG P[4] 2 -BOSS STG[7] DLG P[4] 3 -BOSS STG[7] DLG P[4] 4 -BOSS STG[7] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_7_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_7_it.dat deleted file mode 100644 index 96bfb850..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_7_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[7] DLG #0 -START-STG[7] DLG #1 -START-STG[7] DLG #2 -START-STG[7] DLG #3 -START-STG[7] DLG #4 -START-STG[7] DLG #5 -START-STG[7] DLG P[1] 0 -START-STG[7] DLG P[1] 1 -START-STG[7] DLG P[1] 2 -START-STG[7] DLG P[1] 3 -START-STG[7] DLG P[1] 4 -START-STG[7] DLG P[1] 5 -START-STG[7] DLG P[2] 0 -START-STG[7] DLG P[2] 1 -START-STG[7] DLG P[2] 2 -START-STG[7] DLG P[2] 3 -START-STG[7] DLG P[2] 4 -START-STG[7] DLG P[2] 5 -START-STG[7] DLG P[3] 0 -START-STG[7] DLG P[3] 1 -START-STG[7] DLG P[3] 2 -START-STG[7] DLG P[3] 3 -START-STG[7] DLG P[3] 4 -START-STG[7] DLG P[3] 5 -START-STG[7] DLG P[4] 0 -START-STG[7] DLG P[4] 1 -START-STG[7] DLG P[4] 2 -START-STG[7] DLG P[4] 3 -START-STG[7] DLG P[4] 4 -START-STG[7] DLG P[4] 5 -BOSS STG[7] DLG #0 -BOSS STG[7] DLG #1 -BOSS STG[7] DLG #2 -BOSS STG[7] DLG #3 -BOSS STG[7] DLG #4 -BOSS STG[7] DLG #5 -BOSS STG[7] DLG P[1] 0 -BOSS STG[7] DLG P[1] 1 -BOSS STG[7] DLG P[1] 2 -BOSS STG[7] DLG P[1] 3 -BOSS STG[7] DLG P[1] 4 -BOSS STG[7] DLG P[1] 5 -BOSS STG[7] DLG P[2] 0 -BOSS STG[7] DLG P[2] 1 -BOSS STG[7] DLG P[2] 2 -BOSS STG[7] DLG P[2] 3 -BOSS STG[7] DLG P[2] 4 -BOSS STG[7] DLG P[2] 5 -BOSS STG[7] DLG P[3] 0 -BOSS STG[7] DLG P[3] 1 -BOSS STG[7] DLG P[3] 2 -BOSS STG[7] DLG P[3] 3 -BOSS STG[7] DLG P[3] 4 -BOSS STG[7] DLG P[3] 5 -BOSS STG[7] DLG P[4] 0 -BOSS STG[7] DLG P[4] 1 -BOSS STG[7] DLG P[4] 2 -BOSS STG[7] DLG P[4] 3 -BOSS STG[7] DLG P[4] 4 -BOSS STG[7] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_8_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_8_es.dat deleted file mode 100644 index fa7d72f9..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_8_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[8] DLG #0 -START-STG[8] DLG #1 -START-STG[8] DLG #2 -START-STG[8] DLG #3 -START-STG[8] DLG #4 -START-STG[8] DLG #5 -START-STG[8] DLG P[1] 0 -START-STG[8] DLG P[1] 1 -START-STG[8] DLG P[1] 2 -START-STG[8] DLG P[1] 3 -START-STG[8] DLG P[1] 4 -START-STG[8] DLG P[1] 5 -START-STG[8] DLG P[2] 0 -START-STG[8] DLG P[2] 1 -START-STG[8] DLG P[2] 2 -START-STG[8] DLG P[2] 3 -START-STG[8] DLG P[2] 4 -START-STG[8] DLG P[2] 5 -START-STG[8] DLG P[3] 0 -START-STG[8] DLG P[3] 1 -START-STG[8] DLG P[3] 2 -START-STG[8] DLG P[3] 3 -START-STG[8] DLG P[3] 4 -START-STG[8] DLG P[3] 5 -START-STG[8] DLG P[4] 0 -START-STG[8] DLG P[4] 1 -START-STG[8] DLG P[4] 2 -START-STG[8] DLG P[4] 3 -START-STG[8] DLG P[4] 4 -START-STG[8] DLG P[4] 5 -BOSS STG[8] DLG #0 -BOSS STG[8] DLG #1 -BOSS STG[8] DLG #2 -BOSS STG[8] DLG #3 -BOSS STG[8] DLG #4 -BOSS STG[8] DLG #5 -BOSS STG[8] DLG P[1] 0 -BOSS STG[8] DLG P[1] 1 -BOSS STG[8] DLG P[1] 2 -BOSS STG[8] DLG P[1] 3 -BOSS STG[8] DLG P[1] 4 -BOSS STG[8] DLG P[1] 5 -BOSS STG[8] DLG P[2] 0 -BOSS STG[8] DLG P[2] 1 -BOSS STG[8] DLG P[2] 2 -BOSS STG[8] DLG P[2] 3 -BOSS STG[8] DLG P[2] 4 -BOSS STG[8] DLG P[2] 5 -BOSS STG[8] DLG P[3] 0 -BOSS STG[8] DLG P[3] 1 -BOSS STG[8] DLG P[3] 2 -BOSS STG[8] DLG P[3] 3 -BOSS STG[8] DLG P[3] 4 -BOSS STG[8] DLG P[3] 5 -BOSS STG[8] DLG P[4] 0 -BOSS STG[8] DLG P[4] 1 -BOSS STG[8] DLG P[4] 2 -BOSS STG[8] DLG P[4] 3 -BOSS STG[8] DLG P[4] 4 -BOSS STG[8] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_8_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_8_fr.dat deleted file mode 100644 index fa7d72f9..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_8_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[8] DLG #0 -START-STG[8] DLG #1 -START-STG[8] DLG #2 -START-STG[8] DLG #3 -START-STG[8] DLG #4 -START-STG[8] DLG #5 -START-STG[8] DLG P[1] 0 -START-STG[8] DLG P[1] 1 -START-STG[8] DLG P[1] 2 -START-STG[8] DLG P[1] 3 -START-STG[8] DLG P[1] 4 -START-STG[8] DLG P[1] 5 -START-STG[8] DLG P[2] 0 -START-STG[8] DLG P[2] 1 -START-STG[8] DLG P[2] 2 -START-STG[8] DLG P[2] 3 -START-STG[8] DLG P[2] 4 -START-STG[8] DLG P[2] 5 -START-STG[8] DLG P[3] 0 -START-STG[8] DLG P[3] 1 -START-STG[8] DLG P[3] 2 -START-STG[8] DLG P[3] 3 -START-STG[8] DLG P[3] 4 -START-STG[8] DLG P[3] 5 -START-STG[8] DLG P[4] 0 -START-STG[8] DLG P[4] 1 -START-STG[8] DLG P[4] 2 -START-STG[8] DLG P[4] 3 -START-STG[8] DLG P[4] 4 -START-STG[8] DLG P[4] 5 -BOSS STG[8] DLG #0 -BOSS STG[8] DLG #1 -BOSS STG[8] DLG #2 -BOSS STG[8] DLG #3 -BOSS STG[8] DLG #4 -BOSS STG[8] DLG #5 -BOSS STG[8] DLG P[1] 0 -BOSS STG[8] DLG P[1] 1 -BOSS STG[8] DLG P[1] 2 -BOSS STG[8] DLG P[1] 3 -BOSS STG[8] DLG P[1] 4 -BOSS STG[8] DLG P[1] 5 -BOSS STG[8] DLG P[2] 0 -BOSS STG[8] DLG P[2] 1 -BOSS STG[8] DLG P[2] 2 -BOSS STG[8] DLG P[2] 3 -BOSS STG[8] DLG P[2] 4 -BOSS STG[8] DLG P[2] 5 -BOSS STG[8] DLG P[3] 0 -BOSS STG[8] DLG P[3] 1 -BOSS STG[8] DLG P[3] 2 -BOSS STG[8] DLG P[3] 3 -BOSS STG[8] DLG P[3] 4 -BOSS STG[8] DLG P[3] 5 -BOSS STG[8] DLG P[4] 0 -BOSS STG[8] DLG P[4] 1 -BOSS STG[8] DLG P[4] 2 -BOSS STG[8] DLG P[4] 3 -BOSS STG[8] DLG P[4] 4 -BOSS STG[8] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_8_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_8_it.dat deleted file mode 100644 index fa7d72f9..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_8_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[8] DLG #0 -START-STG[8] DLG #1 -START-STG[8] DLG #2 -START-STG[8] DLG #3 -START-STG[8] DLG #4 -START-STG[8] DLG #5 -START-STG[8] DLG P[1] 0 -START-STG[8] DLG P[1] 1 -START-STG[8] DLG P[1] 2 -START-STG[8] DLG P[1] 3 -START-STG[8] DLG P[1] 4 -START-STG[8] DLG P[1] 5 -START-STG[8] DLG P[2] 0 -START-STG[8] DLG P[2] 1 -START-STG[8] DLG P[2] 2 -START-STG[8] DLG P[2] 3 -START-STG[8] DLG P[2] 4 -START-STG[8] DLG P[2] 5 -START-STG[8] DLG P[3] 0 -START-STG[8] DLG P[3] 1 -START-STG[8] DLG P[3] 2 -START-STG[8] DLG P[3] 3 -START-STG[8] DLG P[3] 4 -START-STG[8] DLG P[3] 5 -START-STG[8] DLG P[4] 0 -START-STG[8] DLG P[4] 1 -START-STG[8] DLG P[4] 2 -START-STG[8] DLG P[4] 3 -START-STG[8] DLG P[4] 4 -START-STG[8] DLG P[4] 5 -BOSS STG[8] DLG #0 -BOSS STG[8] DLG #1 -BOSS STG[8] DLG #2 -BOSS STG[8] DLG #3 -BOSS STG[8] DLG #4 -BOSS STG[8] DLG #5 -BOSS STG[8] DLG P[1] 0 -BOSS STG[8] DLG P[1] 1 -BOSS STG[8] DLG P[1] 2 -BOSS STG[8] DLG P[1] 3 -BOSS STG[8] DLG P[1] 4 -BOSS STG[8] DLG P[1] 5 -BOSS STG[8] DLG P[2] 0 -BOSS STG[8] DLG P[2] 1 -BOSS STG[8] DLG P[2] 2 -BOSS STG[8] DLG P[2] 3 -BOSS STG[8] DLG P[2] 4 -BOSS STG[8] DLG P[2] 5 -BOSS STG[8] DLG P[3] 0 -BOSS STG[8] DLG P[3] 1 -BOSS STG[8] DLG P[3] 2 -BOSS STG[8] DLG P[3] 3 -BOSS STG[8] DLG P[3] 4 -BOSS STG[8] DLG P[3] 5 -BOSS STG[8] DLG P[4] 0 -BOSS STG[8] DLG P[4] 1 -BOSS STG[8] DLG P[4] 2 -BOSS STG[8] DLG P[4] 3 -BOSS STG[8] DLG P[4] 4 -BOSS STG[8] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_9_es.dat b/build/games/Rockbot2/dialogs/stage_dialogs_9_es.dat deleted file mode 100644 index c9c5e9dd..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_9_es.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[9] DLG #0 -START-STG[9] DLG #1 -START-STG[9] DLG #2 -START-STG[9] DLG #3 -START-STG[9] DLG #4 -START-STG[9] DLG #5 -START-STG[9] DLG P[1] 0 -START-STG[9] DLG P[1] 1 -START-STG[9] DLG P[1] 2 -START-STG[9] DLG P[1] 3 -START-STG[9] DLG P[1] 4 -START-STG[9] DLG P[1] 5 -START-STG[9] DLG P[2] 0 -START-STG[9] DLG P[2] 1 -START-STG[9] DLG P[2] 2 -START-STG[9] DLG P[2] 3 -START-STG[9] DLG P[2] 4 -START-STG[9] DLG P[2] 5 -START-STG[9] DLG P[3] 0 -START-STG[9] DLG P[3] 1 -START-STG[9] DLG P[3] 2 -START-STG[9] DLG P[3] 3 -START-STG[9] DLG P[3] 4 -START-STG[9] DLG P[3] 5 -START-STG[9] DLG P[4] 0 -START-STG[9] DLG P[4] 1 -START-STG[9] DLG P[4] 2 -START-STG[9] DLG P[4] 3 -START-STG[9] DLG P[4] 4 -START-STG[9] DLG P[4] 5 -BOSS STG[9] DLG #0 -BOSS STG[9] DLG #1 -BOSS STG[9] DLG #2 -BOSS STG[9] DLG #3 -BOSS STG[9] DLG #4 -BOSS STG[9] DLG #5 -BOSS STG[9] DLG P[1] 0 -BOSS STG[9] DLG P[1] 1 -BOSS STG[9] DLG P[1] 2 -BOSS STG[9] DLG P[1] 3 -BOSS STG[9] DLG P[1] 4 -BOSS STG[9] DLG P[1] 5 -BOSS STG[9] DLG P[2] 0 -BOSS STG[9] DLG P[2] 1 -BOSS STG[9] DLG P[2] 2 -BOSS STG[9] DLG P[2] 3 -BOSS STG[9] DLG P[2] 4 -BOSS STG[9] DLG P[2] 5 -BOSS STG[9] DLG P[3] 0 -BOSS STG[9] DLG P[3] 1 -BOSS STG[9] DLG P[3] 2 -BOSS STG[9] DLG P[3] 3 -BOSS STG[9] DLG P[3] 4 -BOSS STG[9] DLG P[3] 5 -BOSS STG[9] DLG P[4] 0 -BOSS STG[9] DLG P[4] 1 -BOSS STG[9] DLG P[4] 2 -BOSS STG[9] DLG P[4] 3 -BOSS STG[9] DLG P[4] 4 -BOSS STG[9] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_9_fr.dat b/build/games/Rockbot2/dialogs/stage_dialogs_9_fr.dat deleted file mode 100644 index c9c5e9dd..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_9_fr.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[9] DLG #0 -START-STG[9] DLG #1 -START-STG[9] DLG #2 -START-STG[9] DLG #3 -START-STG[9] DLG #4 -START-STG[9] DLG #5 -START-STG[9] DLG P[1] 0 -START-STG[9] DLG P[1] 1 -START-STG[9] DLG P[1] 2 -START-STG[9] DLG P[1] 3 -START-STG[9] DLG P[1] 4 -START-STG[9] DLG P[1] 5 -START-STG[9] DLG P[2] 0 -START-STG[9] DLG P[2] 1 -START-STG[9] DLG P[2] 2 -START-STG[9] DLG P[2] 3 -START-STG[9] DLG P[2] 4 -START-STG[9] DLG P[2] 5 -START-STG[9] DLG P[3] 0 -START-STG[9] DLG P[3] 1 -START-STG[9] DLG P[3] 2 -START-STG[9] DLG P[3] 3 -START-STG[9] DLG P[3] 4 -START-STG[9] DLG P[3] 5 -START-STG[9] DLG P[4] 0 -START-STG[9] DLG P[4] 1 -START-STG[9] DLG P[4] 2 -START-STG[9] DLG P[4] 3 -START-STG[9] DLG P[4] 4 -START-STG[9] DLG P[4] 5 -BOSS STG[9] DLG #0 -BOSS STG[9] DLG #1 -BOSS STG[9] DLG #2 -BOSS STG[9] DLG #3 -BOSS STG[9] DLG #4 -BOSS STG[9] DLG #5 -BOSS STG[9] DLG P[1] 0 -BOSS STG[9] DLG P[1] 1 -BOSS STG[9] DLG P[1] 2 -BOSS STG[9] DLG P[1] 3 -BOSS STG[9] DLG P[1] 4 -BOSS STG[9] DLG P[1] 5 -BOSS STG[9] DLG P[2] 0 -BOSS STG[9] DLG P[2] 1 -BOSS STG[9] DLG P[2] 2 -BOSS STG[9] DLG P[2] 3 -BOSS STG[9] DLG P[2] 4 -BOSS STG[9] DLG P[2] 5 -BOSS STG[9] DLG P[3] 0 -BOSS STG[9] DLG P[3] 1 -BOSS STG[9] DLG P[3] 2 -BOSS STG[9] DLG P[3] 3 -BOSS STG[9] DLG P[3] 4 -BOSS STG[9] DLG P[3] 5 -BOSS STG[9] DLG P[4] 0 -BOSS STG[9] DLG P[4] 1 -BOSS STG[9] DLG P[4] 2 -BOSS STG[9] DLG P[4] 3 -BOSS STG[9] DLG P[4] 4 -BOSS STG[9] DLG P[4] 5 diff --git a/build/games/Rockbot2/dialogs/stage_dialogs_9_it.dat b/build/games/Rockbot2/dialogs/stage_dialogs_9_it.dat deleted file mode 100644 index c9c5e9dd..00000000 --- a/build/games/Rockbot2/dialogs/stage_dialogs_9_it.dat +++ /dev/null @@ -1,60 +0,0 @@ -START-STG[9] DLG #0 -START-STG[9] DLG #1 -START-STG[9] DLG #2 -START-STG[9] DLG #3 -START-STG[9] DLG #4 -START-STG[9] DLG #5 -START-STG[9] DLG P[1] 0 -START-STG[9] DLG P[1] 1 -START-STG[9] DLG P[1] 2 -START-STG[9] DLG P[1] 3 -START-STG[9] DLG P[1] 4 -START-STG[9] DLG P[1] 5 -START-STG[9] DLG P[2] 0 -START-STG[9] DLG P[2] 1 -START-STG[9] DLG P[2] 2 -START-STG[9] DLG P[2] 3 -START-STG[9] DLG P[2] 4 -START-STG[9] DLG P[2] 5 -START-STG[9] DLG P[3] 0 -START-STG[9] DLG P[3] 1 -START-STG[9] DLG P[3] 2 -START-STG[9] DLG P[3] 3 -START-STG[9] DLG P[3] 4 -START-STG[9] DLG P[3] 5 -START-STG[9] DLG P[4] 0 -START-STG[9] DLG P[4] 1 -START-STG[9] DLG P[4] 2 -START-STG[9] DLG P[4] 3 -START-STG[9] DLG P[4] 4 -START-STG[9] DLG P[4] 5 -BOSS STG[9] DLG #0 -BOSS STG[9] DLG #1 -BOSS STG[9] DLG #2 -BOSS STG[9] DLG #3 -BOSS STG[9] DLG #4 -BOSS STG[9] DLG #5 -BOSS STG[9] DLG P[1] 0 -BOSS STG[9] DLG P[1] 1 -BOSS STG[9] DLG P[1] 2 -BOSS STG[9] DLG P[1] 3 -BOSS STG[9] DLG P[1] 4 -BOSS STG[9] DLG P[1] 5 -BOSS STG[9] DLG P[2] 0 -BOSS STG[9] DLG P[2] 1 -BOSS STG[9] DLG P[2] 2 -BOSS STG[9] DLG P[2] 3 -BOSS STG[9] DLG P[2] 4 -BOSS STG[9] DLG P[2] 5 -BOSS STG[9] DLG P[3] 0 -BOSS STG[9] DLG P[3] 1 -BOSS STG[9] DLG P[3] 2 -BOSS STG[9] DLG P[3] 3 -BOSS STG[9] DLG P[3] 4 -BOSS STG[9] DLG P[3] 5 -BOSS STG[9] DLG P[4] 0 -BOSS STG[9] DLG P[4] 1 -BOSS STG[9] DLG P[4] 2 -BOSS STG[9] DLG P[4] 3 -BOSS STG[9] DLG P[4] 4 -BOSS STG[9] DLG P[4] 5 diff --git a/build/games/Rockbot2/game_ai_list.dat b/build/games/Rockbot2/game_ai_list.dat deleted file mode 100644 index 35e304f0..00000000 Binary files a/build/games/Rockbot2/game_ai_list.dat and /dev/null differ diff --git a/build/games/Rockbot2/game_credits.txt b/build/games/Rockbot2/game_credits.txt deleted file mode 100644 index 5ca4c6e7..00000000 --- a/build/games/Rockbot2/game_credits.txt +++ /dev/null @@ -1,102 +0,0 @@ -# ROCKBOT 2 GAME CREDITS # - - -- CHARACTER DESIGN - -IURI FIEDORUK -ARISMEIRE KUMMER SILVA FIEDORUK -BOBERATU -NELSON ROSENBERG - - -- ILLUSTRATION - -IURI FIEDORUK -ARISMEIRE KUMMER SILVA FIEDORUK - - -- PIXEL ART - -IURI FIEDORUK -BOBERATU -@OPENGAMEART.ORG -SURT -USR_SHARE -THE CHAYED KIIRA -MOIKMELLAH -@CUTSTUFF.NET -NEMZ -@DEVIANTART.COM -AVERAGE-HANZO -BAR-KUN -STOFFHIMEL -HFBN2 -CAPT CHRIS AND KB -JOSEPHSERAPH -SHRAM -KAITHEHEDGEFOX10 -BONGWATER-BANDIT - - -- MUSIC - -MODARCHIVE.ORG -FIREAGE -SOLARIS -LEON/EXCESS -DIOMATIC -JASON -DEADLOCK/EXLSD -4MAT -ZANAZAC -AMEGA INDUSTRIESQ -DEATH ADDR -TOBBX -HYOCHAN -DR.BULLY/MAJIC12 - - -- VOICES - -IURI FIEDORUK -ARISMEIRE KUMMER SILVA FIEDORUK -NELSON ROSENBERG - - -- PROGRAMMING - -IURI FIEDORUK - - -- SPECIAL THANKS - -FELIPE ZACANI (FPS MODULE) -DEVIANTART.COM -PIXELJOINT.COM -OPENGAMEART.ORG -BFXR.NET -MODARCHIVE.ORG -SHIN-NIL (DINGUX) -SIGMA NL (PANDORA) -RAGNAROK2040 (PS2) -WOON-YUNG LIU (PS2) -SP193 (PS2) -PELYA (ANDROID) - - -- TOOLS AND SOFTWARE - -QT-PROJECT.ORG -LIBSDL.ORG -GCC.GNU.ORG -LINUXMINT.COM -UBUNTU.COM -GIMP.ORG -PAINT TOOL SAI -SIMPLE SCREEN RECORD -AUDACIOUS PLAYER -AUDACITY EDITOR - - -- INSPIRATION GAMES - -MEGAMAN -DUCK TALES -LITTLE NEMO -ROKKO CHAN -SHOVEL KNIGHT - -- DIRECTOR - -IURI FIEDORUK - diff --git a/build/games/Rockbot2/game_enemy_list_3_1_2.dat b/build/games/Rockbot2/game_enemy_list_3_1_2.dat deleted file mode 100644 index bf22549e..00000000 Binary files a/build/games/Rockbot2/game_enemy_list_3_1_2.dat and /dev/null differ diff --git a/build/games/Rockbot2/game_object_list.dat b/build/games/Rockbot2/game_object_list.dat deleted file mode 100644 index 02e5a129..00000000 Binary files a/build/games/Rockbot2/game_object_list.dat and /dev/null differ diff --git a/build/games/Rockbot2/game_properties_v301.dat b/build/games/Rockbot2/game_properties_v301.dat deleted file mode 100644 index 894f9fde..00000000 Binary files a/build/games/Rockbot2/game_properties_v301.dat and /dev/null differ diff --git a/build/games/Rockbot2/images/1up_icons.png b/build/games/Rockbot2/images/1up_icons.png deleted file mode 100644 index 84eddb04..00000000 Binary files a/build/games/Rockbot2/images/1up_icons.png and /dev/null differ diff --git a/build/games/Rockbot2/images/animations/water_splash.png b/build/games/Rockbot2/images/animations/water_splash.png deleted file mode 100644 index efcf5762..00000000 Binary files a/build/games/Rockbot2/images/animations/water_splash.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/boss_intro/01.png b/build/games/Rockbot2/images/backgrounds/boss_intro/01.png deleted file mode 100644 index 43afcff8..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/boss_intro/01.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/boss_intro/02.png b/build/games/Rockbot2/images/backgrounds/boss_intro/02.png deleted file mode 100644 index 910dec67..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/boss_intro/02.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/boss_intro/03.png b/build/games/Rockbot2/images/backgrounds/boss_intro/03.png deleted file mode 100644 index 025d54cd..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/boss_intro/03.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/boss_intro/04.png b/build/games/Rockbot2/images/backgrounds/boss_intro/04.png deleted file mode 100644 index 7c6b4d15..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/boss_intro/04.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/boss_intro/05.png b/build/games/Rockbot2/images/backgrounds/boss_intro/05.png deleted file mode 100644 index a02a68d5..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/boss_intro/05.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/boss_intro/06.png b/build/games/Rockbot2/images/backgrounds/boss_intro/06.png deleted file mode 100644 index 0e234547..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/boss_intro/06.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/boss_intro/07.png b/build/games/Rockbot2/images/backgrounds/boss_intro/07.png deleted file mode 100644 index 82a11387..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/boss_intro/07.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/boss_intro/08.png b/build/games/Rockbot2/images/backgrounds/boss_intro/08.png deleted file mode 100644 index f78505d7..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/boss_intro/08.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/boss_intro/09.png b/build/games/Rockbot2/images/backgrounds/boss_intro/09.png deleted file mode 100644 index ed22caef..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/boss_intro/09.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/castle.png b/build/games/Rockbot2/images/backgrounds/castle.png deleted file mode 100644 index 42e2a0b5..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/castle.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/castle_point.png b/build/games/Rockbot2/images/backgrounds/castle_point.png deleted file mode 100644 index 7b93539d..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/castle_point.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/dialog.png b/build/games/Rockbot2/images/backgrounds/dialog.png deleted file mode 100644 index ca41a67f..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/dialog.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/player_select_p1.png b/build/games/Rockbot2/images/backgrounds/player_select_p1.png deleted file mode 100644 index 52a0781c..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/player_select_p1.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/player_select_p2.png b/build/games/Rockbot2/images/backgrounds/player_select_p2.png deleted file mode 100644 index 9b2037f0..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/player_select_p2.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/player_select_p3.png b/build/games/Rockbot2/images/backgrounds/player_select_p3.png deleted file mode 100644 index b1fe35d8..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/player_select_p3.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/player_select_p4.png b/build/games/Rockbot2/images/backgrounds/player_select_p4.png deleted file mode 100644 index 13688d14..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/player_select_p4.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/player_selection.png b/build/games/Rockbot2/images/backgrounds/player_selection.png deleted file mode 100644 index 8b28e906..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/player_selection.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/stage_select.png b/build/games/Rockbot2/images/backgrounds/stage_select.png deleted file mode 100644 index df8aca76..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/stage_select.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/stage_select_darkned.png b/build/games/Rockbot2/images/backgrounds/stage_select_darkned.png deleted file mode 100644 index 83afd3db..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/stage_select_darkned.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/stage_select_highlighted.png b/build/games/Rockbot2/images/backgrounds/stage_select_highlighted.png deleted file mode 100644 index d572df92..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/stage_select_highlighted.png and /dev/null differ diff --git a/build/games/Rockbot2/images/backgrounds/weapon_menu.png b/build/games/Rockbot2/images/backgrounds/weapon_menu.png deleted file mode 100644 index 2b1e204b..00000000 Binary files a/build/games/Rockbot2/images/backgrounds/weapon_menu.png and /dev/null differ diff --git a/build/games/Rockbot2/images/ending/player_walking_layer1.png b/build/games/Rockbot2/images/ending/player_walking_layer1.png deleted file mode 100644 index 4cf42779..00000000 Binary files a/build/games/Rockbot2/images/ending/player_walking_layer1.png and /dev/null differ diff --git a/build/games/Rockbot2/images/ending/player_walking_layer2.png b/build/games/Rockbot2/images/ending/player_walking_layer2.png deleted file mode 100644 index 0405b47b..00000000 Binary files a/build/games/Rockbot2/images/ending/player_walking_layer2.png and /dev/null differ diff --git a/build/games/Rockbot2/images/ending/player_walking_layer3.png b/build/games/Rockbot2/images/ending/player_walking_layer3.png deleted file mode 100644 index 9c3881fc..00000000 Binary files a/build/games/Rockbot2/images/ending/player_walking_layer3.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/background.png b/build/games/Rockbot2/images/faces/background.png deleted file mode 100644 index 2a03e1c3..00000000 Binary files a/build/games/Rockbot2/images/faces/background.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/background_dark.png b/build/games/Rockbot2/images/faces/background_dark.png deleted file mode 100644 index 57473d4e..00000000 Binary files a/build/games/Rockbot2/images/faces/background_dark.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/background_light.png b/build/games/Rockbot2/images/faces/background_light.png deleted file mode 100644 index 3be2e2d5..00000000 Binary files a/build/games/Rockbot2/images/faces/background_light.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/betabot.png b/build/games/Rockbot2/images/faces/betabot.png deleted file mode 100644 index 66e7c19d..00000000 Binary files a/build/games/Rockbot2/images/faces/betabot.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/candybot.png b/build/games/Rockbot2/images/faces/candybot.png deleted file mode 100644 index 3987ec35..00000000 Binary files a/build/games/Rockbot2/images/faces/candybot.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/canotus_face.png b/build/games/Rockbot2/images/faces/canotus_face.png deleted file mode 100644 index c4048235..00000000 Binary files a/build/games/Rockbot2/images/faces/canotus_face.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/destrin.png b/build/games/Rockbot2/images/faces/destrin.png deleted file mode 100644 index 124492e9..00000000 Binary files a/build/games/Rockbot2/images/faces/destrin.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/dr_destrin.png b/build/games/Rockbot2/images/faces/dr_destrin.png deleted file mode 100644 index dbe0fdb7..00000000 Binary files a/build/games/Rockbot2/images/faces/dr_destrin.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/dr_kanotus.png b/build/games/Rockbot2/images/faces/dr_kanotus.png deleted file mode 100644 index ea5a1ce9..00000000 Binary files a/build/games/Rockbot2/images/faces/dr_kanotus.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/kittybot.png b/build/games/Rockbot2/images/faces/kittybot.png deleted file mode 100644 index f6c22e63..00000000 Binary files a/build/games/Rockbot2/images/faces/kittybot.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/milonga.png b/build/games/Rockbot2/images/faces/milonga.png deleted file mode 100644 index 0fcd3903..00000000 Binary files a/build/games/Rockbot2/images/faces/milonga.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/p1_eyes.png b/build/games/Rockbot2/images/faces/p1_eyes.png deleted file mode 100644 index 1cc2059e..00000000 Binary files a/build/games/Rockbot2/images/faces/p1_eyes.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/p2_eyes.png b/build/games/Rockbot2/images/faces/p2_eyes.png deleted file mode 100644 index 3c55825b..00000000 Binary files a/build/games/Rockbot2/images/faces/p2_eyes.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/p3_eyes.png b/build/games/Rockbot2/images/faces/p3_eyes.png deleted file mode 100644 index 636bed2b..00000000 Binary files a/build/games/Rockbot2/images/faces/p3_eyes.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/p4_eyes.png b/build/games/Rockbot2/images/faces/p4_eyes.png deleted file mode 100644 index c588a017..00000000 Binary files a/build/games/Rockbot2/images/faces/p4_eyes.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/player1.png b/build/games/Rockbot2/images/faces/player1.png deleted file mode 100644 index de3c5095..00000000 Binary files a/build/games/Rockbot2/images/faces/player1.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/player2.png b/build/games/Rockbot2/images/faces/player2.png deleted file mode 100644 index 79519b4e..00000000 Binary files a/build/games/Rockbot2/images/faces/player2.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/player3.png b/build/games/Rockbot2/images/faces/player3.png deleted file mode 100644 index d6b61086..00000000 Binary files a/build/games/Rockbot2/images/faces/player3.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/player4.png b/build/games/Rockbot2/images/faces/player4.png deleted file mode 100644 index efee92b9..00000000 Binary files a/build/games/Rockbot2/images/faces/player4.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/rockbot.png b/build/games/Rockbot2/images/faces/rockbot.png deleted file mode 100644 index 1830eccd..00000000 Binary files a/build/games/Rockbot2/images/faces/rockbot.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/rockbot_sad.png b/build/games/Rockbot2/images/faces/rockbot_sad.png deleted file mode 100644 index 024abd0b..00000000 Binary files a/build/games/Rockbot2/images/faces/rockbot_sad.png and /dev/null differ diff --git a/build/games/Rockbot2/images/faces/volcano.png b/build/games/Rockbot2/images/faces/volcano.png deleted file mode 100644 index b4ecdaff..00000000 Binary files a/build/games/Rockbot2/images/faces/volcano.png and /dev/null differ diff --git a/build/games/Rockbot2/images/icons.png b/build/games/Rockbot2/images/icons.png deleted file mode 100644 index 8fbc2c76..00000000 Binary files a/build/games/Rockbot2/images/icons.png and /dev/null differ diff --git a/build/games/Rockbot2/images/icons_small.png b/build/games/Rockbot2/images/icons_small.png deleted file mode 100644 index 129ec9b9..00000000 Binary files a/build/games/Rockbot2/images/icons_small.png and /dev/null differ diff --git a/build/games/Rockbot2/images/items.png b/build/games/Rockbot2/images/items.png deleted file mode 100644 index bc81bfd3..00000000 Binary files a/build/games/Rockbot2/images/items.png and /dev/null differ diff --git a/build/games/Rockbot2/images/logo.png b/build/games/Rockbot2/images/logo.png deleted file mode 100644 index b5cad2d5..00000000 Binary files a/build/games/Rockbot2/images/logo.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/beach.png b/build/games/Rockbot2/images/map_backgrounds/beach.png deleted file mode 100644 index df4eadc1..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/beach.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/beach_volcano.png b/build/games/Rockbot2/images/map_backgrounds/beach_volcano.png deleted file mode 100644 index bf7bf0e7..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/beach_volcano.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/castle_03.png b/build/games/Rockbot2/images/map_backgrounds/castle_03.png deleted file mode 100644 index 9a036e1a..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/castle_03.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/castle_04_city_sky.png b/build/games/Rockbot2/images/map_backgrounds/castle_04_city_sky.png deleted file mode 100644 index 449b113a..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/castle_04_city_sky.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/dark_castle.png b/build/games/Rockbot2/images/map_backgrounds/dark_castle.png deleted file mode 100644 index 0b394678..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/dark_castle.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/fog.png b/build/games/Rockbot2/images/map_backgrounds/fog.png deleted file mode 100644 index b98ebbce..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/fog.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/intro_stage.png b/build/games/Rockbot2/images/map_backgrounds/intro_stage.png deleted file mode 100644 index 1dab062b..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/intro_stage.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/intro_stage_inside.png b/build/games/Rockbot2/images/map_backgrounds/intro_stage_inside.png deleted file mode 100644 index ec330f5b..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/intro_stage_inside.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/kremlin.png b/build/games/Rockbot2/images/map_backgrounds/kremlin.png deleted file mode 100644 index 5fdbf50a..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/kremlin.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/rock_montains.png b/build/games/Rockbot2/images/map_backgrounds/rock_montains.png deleted file mode 100644 index d8fb7f80..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/rock_montains.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/sewers.png b/build/games/Rockbot2/images/map_backgrounds/sewers.png deleted file mode 100644 index 4734e774..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/sewers.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/snow.png b/build/games/Rockbot2/images/map_backgrounds/snow.png deleted file mode 100644 index 0329b4fa..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/snow.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/snow_internal.png b/build/games/Rockbot2/images/map_backgrounds/snow_internal.png deleted file mode 100644 index f281923d..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/snow_internal.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/space_station.png b/build/games/Rockbot2/images/map_backgrounds/space_station.png deleted file mode 100644 index 17604e7d..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/space_station.png and /dev/null differ diff --git a/build/games/Rockbot2/images/map_backgrounds/toy_room.png b/build/games/Rockbot2/images/map_backgrounds/toy_room.png deleted file mode 100644 index 05fcde5f..00000000 Binary files a/build/games/Rockbot2/images/map_backgrounds/toy_room.png and /dev/null differ diff --git a/build/games/Rockbot2/images/scenes/presents.png b/build/games/Rockbot2/images/scenes/presents.png deleted file mode 100644 index 42955914..00000000 Binary files a/build/games/Rockbot2/images/scenes/presents.png and /dev/null differ diff --git a/build/games/Rockbot2/images/scenes/rock_and_candy.png b/build/games/Rockbot2/images/scenes/rock_and_candy.png deleted file mode 100644 index 18974bf8..00000000 Binary files a/build/games/Rockbot2/images/scenes/rock_and_candy.png and /dev/null differ diff --git a/build/games/Rockbot2/images/scenes/upperland_times.png b/build/games/Rockbot2/images/scenes/upperland_times.png deleted file mode 100644 index bbed45e4..00000000 Binary files a/build/games/Rockbot2/images/scenes/upperland_times.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/enemies/backgrounds/octopus.png b/build/games/Rockbot2/images/sprites/enemies/backgrounds/octopus.png deleted file mode 100644 index 1758248c..00000000 Binary files a/build/games/Rockbot2/images/sprites/enemies/backgrounds/octopus.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/enemies/classic_metool.png b/build/games/Rockbot2/images/sprites/enemies/classic_metool.png deleted file mode 100644 index 6e27b30e..00000000 Binary files a/build/games/Rockbot2/images/sprites/enemies/classic_metool.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/enemies/classic_metool_blue.png b/build/games/Rockbot2/images/sprites/enemies/classic_metool_blue.png deleted file mode 100644 index 9508b398..00000000 Binary files a/build/games/Rockbot2/images/sprites/enemies/classic_metool_blue.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/enemies/destrin_machine.png b/build/games/Rockbot2/images/sprites/enemies/destrin_machine.png deleted file mode 100644 index a6a62cf1..00000000 Binary files a/build/games/Rockbot2/images/sprites/enemies/destrin_machine.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/enemies/destrin_ship.png b/build/games/Rockbot2/images/sprites/enemies/destrin_ship.png deleted file mode 100644 index 8cd0bc28..00000000 Binary files a/build/games/Rockbot2/images/sprites/enemies/destrin_ship.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/enemies/golden_metool.png b/build/games/Rockbot2/images/sprites/enemies/golden_metool.png deleted file mode 100644 index da86b5ce..00000000 Binary files a/build/games/Rockbot2/images/sprites/enemies/golden_metool.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/enemies/octopus.png b/build/games/Rockbot2/images/sprites/enemies/octopus.png deleted file mode 100644 index fa1e99cc..00000000 Binary files a/build/games/Rockbot2/images/sprites/enemies/octopus.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/enemies/red_metool.png b/build/games/Rockbot2/images/sprites/enemies/red_metool.png deleted file mode 100644 index 414036ce..00000000 Binary files a/build/games/Rockbot2/images/sprites/enemies/red_metool.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/enemies/shield.png b/build/games/Rockbot2/images/sprites/enemies/shield.png deleted file mode 100644 index f16cda02..00000000 Binary files a/build/games/Rockbot2/images/sprites/enemies/shield.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/enemies/shield_blue.png b/build/games/Rockbot2/images/sprites/enemies/shield_blue.png deleted file mode 100644 index caa8ba43..00000000 Binary files a/build/games/Rockbot2/images/sprites/enemies/shield_blue.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/1up.png b/build/games/Rockbot2/images/sprites/objects/1up.png deleted file mode 100644 index c784d419..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/1up.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/energy_pill_big.png b/build/games/Rockbot2/images/sprites/objects/energy_pill_big.png deleted file mode 100644 index 2f3358e4..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/energy_pill_big.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/energy_pill_small.png b/build/games/Rockbot2/images/sprites/objects/energy_pill_small.png deleted file mode 100644 index e4d097f6..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/energy_pill_small.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/energy_tank.png b/build/games/Rockbot2/images/sprites/objects/energy_tank.png deleted file mode 100644 index f6d09266..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/energy_tank.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/item_jet.png b/build/games/Rockbot2/images/sprites/objects/item_jet.png deleted file mode 100644 index d4612b4d..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/item_jet.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/item_jump.png b/build/games/Rockbot2/images/sprites/objects/item_jump.png deleted file mode 100644 index b1e4003c..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/item_jump.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/special_tank.png b/build/games/Rockbot2/images/sprites/objects/special_tank.png deleted file mode 100644 index 46bffb22..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/special_tank.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/teleport_base.png b/build/games/Rockbot2/images/sprites/objects/teleport_base.png deleted file mode 100644 index ac51fe71..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/teleport_base.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/teleporter.png b/build/games/Rockbot2/images/sprites/objects/teleporter.png deleted file mode 100644 index 34e17f12..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/teleporter.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/teleporter_final_boss.png b/build/games/Rockbot2/images/sprites/objects/teleporter_final_boss.png deleted file mode 100644 index ff518839..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/teleporter_final_boss.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/weapons_pill_big.png b/build/games/Rockbot2/images/sprites/objects/weapons_pill_big.png deleted file mode 100644 index 49fdfc11..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/weapons_pill_big.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/weapons_pill_small.png b/build/games/Rockbot2/images/sprites/objects/weapons_pill_small.png deleted file mode 100644 index d015917a..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/weapons_pill_small.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/objects/weapons_tank.png b/build/games/Rockbot2/images/sprites/objects/weapons_tank.png deleted file mode 100644 index aae41f87..00000000 Binary files a/build/games/Rockbot2/images/sprites/objects/weapons_tank.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/p1.png b/build/games/Rockbot2/images/sprites/p1.png deleted file mode 100644 index 071e2d30..00000000 Binary files a/build/games/Rockbot2/images/sprites/p1.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/p2.png b/build/games/Rockbot2/images/sprites/p2.png deleted file mode 100644 index c882f616..00000000 Binary files a/build/games/Rockbot2/images/sprites/p2.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/p3.png b/build/games/Rockbot2/images/sprites/p3.png deleted file mode 100644 index 61cfac2b..00000000 Binary files a/build/games/Rockbot2/images/sprites/p3.png and /dev/null differ diff --git a/build/games/Rockbot2/images/sprites/p4.png b/build/games/Rockbot2/images/sprites/p4.png deleted file mode 100644 index 67e80f2a..00000000 Binary files a/build/games/Rockbot2/images/sprites/p4.png and /dev/null differ diff --git a/build/games/Rockbot2/images/tilesets/beach.png b/build/games/Rockbot2/images/tilesets/beach.png deleted file mode 100644 index 0d809bce..00000000 Binary files a/build/games/Rockbot2/images/tilesets/beach.png and /dev/null differ diff --git a/build/games/Rockbot2/images/tilesets/bubbleman.png b/build/games/Rockbot2/images/tilesets/bubbleman.png deleted file mode 100644 index a5985e39..00000000 Binary files a/build/games/Rockbot2/images/tilesets/bubbleman.png and /dev/null differ diff --git a/build/games/Rockbot2/images/tilesets/castle_03.png b/build/games/Rockbot2/images/tilesets/castle_03.png deleted file mode 100644 index 51508e3d..00000000 Binary files a/build/games/Rockbot2/images/tilesets/castle_03.png and /dev/null differ diff --git a/build/games/Rockbot2/images/tilesets/castle_04.png b/build/games/Rockbot2/images/tilesets/castle_04.png deleted file mode 100644 index e6ca6720..00000000 Binary files a/build/games/Rockbot2/images/tilesets/castle_04.png and /dev/null differ diff --git a/build/games/Rockbot2/images/tilesets/castle_05.png b/build/games/Rockbot2/images/tilesets/castle_05.png deleted file mode 100644 index 20818425..00000000 Binary files a/build/games/Rockbot2/images/tilesets/castle_05.png and /dev/null differ diff --git a/build/games/Rockbot2/images/tilesets/default.png b/build/games/Rockbot2/images/tilesets/default.png deleted file mode 100644 index 70dac02b..00000000 Binary files a/build/games/Rockbot2/images/tilesets/default.png and /dev/null differ diff --git a/build/games/Rockbot2/images/tilesets/dragon.png b/build/games/Rockbot2/images/tilesets/dragon.png deleted file mode 100644 index 8c765909..00000000 Binary files a/build/games/Rockbot2/images/tilesets/dragon.png and /dev/null differ diff --git a/build/games/Rockbot2/images/tilesets/gear.png b/build/games/Rockbot2/images/tilesets/gear.png deleted file mode 100644 index 5f69769e..00000000 Binary files a/build/games/Rockbot2/images/tilesets/gear.png and /dev/null differ diff --git a/build/games/Rockbot2/images/tilesets/intro_stage.png b/build/games/Rockbot2/images/tilesets/intro_stage.png deleted file mode 100644 index 8a9e1ddc..00000000 Binary files a/build/games/Rockbot2/images/tilesets/intro_stage.png and /dev/null differ diff --git a/build/games/Rockbot2/images/tilesets/zodiac.png b/build/games/Rockbot2/images/tilesets/zodiac.png deleted file mode 100644 index 23a2cdf9..00000000 Binary files a/build/games/Rockbot2/images/tilesets/zodiac.png and /dev/null differ diff --git a/build/games/Rockbot2/lang/strings_ingame_Italian.dat b/build/games/Rockbot2/lang/strings_ingame_Italian.dat deleted file mode 100644 index e69de29b..00000000 diff --git a/build/games/Rockbot2/lang/strings_ingame_Portuguese.dat b/build/games/Rockbot2/lang/strings_ingame_Portuguese.dat deleted file mode 100644 index e69de29b..00000000 diff --git a/build/games/Rockbot2/lang/strings_ingame_Spanish.dat b/build/games/Rockbot2/lang/strings_ingame_Spanish.dat deleted file mode 100644 index e69de29b..00000000 diff --git a/build/games/Rockbot2/map_npc_data.dat b/build/games/Rockbot2/map_npc_data.dat deleted file mode 100644 index acae61eb..00000000 Binary files a/build/games/Rockbot2/map_npc_data.dat and /dev/null differ diff --git a/build/games/Rockbot2/map_object_data.dat b/build/games/Rockbot2/map_object_data.dat deleted file mode 100644 index 35658e58..00000000 Binary files a/build/games/Rockbot2/map_object_data.dat and /dev/null differ diff --git a/build/games/Rockbot2/maps_v2.dat b/build/games/Rockbot2/maps_v2.dat deleted file mode 100644 index e9e45771..00000000 Binary files a/build/games/Rockbot2/maps_v2.dat and /dev/null differ diff --git a/build/games/Rockbot2/music/beach.mod b/build/games/Rockbot2/music/beach.mod deleted file mode 100644 index 1b035744..00000000 Binary files a/build/games/Rockbot2/music/beach.mod and /dev/null differ diff --git a/build/games/Rockbot2/music/boss_battle.mod b/build/games/Rockbot2/music/boss_battle.mod deleted file mode 100644 index 4dd8181a..00000000 Binary files a/build/games/Rockbot2/music/boss_battle.mod and /dev/null differ diff --git a/build/games/Rockbot2/music/castle1.mod b/build/games/Rockbot2/music/castle1.mod deleted file mode 100644 index 13a673ac..00000000 Binary files a/build/games/Rockbot2/music/castle1.mod and /dev/null differ diff --git a/build/games/Rockbot2/music/castle2.it b/build/games/Rockbot2/music/castle2.it deleted file mode 100644 index e3f6d1df..00000000 Binary files a/build/games/Rockbot2/music/castle2.it and /dev/null differ diff --git a/build/games/Rockbot2/music/castle3.it b/build/games/Rockbot2/music/castle3.it deleted file mode 100644 index 19e4037f..00000000 Binary files a/build/games/Rockbot2/music/castle3.it and /dev/null differ diff --git a/build/games/Rockbot2/music/castle4.mod b/build/games/Rockbot2/music/castle4.mod deleted file mode 100644 index 9cbe6055..00000000 Binary files a/build/games/Rockbot2/music/castle4.mod and /dev/null differ diff --git a/build/games/Rockbot2/music/castle5.xm b/build/games/Rockbot2/music/castle5.xm deleted file mode 100644 index 784a9fb8..00000000 Binary files a/build/games/Rockbot2/music/castle5.xm and /dev/null differ diff --git a/build/games/Rockbot2/music/circus.mod b/build/games/Rockbot2/music/circus.mod deleted file mode 100644 index 86062441..00000000 Binary files a/build/games/Rockbot2/music/circus.mod and /dev/null differ diff --git a/build/games/Rockbot2/music/dragon.mod b/build/games/Rockbot2/music/dragon.mod deleted file mode 100644 index 62603853..00000000 Binary files a/build/games/Rockbot2/music/dragon.mod and /dev/null differ diff --git a/build/games/Rockbot2/music/final_boss.it b/build/games/Rockbot2/music/final_boss.it deleted file mode 100644 index c739db10..00000000 Binary files a/build/games/Rockbot2/music/final_boss.it and /dev/null differ diff --git a/build/games/Rockbot2/music/intro_scene.mod b/build/games/Rockbot2/music/intro_scene.mod deleted file mode 100644 index ec123081..00000000 Binary files a/build/games/Rockbot2/music/intro_scene.mod and /dev/null differ diff --git a/build/games/Rockbot2/music/intro_stage.mod b/build/games/Rockbot2/music/intro_stage.mod deleted file mode 100644 index 663db6b0..00000000 Binary files a/build/games/Rockbot2/music/intro_stage.mod and /dev/null differ diff --git a/build/games/Rockbot2/music/opera.it b/build/games/Rockbot2/music/opera.it deleted file mode 100644 index 21dd0602..00000000 Binary files a/build/games/Rockbot2/music/opera.it and /dev/null differ diff --git a/build/games/Rockbot2/music/snow.it b/build/games/Rockbot2/music/snow.it deleted file mode 100644 index 65775712..00000000 Binary files a/build/games/Rockbot2/music/snow.it and /dev/null differ diff --git a/build/games/Rockbot2/music/titanium.mod b/build/games/Rockbot2/music/titanium.mod deleted file mode 100644 index 5f55f81c..00000000 Binary files a/build/games/Rockbot2/music/titanium.mod and /dev/null differ diff --git a/build/games/Rockbot2/music/wind.mod b/build/games/Rockbot2/music/wind.mod deleted file mode 100644 index 9bf7fb14..00000000 Binary files a/build/games/Rockbot2/music/wind.mod and /dev/null differ diff --git a/build/games/Rockbot2/music/zodiac.mod b/build/games/Rockbot2/music/zodiac.mod deleted file mode 100644 index f12da86b..00000000 Binary files a/build/games/Rockbot2/music/zodiac.mod and /dev/null differ diff --git a/build/games/Rockbot2/player_list_v3_1_1.dat b/build/games/Rockbot2/player_list_v3_1_1.dat deleted file mode 100644 index a92dd1c7..00000000 Binary files a/build/games/Rockbot2/player_list_v3_1_1.dat and /dev/null differ diff --git a/build/games/Rockbot2/scenes/game_scenes.dat b/build/games/Rockbot2/scenes/game_scenes.dat deleted file mode 100644 index 5c5ae443..00000000 Binary files a/build/games/Rockbot2/scenes/game_scenes.dat and /dev/null differ diff --git a/build/games/Rockbot2/scenes/scenes_clear_area.dat b/build/games/Rockbot2/scenes/scenes_clear_area.dat deleted file mode 100644 index e69de29b..00000000 diff --git a/build/games/Rockbot2/scenes/scenes_list.dat b/build/games/Rockbot2/scenes/scenes_list.dat deleted file mode 100644 index f0efacb6..00000000 Binary files a/build/games/Rockbot2/scenes/scenes_list.dat and /dev/null differ diff --git a/build/games/Rockbot2/scenes/scenes_play_music.dat b/build/games/Rockbot2/scenes/scenes_play_music.dat deleted file mode 100644 index d41bf146..00000000 Binary files a/build/games/Rockbot2/scenes/scenes_play_music.dat and /dev/null differ diff --git a/build/games/Rockbot2/scenes/scenes_show_image.dat b/build/games/Rockbot2/scenes/scenes_show_image.dat deleted file mode 100644 index 5fa87e4a..00000000 Binary files a/build/games/Rockbot2/scenes/scenes_show_image.dat and /dev/null differ diff --git a/build/games/Rockbot2/scenes/scenes_show_text.dat b/build/games/Rockbot2/scenes/scenes_show_text.dat deleted file mode 100644 index fa5882d6..00000000 Binary files a/build/games/Rockbot2/scenes/scenes_show_text.dat and /dev/null differ diff --git a/build/games/Rockbot2/sfx/stage_selected.wav b/build/games/Rockbot2/sfx/stage_selected.wav deleted file mode 100644 index 0fcec739..00000000 Binary files a/build/games/Rockbot2/sfx/stage_selected.wav and /dev/null differ diff --git a/build/games/Rockbot2/stages_v301.dat b/build/games/Rockbot2/stages_v301.dat deleted file mode 100644 index 9407d2b9..00000000 Binary files a/build/games/Rockbot2/stages_v301.dat and /dev/null differ diff --git a/build/packages/AndroidAppSettings.cfg.bak b/build/packages/AndroidAppSettings.cfg.bak new file mode 100644 index 00000000..a3fa7c3d --- /dev/null +++ b/build/packages/AndroidAppSettings.cfg.bak @@ -0,0 +1,328 @@ +# The application settings for Android libSDL port + +# Specify application name (e.x. My Application) +AppName="Rockdroid1" + +# Specify reversed site name of application (e.x. com.mysite.myapp) +AppFullName=net.upperland.rockdroid + +# Application version code (integer) +AppVersionCode=120089 + +# Application user-visible version name (string) +AppVersionName="1.20.089" + +# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' +# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu +# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped +# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir - +# these files are put inside .apk package by build system +# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS +#!Keen1|keen1.zip^ +AppDataDownloadUrl="!Game Data|data_1.20.089.zip" + +# Reset SDL config when updating application to the new version (y) / (n) +ResetSdlConfigForThisVersion=y + +# Delete application data files when upgrading (specify file/dir paths separated by spaces) +DeleteFilesOnUpgrade="%" + +# Here you may type readme text, which will be shown during startup. Format is: +# Text in English, use \\\\\\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/ +ReadmeText='^You may press "Home" now - the data will be downloaded in background' + +# libSDL version to use (1.2/1.3/2.0) +LibSdlVersion=1.2 + +# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape +ScreenOrientation=h + +# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only +# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32) +VideoDepthBpp=16 + +# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedDepthBuffer=n + +# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedStencilBuffer=n + +# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device +# you need this option only if you're developing 3-d app (y) or (n) +NeedGles2=n + +# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL, +# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n) +SwVideoMode=y + +# Application video output will be resized to fit into native device screen (y)/(n) +SdlVideoResize=y + +# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n) +SdlVideoResizeKeepAspect=y + +# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer +InhibitSuspend=y + +# Create Android service, so the app is less likely to be killed while in background +CreateService= + +# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread - +# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n) +CompatibilityHacks=n + +# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n) +CompatibilityHacksStaticInit=n + +# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) +CompatibilityHacksTextInputEmulatesHwKeyboard=n + +# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n) +CompatibilityHacksPreventAudioChopping=n + +# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n) +CompatibilityHacksAppIgnoresAudioBufferSize=n + +# Hack for VCMI: preload additional shared libraries before aplication start +CompatibilityHacksAdditionalPreloadedSharedLibraries="" + +# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue - +# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n) +CompatibilityHacksSlowCompatibleEventQueue=n + +# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL +CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=n + +# Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects. +# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n) +CompatibilityHacksProperUsageOfSDL_UpdateRects= + +# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user +AppUsesMouse=n + +# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n) +AppNeedsTwoButtonMouse=n + +# Right mouse button can do long-press/drag&drop action, necessary for some games (y) or (n) +# If you disable it, swiping with two fingers will send mouse wheel events +RightMouseButtonLongPress= + +# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) +ShowMouseCursor=n + +# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n) +GenerateSubframeTouchEvents= + +# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n) +ForceRelativeMouseMode=n + +# Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n) +AppNeedsArrowKeys=y + +# Application needs text input (y) or (n), enables button for text input on screen +AppNeedsTextInput=n + +# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1 +AppUsesJoystick=n + +# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n) +AppUsesSecondJoystick=n + +# Application uses third on-screen joystick, as SDL joystick 0 axes 20-21 (y)/(n) +AppUsesThirdJoystick=n + +# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7 +AppUsesAccelerometer=n + +# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4 +AppUsesGyroscope=n + +# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0 +AppUsesMultitouch=n + +# Application records audio (it will use any available source, such a s microphone) +# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void); +# This option will add additional permission to Android manifest (y)/(n) +AppRecordsAudio=n + +# Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n) +AccessSdCard=y + +# Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n) +AccessInternet=y + +# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n) +ImmersiveMode=y + +# Application implements Android-specific routines to put to background, and will not draw anything to screen +# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them +# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n) +# This option is reported to be buggy, sometimes failing to restore video state +NonBlockingSwapBuffers=n + +# Redefine common hardware keys to SDL keysyms +# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent +# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices +# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th) +# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA +RedefinedKeys="NO_REMAP NO_REMAP NO_REMAP NO_REMAP NO_REMAP ESCAPE NO_REMAP" + +# Number of virtual keyboard keys (currently 6 is maximum) +AppTouchscreenKeyboardKeysAmount=5 + +# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right) +RedefinedKeysScreenKb="X A Z C RETURN W" + +# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu +RedefinedKeysScreenKbNames="JUMP FIRE SHIELD DASH START R" + +# On-screen keys theme +# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick) +# 1 = Simple Theme by Beholder (white, with gamepad joystick) +# 2 = Sun by Sirea (yellow, with round joystick) +# 3 = Keen by Gerstrong (multicolor, with round joystick) +TouchscreenKeysTheme=1 + +# Redefine gamepad keys to SDL keysyms, button order is: +# A B X Y C Z L1 R1 L2 R2 LThumb RThumb Start Select Up Down Left Right LThumbUp LThumbDown LThumbLeft LThumbRight RThumbUp RThumbDown RThumbLeft RThumbRight +#RedefinedKeysGamepad="0 1 2 3 4 5 6 7 8 9 j k L M UP DOWN LEFT RIGHT PAGEUP PAGEDOWN HOME END PLUS MINUS LEFTBRACKET RIGHTBRACKET" +RedefinedKeysGamepad="X A Z C 4 5 Q R 8 9 j k RETURN HOME UP DOWN LEFT RIGHT PAGEUP PAGEDOWN HOME END PLUS MINUS LEFTBRACKET RIGHTBRACKET" + +#ORDER PS4: CIRCLE: T, xis: W, TRIANGLE: E, SQUARE: Q, L1: R, R1: I*, OPTION: P PSHARE: O +#L2: U, R2: I*, PS: SPACE, TOUCH: A, L3: F, R3: D +#RedefinedKeysGamepad="SQUARE XIS TRIANGLE L1 CIRCLE ? L2 R1/R2 SHARE OPTION TOUCH ? R3 L3 ? ? ? ? ? ? ? ? ? ? ? ?" + + +############################################################################ +# order PS4 joystick: +# square, xis, triangle, circle, L2, R2, share, options, (...) +############################################################################ +# circle -> NA +# square -> X +# X -> A +# triangle -> Z +# L1 -> C +# R1 -> NA +# L2 -> Q +# R2 -> W +# L3 -> HOME +# R3 -> RETURN +# options -> R +# share -> E +# PS -> SPACE +# TOUCH -> T +############################################################################ + +############################################################################ +# order PS2 joystick: +# square, xis, triangle, circle, L2, R2, share, options, (...) +############################################################################ +# circle -> NA +# square -> C +# X -> Z +# triangle -> X +# L1 -> NA +# R1 -> NA +# L2 -> E +# R2 -> A +# L3 -> SPACE +# R3 -> NA +# select -> E* +# start -> R6 +# PS -> SPACE +# TOUCH -> T +############################################################################ + +# Redefine keys for the second gamepad, same as the first gamepad if not set: +# RedefinedKeysSecondGamepad="TAB LALT LCTRL LSHIFT LALT LSHIFT BACKQUOTE LCTRL TAB TAB ESCAPE ESCAPE R F D G" + + +# How long to show startup menu button, in msec, 0 to disable startup menu +StartupMenuButtonTimeout=0 + +# Menu items to hide from startup menu, available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout +HiddenMenuOptions='SettingsMenuMouse.DisplaySizeConfig' + +# Menu items to show at startup - this is Java code snippet, leave empty for default +# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration() +# Available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout +FirstStartMenuOptions='' + +# Enable multi-ABI binary, with hardware FPU support - it will also work on old devices, +# but .apk size is 2x bigger (y) / (n) / (x86) / (all) +MultiABI=armeabi-v7a + +# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower +AppMinimumRAM=16 + +# Optional shared libraries to compile - removing some of them will save space +# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed +# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 +CompiledLibraries="jpeg png sdl_image sdl_mixer sdl_ttf sdl_gfx" + +# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) +CustomBuildScript=n + +# Aditional CFLAGS for application +AppCflags='' + +# Additional LDFLAGS for application +AppLdflags='' + +# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable +AppOverlapsSystemHeaders= + +# Build only following subdirs (empty will build all dirs, ignored with custom script) +AppSubdirsBuild='' + +# Exclude these files from build +AppBuildExclude='' + +# Application command line parameters, including app name as 0-th param +AppCmdline='' + +# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens +# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge +MinimumScreenSize=s + +# Your AdMob Publisher ID, (n) if you don't want advertisements +AdmobPublisherId=n + +# Your AdMob test device ID, to receive a test ad +AdmobTestDeviceId= + +# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER) +AdmobBannerSize= + +# Google Play Game Services application ID, required for cloud saves to work +#GooglePlayGameServicesId=163632473605 + +# On-screen dpad/joystick will appear under finger when it touches the screen (y) or (n) +# Joystick always follows finger, so moving mouse requires touching the screen with other finger +FloatingScreenJoystick=n + +# GCC version, or 'clang' for CLANG +NDK_TOOLCHAIN_VERSION=clang + +# Android platform version. +# android-16 = Android 4.1, the earliest supported version in NDK r18. +# android-18 = Android 4.3, the first version supporting GLES3. +# android-21 = Android 5.1, the first version with SO_REUSEPORT defined. +APP_PLATFORM=android-21 + +# Aditional C++-specific compiler flags for application, added after AppCflags +AppCppflags='-DANDROID -DHANDHELD -std=c++11 -I/home/iuri/Programas/android-studio/sdk/android-ndk-r20/sources/cxx-stl/llvm-libc++/include -I. -I./rockdroid -I./rockdroid/aux_tools -I./rockdroid/character -I./rockdroid/character/movement -I./rockdroid/file -I./rockdroid/file/format -I./rockdroid/file/v4 -I./rockdroid/graphic -I./rockdroid/objects -I./rockdroid/options -I./rockdroid/ports/android -I./rockdroid/scenes' + +# Additional LDFLAGS for application +AppLdflags='-lstdc++' + +# Build only following subdirs (empty will build all dirs, ignored with custom script) +AppSubdirsBuild='. rockdroid rockdroid/aux_tools rockdroid/character rockdroid/character/movement rockdroid/file rockdroid/file/format rockdroid/file/v4 rockdroid/graphic rockdroid/objects rockdroid/options rockdroid/ports/android rockdroid/scenes' + +# Exclude these files from build +#AppBuildExclude='supertux/external/findlocale/example.c supertux/src/video/sdl/sdl_lightmap.cpp supertux/src/video/sdl/sdl_painter.cpp supertux/src/video/sdl/sdl_renderer.cpp supertux/src/video/sdl/sdl_texture.cpp supertux/src/video/sdl/sdl_video_system.cpp supertux/src/control/game_controller_manager.cpp supertux/src/control/joystick_manager.cpp' + +# Application command line parameters, including app name as 0-th param +AppCmdline='./rockdroid' diff --git a/build/packages/Dingux.sh b/build/packages/Dingux.sh index 2c1e1930..5b186eab 100755 --- a/build/packages/Dingux.sh +++ b/build/packages/Dingux.sh @@ -1,27 +1,39 @@ #!/bin/sh -VERSIONNAME=`cat version_name.txt` + +set -x + +read -r -p "What is the version number you are building? " version_number +if [ "$version_number" != "1" ] && [ "$version_number" != "2" ]; +then + echo "Invalid version number" + exit +fi + +VERSIONNAME=`cat version_name_v$version_number.txt` +GAME_DIR=rockbot$version_number rm -r -f ./Dingux mkdir ./Dingux -mkdir ./Dingux/Rockbot2 -mkdir ./Dingux/Rockbot2 -mkdir ./Dingux/Rockbot2/games -mkdir ./Dingux/Rockbot2/fonts -mkdir ./Dingux/Rockbot2/shared +mkdir ./Dingux/$GAME_DIR +mkdir ./Dingux/$GAME_DIR/games +mkdir ./Dingux/$GAME_DIR/fonts +mkdir ./Dingux/$GAME_DIR/shared -cp ../rockbot.dge ./Dingux/Rockbot2/ +cd .. +make clean +cd .. +qmake ../RockDroid.pro CONFIG -=linux CONFIG+=dingux +cd build +make +cd packages +cp ../rockbot.dge ./Dingux/$GAME_DIR/ -mkdir ././Dingux/Rockbot2/data -mkdir ././Dingux/Rockbot2/data/games -rsync -r --exclude=.svn ../fonts ././Dingux/Rockbot2/data -rsync -r --exclude=.svn ../games/Rockbot$version_number ././Dingux/Rockbot2/data/games -rsync -r --exclude=.svn ../shared ././Dingux/Rockbot2/data -rsync -r --exclude=.svn ../games ./Dingux/Rockbot2 -rsync -r --exclude=.svn ../fonts ./Dingux/Rockbot2 -rsync -r --exclude=.svn ../shared ./Dingux/Rockbot2 +rsync -r ../fonts ././Dingux/$GAME_DIR/ +rsync -r ../shared ././Dingux/$GAME_DIR/ +rsync -r --exclude=mp3 ../games/RockDroid$version_number ./Dingux/$GAME_DIR/games -cp ./Dingux/Rockbot2/data/images/faces/rockbot.png ./Dingux/Rockbot2/ +cp ./Dingux/$GAME_DIR/games/RockDroid$version_number/images/icon_32px.png ./Dingux/$GAME_DIR/rockbot.png cd ./Dingux zip -r ../Rockbot2_Dingux_$VERSIONNAME.zip * diff --git a/build/packages/NDS.sh b/build/packages/NDS.sh deleted file mode 100755 index d2eb095f..00000000 --- a/build/packages/NDS.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -VERSIONNAME=`cat version_name.txt` - -cd ../game -make clean -make -f Makefile.ps2 clean -make -f Makefile.nds clean -make -f Makefile.nds -cd ../packages -rm -r -f ./NDS -mkdir ./NDS -mkdir ./NDS/Apps -mkdir ./NDS/Apps/Rockbot -cp ../game/rockbot.nds ./NDS/Apps/Rockbot/ -sh ../bin/pack_data.sh -cp -r ./data ./NDS/Apps/Rockbot -cd ./NDS -zip -r ../Rockbot_NDS.zip * diff --git a/build/packages/PS2.sh b/build/packages/PS2.sh index 24af5050..d22ddc64 100755 --- a/build/packages/PS2.sh +++ b/build/packages/PS2.sh @@ -13,8 +13,8 @@ rsync -r --exclude=.svn ../shared ./PS2/Rockbot/ rsync -r --exclude=.svn ../games ./PS2/Rockbot/ rsync -r --exclude=.svn ../*.dat ./PS2/Rockbot/ -cp ./rockbot_ps2_icon.icn ./PS2/Rockbot/data/images/ -cp ./icon.sys ./PS2/Rockbot/data/images/ +cp ./rockbot_ps2_icon.icn ./PS2/Rockbot/shared/images/ +cp ./icon.sys ./PS2/Rockbot/shared/images/ rm ./PS2/Rockbot/data/game*.sav rm ./PS2/Rockbot/data/config*.sav diff --git a/build/packages/PSP.sh b/build/packages/PSP.sh index 083c6d2b..bc8a5df8 100755 --- a/build/packages/PSP.sh +++ b/build/packages/PSP.sh @@ -1,17 +1,42 @@ #!/bin/sh -VERSIONNAME=`cat version_name.txt` +read -r -p "What is the version number you are building? " version_number +if [ "$version_number" != "1" ] && [ "$version_number" != "2" ]; +then + echo "Invalid version number" + exit +fi + +set -x + +VERSIONNAME=`cat version_name_v$version_number.txt` +GAME_DIR=Rockbot$version_number + +rm -r -f ./PSP/$GAME_DIR + +#cd .. +#make clean +#cd .. +#qmake ../RockDroid.pro CONFIG -=linux CONFIG+=psp +#cd build +#make +#cd packages + +cd ../.. +pwd +make -f Makefile.psp clean +make -f Makefile.psp version_number=$version_number VERSIONNAME=$VERSIONNAME rm -r -f ./PSP mkdir ./PSP -mkdir ./PSP/Rockbot2 -mkdir ./PSP/Rockbot2/games -mkdir ./PSP/Rockbot2/fonts -mkdir ./PSP/Rockbot2/shared -cp ../../EBOOT.PBP ./PSP/Rockbot2/ -rsync -r --exclude=.svn ../games ./PSP/Rockbot2 -rsync -r --exclude=.svn ../fonts ./PSP/Rockbot2 -rsync -r --exclude=.svn ../shared ./PSP/Rockbot2 -rm ./PSP/Rockbot2/data/game*.sav -rm ./PSP/Rockbot2/data/config*.sav +mkdir ./PSP/$GAME_DIR +mkdir ./PSP/$GAME_DIR/games +mkdir ./PSP/$GAME_DIR/fonts +mkdir ./PSP/$GAME_DIR/shared +cp ./EBOOT.PBP ./PSP/$GAME_DIR/ +rsync -r --exclude=mp3 --exclude=.svn ./build/games/RockDroid$version_number ./PSP/$GAME_DIR/games +rsync -r --exclude=.svn ./build/fonts ./PSP/$GAME_DIR +rsync -r --exclude=.svn ./build/shared ./PSP/$GAME_DIR +rm ./PSP/$GAME_DIR/data/game*.sav +rm ./PSP/$GAME_DIR/data/config*.sav cd ./PSP zip -r ../Rockbot2_PSP_$VERSIONNAME.zip * diff --git a/build/packages/Pandora.sh b/build/packages/Pandora.sh index f64851b9..117e3eea 100755 --- a/build/packages/Pandora.sh +++ b/build/packages/Pandora.sh @@ -1,16 +1,25 @@ #!/bin/sh -VERSIONNAME=`cat version_name.txt` -rm -r -f ./pandora/rockbot +read -r -p "What is the version number you are building? " version_number +if [ "$version_number" != "1" ] && [ "$version_number" != "2" ]; +then + echo "Invalid version number" + exit +fi + +VERSIONNAME=`cat version_name_v$version_number.txt` +GAME_DIR=rockbot$version_number + +rm -r -f ./pandora/$GAME_DIR mkdir ./pandora -mkdir ./pandora/rockbot +mkdir ./pandora/$GAME_DIR #cp ./docs/README.LINUX.TXT ./pandora/README.TXT -#cp _$VERSIONNAME.tar../../rockbot ./pandora/rockbot -#cp ../../editor ./pandora/rockbot -cp -r ./pandora/project/* ./pandora/rockbot -cp ../rockbot_pandora ./pandora/rockbot/rockbot -rsync -r --exclude=.svn ../data ./pandora/rockbot -rm ./pandora/rockbot/data/game*.sav -rm ./pandora/rockbot/data/config*.sav +#cp _$VERSIONNAME.tar../../$GAME_DIR ./pandora/$GAME_DIR +#cp ../../editor ./pandora/$GAME_DIR +cp -r ./pandora/project/* ./pandora/$GAME_DIR +cp ../rockbot_pandora ./pandora/$GAME_DIR/rockbot +rsync -r --exclude=mp3 --exclude=.svn ../data ./pandora/$GAME_DIR +rm ./pandora/$GAME_DIR/data/game*.sav +rm ./pandora/$GAME_DIR/data/config*.sav cd ./pandora /arquivos/development/SDK/OpenPandora/scripts/pnd_make -p ../Rockbot_Pandora_$VERSIONNAME.pnd -d ./rockbot -x ./rockbot/pxml.xml diff --git a/build/packages/Playstation2.sh b/build/packages/Playstation2.sh new file mode 100755 index 00000000..dbf301da --- /dev/null +++ b/build/packages/Playstation2.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +set -x + +read -r -p "What is the version number you are building? " version_number +if [ "$version_number" != "1" ] && [ "$version_number" != "2" ]; +then + echo "Invalid version number" + exit +fi + +VERSIONNAME=`cat version_name_v$version_number.txt` +GAME_DIR=rockbot$version_number + +rm -r -f ./PS2 +mkdir ./PS2 +mkdir ./PS2/$GAME_DIR +mkdir ./PS2/$GAME_DIR/games +mkdir ./PS2/$GAME_DIR/fonts +mkdir ./PS2/$GAME_DIR/shared + +cp ../rockbot.elf ./PS2/$GAME_DIR/ + + +mkdir ././PS2/$GAME_DIR/data +mkdir ././PS2/$GAME_DIR/games +rsync -r --exclude=.svn ../fonts ././PS2/$GAME_DIR +rsync -r --exclude=.svn ../shared ././PS2/$GAME_DIR +rsync -r --exclude=mp3 --exclude=.svn ../games/RockDroid$version_number ./PS2/$GAME_DIR/games + +cp ./rockbot_ps2_icon.icn ./PS2/$GAME_DIR/shared/images/ +cp ./icon.sys ./PS2/$GAME_DIR/images/ +cd ./PS2 +zip -r ../Rockbot2_PS2_$VERSIONNAME.zip * diff --git a/build/packages/PocketGo.sh b/build/packages/PocketGo.sh new file mode 100755 index 00000000..b39b83e2 --- /dev/null +++ b/build/packages/PocketGo.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +set -x + +read -r -p "What is the version number you are building? " version_number +if [ "$version_number" != "1" ] && [ "$version_number" != "2" ]; +then + echo "Invalid version number" + exit +fi + +VERSIONNAME=`cat version_name_v$version_number.txt` +DIR=./pocketgo +GAME_DIR=Rockbot$version_number + +rm -r -f $DIR +mkdir $DIR +mkdir $DIR/$GAME_DIR +mkdir $DIR/$GAME_DIR/games +mkdir $DIR/$GAME_DIR/fonts +mkdir $DIR/$GAME_DIR/shared + + +cd .. +make clean +cd .. +qmake ../RockDroid.pro CONFIG -=linux CONFIG+=pocketgo +cd build +make +cd packages + +cp ../rockbot_pocketgo $DIR/$GAME_DIR/ + +rsync -r --exclude=.svn ../fonts ./$DIR/$GAME_DIR +rsync -r --exclude=.svn ../shared ./$DIR/$GAME_DIR +rsync -r --exclude=mp3 --exclude=.svn ../games/RockDroid$version_number ./$DIR/$GAME_DIR/games + +cp ./Dingux/$GAME_DIR/games/RockDroid$version_number/images/icon_32px.png ./Dingux/$GAME_DIR/rockbot.png +cd $DIR +zip -r ../Rockbot_PocketGo_$VERSIONNAME.zip * diff --git a/build/packages/Raspberry.sh b/build/packages/Raspberry.sh new file mode 100755 index 00000000..edd02121 --- /dev/null +++ b/build/packages/Raspberry.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +read -r -p "What is the version number you are building? " version_number +if [ "$version_number" != "1" ] && [ "$version_number" != "2" ]; +then + echo "Invalid version number" + exit +fi + +VERSIONNAME=`cat version_name_v$version_number.txt` +GAME_DIR=rockbot$version_number + +rm -r -f ./raspberry +mkdir ./raspberry +mkdir ./raspberry/$GAME_DIR +cp ../rockbot_pi ./raspberry/$GAME_DIR/rockbot + +rsync -r --exclude=mp3 --exclude=.svn ../games/RockDroid$version_number ./raspberry/$GAME_DIR/games +rsync -r --exclude=.svn ../fonts ./raspberry/$GAME_DIR +rsync -r --exclude=.svn ../shared ./raspberry/$GAME_DIR + +rm ./raspberry/$GAME_DIR/data/game*.sav +rm ./raspberry/$GAME_DIR/data/config*.sav + +cd ./raspberry +tar -cvf ../Rockbot_Raspberry_$VERSIONNAME.tar $GAME_DIR +gzip ../Rockbot_Raspberry_$VERSIONNAME.tar diff --git a/build/packages/Ubuntu.sh b/build/packages/Ubuntu.sh index 036c343a..9e4dc0b1 100755 --- a/build/packages/Ubuntu.sh +++ b/build/packages/Ubuntu.sh @@ -8,26 +8,27 @@ then fi VERSIONNAME=`cat version_name_v$version_number.txt` +GAME_DIR=rockbot$version_number rm -r -f ./ubuntu/game/debian/opt/ mkdir ./ubuntu/game/debian/opt/ mkdir ./ubuntu mkdir ./ubuntu/game cd ./ubuntu/game -rm -r -f ./debian/opt/game/rockbot$version_number -mkdir -p ./debian/opt/game/rockbot$version_number/games +rm -r -f ./debian/opt/game/$GAME_DIR +mkdir -p ./debian/opt/game/$GAME_DIR/games -rsync -r --exclude=.svn ../../../fonts ./debian/opt/game/rockbot$version_number -rsync -r --exclude=.svn ../../../shared ./debian/opt/game/rockbot$version_number -rsync -r --exclude=.svn ../../../games/Rockbot$version_number ./debian/opt/game/rockbot$version_number/games +rsync -r --exclude=.svn ../../../fonts ./debian/opt/game/$GAME_DIR +rsync -r --exclude=.svn ../../../shared ./debian/opt/game/$GAME_DIR +rsync -r --exclude=mp3 --exclude=.svn ../../../games/RockDroid$version_number ./debian/opt/game/$GAME_DIR/games -rm ./debian/opt/game/rockbot$version_number/game*.sav -rm ./debian/opt/game/rockbot$version_number/config*.sav +rm ./debian/opt/game/$GAME_DIR/game*.sav +rm ./debian/opt/game/$GAME_DIR/config*.sav -cp ../../../rockbot ./debian/opt/game/rockbot$version_number/ -cp ../../../editor ./debian/opt/game/rockbot$version_number/ +cp ../../../rockbot ./debian/opt/game/$GAME_DIR/ +cp ../../../editor ./debian/opt/game/$GAME_DIR/ mkdir -p ./debian/DEBIAN cp ../../control ./debian/DEBIAN spacer="_Ubuntu_" -dpkg-deb --build debian/ ../../Rockbot$version_number$spacer$VERSIONNAME.deb +dpkg-deb --build debian/ ../../Rockbot_Ubuntu_$VERSIONNAME.deb diff --git a/build/packages/Wii.sh b/build/packages/Wii.sh index beac18ce..904ccca1 100755 --- a/build/packages/Wii.sh +++ b/build/packages/Wii.sh @@ -1,16 +1,26 @@ #!/bin/sh -VERSIONNAME=`cat version_name.txt` +read -r -p "What is the version number you are building? " version_number +if [ "$version_number" != "1" ] && [ "$version_number" != "2" ]; +then + echo "Invalid version number" + exit +fi + +VERSIONNAME=`cat version_name_v$version_number.txt` +GAME_DIR=rockbot$version_number rm -r -f ./Wii mkdir ./Wii mkdir ./Wii/apps -mkdir ./Wii/apps/rockbot -#unzip unzip -x ./files/wii_meta.zip -d ./Wii/apps/rockbot -cp ./files/wii_meta/* ./Wii/apps/rockbot -cp ../boot.dol ./Wii/apps/rockbot -rsync -r --exclude=.svn ../fonts ./Wii/apps/rockbot -rsync -r --exclude=.svn ../games ./Wii/apps/rockbot -rsync -r --exclude=.svn ../shared ./Wii/apps/rockbot +mkdir ./Wii/apps/$GAME_DIR +#unzip unzip -x ./files/wii_meta.zip -d ./Wii/apps/$GAME_DIR +cp ./files/wii_meta/* ./Wii/apps/$GAME_DIR +cp ../boot.dol ./Wii/apps/$GAME_DIR + +rsync -r --exclude=.svn ../fonts ./Wii/apps/$GAME_DIR +rsync -r --exclude=.svn ../shared ./Wii/apps/$GAME_DIR +rsync -r --exclude=mp3 --exclude=.svn ../games/RockDroid$version_number ./Wii/apps/$GAME_DIR/games + cd ./Wii zip -r ../Rockbot_Wii_$VERSIONNAME.zip * diff --git a/build/packages/android_build.sh b/build/packages/android_build.sh index d6bee7d5..5c6727bb 100755 --- a/build/packages/android_build.sh +++ b/build/packages/android_build.sh @@ -1,6 +1,6 @@ -#!/bin/bash +#!/usr/bin/env bash -#set -x +set -x read -r -p "What is the version number you are building? " version_number if [ "$version_number" != "1" ] && [ "$version_number" != "2" ]; @@ -9,29 +9,18 @@ then exit fi -demoName="" -demoFullName="" - -if [ "$version_number" == "2" ] -then - read -r -p "Build demo version (d) or full (f)? " demo_mode - if [ "$demo_mode" == "d" ] - then - demoName="Demo" - demoFullName="demo" - fi -fi - VERSIONNAME=`cat version_name_v$version_number.txt` +export ANDROID_SDK_ROOT=$ANDROIDSDK + read -r -p "Did you remember to update data version in version_name_v$version_number.txt? [y/N] " response case $response in [yY][eE][sS]|[yY]) - ROCKBOTDIR=`pwd` - export ROCKBOTDIR + ROCKDROIDDIR=`pwd` + export ROCKDROIDDIR #copy icon - cp ../packages/files/android/icon_v$version_number.png ~/Programas/android-studio/sdk/rockbot_build/src/icon.png + cp ../packages/files/android/icon_v$version_number.png /home/iuri/Desenvolvimento/rockbot/icon.png #read -p "Press any key to continue..." -n1 -s #copy data rm -r -f ./Android @@ -39,26 +28,26 @@ case $response in mkdir ./Android/data mkdir ./Android/data/games rsync -r --exclude=.svn ../fonts ./Android/data - rsync -r --exclude=.svn ../games/Rockbot$version_number ./Android/data/games rsync -r --exclude=.svn ../shared ./Android/data + rsync -r --exclude=.svn ../games/RockDroid$version_number ./Android/data/games + #export GRADLE_OPTS="org.gradle.jvmargs=-Xmx2000m -Xms1724m -Xmx5048m" + ### TEST ### + rm ./Android/data/games/RockDroid$version_number/music/ogg/* rm ./Android/data/game*.sav rm ./Android/data/config_v*.sav cd ./Android/data - zip -r ../data_$VERSIONNAME$demoName.zip ./fonts ./games ./shared + zip -r ../data_$VERSIONNAME.zip ./fonts ./games ./shared cd .. - rm $ANDROIDSDK/rockbot_build/project/jni/application/src/AndroidData/*.zip - cp ./data_$VERSIONNAME$demoName.zip $ANDROIDSDK/rockbot_build/project/jni/application/src/AndroidData/ - rm $ANDROIDSDK/rockbot_build/project/jni/application/src/libapplication.so - rm $ANDROIDSDK/rockbot_build/project/obj/local/armeabi/libapplication.so - rm $ANDROIDSDK/rockbot_build/project/libs/armeabi/libapplication.so - cp ../../libapplication.so ../../../Android/project/jni/application/src/libapplication.so - cd $ANDROIDSDK/rockbot_build + rm $ANDROIDSDK/commandergenius/project/jni/application/rockbot/AndroidData/*.zip + cp ./data_$VERSIONNAME.zip $ANDROIDSDK/commandergenius/project/jni/application/rockbot/AndroidData/ + cd $ANDROIDSDK/commandergenius + + #read -p "Press any key to continue... " -n1 -s LINENUMBER=`grep -n "AppDataDownloadUrl=" AndroidAppSettings.cfg | cut -f1 -d:` LINENUMBERVERSION=`grep -n "AppVersionName=" AndroidAppSettings.cfg | cut -f1 -d:` LINENUMBERAPPNAME=`grep -n "AppName=" AndroidAppSettings.cfg | cut -f1 -d:` LINENUMBERFULLNAME=`grep -n "AppFullName=" AndroidAppSettings.cfg | cut -f1 -d:` - LINEVERSIONNUMBER=`grep -n "AppVersionCode=" AndroidAppSettings.cfg | cut -f1 -d:` LINEVERSIONSTRING=`echo "$VERSIONNAME" | sed -e 's/\.//g'` @@ -85,42 +74,40 @@ case $response in return fi - sed $LINENUMBER'c\'"AppDataDownloadUrl=\"!Game Data|data_$VERSIONNAME$demoName.zip\"" AndroidAppSettings.cfg > AndroidAppSettings.cfg.temp1 + sed $LINENUMBER'c\'"AppDataDownloadUrl=\"!Game Data|data_$VERSIONNAME.zip\"" ./AndroidAppSettings.cfg > ./AndroidAppSettings.cfg.temp1 sed $LINENUMBERVERSION'c\'"AppVersionName=\"$VERSIONNAME\"" AndroidAppSettings.cfg.temp1 > AndroidAppSettings.cfg.temp2 - sed $LINENUMBERAPPNAME'c\'"AppName=\"Rockbot$version_number$demoName\"" AndroidAppSettings.cfg.temp2 > AndroidAppSettings.cfg.temp3 + sed $LINENUMBERAPPNAME'c\'"AppName=\"Rockbot $version_number\"" AndroidAppSettings.cfg.temp2 > AndroidAppSettings.cfg.temp3 if [ "$version_number" == "1" ]; then - sed $LINENUMBERFULLNAME'c\'"AppFullName=net.upperland.rockbot" AndroidAppSettings.cfg.temp3 > AndroidAppSettings.cfg.temp4 - else - sed $LINENUMBERFULLNAME'c\'"AppFullName=net.upperland.rockbot$version_number$demoFullName" AndroidAppSettings.cfg.temp3 > AndroidAppSettings.cfg.temp4 - fi - + sed $LINENUMBERFULLNAME'c\'"AppFullName=net.upperland.rockdroid" AndroidAppSettings.cfg.temp3 > AndroidAppSettings.cfg.temp4 + else + sed $LINENUMBERFULLNAME'c\'"AppFullName=net.upperland.rockdroid$version_number" AndroidAppSettings.cfg.temp3 > AndroidAppSettings.cfg.temp4 + fi sed $LINEVERSIONNUMBER'c\'"AppVersionCode=$LINEVERSIONSTRING" AndroidAppSettings.cfg.temp4 > AndroidAppSettings.cfg.new - cp AndroidAppSettings.cfg AndroidAppSettings.cfg.old cp AndroidAppSettings.cfg.new AndroidAppSettings.cfg # build debug and copy library so we can track - sh ./build.sh rockbot debug - cp ./project/jni/application/rockbot/libapplication-armeabi.so $ROCKBOTDIR/libapplication-armeabi_$VERSIONNAME$demoName.so + ./build.sh rockbot debug # build release - sh ./build.sh rockbot release - rm $ROCKBOTDIR/Rockbot_Android_$VERSIONNAME$demoName.apk + ./build.sh rockbot release + rm $ROCKDROIDDIR/RockBot_Android_$VERSIONNAME.apk pwd - cp ./project/app/build/outputs/apk/release/app-release-unsigned.apk $ROCKBOTDIR/TEMP_Rockbot_Android_$VERSIONNAME$demoName.apk + cp ./project/app/build/outputs/apk/release/app-release-unsigned.apk $ROCKDROIDDIR/TEMP_RockBot_Android_$VERSIONNAME.apk # remove as assinaturas do Android (caso haja alguma, por engano) - zip -d $ROCKBOTDIR/TEMP_Rockbot_Android_$VERSIONNAME$demoName.apk META-INF/* + zip -d $ROCKDROIDDIR/TEMP_RockBot_Android_$VERSIONNAME.apk META-INF/* # assina e realinha o APK - /opt/java/jdk1.8.0_121/bin/jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/my-release-key.keystore $ROCKBOTDIR/TEMP_Rockbot_Android_$VERSIONNAME$demoName.apk alias_name - /home/iuri/Programas/android-studio/sdk/build-tools/26.0.2/zipalign -v 4 $ROCKBOTDIR/TEMP_Rockbot_Android_$VERSIONNAME$demoName.apk $ROCKBOTDIR/Rockbot_Android_$VERSIONNAME$demoName.apk + zipalign -v 4 $ROCKDROIDDIR/TEMP_RockBot_Android_$VERSIONNAME.apk $ROCKDROIDDIR/RockBot_Android_$VERSIONNAME.apk + apksigner sign --ks ~/.android/my-release-key.keystore --v1-signing-enabled true --v2-signing-enabled true $ROCKDROIDDIR/RockBot_Android_$VERSIONNAME.apk + #jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/my-release-key.keystore $ROCKDROIDDIR/TEMP_RockBot_Android_$VERSIONNAME.apk alias_name # copy mappings.txt so we can use for later debugging - #cp ./project/bin/proguard/mapping.txt $ROCKBOTDIR/Tmappings_$VERSIONNAME$demoName.txt - cp ./project/app/build/outputs/mapping/release/mapping.txt $ROCKBOTDIR/Tmappings_$VERSIONNAME$demoName.txt + #cp ./project/bin/proguard/mapping.txt $ROCKDROIDDIR/Tmappings_$VERSIONNAME.txt + cp ./project/app/build/outputs/mapping/release/mapping.txt $ROCKDROIDDIR/Tmappings_$VERSIONNAME.txt ;; *) echo "Aborted." ;; esac -#jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/my-release-key.keystore ./Rockbot_Android_1.0.2.apk alias_name -#zipalign [-f] [-v] infile.apk outfile.apk \ No newline at end of file +#jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/my-release-key.keystore ./Rockdroid_Android_1.0.2.apk alias_name +#zipalign [-f] [-v] infile.apk outfile.apk diff --git a/build/packages/files/android/AndroidAppSettings.cfg b/build/packages/files/android/AndroidAppSettings.cfg new file mode 100644 index 00000000..a3fa7c3d --- /dev/null +++ b/build/packages/files/android/AndroidAppSettings.cfg @@ -0,0 +1,328 @@ +# The application settings for Android libSDL port + +# Specify application name (e.x. My Application) +AppName="Rockdroid1" + +# Specify reversed site name of application (e.x. com.mysite.myapp) +AppFullName=net.upperland.rockdroid + +# Application version code (integer) +AppVersionCode=120089 + +# Application user-visible version name (string) +AppVersionName="1.20.089" + +# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' +# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu +# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped +# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir - +# these files are put inside .apk package by build system +# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS +#!Keen1|keen1.zip^ +AppDataDownloadUrl="!Game Data|data_1.20.089.zip" + +# Reset SDL config when updating application to the new version (y) / (n) +ResetSdlConfigForThisVersion=y + +# Delete application data files when upgrading (specify file/dir paths separated by spaces) +DeleteFilesOnUpgrade="%" + +# Here you may type readme text, which will be shown during startup. Format is: +# Text in English, use \\\\\\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/ +ReadmeText='^You may press "Home" now - the data will be downloaded in background' + +# libSDL version to use (1.2/1.3/2.0) +LibSdlVersion=1.2 + +# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape +ScreenOrientation=h + +# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only +# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32) +VideoDepthBpp=16 + +# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedDepthBuffer=n + +# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedStencilBuffer=n + +# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device +# you need this option only if you're developing 3-d app (y) or (n) +NeedGles2=n + +# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL, +# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n) +SwVideoMode=y + +# Application video output will be resized to fit into native device screen (y)/(n) +SdlVideoResize=y + +# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n) +SdlVideoResizeKeepAspect=y + +# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer +InhibitSuspend=y + +# Create Android service, so the app is less likely to be killed while in background +CreateService= + +# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread - +# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n) +CompatibilityHacks=n + +# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n) +CompatibilityHacksStaticInit=n + +# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) +CompatibilityHacksTextInputEmulatesHwKeyboard=n + +# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n) +CompatibilityHacksPreventAudioChopping=n + +# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n) +CompatibilityHacksAppIgnoresAudioBufferSize=n + +# Hack for VCMI: preload additional shared libraries before aplication start +CompatibilityHacksAdditionalPreloadedSharedLibraries="" + +# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue - +# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n) +CompatibilityHacksSlowCompatibleEventQueue=n + +# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL +CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=n + +# Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects. +# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n) +CompatibilityHacksProperUsageOfSDL_UpdateRects= + +# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user +AppUsesMouse=n + +# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n) +AppNeedsTwoButtonMouse=n + +# Right mouse button can do long-press/drag&drop action, necessary for some games (y) or (n) +# If you disable it, swiping with two fingers will send mouse wheel events +RightMouseButtonLongPress= + +# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) +ShowMouseCursor=n + +# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n) +GenerateSubframeTouchEvents= + +# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n) +ForceRelativeMouseMode=n + +# Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n) +AppNeedsArrowKeys=y + +# Application needs text input (y) or (n), enables button for text input on screen +AppNeedsTextInput=n + +# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1 +AppUsesJoystick=n + +# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n) +AppUsesSecondJoystick=n + +# Application uses third on-screen joystick, as SDL joystick 0 axes 20-21 (y)/(n) +AppUsesThirdJoystick=n + +# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7 +AppUsesAccelerometer=n + +# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4 +AppUsesGyroscope=n + +# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0 +AppUsesMultitouch=n + +# Application records audio (it will use any available source, such a s microphone) +# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void); +# This option will add additional permission to Android manifest (y)/(n) +AppRecordsAudio=n + +# Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n) +AccessSdCard=y + +# Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n) +AccessInternet=y + +# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n) +ImmersiveMode=y + +# Application implements Android-specific routines to put to background, and will not draw anything to screen +# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them +# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n) +# This option is reported to be buggy, sometimes failing to restore video state +NonBlockingSwapBuffers=n + +# Redefine common hardware keys to SDL keysyms +# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent +# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices +# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th) +# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA +RedefinedKeys="NO_REMAP NO_REMAP NO_REMAP NO_REMAP NO_REMAP ESCAPE NO_REMAP" + +# Number of virtual keyboard keys (currently 6 is maximum) +AppTouchscreenKeyboardKeysAmount=5 + +# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right) +RedefinedKeysScreenKb="X A Z C RETURN W" + +# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu +RedefinedKeysScreenKbNames="JUMP FIRE SHIELD DASH START R" + +# On-screen keys theme +# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick) +# 1 = Simple Theme by Beholder (white, with gamepad joystick) +# 2 = Sun by Sirea (yellow, with round joystick) +# 3 = Keen by Gerstrong (multicolor, with round joystick) +TouchscreenKeysTheme=1 + +# Redefine gamepad keys to SDL keysyms, button order is: +# A B X Y C Z L1 R1 L2 R2 LThumb RThumb Start Select Up Down Left Right LThumbUp LThumbDown LThumbLeft LThumbRight RThumbUp RThumbDown RThumbLeft RThumbRight +#RedefinedKeysGamepad="0 1 2 3 4 5 6 7 8 9 j k L M UP DOWN LEFT RIGHT PAGEUP PAGEDOWN HOME END PLUS MINUS LEFTBRACKET RIGHTBRACKET" +RedefinedKeysGamepad="X A Z C 4 5 Q R 8 9 j k RETURN HOME UP DOWN LEFT RIGHT PAGEUP PAGEDOWN HOME END PLUS MINUS LEFTBRACKET RIGHTBRACKET" + +#ORDER PS4: CIRCLE: T, xis: W, TRIANGLE: E, SQUARE: Q, L1: R, R1: I*, OPTION: P PSHARE: O +#L2: U, R2: I*, PS: SPACE, TOUCH: A, L3: F, R3: D +#RedefinedKeysGamepad="SQUARE XIS TRIANGLE L1 CIRCLE ? L2 R1/R2 SHARE OPTION TOUCH ? R3 L3 ? ? ? ? ? ? ? ? ? ? ? ?" + + +############################################################################ +# order PS4 joystick: +# square, xis, triangle, circle, L2, R2, share, options, (...) +############################################################################ +# circle -> NA +# square -> X +# X -> A +# triangle -> Z +# L1 -> C +# R1 -> NA +# L2 -> Q +# R2 -> W +# L3 -> HOME +# R3 -> RETURN +# options -> R +# share -> E +# PS -> SPACE +# TOUCH -> T +############################################################################ + +############################################################################ +# order PS2 joystick: +# square, xis, triangle, circle, L2, R2, share, options, (...) +############################################################################ +# circle -> NA +# square -> C +# X -> Z +# triangle -> X +# L1 -> NA +# R1 -> NA +# L2 -> E +# R2 -> A +# L3 -> SPACE +# R3 -> NA +# select -> E* +# start -> R6 +# PS -> SPACE +# TOUCH -> T +############################################################################ + +# Redefine keys for the second gamepad, same as the first gamepad if not set: +# RedefinedKeysSecondGamepad="TAB LALT LCTRL LSHIFT LALT LSHIFT BACKQUOTE LCTRL TAB TAB ESCAPE ESCAPE R F D G" + + +# How long to show startup menu button, in msec, 0 to disable startup menu +StartupMenuButtonTimeout=0 + +# Menu items to hide from startup menu, available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout +HiddenMenuOptions='SettingsMenuMouse.DisplaySizeConfig' + +# Menu items to show at startup - this is Java code snippet, leave empty for default +# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration() +# Available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout +FirstStartMenuOptions='' + +# Enable multi-ABI binary, with hardware FPU support - it will also work on old devices, +# but .apk size is 2x bigger (y) / (n) / (x86) / (all) +MultiABI=armeabi-v7a + +# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower +AppMinimumRAM=16 + +# Optional shared libraries to compile - removing some of them will save space +# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed +# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 +CompiledLibraries="jpeg png sdl_image sdl_mixer sdl_ttf sdl_gfx" + +# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) +CustomBuildScript=n + +# Aditional CFLAGS for application +AppCflags='' + +# Additional LDFLAGS for application +AppLdflags='' + +# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable +AppOverlapsSystemHeaders= + +# Build only following subdirs (empty will build all dirs, ignored with custom script) +AppSubdirsBuild='' + +# Exclude these files from build +AppBuildExclude='' + +# Application command line parameters, including app name as 0-th param +AppCmdline='' + +# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens +# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge +MinimumScreenSize=s + +# Your AdMob Publisher ID, (n) if you don't want advertisements +AdmobPublisherId=n + +# Your AdMob test device ID, to receive a test ad +AdmobTestDeviceId= + +# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER) +AdmobBannerSize= + +# Google Play Game Services application ID, required for cloud saves to work +#GooglePlayGameServicesId=163632473605 + +# On-screen dpad/joystick will appear under finger when it touches the screen (y) or (n) +# Joystick always follows finger, so moving mouse requires touching the screen with other finger +FloatingScreenJoystick=n + +# GCC version, or 'clang' for CLANG +NDK_TOOLCHAIN_VERSION=clang + +# Android platform version. +# android-16 = Android 4.1, the earliest supported version in NDK r18. +# android-18 = Android 4.3, the first version supporting GLES3. +# android-21 = Android 5.1, the first version with SO_REUSEPORT defined. +APP_PLATFORM=android-21 + +# Aditional C++-specific compiler flags for application, added after AppCflags +AppCppflags='-DANDROID -DHANDHELD -std=c++11 -I/home/iuri/Programas/android-studio/sdk/android-ndk-r20/sources/cxx-stl/llvm-libc++/include -I. -I./rockdroid -I./rockdroid/aux_tools -I./rockdroid/character -I./rockdroid/character/movement -I./rockdroid/file -I./rockdroid/file/format -I./rockdroid/file/v4 -I./rockdroid/graphic -I./rockdroid/objects -I./rockdroid/options -I./rockdroid/ports/android -I./rockdroid/scenes' + +# Additional LDFLAGS for application +AppLdflags='-lstdc++' + +# Build only following subdirs (empty will build all dirs, ignored with custom script) +AppSubdirsBuild='. rockdroid rockdroid/aux_tools rockdroid/character rockdroid/character/movement rockdroid/file rockdroid/file/format rockdroid/file/v4 rockdroid/graphic rockdroid/objects rockdroid/options rockdroid/ports/android rockdroid/scenes' + +# Exclude these files from build +#AppBuildExclude='supertux/external/findlocale/example.c supertux/src/video/sdl/sdl_lightmap.cpp supertux/src/video/sdl/sdl_painter.cpp supertux/src/video/sdl/sdl_renderer.cpp supertux/src/video/sdl/sdl_texture.cpp supertux/src/video/sdl/sdl_video_system.cpp supertux/src/control/game_controller_manager.cpp supertux/src/control/joystick_manager.cpp' + +# Application command line parameters, including app name as 0-th param +AppCmdline='./rockdroid' diff --git a/build/packages/files/android/icon_v1.png b/build/packages/files/android/icon_v1.png index 77e7f493..e904941a 100644 Binary files a/build/packages/files/android/icon_v1.png and b/build/packages/files/android/icon_v1.png differ diff --git a/build/packages/files/android/icon_v2.png b/build/packages/files/android/icon_v2.png index 2576dd39..2d7c9544 100644 Binary files a/build/packages/files/android/icon_v2.png and b/build/packages/files/android/icon_v2.png differ diff --git a/build/packages/files/android/sdk_project/AndroidAppSettings.cfg b/build/packages/files/android/sdk_project/AndroidAppSettings.cfg new file mode 100644 index 00000000..e87e465f --- /dev/null +++ b/build/packages/files/android/sdk_project/AndroidAppSettings.cfg @@ -0,0 +1,334 @@ +# The application settings for Android libSDL port + +# Specify application name (e.x. My Application) +AppName="Rockdroid1" + +# Specify reversed site name of application (e.x. com.mysite.myapp) +AppFullName=net.upperland.rockdroid + +# Application version code (integer) +AppVersionCode=121052 + +# Application user-visible version name (string) +AppVersionName="1.21.052" + +# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' +# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu +# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped +# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir - +# these files are put inside .apk package by build system +# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS +#!Keen1|keen1.zip^ +AppDataDownloadUrl="!Game Data|data_1.21.052.zip" + +# Reset SDL config when updating application to the new version (y) / (n) +ResetSdlConfigForThisVersion=y + +# Delete application data files when upgrading (specify file/dir paths separated by spaces) +DeleteFilesOnUpgrade="%" + +# Here you may type readme text, which will be shown during startup. Format is: +# Text in English, use \\\\\\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/ +ReadmeText='^You may press "Home" now - the data will be downloaded in background' + +# libSDL version to use (1.2/1.3/2.0) +LibSdlVersion=1.2 + +# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape +ScreenOrientation=h + +# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only +# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32) +VideoDepthBpp=16 + +# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedDepthBuffer=n + +# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedStencilBuffer=n + +# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device +# you need this option only if you're developing 3-d app (y) or (n) +NeedGles2=n + +# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL, +# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n) +SwVideoMode=y + +# Application video output will be resized to fit into native device screen (y)/(n) +SdlVideoResize=y + +# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n) +SdlVideoResizeKeepAspect=y + +# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer +InhibitSuspend=y + +# Create Android service, so the app is less likely to be killed while in background +CreateService= + +# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread - +# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n) +CompatibilityHacks=n + +# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n) +CompatibilityHacksStaticInit=n + +# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) +CompatibilityHacksTextInputEmulatesHwKeyboard=n + +# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n) +CompatibilityHacksPreventAudioChopping=n + +# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n) +CompatibilityHacksAppIgnoresAudioBufferSize=n + +# Hack for VCMI: preload additional shared libraries before aplication start +CompatibilityHacksAdditionalPreloadedSharedLibraries="" + +# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue - +# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n) +CompatibilityHacksSlowCompatibleEventQueue=n + +# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL +CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=n + +# Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects. +# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n) +CompatibilityHacksProperUsageOfSDL_UpdateRects= + +# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user +AppUsesMouse=n + +# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n) +AppNeedsTwoButtonMouse=n + +# Right mouse button can do long-press/drag&drop action, necessary for some games (y) or (n) +# If you disable it, swiping with two fingers will send mouse wheel events +RightMouseButtonLongPress= + +# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) +ShowMouseCursor=n + +# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n) +GenerateSubframeTouchEvents= + +# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n) +ForceRelativeMouseMode=n + +# Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n) +AppNeedsArrowKeys=y + +# Application needs text input (y) or (n), enables button for text input on screen +AppNeedsTextInput=n + +# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1 +AppUsesJoystick=n + +# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n) +AppUsesSecondJoystick=n + +# Application uses third on-screen joystick, as SDL joystick 0 axes 20-21 (y)/(n) +AppUsesThirdJoystick=n + +# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7 +AppUsesAccelerometer=n + +# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4 +AppUsesGyroscope=n + +# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0 +AppUsesMultitouch=n + +# Application records audio (it will use any available source, such a s microphone) +# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void); +# This option will add additional permission to Android manifest (y)/(n) +AppRecordsAudio=n + +# Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n) +AccessSdCard=y + +# Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n) +AccessInternet=y + +# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n) +ImmersiveMode=y + +# Application implements Android-specific routines to put to background, and will not draw anything to screen +# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them +# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n) +# This option is reported to be buggy, sometimes failing to restore video state +NonBlockingSwapBuffers=n + +# Redefine common hardware keys to SDL keysyms +# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent +# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices +# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th) +# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA +RedefinedKeys="NO_REMAP NO_REMAP NO_REMAP NO_REMAP NO_REMAP ESCAPE NO_REMAP" + +# Number of virtual keyboard keys (currently 6 is maximum) +AppTouchscreenKeyboardKeysAmount=5 + +# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right) +RedefinedKeysScreenKb="X A Z C RETURN W" + +# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu +RedefinedKeysScreenKbNames="JUMP FIRE SHIELD DASH START R" + +# On-screen keys theme +# 0 = Ultimate Droid by Sean Stieber (green, with cross joystick) +# 1 = Simple Theme by Beholder (white, with cross joystick) +# 2 = Sun by Sirea (yellow, with round joystick) +# 3 = Keen by Gerstrong (multicolor, with round joystick) +# 4 = Retro by Santiago Radeff (red/white, with cross joystick) +# 5 = GameBoy from RetroArch +# 6 = PlayStation from RetroArch +# 7 = SuperNintendo from RetroArch +# 8 = DualShock from RetroArch +# 9 = Nintendo64 from RetroArch +TouchscreenKeysTheme=1 + +# Redefine gamepad keys to SDL keysyms, button order is: +# A B X Y C Z L1 R1 L2 R2 LThumb RThumb Start Select Up Down Left Right LThumbUp LThumbDown LThumbLeft LThumbRight RThumbUp RThumbDown RThumbLeft RThumbRight +#RedefinedKeysGamepad="0 1 2 3 4 5 6 7 8 9 j k L M UP DOWN LEFT RIGHT PAGEUP PAGEDOWN HOME END PLUS MINUS LEFTBRACKET RIGHTBRACKET" +RedefinedKeysGamepad="X A Z C 4 5 Q R 8 9 j k RETURN HOME UP DOWN LEFT RIGHT PAGEUP PAGEDOWN HOME END PLUS MINUS LEFTBRACKET RIGHTBRACKET" + +#ORDER PS4: CIRCLE: T, xis: W, TRIANGLE: E, SQUARE: Q, L1: R, R1: I*, OPTION: P PSHARE: O +#L2: U, R2: I*, PS: SPACE, TOUCH: A, L3: F, R3: D +#RedefinedKeysGamepad="SQUARE XIS TRIANGLE L1 CIRCLE ? L2 R1/R2 SHARE OPTION TOUCH ? R3 L3 ? ? ? ? ? ? ? ? ? ? ? ?" + + +############################################################################ +# order PS4 joystick: +# square, xis, triangle, circle, L2, R2, share, options, (...) +############################################################################ +# circle -> NA +# square -> X +# X -> A +# triangle -> Z +# L1 -> C +# R1 -> NA +# L2 -> Q +# R2 -> W +# L3 -> HOME +# R3 -> RETURN +# options -> R +# share -> E +# PS -> SPACE +# TOUCH -> T +############################################################################ + +############################################################################ +# order PS2 joystick: +# square, xis, triangle, circle, L2, R2, share, options, (...) +############################################################################ +# circle -> NA +# square -> C +# X -> Z +# triangle -> X +# L1 -> NA +# R1 -> NA +# L2 -> E +# R2 -> A +# L3 -> SPACE +# R3 -> NA +# select -> E* +# start -> R6 +# PS -> SPACE +# TOUCH -> T +############################################################################ + +# Redefine keys for the second gamepad, same as the first gamepad if not set: +# RedefinedKeysSecondGamepad="TAB LALT LCTRL LSHIFT LALT LSHIFT BACKQUOTE LCTRL TAB TAB ESCAPE ESCAPE R F D G" + + +# How long to show startup menu button, in msec, 0 to disable startup menu +StartupMenuButtonTimeout=0 + +# Menu items to hide from startup menu, available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout +HiddenMenuOptions='SettingsMenuMouse.DisplaySizeConfig' + +# Menu items to show at startup - this is Java code snippet, leave empty for default +# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration() +# Available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout +FirstStartMenuOptions='' + +# Enable multi-ABI binary, with hardware FPU support - it will also work on old devices, +# but .apk size is 2x bigger (y) / (n) / (x86) / (all) +MultiABI=all + +# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower +AppMinimumRAM=16 + +# Optional shared libraries to compile - removing some of them will save space +# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed +# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 +CompiledLibraries="sdl_image jpeg png mad mikmod sdl_mixer sdl_ttf sdl_gfx" + +# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) +CustomBuildScript=n + +# Aditional CFLAGS for application +AppCflags='' + +# Additional LDFLAGS for application +AppLdflags='' + +# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable +AppOverlapsSystemHeaders= + +# Build only following subdirs (empty will build all dirs, ignored with custom script) +AppSubdirsBuild='' + +# Exclude these files from build +AppBuildExclude='' + +# Application command line parameters, including app name as 0-th param +AppCmdline='' + +# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens +# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge +MinimumScreenSize=s + +# Your AdMob Publisher ID, (n) if you don't want advertisements +AdmobPublisherId=n + +# Your AdMob test device ID, to receive a test ad +AdmobTestDeviceId= + +# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER) +AdmobBannerSize= + +# Google Play Game Services application ID, required for cloud saves to work +#GooglePlayGameServicesId=163632473605 + +# On-screen dpad/joystick will appear under finger when it touches the screen (y) or (n) +# Joystick always follows finger, so moving mouse requires touching the screen with other finger +FloatingScreenJoystick=n + +# GCC version, or 'clang' for CLANG +NDK_TOOLCHAIN_VERSION=clang + +# Android platform version. +# android-16 = Android 4.1, the earliest supported version in NDK r18. +# android-18 = Android 4.3, the first version supporting GLES3. +# android-21 = Android 5.1, the first version with SO_REUSEPORT defined. +APP_PLATFORM=android-21 + +# Aditional C++-specific compiler flags for application, added after AppCflags +AppCppflags='-DANDROID -DHANDHELD -std=c++11 -I/media/iuri/SamsungEXT4/development/SDK/Android/Sdk/android-ndk-r25/sources/cxx-stl/llvm-libc++/include -I. -I./rockdroid -I./rockdroid/aux_tools -I./rockdroid/character -I./rockdroid/character/movement -I./rockdroid/file -I./rockdroid/file/format -I./rockdroid/file/v4 -I./rockdroid/graphic -I./rockdroid/objects -I./rockdroid/options -I./rockdroid/ports/android -I./rockdroid/scenes' + +# Additional LDFLAGS for application +AppLdflags='-lstdc++' + +# Build only following subdirs (empty will build all dirs, ignored with custom script) +AppSubdirsBuild='. rockdroid rockdroid/aux_tools rockdroid/character rockdroid/character/movement rockdroid/file rockdroid/file/format rockdroid/file/v4 rockdroid/graphic rockdroid/objects rockdroid/options rockdroid/ports/android rockdroid/scenes' + +# Exclude these files from build +#AppBuildExclude='supertux/external/findlocale/example.c supertux/src/video/sdl/sdl_lightmap.cpp supertux/src/video/sdl/sdl_painter.cpp supertux/src/video/sdl/sdl_renderer.cpp supertux/src/video/sdl/sdl_texture.cpp supertux/src/video/sdl/sdl_video_system.cpp supertux/src/control/game_controller_manager.cpp supertux/src/control/joystick_manager.cpp' + +# Application command line parameters, including app name as 0-th param +AppCmdline='./rockdroid' diff --git a/build/packages/files/android/sdk_project/AndroidBuild.sh b/build/packages/files/android/sdk_project/AndroidBuild.sh new file mode 100755 index 00000000..a0cf0e3a --- /dev/null +++ b/build/packages/files/android/sdk_project/AndroidBuild.sh @@ -0,0 +1,18 @@ +#!/bin/sh + + +LOCAL_PATH=`dirname $0` +LOCAL_PATH=`cd $LOCAL_PATH && pwd` + +set -x + +ln -sf libsdl-1.2.so $LOCAL_PATH/../../../obj/local/armeabi/libSDL.so + +INITIAL_PATH=`pwd` + +cd rockdroid/build +make clean +qmake "CONFIG += android" ../RockDroid.pro +make +cp ./libapplication-armeabi.so $INITIAL_PATH/../src/ +cd $INITIAL_PATH diff --git a/build/packages/files/android/sdk_project/icon.png b/build/packages/files/android/sdk_project/icon.png new file mode 100644 index 00000000..e904941a Binary files /dev/null and b/build/packages/files/android/sdk_project/icon.png differ diff --git a/build/packages/files/psp_background1.png b/build/packages/files/psp_background1.png new file mode 100644 index 00000000..bb9cb69a Binary files /dev/null and b/build/packages/files/psp_background1.png differ diff --git a/build/packages/files/psp_icon1.png b/build/packages/files/psp_icon1.png new file mode 100644 index 00000000..7f1c4e7a Binary files /dev/null and b/build/packages/files/psp_icon1.png differ diff --git a/build/packages/linux.sh b/build/packages/linux.sh index e85cc232..394fc3a9 100755 --- a/build/packages/linux.sh +++ b/build/packages/linux.sh @@ -1,16 +1,29 @@ #!/bin/sh -VERSIONNAME=`cat version_name.txt` + +read -r -p "What is the version number you are building? " version_number +if [ "$version_number" != "1" ] && [ "$version_number" != "2" ]; +then + echo "Invalid version number" + exit +fi + +VERSIONNAME=`cat version_name_v$version_number.txt` +GAME_DIR=rockbot$version_number rm -r -f ./linux mkdir ./linux -mkdir ./linux/rockbot +mkdir ./linux/$GAME_DIR cp ./docs/README.LINUX.TXT ./linux/README.TXT -cp ../rockbot ./linux/rockbot -cp ../editor ./linux/rockbot -rsync -r --exclude=.svn ../data ./linux/rockbot -rm ./linux/rockbot/data/game*.sav -rm ./linux/rockbot/data/config*.sav +cp ../rockbot ./linux/$GAME_DIR +cp ../editor ./linux/$GAME_DIR + +rsync -r --exclude=mp3 --exclude=.svn ../games/RockDroid$version_number ./linux/$GAME_DIR/games +rsync -r --exclude=.svn ../fonts ./linux/$GAME_DIR +rsync -r --exclude=.svn ../shared ./linux/$GAME_DIR + +rm ./linux/$GAME_DIR/data/game*.sav +rm ./linux/$GAME_DIR/data/config*.sav cd ./linux -tar -cvf ../Rockbot_Linux_$VERSIONNAME.tar rockbot +tar -cvf ../Rockbot_Linux_$VERSIONNAME.tar $GAME_DIR gzip ../Rockbot_Linux_$VERSIONNAME.tar diff --git a/build/packages/source.sh b/build/packages/source.sh index cc9807d2..fd76efd6 100755 --- a/build/packages/source.sh +++ b/build/packages/source.sh @@ -1,11 +1,19 @@ #!/bin/sh -VERSIONNAME=`cat version_name.txt` +read -r -p "What is the version number you are building? " version_number +if [ "$version_number" != "1" ] && [ "$version_number" != "2" ]; +then + echo "Invalid version number" + exit +fi + +VERSIONNAME=`cat version_name_v$version_number.txt` +GAME_DIR=rockbot$version_number rm -r -f ./source mkdir ./source -rsync -r --exclude=.svn --exclude=build ../.. ./source +rsync -r --exclude=.AndroidData --exclude=.git --exclude=build ../.. ./source mkdir ./source/build -rsync -r --exclude=.svn ../../build/data ./source/build +rsync -r --exclude=.git ../../build/data ./source/build rm ./source/build/data/game*.sav rm ./source/build/data/config*.sav diff --git a/build/packages/version_name_v1.txt b/build/packages/version_name_v1.txt index 1d64d8a1..9f4b0504 100644 --- a/build/packages/version_name_v1.txt +++ b/build/packages/version_name_v1.txt @@ -1 +1 @@ -1.20.074 +1.21.067 diff --git a/build/packages/version_name_v2.txt b/build/packages/version_name_v2.txt index 59de894e..fa6eabff 100644 --- a/build/packages/version_name_v2.txt +++ b/build/packages/version_name_v2.txt @@ -1 +1 @@ -2.00.108 +2.01.067 diff --git a/build/packages/win32.sh b/build/packages/win32.sh index 6e03dd52..bbb4570f 100755 --- a/build/packages/win32.sh +++ b/build/packages/win32.sh @@ -8,19 +8,20 @@ then fi VERSIONNAME=`cat version_name_v$version_number.txt` +GAME_DIR=rockbot$version_number #copy data -rm -r -f ./win32/rockbot -mkdir -p ./win32/rockbot/games -rsync -r --exclude=.svn ../fonts ./win32/rockbot -rsync -r --exclude=.svn ../shared ./win32/rockbot -rsync -r --exclude=.svn ../games/Rockbot$version_number ./win32/rockbot/games -cp ./win32/*.dll ./win32/rockbot -cp ./win32/*.exe ./win32/rockbot -rm ./win32/rockbot/game*.sav -rm ./win32/rockbot/config_v*.sav +rm -r -f ./win32/$GAME_DIR +mkdir -p ./win32/$GAME_DIR/games +rsync -r --exclude=.svn ../fonts ./win32/$GAME_DIR +rsync -r --exclude=.svn ../shared ./win32/$GAME_DIR +rsync -r --exclude=.svn ../games/Rockbot$version_number ./win32/$GAME_DIR/games +cp ./win32/*.dll ./win32/$GAME_DIR +cp ./win32/*.exe ./win32/$GAME_DIR +rm ./win32/$GAME_DIR/game*.sav +rm ./win32/$GAME_DIR/config_v*.sav -cd win32/rockbot +cd win32/$GAME_DIR spacer="_WIN32_" -zip -r ../../Rockbot$version_number$spacer$VERSIONNAME.zip * +zip -r ../../Rockbot_Win32_$VERSIONNAME.zip * diff --git a/build/shared/images/backgrounds/stage_select.png b/build/shared/images/backgrounds/stage_select.png index 1041ea39..357fa002 100644 Binary files a/build/shared/images/backgrounds/stage_select.png and b/build/shared/images/backgrounds/stage_select.png differ diff --git a/build/shared/images/backgrounds/stage_select_bar.png b/build/shared/images/backgrounds/stage_select_bar.png index 33743917..70a42c71 100644 Binary files a/build/shared/images/backgrounds/stage_select_bar.png and b/build/shared/images/backgrounds/stage_select_bar.png differ diff --git a/build/shared/images/backgrounds/weapon_tooltip.png b/build/shared/images/backgrounds/weapon_tooltip.png new file mode 100644 index 00000000..3b3acfde Binary files /dev/null and b/build/shared/images/backgrounds/weapon_tooltip.png differ diff --git a/build/shared/images/boberatu.png b/build/shared/images/boberatu.png new file mode 100644 index 00000000..27427bd5 Binary files /dev/null and b/build/shared/images/boberatu.png differ diff --git a/build/shared/images/boss_intro_bg.png b/build/shared/images/boss_intro_bg.png index b259cb00..d38cef86 100644 Binary files a/build/shared/images/boss_intro_bg.png and b/build/shared/images/boss_intro_bg.png differ diff --git a/build/shared/images/config_bg.png b/build/shared/images/config_bg.png index dbc91d17..f7d73351 100644 Binary files a/build/shared/images/config_bg.png and b/build/shared/images/config_bg.png differ diff --git a/build/shared/images/death_animation.png b/build/shared/images/death_animation.png new file mode 100644 index 00000000..c1f1d7e1 Binary files /dev/null and b/build/shared/images/death_animation.png differ diff --git a/build/shared/images/hp_ball_disabled.png b/build/shared/images/hp_ball_disabled.png new file mode 100644 index 00000000..1afb63ad Binary files /dev/null and b/build/shared/images/hp_ball_disabled.png differ diff --git a/build/shared/images/jmd_logo.png b/build/shared/images/jmd_logo.png new file mode 100644 index 00000000..c0a69bf6 Binary files /dev/null and b/build/shared/images/jmd_logo.png differ diff --git a/build/shared/images/weapon_menu_selection.png b/build/shared/images/weapon_menu_selection.png new file mode 100644 index 00000000..791686e2 Binary files /dev/null and b/build/shared/images/weapon_menu_selection.png differ diff --git a/build/shared/images/window_icon.png b/build/shared/images/window_icon.png deleted file mode 100644 index 1830eccd..00000000 Binary files a/build/shared/images/window_icon.png and /dev/null differ diff --git a/build/shared/sfx/dinosaur_growl.wav b/build/shared/sfx/dinosaur_growl.wav new file mode 100644 index 00000000..32d49580 Binary files /dev/null and b/build/shared/sfx/dinosaur_growl.wav differ diff --git a/build/shared/strings_ingame_en.dat b/build/shared/strings_ingame_en.dat index a410d7db..b886bbcf 100644 --- a/build/shared/strings_ingame_en.dat +++ b/build/shared/strings_ingame_en.dat @@ -12,7 +12,7 @@ SELECT GAME ERROR WHILE SAVING GAME, PLEASE CHECK THAT THE DEVICE OR FILE IS NOT WRITE-PROTECTED. - 2009-2017 UPPERLAND STUDIOS + 2009-2020 UPPERLAND STUDIOS AUDIO INPUT VIDEO @@ -56,11 +56,11 @@ WARNING: THE GAME MAY FREEZE WITH THIS OPTION ENABLED. REQUIRES PHYSICAL CONTROLLER. OTHERWISE YOU WON'T BE -ABLE TO RESTORE SETTING +ABLE TO RESTORE SETTING. MUSIC PLAYER SFX PLAYER ART GALLERY -PASSWORD INVALID +INVALID PASSWORD PRESS START ROCKBOT ENGINE ERROR NO GAMES AVAILABLE @@ -99,7 +99,7 @@ MUSIC VOLUME SFX VOLUME ENABLED DISABLED -GET READY!! +MISSION STARTED! < SELECT PLAYER > PRESS START TO SELECT MANUAL @@ -128,30 +128,86 @@ ENABLE CLOUD SAVE FEATURE? (REQUIRES AVAILABLE NETWORK) STAGE: LAIR OF: -[ENTER STAGE] +[ENTER MISSION] [UNAVAILABLE IN DEMO] PRESENTS HOMEBREW GAMES TEAM -- ROCKBOT ENGINE -- -GAME BUILT USING A GAME ENGINE -FROM UPPERLAND STUDIOS, CREATED AS -HOMEBREW AND UNPROFESSIONAL. -SOURCE-CODE LICENSED UNDER -GPL AND FREELY DISTRIBUTABLE. -GAME CONTENT IS UNDER DIFFERENT -LICENCES BY ITS RESPECTIVE CREATORS. --- FREE VERSION WARNING -- -YOU ARE PLAYING THE FREE VERSION. -THIS CONTAINS ONLY A FEW STAGES AND -LACKS SOME FEATURES LIKE CHARACTER -SELECTION. THE FULL VERSION -[INCOMPLETE] CAN BE OBTAINED -IN THE GAME'S GOGOLE+ COMMUNITY. -THERE IS NO DATA FOR DEVELOPMENT -BEING FINISHED, AS THIS IS HOMEBREW -SOFTWARE, BEING DEVELOPED AT -PERSONAL FREE TIME. -HAVE FUN WITH THE DEMONSTRATION! +THIS GAME USES ORIGINAL CODE +AND ART ASSETS CREATED FROM +SCRATCH. ANY SIMILARITIES +ARE A WAY OF TRIBUTE +TO OLD GAMES OR A MISTAKE. +ROCKBOT AND UPPERLAND ARE NOT +RELATED TO ANY COMPANY OR GAMES. +GOOGLE REMOVED ROCKBOT DUE TO +USERS REPORTING IT AS +'IMPERSONATING' OTHER GAME. +-- WARNING HOMEBREW -- +THIS IS A HOMEBREW GAME, MADE BY A FEW +PEOPLE, WITHOUT MONETARY GAINS AND +DURING FREE TIME FROM DAILY JOBS. +WE MAKE GAMES FOR YOU TO HAVE FUN, +BUT STILL SOME PEOPLE HATE US. +DON'T BE A TROLL. DO NOT REPORT THE +APP BECAUSE IT LOOKS ALIKE. +READ FAQ IN OUT SITE FIRST! +OLD VERSIONS CAN BE OBTAINED AT: +HTTPS://ROCKBOT.UPPERLAND.NET + PRESS A KEY/BUTTON TO CONTINUE. CONCEPT DESIGN +BUTTON SPACING +AUDIO BUFFER SIZE +VERY SMALL +SMALL +MEDIUM +BIG +INCREASE VALUE IF AUDIO IS CHOPPY +CHEATS +INVENCIBLE +ALL BEATEN +CHARACTER +PLEASE SELECT SAVE SLOT +CREATE NEW GAME +LOAD GAME FILE +- NO SAVE FILE - +NEW CHARACTERS AVAILABLE +PRESS TO CONTINUE +FROG COIL +EAGLE JET +HP CRYSTAL +MP CRYSTAL +SPECIAL CRYSTAL +CHANGE WEAPON/ITEM +HEALTH CRYSTALS +BOOTS +ARMOR +BEAM +NORMAL +IMPROVED +USE OLD MUSIC +- SITE - +- SUPPORT - +- TWITTER - +- FACEBOOK - +PICK A MISSION +BOSS: +SELECT +USE CHIPTUNE MUSIC +MAY CAUSE AUDIO ISSUES +WEAPON +GAME ENGINE CREDITS +PLANNING +DESIGN +DIALOGS +TESTS AND REVIEW +ILLUSTRATION +MUSIC +TRANSLATION +PROGRAMMING +PORTING +SPECIAL THANKS +DEVLOPMENT TOOLS +PRESENTED BY diff --git a/build/shared/strings_ingame_es.dat b/build/shared/strings_ingame_es.dat index a410d7db..9ddd4a82 100644 --- a/build/shared/strings_ingame_es.dat +++ b/build/shared/strings_ingame_es.dat @@ -1,157 +1,213 @@ -NEW GAME -LOAD GAME -CONFIG -ABOUT +NUEVA PARTIDA +CARGAR PARTIDA +CONFIGURACIÓN +INFORMACIÓN EXTRAS -PASSWORD -GAME OVER -AND -HAS BEEN ACQUIRED -HAVE BEEN ACQUIRED -SELECT GAME -ERROR WHILE SAVING GAME, -PLEASE CHECK THAT THE DEVICE OR -FILE IS NOT WRITE-PROTECTED. - 2009-2017 UPPERLAND STUDIOS +CONTRASEÑA +PARTIDA ACABADA +Y +HA SIDO ADQUIRIDO +HA SIDO ADQUIRIDO +SELECCIONE PARTIDA +ERROR AL GUARDAR PARTIDA, +EVISE QUE EL DISPOSITIVO O +ARCHIVO NO ESTE PROTEGIDO. + 2009-2020 UPPERLAND STUDIOS AUDIO INPUT VIDEO -LEAVE STAGE -LANGUAGE -WINDOWED -FULLSCREEN -NO SCALE -SIZE2X -SCALE2X -SHOW FPS -PLEASE RESTART THE GAME -FOR THE CONFIGURATION -TO TAKE EFFECT -PRESS A BUTTON TO RETURN -PRESS ANY KEY OR BUTTON -SET -UP -DOWN -LEFT -RIGHT -JUMP +DEJAR NIVEL +LENGUAJE +EN VENTANA +PANTALLA COMPLETA +NO ESCALAR +TAMAÑO X2 +ESCALA X2 +ENSEÑAR FPS +OR FAVOR REINICIE EL JUEGO +PARA QUE LA CONFIGURACIÓN +TOME EFECTO. +PRESIONE UN BOTÓN PARA REGRESAR +PRESIONE CUALQUIER BOTÓN +DEFINIR +ARRIBA +ABAJO +IZQUIERDA +DERECHA +SALTAR DASH -SHIELD -FIRE +ESCUDO +DISPARAR START -BUTTON-L -BUTTON-R -PRESS NEW KEY/BUTTON -RESET TO DEFAULT -DIRECTIONAL -ANALOG +BOTÓN-L +BOTÓN-R +PRESIONE UNA NUEVA TECLA/BOTÓN +REESTABLECER +DIRECCIONAL +ANÁLOGO DIGITAL -CLOUD SAVE REQUIRES -A NETWORK CONNECTION -OR GAME WILL FREEZE WHEN -GETTING SERVER DATA. -ENABLING THIS OPTION REQUIRES -A DATA CONNECTION. -WARNING: THE GAME MAY FREEZE -WITH THIS OPTION ENABLED. -REQUIRES PHYSICAL CONTROLLER. -OTHERWISE YOU WON'T BE -ABLE TO RESTORE SETTING -MUSIC PLAYER -SFX PLAYER -ART GALLERY -PASSWORD INVALID -PRESS START -ROCKBOT ENGINE ERROR -NO GAMES AVAILABLE -QUIT GAME? -YES +EL GUARDADO EN LA NUBE REQUIERE +CONEXIÓN A INTERNET O EL JUEGO SE +CONGELARÁ CUANDO TRATE DE OBTENER +DATOS DEL SERVIDOR. +ACTIVAR ESTA OPCIÓN REQUIERE +CONEXIÓN A DATOS. +ADVERTENCIA: EL JUEGO PODRÍA +CONGELARSE CON ESTA OPCIÓN ACTIVADA. +REQUIERES DE UN MANDO FÍSICO, +O NO PODRÁS RESTABLECER LA +CONFIGURACIÓN. +REPRODUCTOR DE MÚSICA +REPRODUCTOR DE SFX +GALLERÍA DE ARTE +CONTRASEÑA INVALIDA +PRESIONE START +ERROR EN ROCKBOT ENGINE +NO HAY JUEGOS DISPONIBLES +¿SALIR DEL JUEGO? +SI NO -LIFE -ITEM -COIN -GIVE YOU THE ABILITY TO -IMPROVED ARMS ALLOWS YOU TO -SHOOT -THOSE LIGHTER LEGS -DASH IN MIDDLE-AIR. -EXECUTE DOUBLE JUMP -SHOURUYKEN (UP+DASH) +VIDA(S) +OBJETO(S) +MONEDA(S) +TE DA LA HABILIDAD DE +ESTOS BRAZOS MEJORADOS TE PERMITEN +DISPARAR +ESTAS PIERNAS LIGERAS TE PERMITEN +HACER UN DASH EN EL AIRE. +HACER UN SALTO DOBLE +HACER UN SHOURYUKEN (ARRIBA+DASH) -THIS FORTIFIED BODY WILL -BE INTANGIBLE MORE TIME -TAKE HALF DAMAGE -AVOID PUSH-BACK ON HIT -RESIST SPIKES -SELECT DIFFICULTY: -EASY +ESTE CUERPO FORTIFICADO TE PERMITE +SER INTANGIBLE POR MÁS TIEMPO +TOMAR LA MITAD DEL DAÑO +EVITAR EMPUJONES AL SER DAÑADO +RESISTIR ESPINAS +SELECCIONE UNA DIFICULTAD: +FÁCIL NORMAL -HARD -SELECTED JOYSTICK -CONFIG BUTTONS -TURBO MODE -AUTO-CHARGED -ON -OFF -QUIT GAME -ARMOR -MUSIC VOLUME -SFX VOLUME -ENABLED -DISABLED -GET READY!! -< SELECT PLAYER > -PRESS START TO SELECT +DIFÍCIL +JOYSTICK SELECCIONADO +CONFIGURAR BOTONES +MODO TURBO +AUTO-CARGA +SI +NO +SALIR DEL JUEGO +ARMADURA +VOLUMEN DE MÚSICA +VOLUMEN DE SFX +HABILITADO +DESHABILITADO +¡MISIÓN INICIADA! +< SELECCIONE UN PERSONAJE > +PRESIONE START PARA SELECCIONAR MANUAL -MODE -SCALE MODE -HIDE CONTROLS -CONTROLS SIZE -PLAY SERVICES -CLOUD SAVE -JOYSTICK TYPE -SMALL -MEDIUM -BIG +MODO +MODO DE ESCALA +OCULTAR CONTROLES +TAMAÑO DE CONTROLES +SERVICIOS DE GOOGLE PLAY +GUARDADO EN LA NUBE +TIPO DE JOYSTICK +PEQUEÑO +MEDIANO +GRANDE WIIMOTE CLASSIC GAMECUBE -PLATFORM SPECIFIC -PLEASE SET -RETURN -LOW -MEDIUM -HIGH -PERFORMANCE -ENABLE GOOGLE PLAY SERVICES? -ENABLE CLOUD SAVE FEATURE? -(REQUIRES AVAILABLE NETWORK) -STAGE: -LAIR OF: -[ENTER STAGE] -[UNAVAILABLE IN DEMO] -PRESENTS +ESPECIFICO DE PLATAFORMA +POR FAVOR DEFINA +REGRESAR +BAJO +MEDIO +ALTO +RENDIMIENTO +¿HABILITAR SERVICIOS DE GOOGLE PLAY? +¿HABILITAR GUARDADO EN LA NUBE? +(SE REQUIERE UN CONEXIÓN DISPONIBLE) +NIVEL: +GUARIDA DE: +[SELECCIONAR] +[NO DISPONIBLE EN LA DEMO] +PRESENTA HOMEBREW GAMES TEAM -- ROCKBOT ENGINE -- -GAME BUILT USING A GAME ENGINE -FROM UPPERLAND STUDIOS, CREATED AS -HOMEBREW AND UNPROFESSIONAL. -SOURCE-CODE LICENSED UNDER -GPL AND FREELY DISTRIBUTABLE. -GAME CONTENT IS UNDER DIFFERENT -LICENCES BY ITS RESPECTIVE CREATORS. --- FREE VERSION WARNING -- -YOU ARE PLAYING THE FREE VERSION. -THIS CONTAINS ONLY A FEW STAGES AND -LACKS SOME FEATURES LIKE CHARACTER -SELECTION. THE FULL VERSION -[INCOMPLETE] CAN BE OBTAINED -IN THE GAME'S GOGOLE+ COMMUNITY. -THERE IS NO DATA FOR DEVELOPMENT -BEING FINISHED, AS THIS IS HOMEBREW -SOFTWARE, BEING DEVELOPED AT -PERSONAL FREE TIME. -HAVE FUN WITH THE DEMONSTRATION! -PRESS A KEY/BUTTON TO CONTINUE. -CONCEPT +ESTE JUEGO UTILIZA CÓDIGO ORIGINAL +Y ASSETS HECHOS DESDE CERO. +CUALQUIER SIMILITUDES SON +TRIBUTOS A JUEGOS ANTIGUOS +O UN MALENTENDIDO. +ROCKBOT Y UPPERLAND NO ESTÁN RELACIONADOS +A NINGUNA OTRA COMPAÑÍA O JUEGO. +GOOGLE REMOVIÓ ROCKBOT DEBIDO +A USUARIOS REPORTÁNDOLO POR +‘COPIAR’ A OTRO JUEGO. +-- ADVERTENCIA HOMEBREW -- +ESTO ES UN HOMEBREW, HECHO POR +POCAS PERSONAS SIN NINGUNA GANANCIA +MONETARIA Y DURANTE NUESTRO TIEMPO +LIBRE DEL TRABAJO. HACEMOS JUEGOS PARA +QUÉ SE DIVIERTAN. +NÃO SEJA TROLL. NÃO REPORTE +SÓ PORQUE ACHA PARECIDO. +POR FAVOR, LEA EL F.A.Q.!! +VERSIONES ANTIGUAS PUEDEN SER OBTENIDAS EN: +HTTPS://ROCKBOT.UPPERLAND.NET + + +CONCEPTO +DISEÑO +ESPACIADO ENTRE BOTONES +TAMAÑO DEL BÚFER DE AUDIO +MUY PEQUEÑO +PEQUEÑO +MEDIANO +GRANDE +INCREMENTE EL VALOR SI SE ESCUCHA CORTADO +TRUCOS +INVENCIBILIDAD +TODOS LOS NIVELES COMPLETADOS +PERSONAJE +POR FAVOR, SELECCIONE UNA CASILLA DE GUARDADO +CREAR UNA NUEVA PARTIDA +CARGAR UN ARCHIVO DE GUARDADO +– SIN PARTIDA GUARDADA – +NUEVOS PERSONAJES DESBLOQUEADOS +USA PARA CONTINUAR +FROG COIL +EAGLE JET +HP CRYSTAL +MP CRYSTAL +SPECIAL CRYSTAL +CAMBIAR ARMA/OBJETOM +HEALTH CRYSTALS +BOTAS +ARMADURA +RAYO +NORMAL +MEJORADO +USAR MÚSICA ANTIGUA +- SITIO - +- AYUDA - +- TWITTER - +- FACEBOOK - +SELECCIONE UNA MISIÓN +JEFE: +SELECCIONE +USAR MÚSICA CHIPTUNE +PUEDE CAUSAR PROBLEMAS DE AUDIO +ARMA +CRÉDITOS DO MOTOR DE JOGO +PLANEJAMENTO DESIGN +DIÁLOGOS +TESTES AND REVISÃO +ILUSTRAÇÕES +MÚSICA +TRADUÇÃO +PROGRAMAÇÃO +PLATAFORMAS +AGRADECIMENTOS ESPECIAIS +FERRAMENTAS DE DESENVOLVIMENTO +APRESENTADO POR diff --git a/build/shared/strings_ingame_fr.dat b/build/shared/strings_ingame_fr.dat index a410d7db..42bc1c31 100644 --- a/build/shared/strings_ingame_fr.dat +++ b/build/shared/strings_ingame_fr.dat @@ -12,7 +12,7 @@ SELECT GAME ERROR WHILE SAVING GAME, PLEASE CHECK THAT THE DEVICE OR FILE IS NOT WRITE-PROTECTED. - 2009-2017 UPPERLAND STUDIOS + 2009-2020 UPPERLAND STUDIOS AUDIO INPUT VIDEO @@ -56,11 +56,11 @@ WARNING: THE GAME MAY FREEZE WITH THIS OPTION ENABLED. REQUIRES PHYSICAL CONTROLLER. OTHERWISE YOU WON'T BE -ABLE TO RESTORE SETTING +ABLE TO RESTORE SETTING. MUSIC PLAYER SFX PLAYER ART GALLERY -PASSWORD INVALID +INVALID PASSWORD PRESS START ROCKBOT ENGINE ERROR NO GAMES AVAILABLE @@ -99,7 +99,7 @@ MUSIC VOLUME SFX VOLUME ENABLED DISABLED -GET READY!! +MISSION STARTED! < SELECT PLAYER > PRESS START TO SELECT MANUAL @@ -128,30 +128,73 @@ ENABLE CLOUD SAVE FEATURE? (REQUIRES AVAILABLE NETWORK) STAGE: LAIR OF: -[ENTER STAGE] +[ENTER MISSION] [UNAVAILABLE IN DEMO] PRESENTS HOMEBREW GAMES TEAM -- ROCKBOT ENGINE -- -GAME BUILT USING A GAME ENGINE -FROM UPPERLAND STUDIOS, CREATED AS -HOMEBREW AND UNPROFESSIONAL. -SOURCE-CODE LICENSED UNDER -GPL AND FREELY DISTRIBUTABLE. -GAME CONTENT IS UNDER DIFFERENT -LICENCES BY ITS RESPECTIVE CREATORS. --- FREE VERSION WARNING -- -YOU ARE PLAYING THE FREE VERSION. -THIS CONTAINS ONLY A FEW STAGES AND -LACKS SOME FEATURES LIKE CHARACTER -SELECTION. THE FULL VERSION -[INCOMPLETE] CAN BE OBTAINED -IN THE GAME'S GOGOLE+ COMMUNITY. -THERE IS NO DATA FOR DEVELOPMENT -BEING FINISHED, AS THIS IS HOMEBREW -SOFTWARE, BEING DEVELOPED AT -PERSONAL FREE TIME. -HAVE FUN WITH THE DEMONSTRATION! +THIS GAME USES ORIGINAL CODE +AND ART ASSETS CREATED FROM +SCRATCH. ANY SIMILARITIES +ARE A WAY OF TRIBUTE +TO OLD GAMES OR A MISTAKE. +ROCKBOT AND UPPERLAND ARE NOT +RELATED TO ANY COMPANY OR GAMES. +GOOGLE REMOVED ROCKBOT DUE TO +USERS REPORTING IT AS +'IMPERSONATING' OTHER GAME. +-- WARNING HOMEBREW -- +THIS IS A HOMEBREW GAME, MADE BY A FEW +PEOPLE, WITHOUT MONETARY GAINS AND +DURING FREE TIME FROM DAILY JOBS. +WE MAKE GAMES FOR YOU TO HAVE FUN, +BUT STILL SOME PEOPLE HATE US. +DON'T BE A TROLL. DO NOT REPORT THE +APP BECAUSE IT LOOKS ALIKE. +READ FAQ IN OUT SITE FIRST! +OLD VERSIONS CAN BE OBTAINED AT: +HTTPS://ROCKBOT.UPPERLAND.NET + PRESS A KEY/BUTTON TO CONTINUE. CONCEPT DESIGN +BUTTON SPACING +AUDIO BUFFER SIZE +VERY SMALL +SMALL +MEDIUM +BIG +INCREASE VALUE IF AUDIO IS CHOPPY +CHEATS +INVENCIBLE +ALL BEATEN +CHARACTER +PLEASE SELECT SAVE SLOT +CREATE NEW GAME +LOAD GAME FILE +- NO SAVE FILE - +NEW CHARACTERS AVAILABLE +PRESS TO CONTINUE +FROG COIL +EAGLE JET +HP CRYSTAL +MP CRYSTAL +SPECIAL CRYSTAL +CHANGE WEAPON/ITEM +HEALTH CRYSTALS +BOOTS +ARMOR +BEAM +NORMAL +IMPROVED +USE OLD MUSIC +- SITE - +- SUPPORT - +- TWITTER - +- FACEBOOK - +PICK A MISSION +BOSS: +SELECT +USE CHIPTUNE MUSIC +MAY CAUSE AUDIO ISSUES +WEAPON diff --git a/build/shared/strings_ingame_it.dat b/build/shared/strings_ingame_it.dat index a410d7db..42bc1c31 100644 --- a/build/shared/strings_ingame_it.dat +++ b/build/shared/strings_ingame_it.dat @@ -12,7 +12,7 @@ SELECT GAME ERROR WHILE SAVING GAME, PLEASE CHECK THAT THE DEVICE OR FILE IS NOT WRITE-PROTECTED. - 2009-2017 UPPERLAND STUDIOS + 2009-2020 UPPERLAND STUDIOS AUDIO INPUT VIDEO @@ -56,11 +56,11 @@ WARNING: THE GAME MAY FREEZE WITH THIS OPTION ENABLED. REQUIRES PHYSICAL CONTROLLER. OTHERWISE YOU WON'T BE -ABLE TO RESTORE SETTING +ABLE TO RESTORE SETTING. MUSIC PLAYER SFX PLAYER ART GALLERY -PASSWORD INVALID +INVALID PASSWORD PRESS START ROCKBOT ENGINE ERROR NO GAMES AVAILABLE @@ -99,7 +99,7 @@ MUSIC VOLUME SFX VOLUME ENABLED DISABLED -GET READY!! +MISSION STARTED! < SELECT PLAYER > PRESS START TO SELECT MANUAL @@ -128,30 +128,73 @@ ENABLE CLOUD SAVE FEATURE? (REQUIRES AVAILABLE NETWORK) STAGE: LAIR OF: -[ENTER STAGE] +[ENTER MISSION] [UNAVAILABLE IN DEMO] PRESENTS HOMEBREW GAMES TEAM -- ROCKBOT ENGINE -- -GAME BUILT USING A GAME ENGINE -FROM UPPERLAND STUDIOS, CREATED AS -HOMEBREW AND UNPROFESSIONAL. -SOURCE-CODE LICENSED UNDER -GPL AND FREELY DISTRIBUTABLE. -GAME CONTENT IS UNDER DIFFERENT -LICENCES BY ITS RESPECTIVE CREATORS. --- FREE VERSION WARNING -- -YOU ARE PLAYING THE FREE VERSION. -THIS CONTAINS ONLY A FEW STAGES AND -LACKS SOME FEATURES LIKE CHARACTER -SELECTION. THE FULL VERSION -[INCOMPLETE] CAN BE OBTAINED -IN THE GAME'S GOGOLE+ COMMUNITY. -THERE IS NO DATA FOR DEVELOPMENT -BEING FINISHED, AS THIS IS HOMEBREW -SOFTWARE, BEING DEVELOPED AT -PERSONAL FREE TIME. -HAVE FUN WITH THE DEMONSTRATION! +THIS GAME USES ORIGINAL CODE +AND ART ASSETS CREATED FROM +SCRATCH. ANY SIMILARITIES +ARE A WAY OF TRIBUTE +TO OLD GAMES OR A MISTAKE. +ROCKBOT AND UPPERLAND ARE NOT +RELATED TO ANY COMPANY OR GAMES. +GOOGLE REMOVED ROCKBOT DUE TO +USERS REPORTING IT AS +'IMPERSONATING' OTHER GAME. +-- WARNING HOMEBREW -- +THIS IS A HOMEBREW GAME, MADE BY A FEW +PEOPLE, WITHOUT MONETARY GAINS AND +DURING FREE TIME FROM DAILY JOBS. +WE MAKE GAMES FOR YOU TO HAVE FUN, +BUT STILL SOME PEOPLE HATE US. +DON'T BE A TROLL. DO NOT REPORT THE +APP BECAUSE IT LOOKS ALIKE. +READ FAQ IN OUT SITE FIRST! +OLD VERSIONS CAN BE OBTAINED AT: +HTTPS://ROCKBOT.UPPERLAND.NET + PRESS A KEY/BUTTON TO CONTINUE. CONCEPT DESIGN +BUTTON SPACING +AUDIO BUFFER SIZE +VERY SMALL +SMALL +MEDIUM +BIG +INCREASE VALUE IF AUDIO IS CHOPPY +CHEATS +INVENCIBLE +ALL BEATEN +CHARACTER +PLEASE SELECT SAVE SLOT +CREATE NEW GAME +LOAD GAME FILE +- NO SAVE FILE - +NEW CHARACTERS AVAILABLE +PRESS TO CONTINUE +FROG COIL +EAGLE JET +HP CRYSTAL +MP CRYSTAL +SPECIAL CRYSTAL +CHANGE WEAPON/ITEM +HEALTH CRYSTALS +BOOTS +ARMOR +BEAM +NORMAL +IMPROVED +USE OLD MUSIC +- SITE - +- SUPPORT - +- TWITTER - +- FACEBOOK - +PICK A MISSION +BOSS: +SELECT +USE CHIPTUNE MUSIC +MAY CAUSE AUDIO ISSUES +WEAPON diff --git a/build/shared/strings_ingame_pt.dat b/build/shared/strings_ingame_pt.dat index 297116b0..74d832d7 100644 --- a/build/shared/strings_ingame_pt.dat +++ b/build/shared/strings_ingame_pt.dat @@ -12,7 +12,7 @@ SELECIONE JOGO ERRO SALVANDO JOGO, VERIFIQUE SE DISPOSITIVO OU ARQUIVO ESTÁ PROTEGIDO PARA GRAVACAO. - 2009-2017 UPPERLAND STUDIOS + 2009-2020 UPPERLAND STUDIOS AUDIO CONTROLE VIDEO @@ -55,7 +55,7 @@ CONEXAO DE DADOS. AVISO: O JOGO PODE CONGELAR COM ESTA OPCAO HABILITADA. REQUER UM CONTROLE FÍSICO, -CASO CONTRÁRIO NAO CONSEGUIRA +CASO CONTRÁRIO NÃO CONSEGUIRA RESTAURAR CONFIGURACOES. PLAYER DE MÚSICA PLAYER DE EFEITOS SONOROS @@ -99,7 +99,7 @@ VOLUME DE MUSICA VOLUME EFEITOS HABILITADO DESABILITADO -PREPARE-SE!! +MISSÃO INICIADA! < SELECIONE PERSONAGEM > APERTE START PARA INICIAR MANUAL @@ -109,7 +109,7 @@ ESCONDER CONTROLES TAMANHO CONTROLES PLAY SERVICES SALVAR NA NUVEM -TYPO DE CONTROLE +TIPO DE CONTROLE PEQUENO MEDIUM GRANDE @@ -128,30 +128,86 @@ HAVILITAR SAVE NA NUVEM? (REQUER REDE DE DADOS ATIVA) FASE: LAR DE: -[ENTRAR FASE] +[ENTRAR MISSÃO] [INDISPONÍVEL NA DEMO] APRESENTA TIME DE JOGOS CASEIROS -- ROCKBOT ENGINE -- -JOGO CONTRUÍDO COM UM MOTOR DE JOGO -DE UPPERLAND STUDIOS, CRIADO DE FORMA -CASEIRA E NÃO-PROFISSIONAL. -CÓDIGO-FONTE LICENCIADO SOB A -GPL E LIVREMENTE DISTRIBUÍDO. -CONTEÚDO DE JOGO DESTRIBUÍDO SOB -LICENÇAS DE SEUS RESPECTIVOS CRIADORES. --- AVISO SOBRE VERSÃO FREE -- -VOCÊ ESTÁ JOGANDO A VERSÃO GRATUÍTA. -ESTA CONTÉM APENAS ALGUMAS FASES E -NÃO POSSUIU ALGUMAS FUNÇÕES COMO -SELEÇÃO DE PERSONAGEM. A VERSÃO -INTEGRAL [INCOMPLETA] PODE SER -OBTIDA NO GOGOLE+ DO JOGO. -NÃO HÁ UMA DATA PARA FINALIZAÇÃO -DO DESENVOLVIMENTO, POIS ESTE É -UM SOFTWARE CASEIRO, SENDO -DESENVOLVIDO NO TEMPO PESSOAL LIVRE. -DIVIRTA-SE COM A DEMONSTRAÇÃO! -APERTE UM BOTÃO/TECLA PARA CONTINUAR +ESTE JOGO USA CÓDIGO E ARTE +ORIGINAIS, CRIADOS DO ZERO +QUALQUER SEMELHANÇA É MERA +COINCIDÊNCIA OU HOMENAGEM +À JOGOS ANTIGOS OU ENGANO. +ROCKBOT E UPPERLAND NÃO TEM +QUALQUER RELAÇÃO COM OUTRAS EMPRESAS. +ROCKBOT FOI REMOVIDO PELO GOOGLE +USUÁRIOS RELATANDO ELE COMO +SENDO VERSÃO 'FALSA' DE OUTRO. +-- AVISO JOGO CASEIRO -- +ESTE JOGO FOI FEITO EM CASA, POR +POUCAS PESSOAS, SEM GANHOS MONETÁRIOS +E DURANTE O TEMPO LIVRE DO EMPREGO. +FAZEMOS JOGOS PARA VOCÊ SE DIVERTIR +AINDA ASSIM, ALGUNS NOS ODEIAM. +NÃO SEJA TROLL. NÃO REPORTE +SÓ PORQUE ACHA PARECIDO. +LEIA A FAQ NO NOSSO SITE ANTES!! +VERSÃO ROCKBOT PODE SER OBTIDA EM: +HTTPS://ROCKBOT.UPPERLAND.NET + + CONCEITO DESENHO +ESPAÇO BOTÕES +TAMANHO BUFFER ÁUDIO +MUITO PEQUENO +PEQUENO +MÉDIO +GRANDE +AUMENTE VALOR SE ÁUDIO ESTIVER CORTADO +TRAPAÇAS +INVENCÍVEL +TUDO DERROTADO +PERSONAGEM +ESCOLHA UM ESPAÇO DE SAVE +CRIAR NOVO JOGO +CARREGAR ARQUIVO +- SEM ARQUIVO - +NOVOS PERSONAGENS DISPONPIVEIS +USE PARA CONTINUAR +SAPO-MOLA +ÁGUIA-JATO +CRISTAL HP +CRISTAL MP +CRISTAL ESPECIAL +MUDAR ARMA/ITEM +CRISTAIS DE ENERGIA +BOTAS +ARMADURA +TIRO +NORMAL +MELHORADO +USAR MÚSICA ANTIGA +- SITE - +- SUPORTE - +- TWITTER - +- FACEBOOK - +ESCOLHA UMA MISSÃO +CHEFE: +SELECIONAR +USAR MÚSICA CHIPTUNE +PODE CAUSAR PROBLEMAS DE ÁUDIO +ARMA +CRÉDITOS DO MOTOR DE JOGO +PLANEJAMENTO +DESIGN +DIÁLOGOS +TESTES AND REVISÃO +ILUSTRAÇÕES +MÚSICA +TRADUÇÃO +PROGRAMAÇÃO +PLATAFORMAS +AGRADECIMENTOS ESPECIAIS +FERRAMENTAS DE DESENVOLVIMENTO +APRESENTADO POR diff --git a/build/template/images/animations/big_boss_explosion.png b/build/template/images/animations/big_boss_explosion.png deleted file mode 100644 index 4dc32391..00000000 Binary files a/build/template/images/animations/big_boss_explosion.png and /dev/null differ diff --git a/build/template/images/animations/bubble.png b/build/template/images/animations/bubble.png deleted file mode 100644 index a1ba5dea..00000000 Binary files a/build/template/images/animations/bubble.png and /dev/null differ diff --git a/build/template/images/animations/city_explosion_left.png b/build/template/images/animations/city_explosion_left.png deleted file mode 100644 index a1c8d1de..00000000 Binary files a/build/template/images/animations/city_explosion_left.png and /dev/null differ diff --git a/build/template/images/animations/city_explosion_right.png b/build/template/images/animations/city_explosion_right.png deleted file mode 100644 index 802449f3..00000000 Binary files a/build/template/images/animations/city_explosion_right.png and /dev/null differ diff --git a/build/template/images/animations/dash_dust.png b/build/template/images/animations/dash_dust.png deleted file mode 100644 index 251a7550..00000000 Binary files a/build/template/images/animations/dash_dust.png and /dev/null differ diff --git a/build/template/images/animations/explosion_16.png b/build/template/images/animations/explosion_16.png deleted file mode 100644 index 78ce6ca3..00000000 Binary files a/build/template/images/animations/explosion_16.png and /dev/null differ diff --git a/build/template/images/animations/explosion_32.png b/build/template/images/animations/explosion_32.png deleted file mode 100644 index 15773c18..00000000 Binary files a/build/template/images/animations/explosion_32.png and /dev/null differ diff --git a/build/template/images/animations/explosion_boss.png b/build/template/images/animations/explosion_boss.png deleted file mode 100644 index 3a594775..00000000 Binary files a/build/template/images/animations/explosion_boss.png and /dev/null differ diff --git a/build/template/images/animations/flash.png b/build/template/images/animations/flash.png deleted file mode 100644 index 606d823e..00000000 Binary files a/build/template/images/animations/flash.png and /dev/null differ diff --git a/build/template/images/animations/hit.png b/build/template/images/animations/hit.png deleted file mode 100644 index e436be82..00000000 Binary files a/build/template/images/animations/hit.png and /dev/null differ diff --git a/build/template/images/animations/rain.png b/build/template/images/animations/rain.png deleted file mode 100644 index 337e3843..00000000 Binary files a/build/template/images/animations/rain.png and /dev/null differ diff --git a/build/template/images/animations/ready.png b/build/template/images/animations/ready.png deleted file mode 100644 index d78755dd..00000000 Binary files a/build/template/images/animations/ready.png and /dev/null differ diff --git a/build/template/images/animations/water_splash.png b/build/template/images/animations/water_splash.png deleted file mode 100644 index 2cefb337..00000000 Binary files a/build/template/images/animations/water_splash.png and /dev/null differ diff --git a/build/template/images/backgrounds/btn_a.png b/build/template/images/backgrounds/btn_a.png deleted file mode 100644 index 321a3880..00000000 Binary files a/build/template/images/backgrounds/btn_a.png and /dev/null differ diff --git a/build/template/images/backgrounds/castle_point.png b/build/template/images/backgrounds/castle_point.png deleted file mode 100644 index a811869d..00000000 Binary files a/build/template/images/backgrounds/castle_point.png and /dev/null differ diff --git a/build/template/images/backgrounds/castle_skull_point.png b/build/template/images/backgrounds/castle_skull_point.png deleted file mode 100644 index e0f6211c..00000000 Binary files a/build/template/images/backgrounds/castle_skull_point.png and /dev/null differ diff --git a/build/template/images/backgrounds/config.png b/build/template/images/backgrounds/config.png deleted file mode 100644 index eb72f53a..00000000 Binary files a/build/template/images/backgrounds/config.png and /dev/null differ diff --git a/build/template/images/backgrounds/config_fg.png b/build/template/images/backgrounds/config_fg.png deleted file mode 100644 index 6f69c310..00000000 Binary files a/build/template/images/backgrounds/config_fg.png and /dev/null differ diff --git a/build/template/images/backgrounds/dialog.png b/build/template/images/backgrounds/dialog.png deleted file mode 100644 index b179612e..00000000 Binary files a/build/template/images/backgrounds/dialog.png and /dev/null differ diff --git a/build/template/images/backgrounds/lights.png b/build/template/images/backgrounds/lights.png deleted file mode 100644 index c8923b73..00000000 Binary files a/build/template/images/backgrounds/lights.png and /dev/null differ diff --git a/build/template/images/backgrounds/menu.png b/build/template/images/backgrounds/menu.png deleted file mode 100644 index 3681f607..00000000 Binary files a/build/template/images/backgrounds/menu.png and /dev/null differ diff --git a/build/template/images/backgrounds/password.png b/build/template/images/backgrounds/password.png deleted file mode 100644 index d4c68d90..00000000 Binary files a/build/template/images/backgrounds/password.png and /dev/null differ diff --git a/build/template/images/backgrounds/password_blue_ball.png b/build/template/images/backgrounds/password_blue_ball.png deleted file mode 100644 index ac9df30e..00000000 Binary files a/build/template/images/backgrounds/password_blue_ball.png and /dev/null differ diff --git a/build/template/images/backgrounds/password_red_ball.png b/build/template/images/backgrounds/password_red_ball.png deleted file mode 100644 index a0c4f06a..00000000 Binary files a/build/template/images/backgrounds/password_red_ball.png and /dev/null differ diff --git a/build/template/images/backgrounds/password_selector.png b/build/template/images/backgrounds/password_selector.png deleted file mode 100644 index 1c4946bc..00000000 Binary files a/build/template/images/backgrounds/password_selector.png and /dev/null differ diff --git a/build/template/images/backgrounds/player_select.png b/build/template/images/backgrounds/player_select.png deleted file mode 100644 index 325ddeb3..00000000 Binary files a/build/template/images/backgrounds/player_select.png and /dev/null differ diff --git a/build/template/images/backgrounds/player_select4.png b/build/template/images/backgrounds/player_select4.png deleted file mode 100644 index c05d91aa..00000000 Binary files a/build/template/images/backgrounds/player_select4.png and /dev/null differ diff --git a/build/template/images/backgrounds/player_select_p1.png b/build/template/images/backgrounds/player_select_p1.png deleted file mode 100644 index 3f8e2619..00000000 Binary files a/build/template/images/backgrounds/player_select_p1.png and /dev/null differ diff --git a/build/template/images/backgrounds/player_select_p2.png b/build/template/images/backgrounds/player_select_p2.png deleted file mode 100644 index f06fd22c..00000000 Binary files a/build/template/images/backgrounds/player_select_p2.png and /dev/null differ diff --git a/build/template/images/backgrounds/player_select_p3.png b/build/template/images/backgrounds/player_select_p3.png deleted file mode 100644 index 3d34eac6..00000000 Binary files a/build/template/images/backgrounds/player_select_p3.png and /dev/null differ diff --git a/build/template/images/backgrounds/player_select_p4.png b/build/template/images/backgrounds/player_select_p4.png deleted file mode 100644 index 7bcb1358..00000000 Binary files a/build/template/images/backgrounds/player_select_p4.png and /dev/null differ diff --git a/build/template/images/backgrounds/player_selection.png b/build/template/images/backgrounds/player_selection.png deleted file mode 100644 index 8c7d1334..00000000 Binary files a/build/template/images/backgrounds/player_selection.png and /dev/null differ diff --git a/build/template/images/backgrounds/skull_castle.png b/build/template/images/backgrounds/skull_castle.png deleted file mode 100644 index f464ac93..00000000 Binary files a/build/template/images/backgrounds/skull_castle.png and /dev/null differ diff --git a/build/template/images/backgrounds/stage_boss_intro.png b/build/template/images/backgrounds/stage_boss_intro.png deleted file mode 100644 index 62c1667f..00000000 Binary files a/build/template/images/backgrounds/stage_boss_intro.png and /dev/null differ diff --git a/build/template/images/backgrounds/stage_select.png b/build/template/images/backgrounds/stage_select.png deleted file mode 100644 index c266a3a0..00000000 Binary files a/build/template/images/backgrounds/stage_select.png and /dev/null differ diff --git a/build/template/images/backgrounds/stage_select_darkned.png b/build/template/images/backgrounds/stage_select_darkned.png deleted file mode 100644 index 140ee624..00000000 Binary files a/build/template/images/backgrounds/stage_select_darkned.png and /dev/null differ diff --git a/build/template/images/backgrounds/stage_select_highlighted.png b/build/template/images/backgrounds/stage_select_highlighted.png deleted file mode 100644 index 4b9d5a38..00000000 Binary files a/build/template/images/backgrounds/stage_select_highlighted.png and /dev/null differ diff --git a/build/template/images/backgrounds/stage_select_highlighted_yellow.png b/build/template/images/backgrounds/stage_select_highlighted_yellow.png deleted file mode 100644 index 6ed69402..00000000 Binary files a/build/template/images/backgrounds/stage_select_highlighted_yellow.png and /dev/null differ diff --git a/build/template/images/backgrounds/stage_select_item.png b/build/template/images/backgrounds/stage_select_item.png deleted file mode 100644 index eb91be26..00000000 Binary files a/build/template/images/backgrounds/stage_select_item.png and /dev/null differ diff --git a/build/template/images/backgrounds/weapon_menu.png b/build/template/images/backgrounds/weapon_menu.png deleted file mode 100644 index 0b47e745..00000000 Binary files a/build/template/images/backgrounds/weapon_menu.png and /dev/null differ diff --git a/build/template/images/empty.png b/build/template/images/empty.png deleted file mode 100644 index beb17f23..00000000 Binary files a/build/template/images/empty.png and /dev/null differ diff --git a/build/template/images/faces/apebot.png b/build/template/images/faces/apebot.png deleted file mode 100644 index aed7b301..00000000 Binary files a/build/template/images/faces/apebot.png and /dev/null differ diff --git a/build/template/images/faces/background.png b/build/template/images/faces/background.png deleted file mode 100644 index 573939f5..00000000 Binary files a/build/template/images/faces/background.png and /dev/null differ diff --git a/build/template/images/faces/betabot.png b/build/template/images/faces/betabot.png deleted file mode 100644 index 80d5797b..00000000 Binary files a/build/template/images/faces/betabot.png and /dev/null differ diff --git a/build/template/images/faces/big_eyes.png b/build/template/images/faces/big_eyes.png deleted file mode 100644 index 934d8ab9..00000000 Binary files a/build/template/images/faces/big_eyes.png and /dev/null differ diff --git a/build/template/images/faces/candybot.png b/build/template/images/faces/candybot.png deleted file mode 100644 index 401834d9..00000000 Binary files a/build/template/images/faces/candybot.png and /dev/null differ diff --git a/build/template/images/faces/candybot_side.png b/build/template/images/faces/candybot_side.png deleted file mode 100644 index 5d7151ad..00000000 Binary files a/build/template/images/faces/candybot_side.png and /dev/null differ diff --git a/build/template/images/faces/canotus_face.png b/build/template/images/faces/canotus_face.png deleted file mode 100644 index fad76dc6..00000000 Binary files a/build/template/images/faces/canotus_face.png and /dev/null differ diff --git a/build/template/images/faces/daisiebot.png b/build/template/images/faces/daisiebot.png deleted file mode 100644 index 49a1e338..00000000 Binary files a/build/template/images/faces/daisiebot.png and /dev/null differ diff --git a/build/template/images/faces/dark_eyes.png b/build/template/images/faces/dark_eyes.png deleted file mode 100644 index cbcd7179..00000000 Binary files a/build/template/images/faces/dark_eyes.png and /dev/null differ diff --git a/build/template/images/faces/destrin.png b/build/template/images/faces/destrin.png deleted file mode 100644 index d75dbe9e..00000000 Binary files a/build/template/images/faces/destrin.png and /dev/null differ diff --git a/build/template/images/faces/dr_destrin.png b/build/template/images/faces/dr_destrin.png deleted file mode 100644 index 3b84dc90..00000000 Binary files a/build/template/images/faces/dr_destrin.png and /dev/null differ diff --git a/build/template/images/faces/dr_kanotus.png b/build/template/images/faces/dr_kanotus.png deleted file mode 100644 index 8a607662..00000000 Binary files a/build/template/images/faces/dr_kanotus.png and /dev/null differ diff --git a/build/template/images/faces/dynamitebot.png b/build/template/images/faces/dynamitebot.png deleted file mode 100644 index e7982e56..00000000 Binary files a/build/template/images/faces/dynamitebot.png and /dev/null differ diff --git a/build/template/images/faces/kittybot.png b/build/template/images/faces/kittybot.png deleted file mode 100644 index af35d1fa..00000000 Binary files a/build/template/images/faces/kittybot.png and /dev/null differ diff --git a/build/template/images/faces/magebot.png b/build/template/images/faces/magebot.png deleted file mode 100644 index a87a2642..00000000 Binary files a/build/template/images/faces/magebot.png and /dev/null differ diff --git a/build/template/images/faces/milonga.png b/build/template/images/faces/milonga.png deleted file mode 100644 index 0fcd3903..00000000 Binary files a/build/template/images/faces/milonga.png and /dev/null differ diff --git a/build/template/images/faces/mummybot.png b/build/template/images/faces/mummybot.png deleted file mode 100644 index 11177803..00000000 Binary files a/build/template/images/faces/mummybot.png and /dev/null differ diff --git a/build/template/images/faces/p1_eyes.png b/build/template/images/faces/p1_eyes.png deleted file mode 100644 index cbcd7179..00000000 Binary files a/build/template/images/faces/p1_eyes.png and /dev/null differ diff --git a/build/template/images/faces/p2_eyes.png b/build/template/images/faces/p2_eyes.png deleted file mode 100644 index 934d8ab9..00000000 Binary files a/build/template/images/faces/p2_eyes.png and /dev/null differ diff --git a/build/template/images/faces/p3_eyes.png b/build/template/images/faces/p3_eyes.png deleted file mode 100644 index 2c6692dd..00000000 Binary files a/build/template/images/faces/p3_eyes.png and /dev/null differ diff --git a/build/template/images/faces/p4_eyes.png b/build/template/images/faces/p4_eyes.png deleted file mode 100644 index 934d8ab9..00000000 Binary files a/build/template/images/faces/p4_eyes.png and /dev/null differ diff --git a/build/template/images/faces/player1.png b/build/template/images/faces/player1.png deleted file mode 100644 index 372c3d9a..00000000 Binary files a/build/template/images/faces/player1.png and /dev/null differ diff --git a/build/template/images/faces/player2.png b/build/template/images/faces/player2.png deleted file mode 100644 index a672b5b2..00000000 Binary files a/build/template/images/faces/player2.png and /dev/null differ diff --git a/build/template/images/faces/player3.png b/build/template/images/faces/player3.png deleted file mode 100644 index 1b1f6bda..00000000 Binary files a/build/template/images/faces/player3.png and /dev/null differ diff --git a/build/template/images/faces/player4.png b/build/template/images/faces/player4.png deleted file mode 100644 index 5aebad05..00000000 Binary files a/build/template/images/faces/player4.png and /dev/null differ diff --git a/build/template/images/faces/rockbot.png b/build/template/images/faces/rockbot.png deleted file mode 100644 index 07ff3ba4..00000000 Binary files a/build/template/images/faces/rockbot.png and /dev/null differ diff --git a/build/template/images/faces/rockbot_sad.png b/build/template/images/faces/rockbot_sad.png deleted file mode 100644 index 64cd0dcf..00000000 Binary files a/build/template/images/faces/rockbot_sad.png and /dev/null differ diff --git a/build/template/images/faces/seahorsebot.png b/build/template/images/faces/seahorsebot.png deleted file mode 100644 index a69cadf2..00000000 Binary files a/build/template/images/faces/seahorsebot.png and /dev/null differ diff --git a/build/template/images/faces/spikebot.png b/build/template/images/faces/spikebot.png deleted file mode 100644 index 8d045e13..00000000 Binary files a/build/template/images/faces/spikebot.png and /dev/null differ diff --git a/build/template/images/faces/technobot.png b/build/template/images/faces/technobot.png deleted file mode 100644 index c814b7b7..00000000 Binary files a/build/template/images/faces/technobot.png and /dev/null differ diff --git a/build/template/images/faces/yellow_eyes.png b/build/template/images/faces/yellow_eyes.png deleted file mode 100644 index 2c6692dd..00000000 Binary files a/build/template/images/faces/yellow_eyes.png and /dev/null differ diff --git a/build/template/images/icons.png b/build/template/images/icons.png deleted file mode 100644 index a034eb4d..00000000 Binary files a/build/template/images/icons.png and /dev/null differ diff --git a/build/template/images/icons_small.png b/build/template/images/icons_small.png deleted file mode 100644 index d04b67a3..00000000 Binary files a/build/template/images/icons_small.png and /dev/null differ diff --git a/build/template/images/items.png b/build/template/images/items.png deleted file mode 100644 index ffd1f3d2..00000000 Binary files a/build/template/images/items.png and /dev/null differ diff --git a/build/template/images/license.txt b/build/template/images/license.txt deleted file mode 100644 index e860d7a7..00000000 --- a/build/template/images/license.txt +++ /dev/null @@ -1,20 +0,0 @@ -------------------------------------------------------------------------- -tilesets/default.png: Proprietary -This contains derivate work from Capcom's art, all rights reserved. -As some images contain copyrighted material (while we do not recreate them -as full open-source), consider this as used under fair use, but owned by Capcom. -------------------------------------------------------------------------- -Licensed under GPL: -All backgrounds, except skull_castle.png. -All faces. -All scenes. -In sprites: canotus, destrin, projectile_normal -In sprites/enemies: apebot, butterfly, canotus, daisiebot, dynamitebot, -fire_pump, flower_vase, ground_shooter, root_shooter, seahorse, technobot. -All in sprites/objects. - -------------------------------------------------------------------------- -Skull Castle: Creative Commons Attribution-Share Alike 3.0 License. -Author: http://bluefirez88.deviantart.com/gallery/#/d2n8bvp -------------------------------------------------------------------------- - diff --git a/build/template/images/logo.png b/build/template/images/logo.png deleted file mode 100644 index ebf152ff..00000000 Binary files a/build/template/images/logo.png and /dev/null differ diff --git a/build/template/images/map_backgrounds/chains.png b/build/template/images/map_backgrounds/chains.png deleted file mode 100644 index df341c29..00000000 Binary files a/build/template/images/map_backgrounds/chains.png and /dev/null differ diff --git a/build/template/images/map_backgrounds/clouds.png b/build/template/images/map_backgrounds/clouds.png deleted file mode 100644 index dfb8492d..00000000 Binary files a/build/template/images/map_backgrounds/clouds.png and /dev/null differ diff --git a/build/template/images/map_backgrounds/green_grid.png b/build/template/images/map_backgrounds/green_grid.png deleted file mode 100644 index 977a7859..00000000 Binary files a/build/template/images/map_backgrounds/green_grid.png and /dev/null differ diff --git a/build/template/images/map_backgrounds/montains_purple.png b/build/template/images/map_backgrounds/montains_purple.png deleted file mode 100644 index 904f3829..00000000 Binary files a/build/template/images/map_backgrounds/montains_purple.png and /dev/null differ diff --git a/build/template/images/map_backgrounds/red_clouds.png b/build/template/images/map_backgrounds/red_clouds.png deleted file mode 100644 index 7f86668c..00000000 Binary files a/build/template/images/map_backgrounds/red_clouds.png and /dev/null differ diff --git a/build/template/images/map_backgrounds/trees.png b/build/template/images/map_backgrounds/trees.png deleted file mode 100644 index 75944f7a..00000000 Binary files a/build/template/images/map_backgrounds/trees.png and /dev/null differ diff --git a/build/template/images/map_backgrounds/trees2.png b/build/template/images/map_backgrounds/trees2.png deleted file mode 100644 index ecd670d0..00000000 Binary files a/build/template/images/map_backgrounds/trees2.png and /dev/null differ diff --git a/build/template/images/projectiles/charged_semi.png b/build/template/images/projectiles/charged_semi.png deleted file mode 100644 index 111a8826..00000000 Binary files a/build/template/images/projectiles/charged_semi.png and /dev/null differ diff --git a/build/template/images/projectiles/charged_shot.png b/build/template/images/projectiles/charged_shot.png deleted file mode 100644 index 4d5cab53..00000000 Binary files a/build/template/images/projectiles/charged_shot.png and /dev/null differ diff --git a/build/template/images/projectiles/drop_bomb.png b/build/template/images/projectiles/drop_bomb.png deleted file mode 100644 index d10ce820..00000000 Binary files a/build/template/images/projectiles/drop_bomb.png and /dev/null differ diff --git a/build/template/images/projectiles/hadouken.png b/build/template/images/projectiles/hadouken.png deleted file mode 100644 index 778368c3..00000000 Binary files a/build/template/images/projectiles/hadouken.png and /dev/null differ diff --git a/build/template/images/projectiles/laser.png b/build/template/images/projectiles/laser.png deleted file mode 100644 index 2f34beaa..00000000 Binary files a/build/template/images/projectiles/laser.png and /dev/null differ diff --git a/build/template/images/projectiles/palometa_fish.png b/build/template/images/projectiles/palometa_fish.png deleted file mode 100644 index 4a6fd71c..00000000 Binary files a/build/template/images/projectiles/palometa_fish.png and /dev/null differ diff --git a/build/template/images/projectiles/projectile_normal.png b/build/template/images/projectiles/projectile_normal.png deleted file mode 100644 index 7453d2c8..00000000 Binary files a/build/template/images/projectiles/projectile_normal.png and /dev/null differ diff --git a/build/template/images/projectiles/shock_ball.png b/build/template/images/projectiles/shock_ball.png deleted file mode 100644 index 6b1c9963..00000000 Binary files a/build/template/images/projectiles/shock_ball.png and /dev/null differ diff --git a/build/template/images/projectiles/sting.png b/build/template/images/projectiles/sting.png deleted file mode 100644 index dabcc4a0..00000000 Binary files a/build/template/images/projectiles/sting.png and /dev/null differ diff --git a/build/template/images/projectiles/supershot.png b/build/template/images/projectiles/supershot.png deleted file mode 100644 index 704a5ef8..00000000 Binary files a/build/template/images/projectiles/supershot.png and /dev/null differ diff --git a/build/template/images/projectiles/timer_bomb.png b/build/template/images/projectiles/timer_bomb.png deleted file mode 100644 index d269e60b..00000000 Binary files a/build/template/images/projectiles/timer_bomb.png and /dev/null differ diff --git a/build/template/images/scenes/animations/upperland.png b/build/template/images/scenes/animations/upperland.png deleted file mode 100644 index 6ce0a5c9..00000000 Binary files a/build/template/images/scenes/animations/upperland.png and /dev/null differ diff --git a/build/template/images/scenes/presents.png b/build/template/images/scenes/presents.png deleted file mode 100644 index e4079ab5..00000000 Binary files a/build/template/images/scenes/presents.png and /dev/null differ diff --git a/build/template/images/sprites/candybot_ending.png b/build/template/images/sprites/candybot_ending.png deleted file mode 100644 index b8f2c4de..00000000 Binary files a/build/template/images/sprites/candybot_ending.png and /dev/null differ diff --git a/build/template/images/sprites/canotus.png b/build/template/images/sprites/canotus.png deleted file mode 100644 index a52d3bd2..00000000 Binary files a/build/template/images/sprites/canotus.png and /dev/null differ diff --git a/build/template/images/sprites/destrin.png b/build/template/images/sprites/destrin.png deleted file mode 100644 index e970ccb8..00000000 Binary files a/build/template/images/sprites/destrin.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/bat.png b/build/template/images/sprites/enemies/bat.png deleted file mode 100644 index a8e248cc..00000000 Binary files a/build/template/images/sprites/enemies/bat.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/bee.png b/build/template/images/sprites/enemies/bee.png deleted file mode 100644 index fe82fc2d..00000000 Binary files a/build/template/images/sprites/enemies/bee.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/bulldog.png b/build/template/images/sprites/enemies/bulldog.png deleted file mode 100644 index 9e24c664..00000000 Binary files a/build/template/images/sprites/enemies/bulldog.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/classic_metool.png b/build/template/images/sprites/enemies/classic_metool.png deleted file mode 100644 index 30e7b444..00000000 Binary files a/build/template/images/sprites/enemies/classic_metool.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/destrin_ship.png b/build/template/images/sprites/enemies/destrin_ship.png deleted file mode 100644 index a5cc1edb..00000000 Binary files a/build/template/images/sprites/enemies/destrin_ship.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/destrin_tank_small.png b/build/template/images/sprites/enemies/destrin_tank_small.png deleted file mode 100644 index 70b5937c..00000000 Binary files a/build/template/images/sprites/enemies/destrin_tank_small.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/jet_beetle.png b/build/template/images/sprites/enemies/jet_beetle.png deleted file mode 100644 index ba9dbf97..00000000 Binary files a/build/template/images/sprites/enemies/jet_beetle.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/plug.png b/build/template/images/sprites/enemies/plug.png deleted file mode 100644 index 377d58a3..00000000 Binary files a/build/template/images/sprites/enemies/plug.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/sphynx.png b/build/template/images/sprites/enemies/sphynx.png deleted file mode 100644 index 9ad0cc90..00000000 Binary files a/build/template/images/sprites/enemies/sphynx.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/spinner_ball.png b/build/template/images/sprites/enemies/spinner_ball.png deleted file mode 100644 index 2f3c8144..00000000 Binary files a/build/template/images/sprites/enemies/spinner_ball.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/tucano.png b/build/template/images/sprites/enemies/tucano.png deleted file mode 100644 index 96df576b..00000000 Binary files a/build/template/images/sprites/enemies/tucano.png and /dev/null differ diff --git a/build/template/images/sprites/enemies/wheels_penguin.png b/build/template/images/sprites/enemies/wheels_penguin.png deleted file mode 100644 index c72fa10c..00000000 Binary files a/build/template/images/sprites/enemies/wheels_penguin.png and /dev/null differ diff --git a/build/template/images/sprites/kittybot.png b/build/template/images/sprites/kittybot.png deleted file mode 100644 index b633be58..00000000 Binary files a/build/template/images/sprites/kittybot.png and /dev/null differ diff --git a/build/template/images/sprites/objects/1up_betabot.png b/build/template/images/sprites/objects/1up_betabot.png deleted file mode 100644 index a02f30e8..00000000 Binary files a/build/template/images/sprites/objects/1up_betabot.png and /dev/null differ diff --git a/build/template/images/sprites/objects/1up_rockbot.png b/build/template/images/sprites/objects/1up_rockbot.png deleted file mode 100644 index de5558e0..00000000 Binary files a/build/template/images/sprites/objects/1up_rockbot.png and /dev/null differ diff --git a/build/template/images/sprites/objects/armor_arms.png b/build/template/images/sprites/objects/armor_arms.png deleted file mode 100644 index e7761008..00000000 Binary files a/build/template/images/sprites/objects/armor_arms.png and /dev/null differ diff --git a/build/template/images/sprites/objects/armor_body.png b/build/template/images/sprites/objects/armor_body.png deleted file mode 100644 index 9e27917d..00000000 Binary files a/build/template/images/sprites/objects/armor_body.png and /dev/null differ diff --git a/build/template/images/sprites/objects/armor_legs.png b/build/template/images/sprites/objects/armor_legs.png deleted file mode 100644 index 8540517b..00000000 Binary files a/build/template/images/sprites/objects/armor_legs.png and /dev/null differ diff --git a/build/template/images/sprites/objects/block001.png b/build/template/images/sprites/objects/block001.png deleted file mode 100644 index f104f8a3..00000000 Binary files a/build/template/images/sprites/objects/block001.png and /dev/null differ diff --git a/build/template/images/sprites/objects/block002.png b/build/template/images/sprites/objects/block002.png deleted file mode 100644 index a12a931d..00000000 Binary files a/build/template/images/sprites/objects/block002.png and /dev/null differ diff --git a/build/template/images/sprites/objects/block003.png b/build/template/images/sprites/objects/block003.png deleted file mode 100644 index f2529a8b..00000000 Binary files a/build/template/images/sprites/objects/block003.png and /dev/null differ diff --git a/build/template/images/sprites/objects/block004.png b/build/template/images/sprites/objects/block004.png deleted file mode 100644 index 7eba82c8..00000000 Binary files a/build/template/images/sprites/objects/block004.png and /dev/null differ diff --git a/build/template/images/sprites/objects/deathray_small_horz.png b/build/template/images/sprites/objects/deathray_small_horz.png deleted file mode 100644 index e4fdf8ba..00000000 Binary files a/build/template/images/sprites/objects/deathray_small_horz.png and /dev/null differ diff --git a/build/template/images/sprites/objects/disappearing_block.png b/build/template/images/sprites/objects/disappearing_block.png deleted file mode 100644 index f2c26c5f..00000000 Binary files a/build/template/images/sprites/objects/disappearing_block.png and /dev/null differ diff --git a/build/template/images/sprites/objects/disappearing_block_blue.png b/build/template/images/sprites/objects/disappearing_block_blue.png deleted file mode 100644 index c05ea79c..00000000 Binary files a/build/template/images/sprites/objects/disappearing_block_blue.png and /dev/null differ diff --git a/build/template/images/sprites/objects/disappearing_block_green.png b/build/template/images/sprites/objects/disappearing_block_green.png deleted file mode 100644 index c7c9cbbe..00000000 Binary files a/build/template/images/sprites/objects/disappearing_block_green.png and /dev/null differ diff --git a/build/template/images/sprites/objects/disappearing_block_orange.png b/build/template/images/sprites/objects/disappearing_block_orange.png deleted file mode 100644 index 4ef30896..00000000 Binary files a/build/template/images/sprites/objects/disappearing_block_orange.png and /dev/null differ diff --git a/build/template/images/sprites/objects/disappearing_block_purple.png b/build/template/images/sprites/objects/disappearing_block_purple.png deleted file mode 100644 index 1fec91b4..00000000 Binary files a/build/template/images/sprites/objects/disappearing_block_purple.png and /dev/null differ diff --git a/build/template/images/sprites/objects/energy_balancer.png b/build/template/images/sprites/objects/energy_balancer.png deleted file mode 100644 index cb7f7da2..00000000 Binary files a/build/template/images/sprites/objects/energy_balancer.png and /dev/null differ diff --git a/build/template/images/sprites/objects/energy_pill_big.png b/build/template/images/sprites/objects/energy_pill_big.png deleted file mode 100644 index e491f754..00000000 Binary files a/build/template/images/sprites/objects/energy_pill_big.png and /dev/null differ diff --git a/build/template/images/sprites/objects/energy_pill_small.png b/build/template/images/sprites/objects/energy_pill_small.png deleted file mode 100644 index b1d0b435..00000000 Binary files a/build/template/images/sprites/objects/energy_pill_small.png and /dev/null differ diff --git a/build/template/images/sprites/objects/energy_tank.png b/build/template/images/sprites/objects/energy_tank.png deleted file mode 100644 index 49c4bcf9..00000000 Binary files a/build/template/images/sprites/objects/energy_tank.png and /dev/null differ diff --git a/build/template/images/sprites/objects/fall_block.png b/build/template/images/sprites/objects/fall_block.png deleted file mode 100644 index 445c57b4..00000000 Binary files a/build/template/images/sprites/objects/fall_block.png and /dev/null differ diff --git a/build/template/images/sprites/objects/fire_ray_horizontal.png b/build/template/images/sprites/objects/fire_ray_horizontal.png deleted file mode 100644 index b4e7d2fe..00000000 Binary files a/build/template/images/sprites/objects/fire_ray_horizontal.png and /dev/null differ diff --git a/build/template/images/sprites/objects/fire_ray_vertical.png b/build/template/images/sprites/objects/fire_ray_vertical.png deleted file mode 100644 index 93e507d3..00000000 Binary files a/build/template/images/sprites/objects/fire_ray_vertical.png and /dev/null differ diff --git a/build/template/images/sprites/objects/fly_block.png b/build/template/images/sprites/objects/fly_block.png deleted file mode 100644 index e8279693..00000000 Binary files a/build/template/images/sprites/objects/fly_block.png and /dev/null differ diff --git a/build/template/images/sprites/objects/gray_energy_tank.png b/build/template/images/sprites/objects/gray_energy_tank.png deleted file mode 100644 index 78d69bc0..00000000 Binary files a/build/template/images/sprites/objects/gray_energy_tank.png and /dev/null differ diff --git a/build/template/images/sprites/objects/gray_special_tank.png b/build/template/images/sprites/objects/gray_special_tank.png deleted file mode 100644 index 3a6e7b4e..00000000 Binary files a/build/template/images/sprites/objects/gray_special_tank.png and /dev/null differ diff --git a/build/template/images/sprites/objects/gray_weapons_tank.png b/build/template/images/sprites/objects/gray_weapons_tank.png deleted file mode 100644 index dbd7e593..00000000 Binary files a/build/template/images/sprites/objects/gray_weapons_tank.png and /dev/null differ diff --git a/build/template/images/sprites/objects/item_jet.png b/build/template/images/sprites/objects/item_jet.png deleted file mode 100644 index eef3871c..00000000 Binary files a/build/template/images/sprites/objects/item_jet.png and /dev/null differ diff --git a/build/template/images/sprites/objects/item_jump.png b/build/template/images/sprites/objects/item_jump.png deleted file mode 100644 index a8284e9f..00000000 Binary files a/build/template/images/sprites/objects/item_jump.png and /dev/null differ diff --git a/build/template/images/sprites/objects/lava_beam.png b/build/template/images/sprites/objects/lava_beam.png deleted file mode 100644 index efb62eba..00000000 Binary files a/build/template/images/sprites/objects/lava_beam.png and /dev/null differ diff --git a/build/template/images/sprites/objects/lava_beam_horizontal.png b/build/template/images/sprites/objects/lava_beam_horizontal.png deleted file mode 100644 index 04861221..00000000 Binary files a/build/template/images/sprites/objects/lava_beam_horizontal.png and /dev/null differ diff --git a/build/template/images/sprites/objects/platform.png b/build/template/images/sprites/objects/platform.png deleted file mode 100644 index 7f4f70ae..00000000 Binary files a/build/template/images/sprites/objects/platform.png and /dev/null differ diff --git a/build/template/images/sprites/objects/platform_disappear2x.png b/build/template/images/sprites/objects/platform_disappear2x.png deleted file mode 100644 index a6b54c8d..00000000 Binary files a/build/template/images/sprites/objects/platform_disappear2x.png and /dev/null differ diff --git a/build/template/images/sprites/objects/platform_down.png b/build/template/images/sprites/objects/platform_down.png deleted file mode 100644 index 588c9d6d..00000000 Binary files a/build/template/images/sprites/objects/platform_down.png and /dev/null differ diff --git a/build/template/images/sprites/objects/platform_up.png b/build/template/images/sprites/objects/platform_up.png deleted file mode 100644 index 26ff26da..00000000 Binary files a/build/template/images/sprites/objects/platform_up.png and /dev/null differ diff --git a/build/template/images/sprites/objects/platform_up_down.png b/build/template/images/sprites/objects/platform_up_down.png deleted file mode 100644 index d7b6ee30..00000000 Binary files a/build/template/images/sprites/objects/platform_up_down.png and /dev/null differ diff --git a/build/template/images/sprites/objects/special_tank.png b/build/template/images/sprites/objects/special_tank.png deleted file mode 100644 index 39165292..00000000 Binary files a/build/template/images/sprites/objects/special_tank.png and /dev/null differ diff --git a/build/template/images/sprites/objects/teleporter.png b/build/template/images/sprites/objects/teleporter.png deleted file mode 100644 index d5a4e898..00000000 Binary files a/build/template/images/sprites/objects/teleporter.png and /dev/null differ diff --git a/build/template/images/sprites/objects/track_platform.png b/build/template/images/sprites/objects/track_platform.png deleted file mode 100644 index 8ffe8675..00000000 Binary files a/build/template/images/sprites/objects/track_platform.png and /dev/null differ diff --git a/build/template/images/sprites/objects/weapons_pill_big.png b/build/template/images/sprites/objects/weapons_pill_big.png deleted file mode 100644 index 2c973efc..00000000 Binary files a/build/template/images/sprites/objects/weapons_pill_big.png and /dev/null differ diff --git a/build/template/images/sprites/objects/weapons_pill_small.png b/build/template/images/sprites/objects/weapons_pill_small.png deleted file mode 100644 index 2096a3a7..00000000 Binary files a/build/template/images/sprites/objects/weapons_pill_small.png and /dev/null differ diff --git a/build/template/images/sprites/objects/weapons_tank.png b/build/template/images/sprites/objects/weapons_tank.png deleted file mode 100644 index c7c0eabc..00000000 Binary files a/build/template/images/sprites/objects/weapons_tank.png and /dev/null differ diff --git a/build/template/images/sprites/p1.png b/build/template/images/sprites/p1.png deleted file mode 100644 index 0970e123..00000000 Binary files a/build/template/images/sprites/p1.png and /dev/null differ diff --git a/build/template/images/sprites/p1_looking_up.png b/build/template/images/sprites/p1_looking_up.png deleted file mode 100644 index f5ee7aae..00000000 Binary files a/build/template/images/sprites/p1_looking_up.png and /dev/null differ diff --git a/build/template/images/sprites/p2.png b/build/template/images/sprites/p2.png deleted file mode 100644 index 8371b93a..00000000 Binary files a/build/template/images/sprites/p2.png and /dev/null differ diff --git a/build/template/images/sprites/p2_looking_up.png b/build/template/images/sprites/p2_looking_up.png deleted file mode 100644 index 9527df5c..00000000 Binary files a/build/template/images/sprites/p2_looking_up.png and /dev/null differ diff --git a/build/template/images/sprites/p3.png b/build/template/images/sprites/p3.png deleted file mode 100644 index b0f9b707..00000000 Binary files a/build/template/images/sprites/p3.png and /dev/null differ diff --git a/build/template/images/sprites/p4.png b/build/template/images/sprites/p4.png deleted file mode 100644 index 4b286656..00000000 Binary files a/build/template/images/sprites/p4.png and /dev/null differ diff --git a/build/template/images/sprites/teleport_small.png b/build/template/images/sprites/teleport_small.png deleted file mode 100644 index ec06bd6d..00000000 Binary files a/build/template/images/sprites/teleport_small.png and /dev/null differ diff --git a/build/template/images/tilesets/001.png b/build/template/images/tilesets/001.png deleted file mode 100644 index 4106c5f9..00000000 Binary files a/build/template/images/tilesets/001.png and /dev/null differ diff --git a/build/template/images/tilesets/002.png b/build/template/images/tilesets/002.png deleted file mode 100644 index ae1accbe..00000000 Binary files a/build/template/images/tilesets/002.png and /dev/null differ diff --git a/build/template/images/tilesets/anim/water_1.png b/build/template/images/tilesets/anim/water_1.png deleted file mode 100644 index cddbab31..00000000 Binary files a/build/template/images/tilesets/anim/water_1.png and /dev/null differ diff --git a/build/template/images/tilesets/anim/water_2a.png b/build/template/images/tilesets/anim/water_2a.png deleted file mode 100644 index 82c34e96..00000000 Binary files a/build/template/images/tilesets/anim/water_2a.png and /dev/null differ diff --git a/build/template/images/tilesets/anim/water_2b.png b/build/template/images/tilesets/anim/water_2b.png deleted file mode 100644 index da562882..00000000 Binary files a/build/template/images/tilesets/anim/water_2b.png and /dev/null differ diff --git a/build/template/images/tilesets/blocks/easymode.png b/build/template/images/tilesets/blocks/easymode.png deleted file mode 100644 index 7403341f..00000000 Binary files a/build/template/images/tilesets/blocks/easymode.png and /dev/null differ diff --git a/build/template/images/tilesets/blocks/hardmode.png b/build/template/images/tilesets/blocks/hardmode.png deleted file mode 100644 index 4140a5d9..00000000 Binary files a/build/template/images/tilesets/blocks/hardmode.png and /dev/null differ diff --git a/build/template/images/tilesets/bubble.png b/build/template/images/tilesets/bubble.png deleted file mode 100644 index a1ba5dea..00000000 Binary files a/build/template/images/tilesets/bubble.png and /dev/null differ diff --git a/build/template/images/tilesets/bubbleman.png b/build/template/images/tilesets/bubbleman.png deleted file mode 100644 index d27b5ca7..00000000 Binary files a/build/template/images/tilesets/bubbleman.png and /dev/null differ diff --git a/build/template/images/tilesets/default.png b/build/template/images/tilesets/default.png deleted file mode 100644 index fc006918..00000000 Binary files a/build/template/images/tilesets/default.png and /dev/null differ diff --git a/build/template/images/tilesets/flash.png b/build/template/images/tilesets/flash.png deleted file mode 100644 index 606d823e..00000000 Binary files a/build/template/images/tilesets/flash.png and /dev/null differ diff --git a/build/template/images/tilesets/rain.png b/build/template/images/tilesets/rain.png deleted file mode 100644 index 337e3843..00000000 Binary files a/build/template/images/tilesets/rain.png and /dev/null differ diff --git a/build/template/music/OTHER.xm b/build/template/music/OTHER.xm deleted file mode 100644 index fcab7f8e..00000000 Binary files a/build/template/music/OTHER.xm and /dev/null differ diff --git a/build/template/music/bgmusic.mod b/build/template/music/bgmusic.mod deleted file mode 100644 index bb938ee6..00000000 Binary files a/build/template/music/bgmusic.mod and /dev/null differ diff --git a/build/template/music/boss_battle.mod b/build/template/music/boss_battle.mod deleted file mode 100644 index 4dd8181a..00000000 Binary files a/build/template/music/boss_battle.mod and /dev/null differ diff --git a/build/template/sfx/beam.wav b/build/template/sfx/beam.wav deleted file mode 100644 index c883b387..00000000 Binary files a/build/template/sfx/beam.wav and /dev/null differ diff --git a/build/template/sfx/big_explosion.wav b/build/template/sfx/big_explosion.wav deleted file mode 100644 index 2645fa2f..00000000 Binary files a/build/template/sfx/big_explosion.wav and /dev/null differ diff --git a/build/template/sfx/charged_shot.wav b/build/template/sfx/charged_shot.wav deleted file mode 100644 index ead2675a..00000000 Binary files a/build/template/sfx/charged_shot.wav and /dev/null differ diff --git a/build/template/sfx/charging1.wav b/build/template/sfx/charging1.wav deleted file mode 100644 index 15d041fd..00000000 Binary files a/build/template/sfx/charging1.wav and /dev/null differ diff --git a/build/template/sfx/charging2.wav b/build/template/sfx/charging2.wav deleted file mode 100644 index 2c720c4e..00000000 Binary files a/build/template/sfx/charging2.wav and /dev/null differ diff --git a/build/template/sfx/cursor.wav b/build/template/sfx/cursor.wav deleted file mode 100644 index 2ac547c2..00000000 Binary files a/build/template/sfx/cursor.wav and /dev/null differ diff --git a/build/template/sfx/destrin_ship.wav b/build/template/sfx/destrin_ship.wav deleted file mode 100644 index cce952c3..00000000 Binary files a/build/template/sfx/destrin_ship.wav and /dev/null differ diff --git a/build/template/sfx/disappearning_block.wav b/build/template/sfx/disappearning_block.wav deleted file mode 100644 index fcdde7c3..00000000 Binary files a/build/template/sfx/disappearning_block.wav and /dev/null differ diff --git a/build/template/sfx/door_open.wav b/build/template/sfx/door_open.wav deleted file mode 100644 index 03ea14f9..00000000 Binary files a/build/template/sfx/door_open.wav and /dev/null differ diff --git a/build/template/sfx/got_energy_pill.wav b/build/template/sfx/got_energy_pill.wav deleted file mode 100644 index f0c5479b..00000000 Binary files a/build/template/sfx/got_energy_pill.wav and /dev/null differ diff --git a/build/template/sfx/got_item.wav b/build/template/sfx/got_item.wav deleted file mode 100644 index e0df0a20..00000000 Binary files a/build/template/sfx/got_item.wav and /dev/null differ diff --git a/build/template/sfx/got_weapon.wav b/build/template/sfx/got_weapon.wav deleted file mode 100644 index 3d430c06..00000000 Binary files a/build/template/sfx/got_weapon.wav and /dev/null differ diff --git a/build/template/sfx/hadouken_girl.wav b/build/template/sfx/hadouken_girl.wav deleted file mode 100644 index 37469837..00000000 Binary files a/build/template/sfx/hadouken_girl.wav and /dev/null differ diff --git a/build/template/sfx/implosion.wav b/build/template/sfx/implosion.wav deleted file mode 100644 index f06e7aff..00000000 Binary files a/build/template/sfx/implosion.wav and /dev/null differ diff --git a/build/template/sfx/npc_hit.wav b/build/template/sfx/npc_hit.wav deleted file mode 100644 index c25c7e29..00000000 Binary files a/build/template/sfx/npc_hit.wav and /dev/null differ diff --git a/build/template/sfx/npc_killed.wav b/build/template/sfx/npc_killed.wav deleted file mode 100644 index eff9daed..00000000 Binary files a/build/template/sfx/npc_killed.wav and /dev/null differ diff --git a/build/template/sfx/player_death.wav b/build/template/sfx/player_death.wav deleted file mode 100644 index dadef50f..00000000 Binary files a/build/template/sfx/player_death.wav and /dev/null differ diff --git a/build/template/sfx/player_hit.wav b/build/template/sfx/player_hit.wav deleted file mode 100644 index 3ccf9d6d..00000000 Binary files a/build/template/sfx/player_hit.wav and /dev/null differ diff --git a/build/template/sfx/player_jump.wav b/build/template/sfx/player_jump.wav deleted file mode 100644 index 9adef1a7..00000000 Binary files a/build/template/sfx/player_jump.wav and /dev/null differ diff --git a/build/template/sfx/player_shot.wav b/build/template/sfx/player_shot.wav deleted file mode 100644 index 72e25860..00000000 Binary files a/build/template/sfx/player_shot.wav and /dev/null differ diff --git a/build/template/sfx/shoryuken_girl.wav b/build/template/sfx/shoryuken_girl.wav deleted file mode 100644 index a6e2727e..00000000 Binary files a/build/template/sfx/shoryuken_girl.wav and /dev/null differ diff --git a/build/template/sfx/shot_reflected.wav b/build/template/sfx/shot_reflected.wav deleted file mode 100644 index 19ba062e..00000000 Binary files a/build/template/sfx/shot_reflected.wav and /dev/null differ diff --git a/build/template/sfx/skull_castle_intro.wav b/build/template/sfx/skull_castle_intro.wav deleted file mode 100644 index 87f8af1f..00000000 Binary files a/build/template/sfx/skull_castle_intro.wav and /dev/null differ diff --git a/build/template/sfx/stage_selected.wav b/build/template/sfx/stage_selected.wav deleted file mode 100644 index af1ddeb5..00000000 Binary files a/build/template/sfx/stage_selected.wav and /dev/null differ diff --git a/build/template/sfx/teleport.wav b/build/template/sfx/teleport.wav deleted file mode 100644 index 84f286ab..00000000 Binary files a/build/template/sfx/teleport.wav and /dev/null differ diff --git a/build/template/sfx/water_enter.wav b/build/template/sfx/water_enter.wav deleted file mode 100644 index aaaac3d4..00000000 Binary files a/build/template/sfx/water_enter.wav and /dev/null differ diff --git a/build/template/sfx/water_leave.wav b/build/template/sfx/water_leave.wav deleted file mode 100644 index fb84766d..00000000 Binary files a/build/template/sfx/water_leave.wav and /dev/null differ diff --git a/character/artificial_inteligence.cpp b/character/artificial_inteligence.cpp index a302cb4a..c7c7eca4 100644 --- a/character/artificial_inteligence.cpp +++ b/character/artificial_inteligence.cpp @@ -1,22 +1,19 @@ -#include "artificial_inteligence.h" -#include "classmap.h" #include #include #include -#include "character/classplayer.h" - -#ifdef ANDROID -#include -#endif -#include "game_mediator.h" -#include "aux_tools/exception_manager.h" +#include "logger.h" +#include "artificial_inteligence.h" +#include "classplayer.h" +#include "../classmap.h" +#include "../game_mediator.h" +#include "../aux_tools/exception_manager.h" -#include "game.h" +#include "../game.h" extern game gameControl; -#include "soundlib.h" +#include "../soundlib.h" extern soundLib soundManager; @@ -27,13 +24,16 @@ extern FREEZE_EFFECT_TYPES freeze_weapon_effect; #define JUMP_ROOF_MIN_SPEED 3 #define MAX_NPC_SPAWN 3 +#define SHOOTER_DELAY 1000 + +#include "shareddata.h" std::vector *artificial_inteligence::player_list=NULL; artificial_inteligence::artificial_inteligence() : walk_range(TILESIZE*6), target(NULL), speed_y(max_speed), acceleration_y(0.05), _ai_timer(0), _ai_chain_n(0), _trajectory_parabola(NULL) { - max_speed = GRAVITY_MAX_SPEED; + max_speed = GRAVITY_MAX_SPEED * SharedData::get_instance()->get_movement_multiplier(); _ghost_move_speed_reducer = 0; _did_shot = false; _reaction_state = 0; @@ -45,6 +45,10 @@ artificial_inteligence::artificial_inteligence() : walk_range(TILESIZE*6), targ _parameter = 0; _show_reset_stand = false; _auto_respawn_timer = timer.getTimer() + GameMediator::get_instance()->get_enemy(_number)->respawn_delay; + if (GameMediator::get_instance()->get_enemy(_number)->respawn_delay > 0) { + std::cout << ">>>>>>>>>> AI::CONSTRUCTOR[" << name << "], id[" <<_number << "], respawn_delay[" << GameMediator::get_instance()->get_enemy(_number)->respawn_delay << "], auto_respawn_timer[" << (int)_auto_respawn_timer << "], current_time[" << (int)timer.getTimer() << "]" << std::endl; + } + _dest_point = position; _execution_state = 0; jump_attack_type = -1; @@ -71,25 +75,32 @@ void artificial_inteligence::execute_ai() _always_move_ahead = always_move_ahead(); _check_always_move_ahead = false; } - //std::cout << "AI::execute_ai[" << name << "]" << std::endl; + check_ai_reaction(); + + if (is_stage_boss() && get_anim_type() == ANIM_TYPE_INTRO) { + return; + } if (timer.getTimer() < _ai_timer) { return; } - //std::cout << "AI::execute_ai[" << name << "] - _current_ai_type: " << _current_ai_type << ", _ai_state.sub_status: " << _ai_state.sub_status << ", parameter[" << (int)_parameter << "], direction[" << (int)state.direction << "]" << std::endl; + if (SharedData::get_instance()->is_showing_boss_intro == true) { + return; + } + // check if action is finished if (_current_ai_type == -1 || _ai_state.sub_status == IA_ACTION_STATE_FINISHED) { - //std::cout << "AI::execute_ai::FINISHED" << std::endl; if (_current_ai_type != AI_ACTION_WAIT_RANDOM_TIME) { // this AI will set the delay itself if (_reaction_type == 0) { int delay = GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].go_to_delay; _ai_timer = timer.getTimer() + delay; } else { + // TODO, use reaction time _ai_timer = timer.getTimer() + 200; } + started_action_timer = _ai_timer; } - //std::cout << ">> SET INITIAL #2 <<" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_INITIAL; define_ai_next_step(); } else { @@ -106,13 +117,45 @@ void artificial_inteligence::hit_player() void artificial_inteligence::check_ai_reaction() { - //std::cout << "AI::check_ai_reaction::START - hitPoints.current: " << hitPoints.current << std::endl; // check and reset state if needed if (_reaction_state == 1) { - //std::cout << ">>>>> AI::check_ai_reaction - EXECUTING <<<<<" << std::endl; if (_ai_state.sub_status == IA_ACTION_STATE_FINISHED) { - //std::cout << ">>>>> AI::check_ai_reaction - DONE <<<<<" << std::endl; - _reaction_state = 0; + int reaction_goto = GameMediator::get_instance()->ai_list.at(_number).reactions[_reaction_type].go_to; + if (reaction_goto == AI_ACTION_GOTO_CHANCE) { + //std::cout << "AI::execute_ai::check_ai_reaction - EXIT" << std::endl; + _reaction_state = 0; + _reaction_type = 0; + reaction_loop_check.clear(); + } else { + //std::cout << "AI::execute_ai::check_ai_reaction - CONTINUE" << std::endl; + if (reaction_loop_check.size() == 0) { + _ai_chain_n = reaction_goto-1; + _current_ai_type = GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].action; + _parameter = GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].extra_parameter; + reaction_loop_check.push_back(_current_ai_type); + //std::cout << "AI::execute_ai::check_ai_reaction - FIRST, reaction_goto[" << reaction_goto << "], _current_ai_type[" << _current_ai_type << "], _parameter[" << _parameter << "]" << std::endl; + } else { // TODO: add loop check + int next_item = GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].go_to; + //std::cout << "AI::execute_ai::check_ai_reaction - CHECK - next_item[" << next_item << "], ai_chain_n[" << _ai_chain_n << "], current_ai_type[" << _current_ai_type << "], param[" << _parameter << "]" << std::endl; + if (next_item != AI_ACTION_GOTO_CHANCE) { + _ai_chain_n = next_item-1; + _current_ai_type = GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].action; + _parameter = GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].extra_parameter; + reaction_loop_check.push_back(_current_ai_type); + _ai_state.sub_status = IA_ACTION_STATE_INITIAL; + //std::cout << "AI::execute_ai::check_ai_reaction - NEXT - next_item[" << next_item << "], ai_chain_n[" << _ai_chain_n << "], current_ai_type[" << _current_ai_type << "], param[" << _parameter << "]" << std::endl; + execute_ai(); + } else { + //std::cout << "AI::execute_ai::check_ai_reaction - ENDED - _ai_chain_n[" << _ai_chain_n << "], _current_ai_type[" << _current_ai_type << "]" << std::endl; + _reaction_state = 0; + _reaction_type = 0; + reaction_loop_check.clear(); + define_ai_next_step(); + } + } + _ai_state.sub_status = IA_ACTION_STATE_INITIAL; + execute_ai_step(); + } } return; // do not check again if already executing } @@ -121,26 +164,25 @@ void artificial_inteligence::check_ai_reaction() // near player struct_player_dist dist_players = dist_npc_players(); int diff_y = abs((dist_players.pObj->getPosition().y+dist_players.pObj->get_size().height) - (position.y+frameSize.height)); + int diff_x = 0; + if (dist_players.pObj->getPosition().x <= position.x) { // player is on the left + diff_x = abs((dist_players.pObj->getPosition().x+dist_players.pObj->get_size().width) - position.x); + } else { // player is on the right + diff_x = abs(dist_players.pObj->getPosition().x - (position.x+frameSize.width)); + } - //std::cout << "p.y[" << dist_players.pObj->getPosition().y << "], p.h[" << dist_players.pObj->get_size().height; - //std::cout << "], npc.y[" << position.y << "], npc.h[" << frameSize.height << "]" << std::endl; - - - //std::cout << "AI::check_ai_reaction::START - dist_players.dist[" << dist_players.dist << "], diff_y[" << diff_y << "]" << std::endl; + if (state.direction == ANIM_DIRECTION_LEFT && dist_players.pObj->get_direction() == ANIM_DIRECTION_RIGHT) { + abs((dist_players.pObj->getPosition().x+dist_players.pObj->get_size().width) - position.x); + } if (dist_players.dist < TILESIZE*4 && GameMediator::get_instance()->ai_list.at(_number).reactions[AI_REACTION_PLAYER_ON_RANGE].action > 0) { - //std::cout << ">>>>> AI::check_ai_reaction - NEAR - START!!! <<<<<" << std::endl; - _reaction_type = 0; - start_reaction = true; - // hit - } else if (_was_hit == true && GameMediator::get_instance()->ai_list.at(_number).reactions[AI_REACTION_HIT].action > 0) { - //std::cout << ">>>>> AI::check_ai_reaction - HIT - START!!! <<<<<" << std::endl; - _reaction_type = 1; + std::cout << "AI::execute_ai::check_ai_reaction::AI_REACTION_PLAYER_ON_RANGE" << std::endl; + _reaction_type = AI_REACTION_PLAYER_ON_RANGE; start_reaction = true; // dead } else if (hitPoints.current <= 0 && GameMediator::get_instance()->ai_list.at(_number).reactions[AI_REACTION_DEAD].action > 0) { - std::cout << ">>>>> AI::check_ai_reaction - DEAD - START!!! <<<<<" << std::endl; - _reaction_type = 2; + std::cout << "AI::execute_ai::check_ai_reaction::AI_REACTION_DEAD" << std::endl; + _reaction_type = AI_REACTION_DEAD; start_reaction = true; // if not sub-boss (that already have explosion), and dead-reaction is spawn npc, show explosions @@ -153,26 +195,39 @@ void artificial_inteligence::check_ai_reaction() animation anim2(ANIMATION_STATIC, &graphLib.bomb_explosion_surface, pos2, st_position(-8, -8), 80, 2, state.direction, st_size(56, 56), gameControl.get_current_map_obj()->get_map_scrolling_ref()); anim2.set_initial_delay(500); gameControl.get_current_map_obj()->add_animation(anim2); - + // hit (comes after death to avoid not firing that reaction that has priority) + } else if (_was_hit == true && GameMediator::get_instance()->ai_list.at(_number).reactions[AI_REACTION_HIT].action > 0) { + std::cout << "AI::execute_ai::check_ai_reaction::AI_REACTION_HIT" << std::endl; + _reaction_type = AI_REACTION_HIT; + start_reaction = true; } else if (dist_players.dist < walk_range && diff_y < 2 && GameMediator::get_instance()->ai_list.at(_number).reactions[AI_REACTION_PLAYER_SAME_Y].action > 0) { - _reaction_type = 3; + _reaction_type = AI_REACTION_PLAYER_SAME_Y; + start_reaction = true; + } else if (dist_players.dist < walk_range && diff_x < TILESIZE && GameMediator::get_instance()->ai_list.at(_number).reactions[AI_REACTION_PLAYER_SAME_X].action > 0) { + _reaction_type = AI_REACTION_PLAYER_SAME_X; + start_reaction = true; + } else if (dist_players.dist < walk_range/4 && GameMediator::get_instance()->ai_list.at(_number).reactions[AI_REACTION_PLAYER_CLOSE].action > 0) { + std::cout << "AI::execute_ai::check_ai_reaction::AI_REACTION_PLAYER_CLOSE" << std::endl; + _reaction_type = AI_REACTION_PLAYER_CLOSE; start_reaction = true; } _was_hit = false; // reset flag if (start_reaction == true) { - + std::cout << "AI::execute_ai::check_ai_reaction::start_reaction" << std::endl; // do not start a walk-reaction in middle air int react_type = GameMediator::get_instance()->ai_list.at(_number).reactions[_reaction_type].action; react_type--; - //std::cout << "AI::check_ai_reaction[" << _reaction_type << "] - react_type: " << react_type << std::endl; if (react_type == AI_ACTION_WALK && hit_ground() == false && can_fly == false) { - return; + for (int i=0; i> SET INITIAL #3 <<" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_INITIAL; _ai_timer = timer.getTimer(); // start now, ignoring delay _current_ai_type = get_ai_type(); @@ -181,110 +236,89 @@ void artificial_inteligence::check_ai_reaction() void artificial_inteligence::define_ai_next_step() { - if (_initialized == 0 || GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].go_to == AI_ACTION_GOTO_CHANCE) { // CHANCE + // could not execute shot, ignore next step + bool must_ignore_next = (shot_success == false && _current_ai_type == AI_ACTION_SHOT_PROJECTILE_AHEAD); + if (must_ignore_next == false && (_initialized == 0 || GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].go_to == AI_ACTION_GOTO_CHANCE)) { // CHANCE _initialized = 1; + reaction_loop_check.clear(); int rand_n = rand() % 100; - - //std::cout << "AI::define_ai_next_step - CHANCE - rand_n: " << rand_n << std::endl; + //std::cout << "AI::define_ai_next_step[" << name << "] - rand_n[" << rand_n << "]" << std::endl; bool found_chance = false; int chance_sum = 0; for (int i=0; iai_list.at(_number).states[i].chance << ", chance_sum: " << chance_sum << std::endl; chance_sum += GameMediator::get_instance()->ai_list.at(_number).states[i].chance; if (rand_n < chance_sum) { - //std::cout << "AI::define_ai_next_step[" << name << "] - FOUND CHANCE at [" << i << "]" << std::endl; _ai_chain_n = i; found_chance = true; break; } } if (found_chance == false) { - std::cout << "AI::define_ai_next_step[" << name << "] - no chance found, use ZERO as default" << std::endl; _ai_chain_n = 0; } } else { - //std::cout << "AI::define_ai_next_step FORCE NEXT - _ai_chain_n[BEFORE][" << (int)_ai_chain_n << "]" << std::endl; _ai_chain_n = GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].go_to-1; - //std::cout << "AI::define_ai_next_step FORCE NEXT - _ai_chain_n[AFTER][" << (int)_ai_chain_n << "]" << std::endl; + if (_ai_chain_n < 0) { + _ai_chain_n = 0; + } } _current_ai_type = get_ai_type(); - //std::cout << "AI::define_ai_next_step[" << name << "] _ai_chain_n: " << _ai_chain_n << ", _current_ai_type: " << _current_ai_type << std::endl; - //std::cout << ">> SET INITIAL #4 <<" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_INITIAL; } void artificial_inteligence::execute_ai_step() { - //std::cout << "artificial_inteligence::execute_ai_step[" << name << "] - _number: " << (int)_number << ", _current_ai_type: " << (int)_current_ai_type << std::endl; + //std::cout << "AI::execute_ai::execute_ai_step[" << _current_ai_type << "]" << std::endl; _ai_timer = timer.getTimer() + 20; if (_current_ai_type == AI_ACTION_WALK) { - //std::cout << ">> AI:exec[" << name << "] WALK" << std::endl; execute_ai_step_walk(); } else if (_current_ai_type == AI_ACTION_FLY) { - //if (name == "Giant Fly") std::cout << "AI::FLY - " << _ai_chain_n << std::endl; + //std::cout << "AI::execute_ai_step::execute_ai_step_fly" << std::endl; execute_ai_step_fly(); } else if (_current_ai_type == AI_ACTION_JUMP) { - //std::cout << ">> AI:exec[" << name << "] JUMP <<" << std::endl; execute_ai_step_jump(); } else if (_current_ai_type == AI_ACTION_WAIT_UNTIL_PLAYER_IS_IN_RANGE) { - //std::cout << ">> AI:exec[" << name << "] WAIT_UNTIL_PLAYER_IS_IN_RANGE <<" << std::endl; execute_ai_action_wait_until_player_in_range(); } else if (_current_ai_type == AI_ACTION_SAVE_POINT) { execute_ai_save_point(); - //std::cout << ">> AI:exec[" << name << "] SAVE_POINT <<" << std::endl; } else if (_current_ai_type == AI_ACTION_SHOT_PROJECTILE_AHEAD) { - //std::cout << ">> AI:exec[" << name << "] SHOT_PROJECTILE_1 <<" << std::endl; execute_ai_action_trow_projectile(0, false); } else if (_current_ai_type == AI_ACTION_SHOT_PROJECTILE_PLAYER_DIRECTION) { - //std::cout << ">> AI:exec[" << name << "] SHOT_PROJECTILE_2 <<" << std::endl; execute_ai_action_trow_projectile(1, false); } else if (_current_ai_type == AI_ACTION_SHOT_PROJECTILE_INVERT_DIRECTION) { - //std::cout << ">> AI:exec[" << name << "] SHOT_INVERT_PROJECTILE_1 <<" << std::endl; execute_ai_action_trow_projectile(1, true); } else if (_current_ai_type == AI_ACTION_AIR_WALK) { - //std::cout << ">> AI:exec[" << name << "] AIR_WALK <<" << std::endl; ia_action_air_walk(); } else if (_current_ai_type == AI_ACTION_FALL_TO_GROUND) { - //std::cout << ">> AI:exec[" << name << "] FALL_TO_GROUND <<" << std::endl; ia_action_jump_fall(); } else if (_current_ai_type == AI_ACTION_TELEPORT) { - //std::cout << ">> AI:exec[" << name << "] TELEPORT <<" << std::endl; ia_action_teleport(); } else if (_current_ai_type == AI_ACTION_DASH) { - //std::cout << ">> AI:exec[" << name << "] DASH <<" << std::endl; execute_ai_step_dash(); } else if (_current_ai_type == AI_ACTION_GRAB_WALL) { - //std::cout << ">> AI:exec[" << name << "] GRAB_WALL <<" << std::endl; execute_ai_step_jump_to_wall(); } else if (_current_ai_type == AI_ACTION_SPAWN_NPC) { - //std::cout << ">> AI:exec[" << name << "] SPAWN_NPC <<" << std::endl; execute_ai_step_spawn_npc(); } else if (_current_ai_type == AI_ACTION_CHANGE_MOVE_TYPE) { execute_ai_step_change_animation_type(); } else if (_current_ai_type == AI_ACTION_REPLACE_NPC) { - //std::cout << ">> AI:exec[" << name << "] REPLACE-ITSELF <<" << std::endl; execute_ai_replace_itself(false); } else if (_current_ai_type == AI_ACTION_MORPH_INTO_NPC) { - std::cout << ">> AI:exec[" << name << "] MORPH-ITSELF <<" << std::endl; execute_ai_replace_itself(true); } else if (_current_ai_type == AI_ACTION_CIRCLE_PLAYER) { - //std::cout << ">> AI:exec[" << name << "] CIRCLE-PLAYER <<" << std::endl; execute_ai_circle_player(); } else if (_current_ai_type == AI_ACTION_CHANGE_MOVE_TYPE_REVERSE) { - //std::cout << ">> AI:exec[" << name << "] AI_ACTION_CHANGE_MOVE_TYPE_REVERSE <<" << std::endl; execute_ai_step_change_animation_type_reverse(); } else if (_current_ai_type == AI_ACTION_JUMP_ATTACK_UP) { - std::cout << ">> AI:exec[" << name << "] AI_ACTION_JUMP_OPTION_UP <<" << std::endl; if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { jump_attack_type = _parameter; } _parameter = AI_ACTION_JUMP_OPTION_UP; execute_ai_step_jump(); } else if (_current_ai_type == AI_ACTION_JUMP_ATTACK_AHEAD_ONCE) { - std::cout << ">> AI:exec[" << name << "] AI_ACTION_JUMP_ATTACK_AHEAD_ONCE <<" << std::endl; if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { jump_attack_type = _parameter; } @@ -292,9 +326,37 @@ void artificial_inteligence::execute_ai_step() execute_ai_step_jump(); } else if (_current_ai_type == AI_ACTION_WAIT_RANDOM_TIME) { execute_ai_wait_random_time(); + } else if (_current_ai_type == AI_ACTION_WALL_WALK_SHOOT || _current_ai_type == AI_ACTION_WALL_WALK) { + if (_current_ai_type == AI_ACTION_WALL_WALK_SHOOT) { + is_shooter = true; + // define shooting direction + shoot_direction = state.direction; + if (name.find("[TOP]") != std::string::npos) { + shoot_direction = ANIM_DIRECTION_DOWN; + } else if (name.find("[BOTTOM]") != std::string::npos) { + shoot_direction = ANIM_DIRECTION_UP; + } + } + execute_ai_wall_walk(); + } else if (_current_ai_type == AI_ACTION_PLAY_SFX) { + execute_play_sfx(); + } else if (_current_ai_type == AI_ACTION_SHOT_MULTIPLE_PROJECTILE) { + execute_shot_multiple_projectile(); + } else if (_current_ai_type == AI_ACTION_EXPLODE_ITSELF) { + execute_explode_itself(); + } else if (_current_ai_type == AI_ACTION_THROW_ITEM) { + execute_throw_item(); } else { - //std::cout << "AI_ACTION_JUMP_ATTACK_UP: " << (int)AI_ACTION_JUMP_ATTACK_UP << std::endl; - std::cout << "********** AI::UNKNOWN - number[" << _number << "], pos[" << _ai_chain_n << "], _current_ai_type[" << (int)_current_ai_type << "] - NOT IMPLEMENTED *******" << std::endl; + std::cout << "ERROR: ********** AI::UNKNOWN - number[" << (int)_number << "], pos[" << _ai_chain_n << "], _current_ai_type[" << (int)_current_ai_type << "] - NOT IMPLEMENTED *******" << std::endl; + _current_ai_type = 0; + _ai_chain_n = 0; + } + + if (is_shooter) { + if (shooter_timer < timer.getTimer()) { + throw_projectile(0, false); + shooter_timer = timer.getTimer() + SHOOTER_DELAY; + } } } @@ -308,18 +370,17 @@ struct_player_dist artificial_inteligence::dist_npc_players() int dist; struct struct_player_dist res; if (gameControl.get_current_map_obj() == NULL) { - std::cout << "ERROR: trying to calc NPC-player distance before map pointer is set on NPC" << std::endl; graphLib.show_debug_msg("EXIT #A.01"); exception_manager::throw_param_exception(std::string("ERROR: trying to calc NPC-player distance before map pointer is set on NPC"), ""); } if (gameControl.get_current_map_obj()->_player_ref == NULL) { - std::cout << "ERROR: trying to calc NPC-player distance before there is a player in the game or this NPC does not have set the player_list" << std::endl; graphLib.show_debug_msg("EXIT #01"); exception_manager::throw_param_exception(std::string("ERROR: trying to calc NPC-player but there is no player on player_list."), ""); } res.pObj = gameControl.get_current_map_obj()->_player_ref; - dist = sqrt(pow((position.x - res.pObj->getPosition().x), 2) + pow((position.y - res.pObj->getPosition().y), 2)); + float part1 = pow((position.x - res.pObj->getPosition().x), 2) + pow((position.y - res.pObj->getPosition().y), 2); + dist = sqrt(part1); res.dist_xy.x = abs((float)position.x - res.pObj->getPosition().x); res.dist_xy.y = abs((float)position.y - res.pObj->getPosition().y); @@ -338,10 +399,9 @@ void artificial_inteligence::ground_damage_players() npc_pos.x = (npc_pos.x + gameControl.get_current_map_obj()->_player_ref->get_size().width/2)/TILESIZE; npc_pos.y = (npc_pos.y + gameControl.get_current_map_obj()->_player_ref->get_size().height)/TILESIZE; int lock = gameControl.get_current_map_obj()->getMapPointLock(st_position(npc_pos.x, npc_pos.y)); - //std::cout << "ground_damage_players - NPC[" << _player_ref->getName() << "].lock: " << lock << ", x: " << npc_pos.x << ", y: " << npc_pos.y << std::endl; if (lock != TERRAIN_UNBLOCKED && lock != TERRAIN_STAIR && lock != TERRAIN_WATER) { - //std::cout << "&&&&&&&&&&&&& ground_damage_players - DAMAGING PLAYER[" << _player_ref->getName() << "]" << std::endl; gameControl.get_current_map_obj()->_player_ref->damage(3, false); + gameControl.get_current_map_obj()->_player_ref->block_jump(); } } @@ -367,7 +427,6 @@ bool artificial_inteligence::auto_respawn() const void artificial_inteligence::ia_action_jump_to_player() { if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - //std::cout << "AI::ia_action_jump_to_player::INIT" << std::endl; _ai_state.sub_action_sub_status = IA_ACTION_STATE_INITIAL; struct_player_dist dist_npc_player = dist_npc_players(); // do not execute this action if distance is less than 3 tiles @@ -382,7 +441,6 @@ void artificial_inteligence::ia_action_jump_to_player() } else { ia_action_jump_to_point(st_position(_dest_point.x, _dest_point.y)); if ( _ai_state.sub_action_sub_status == IA_ACTION_STATE_FINISHED) { - //std::cout << "AI::ia_action_jump_to_player::FINISH" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } @@ -391,26 +449,26 @@ void artificial_inteligence::ia_action_jump_to_player() void artificial_inteligence::ia_action_jump_to_point(st_position point) { int xinc = 0; + int xinx_multiplier = 1; + if (move_speed == 1) { // TODO: more adjusts to make jump faster or slower depending on distance and speed + xinx_multiplier = 4; + } if (state.direction == ANIM_DIRECTION_LEFT) { - xinc = -move_speed*2; /// @TODO - check collision against walls (will have to "fake" the x position to continue jump movement) + xinc = -move_speed*xinx_multiplier; /// @TODO - check collision against walls (will have to "fake" the x position to continue jump movement) } else { - xinc = move_speed*2; /// @TODO - check collision against walls (will have to "fake" the x position to continue jump movement) + xinc = move_speed*xinx_multiplier; /// @TODO - check collision against walls (will have to "fake" the x position to continue jump movement) } if (_ai_state.sub_action_sub_status == IA_ACTION_STATE_INITIAL) { - //std::cout << "AI::ia_action_jump_to_point - START. position.x: " << position.x << ", point.x: " << point.x << std::endl; int jump_dist = abs(position.x - point.x); if (jump_dist < TILESIZE/2) { // avoid too short jumps - //std::cout << "AI::ia_action_jump_to_point - jump is too short (" << jump_dist << ")" << std::endl; _ai_state.sub_action_sub_status = IA_ACTION_STATE_FINISHED; return; - //} else { - //std::cout << "AI::ia_action_jump_to_point - jump_dist: " << jump_dist << std::endl; } if (position.x < point.x) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } else { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } if (xinc <= 0) { _trajectory_parabola = new trajectory_parabola(position.x - point.x); @@ -425,22 +483,16 @@ void artificial_inteligence::ia_action_jump_to_point(st_position point) _ignore_gravity = true; // disable gravity _origin_point.x = 0; // used when can't move x to continue increasing value for the parabola method } else if (_ai_state.sub_action_sub_status == IA_ACTION_STATE_EXECUTING) { - //std::cout << "AI::ia_action_jump_to_player - EXECUTE" << std::endl; - - bool can_move_x = test_change_position(xinc, 0); if (can_move_x == false) { // hit a wall, fall - //std::cout << "AI::ia_action_jump_to_point - hit wall, start falling y axis only; Pos.y: " << position.y << std::endl; _origin_point.x += xinc; xinc = 0; } int new_x = abs((position.x + _origin_point.x) - _ai_state.initial_position.x); int new_y = _ai_state.initial_position.y - _trajectory_parabola->get_y_point(new_x); - - - int yinc = position.y - new_y; + if (abs(yinc) >= TILESIZE) { if (yinc > 0) { yinc = TILESIZE-1; @@ -456,12 +508,6 @@ void artificial_inteligence::ia_action_jump_to_point(st_position point) bool can_move_y = false; can_move_y = test_change_position(0, yinc*-1); - - //std::cout << "xinc: " << xinc << std::endl; - - //std::cout << ">>>> AI::ia_action_jump_to_point - yinc: " << yinc << ", yinc: " << yinc << ", y: " << position.y << ", new_y: " << new_y << ", can_move_y: " << can_move_y << std::endl; - - // check hit-head when going up if (yinc > 0 && can_move_y == false) { // falling. @NOTE: y values are inverted, so > 0 meand going up and < 0 meand going down bool found_point = false; @@ -470,43 +516,34 @@ void artificial_inteligence::ia_action_jump_to_point(st_position point) for (int i=yinc*-1; i>0; i--) { can_move_y = test_change_position(0, i); if (can_move_y == true) { - //std::cout << ">>>> AI::ia_action_jump_to_point - hit head, can-move-y with i[" << i << "] at pos.y[" << position.y << "]" << std::endl; yinc = i; found_point = true; break; } } } - //std::cout << ">>>> AI::ia_action_jump_to_point - hit head, found_point: " << found_point << std::endl; // ignore Y movement if can't move in this axis /// @TODO: increase X virtual position until the point the NPC starts falling if (found_point == false) { - //std::cout << ">>>> AI::ia_action_jump_to_point - search for parabole flex point" << std::endl; int temp_xinc = 1; if (state.direction == ANIM_DIRECTION_LEFT) { temp_xinc = -1; } int temp_yinc = 1; - - //int new_x = abs((position.x + _origin_point.x) - _ai_state.initial_position.x); int temp_pos_x = new_x; - while (true) { // search for the point when parabole changes signal int temp_new_y = _ai_state.initial_position.y - _trajectory_parabola->get_y_point(temp_pos_x); temp_yinc = position.y - temp_new_y; - //std::cout << "AI::jump_to_point - new_x: " << new_x << ", pos.y: " << position.y << ", temp_yinc: " << temp_yinc << ", temp_pos_x: " << temp_pos_x << ", temp_new_y: " << temp_new_y << std::endl; - if (temp_yinc >= 0) { int temp_diff = position.x - temp_pos_x; - //std::cout << "found parabole flex point at x[" << temp_pos_x << "], pos.x[" << position.x << "]" << std::endl; _origin_point.x += temp_diff; break; } temp_pos_x += temp_xinc; } - + //std::cout << "AI::ia_action_jump_to_point - LEAVE #1" << std::endl; return; } } @@ -524,7 +561,6 @@ void artificial_inteligence::ia_action_jump_to_point(st_position point) // check ground when falling if (yinc < 0 && can_move_y == false) { // falling. @NOTE: y values are inverted, so > 0 meand going up and < 0 meand going down - //std::cout << ">>>> AI::ia_action_jump_to_point - hit ground" << std::endl; bool found_point = false; if (_last_jump_yinc > 0 || yinc != 0) { // reduce Y in case hit ground @@ -533,32 +569,30 @@ void artificial_inteligence::ia_action_jump_to_point(st_position point) if (can_move_y == true) { yinc = i; found_point = true; - //std::cout << "AI::ia_action_jump_to_point - Ffound move-point, yinc: " << yinc << std::endl; break; } } } if (found_point == false) { - //std::cout << "AI::ia_action_jump_to_point - FINISHED #3 (hit-ground). xinc: " << xinc << std::endl; if (_trajectory_parabola != NULL) { delete _trajectory_parabola; } _ignore_gravity = false; // enable gravity _ai_state.sub_action_sub_status = IA_ACTION_STATE_FINISHED; - //if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #1" << std::endl; set_animation_type(ANIM_TYPE_STAND); moveCommands.right = 0; moveCommands.left = 0; _ai_timer = timer.getTimer() + 500; if (xinc == 0) { // if didn't moved x, then must change AI to other action - //std::cout << "AI::ia_action_jump_to_point - FINISHED #4 (hit-ground)" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } + //std::cout << "AI::ia_action_jump_to_point - FINISH" << std::endl; return; } } position.y -= yinc; _last_jump_yinc = yinc; + //std::cout << "AI::ia_action_jump_to_point - xinc[" << xinc << "], yinc[" << yinc << "]" << std::endl; } } @@ -573,7 +607,6 @@ void artificial_inteligence::ia_action_jump_to_random() dist = abs(position.x - rand_x); } _dest_point.x = rand() % RES_W; - std::cout << "AI::ia_action_jump_to_random - INIT - _dest_point.x: " << _dest_point.x << std::endl; _dest_point.y = position.y; _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; } else { @@ -587,42 +620,84 @@ void artificial_inteligence::ia_action_jump_to_random() void artificial_inteligence::ia_action_jump_ahead() { if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - std::cout << "AI::ia_action_jump_ahead::INIT" << std::endl; if (state.direction == ANIM_DIRECTION_LEFT) { _origin_point.x = position.x - frameSize.width/2 - walk_range; - _dest_point.x = position.x - TILESIZE*4; } else { _origin_point.x = position.x + frameSize.width/2 + walk_range; - _dest_point.x = position.x + TILESIZE*4; } + _dest_point.x = calc_jump_pos_x(move_speed); _ai_state.sub_action_sub_status = IA_ACTION_STATE_INITIAL; _dest_point.y = position.y; _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; } else { ia_action_jump_to_point(st_position(_dest_point.x, _dest_point.y)); - if ( _ai_state.sub_action_sub_status == IA_ACTION_STATE_FINISHED) { + //std::cout << "AI::ia_action_jump_ahead::EXECUTE, status[" << _ai_state.sub_action_sub_status << "]" << std::endl; + if (_ai_state.sub_action_sub_status == IA_ACTION_STATE_FINISHED) { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + return; + /* // only stop when reached _origin_poin - // check how much we need to jump yet - if (abs(_origin_point.x - position.x) < TILESIZE*4) { - //std::cout << "AI::ia_action_jump_ahead - FINISHED, dist: " << dist << std::endl; + if (abs(_origin_point.x - position.x) < TILESIZE*4) { // check how much we need to jump yet + std::cout << "AI::ia_action_jump_ahead::FINISHED" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; return; } - //std::cout << "AI::ia_action_jump_ahead - new-jump, dist: " << dist << std::endl; - if (state.direction == ANIM_DIRECTION_LEFT) { - _dest_point.x = position.x - TILESIZE*4; - } else { - _dest_point.x = position.x + TILESIZE*4; + _dest_point.x = calc_jump_pos_x(move_speed); + std::cout << "AI::ia_action_jump_ahead::RESTART" << std::endl; + _ai_state.sub_action_sub_status = IA_ACTION_STATE_INITIAL; + */ + } + } +} + +void artificial_inteligence::ia_action_jump_long_ahead() +{ + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + if (state.direction == ANIM_DIRECTION_LEFT) { + _origin_point.x = position.x - frameSize.width/2 - walk_range; + } else { + _origin_point.x = position.x + frameSize.width/2 + walk_range; + } + _dest_point.x = calc_jump_pos_x(LONG_JUMP_DIST); + _ai_state.sub_action_sub_status = IA_ACTION_STATE_INITIAL; + _dest_point.y = position.y; + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + } else { + ia_action_jump_to_point(st_position(_dest_point.x, _dest_point.y)); + if ( _ai_state.sub_action_sub_status == IA_ACTION_STATE_FINISHED) { + if (abs(_origin_point.x - position.x) < TILESIZE*4) { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + return; } + _dest_point.x = calc_jump_pos_x(LONG_JUMP_DIST); _ai_state.sub_action_sub_status = IA_ACTION_STATE_INITIAL; } } } +int artificial_inteligence::calc_jump_pos_x(int distance) +{ + if (distance < 1) { + distance = 1; + } + int dest_point_x = position.x + TILESIZE*distance; + if (state.direction == ANIM_DIRECTION_LEFT) { + dest_point_x = position.x - TILESIZE*distance; + } + return dest_point_x; +} + void artificial_inteligence::ia_action_jump_once() { if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - //std::cout << "AI::ia_action_jump_once::INIT" << std::endl; + if (_parameter == AI_ACTION_JUMP_OPTION_TO_PLAYER_DIRECTION) { + struct_player_dist dist_players = dist_npc_players(); + if (dist_players.pObj->getPosition().x > position.x) { + set_direction(ANIM_DIRECTION_RIGHT); + } else { + set_direction(ANIM_DIRECTION_LEFT); + } + } if (state.direction == ANIM_DIRECTION_LEFT) { _origin_point.x = position.x - frameSize.width/2 - walk_range; _dest_point.x = position.x - TILESIZE*4; @@ -636,7 +711,6 @@ void artificial_inteligence::ia_action_jump_once() } else { ia_action_jump_to_point(st_position(_dest_point.x, _dest_point.y)); if (_ai_state.sub_action_sub_status == IA_ACTION_STATE_FINISHED) { - //std::cout << "AI::ia_action_jump_once::FINISHED" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } @@ -645,7 +719,6 @@ void artificial_inteligence::ia_action_jump_once() void artificial_inteligence::ia_action_jump_up() { if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - //std::cout << "AI::ia_action_jump_up::INIT" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; _ai_state.action_status = 0; set_animation_type(ANIM_TYPE_JUMP); @@ -653,11 +726,9 @@ void artificial_inteligence::ia_action_jump_up() moveCommands.jump = 1; } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { if (_ai_state.action_status == 0) { - //std::cout << "AI::ia_action_jump_up::EXECUTE.FIRST" << std::endl; moveCommands.jump = 1; _ai_state.action_status++; } else { - //std::cout << "AI::ia_action_jump_up::EXECUTE.RUN" << std::endl; moveCommands.jump = 1; float speed = _obj_jump.get_speed(); // execute attack, if needed @@ -669,7 +740,6 @@ void artificial_inteligence::ia_action_jump_up() jump_attack_type = -1; } else if (speed >= 0 && hit_ground() == true) { moveCommands.jump = 0; - std::cout << "AI::ia_action_jump_up::HIT_GROUND" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; set_animation_type(ANIM_TYPE_STAND); _ai_state.action_status = 0; @@ -679,30 +749,61 @@ void artificial_inteligence::ia_action_jump_up() } } +void artificial_inteligence::ia_action_jump_teleport_in() +{ + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + set_animation_type(ANIM_TYPE_TELEPORT); + first_unlocked_from_bottom = gameControl.get_current_map_obj()->get_first_lock_on_bottom(position.x, position.y, frameSize.width, frameSize.height); + } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { + if (position.y + move_speed*2 <= first_unlocked_from_bottom) { + position.y += move_speed*2; + } else { + position.y = first_unlocked_from_bottom - frameSize.height; + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } + } +} + +void artificial_inteligence::ia_action_jump_teleport_out() +{ + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + teleporting_out++; + set_animation_type(ANIM_TYPE_TELEPORT); + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { + position.y -= move_speed*2; + if (position.y + frameSize.height < 0) { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + hitPoints.current = 0; + dead = true; + teleporting_out++; + } + } +} + void artificial_inteligence::ia_action_jump_to_roof() { - if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { set_animation_type(ANIM_TYPE_JUMP); - _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; // find the end-point of the jump-up - int limit_y = 0; - for (int y=position.y; y>=0; y--) { + int limit_y = 0; + for (int y=position.y; y>=0; y--) { st_position new_pos((position.x+frameSize.width/2)/TILESIZE, (y)/TILESIZE); if (gameControl.get_current_map_obj()->is_point_solid(new_pos) == true) { - limit_y = y; - break; - } - } + limit_y = y; + break; + } + } if (limit_y == 0) { limit_y = 1; } - //std::cout << "AI::ia_action_jump_to_roof - limit_y: " << limit_y << std::endl; - _ai_state.secondary_position.y = limit_y; - _ai_state.step = (limit_y - position.y)/max_speed; + _ai_state.secondary_position.y = limit_y; + _ai_state.step = (limit_y - position.y)/max_speed; _ignore_gravity = true; // disable gravity speed_y = max_speed*2; - return; + return; } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { // executing if (position.y > _ai_state.secondary_position.y) { @@ -716,102 +817,89 @@ void artificial_inteligence::ia_action_jump_to_roof() void artificial_inteligence::ia_action_air_walk() { - if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - //std::cout << "artificial_inteligence::ia_action_air_walk - INITIALIZE" << std::endl; + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { set_animation_type(ANIM_TYPE_WALK_AIR); - _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; - struct_player_dist dist_npc_player = dist_npc_players(); + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + struct_player_dist dist_npc_player = dist_npc_players(); _dest_point.x = dist_npc_player.pObj->getPosition().x; - //std::cout << "artificial_inteligence::ia_action_air_walk - dist:" << dist_npc_player.dist << std::endl; - } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { - //std::cout << "artificial_inteligence::ia_action_air_walk - EXECUTE" << std::endl; - - - + if (_dest_point.x > position.x) { + state.direction = ANIM_DIRECTION_RIGHT; + } else { + state.direction = ANIM_DIRECTION_LEFT; + } + } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { // IURI - colocar verificação de colisão aqui - - - /// @TODO use move speed and reducer for last part - - if (move_to_point(_dest_point, move_speed, 0, false) == true) { + /// @TODO use move speed and reducer for last part + if (move_to_point(_dest_point, move_speed, 0, false, false) == true) { set_animation_type(ANIM_TYPE_JUMP); _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - } - } + } + } } void artificial_inteligence::ia_action_jump_fall() { - //std::cout << "******** artificial_inteligence::ia_action_jump_fall - speed_y: " << speed_y << std::endl; - if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; set_animation_type(ANIM_TYPE_JUMP); speed_y = 5; - } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { - ia_accelerate_down(); - if (hit_ground() == true) { - if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #2" << std::endl; + } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { + ia_accelerate_down(); + if (hit_ground() == true) { set_animation_type(ANIM_TYPE_STAND); - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - _ai_timer = timer.getTimer() + 1200; + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + _ai_timer = timer.getTimer() + 1200; _ignore_gravity = false; } - } + } } void artificial_inteligence::ia_action_quake_attack() { - if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; - _ai_state.initial_position.x = 0; - } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { - //std::cout << "IA_STATE_QUAKE_ATTACK - ia_state.timer: EXEC" << std::endl; - _ai_state.initial_position.x++; - if (_ai_state.initial_position.x % 20) { + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + _ai_state.initial_position.x = 0; + } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { + _ai_state.initial_position.x++; + if (_ai_state.initial_position.x % 20) { graphLib.set_screen_adjust(st_position(-QUAKE_SCREEN_MOVE, 0)); - ground_damage_players(); - } else if (_ai_state.initial_position.x % 25) { + ground_damage_players(); + } else if (_ai_state.initial_position.x % 25) { graphLib.set_screen_adjust(st_position(QUAKE_SCREEN_MOVE, 0)); - ground_damage_players(); - } - _ai_state.timer = timer.getTimer() + 500; - if (_ai_state.initial_position.x > 200) { - graphLib.set_screen_adjust(st_position(0, 0)); - if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #3" << std::endl; + ground_damage_players(); + } + _ai_state.timer = timer.getTimer() + 500; + if (_ai_state.initial_position.x > 200) { + graphLib.set_screen_adjust(st_position(0, 0)); set_animation_type(ANIM_TYPE_STAND); - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - } - } + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } + } } void artificial_inteligence::ia_accelerate_up() { - std::cout << "ia_accelerate_up - 1.speed_y: " << std::fixed << speed_y << ", max_speed*2: " << (max_speed*2) << std::endl; speed_y -= speed_y*acceleration_y; - std::cout << "ia_accelerate_up - 2.speed_y: " << std::fixed << speed_y << std::endl; if (speed_y < JUMP_ROOF_MIN_SPEED) { speed_y = JUMP_ROOF_MIN_SPEED; } else if (speed_y > TILESIZE) { speed_y = TILESIZE-2; } else if (speed_y > max_speed*2) { speed_y = max_speed*2; - } - std::cout << "ia_accelerate_up - 3.speed_y: " << std::fixed << speed_y << std::endl; - position.y -= speed_y; - /// @TODO - adjustment when ground is near + } + position.y -= speed_y; + /// @TODO - adjustment when ground is near } void artificial_inteligence::ia_accelerate_down() { - //std::cout << "ia_accelerate_down - 1.speed_y: " << std::fixed << speed_y << std::endl; speed_y += speed_y*acceleration_y*4; - //std::cout << "ia_accelerate_down - 2.speed_y: " << std::fixed << speed_y << ", max_speed: " << max_speed << std::endl; - if (speed_y < 1) { + if (speed_y < 1) { speed_y = acceleration_y*4; } else if (speed_y > TILESIZE-1) { speed_y = TILESIZE-1; - } + } // adjust fall to hit ground exactly on the point if (will_hit_ground(speed_y) == true) { for (int i=speed_y-1; i>=0; i--) { @@ -821,132 +909,128 @@ void artificial_inteligence::ia_accelerate_down() } } } - position.y += speed_y; - /// @TODO - adjustment when ground is near + position.y += speed_y; + /// @TODO - adjustment when ground is near } void artificial_inteligence::ia_set_destiny_point(st_position dest_point) { - _ai_state.initial_position.x = position.x; - _ai_state.initial_position.y = position.y; - _ai_state.secondary_position.x = dest_point.x; - _ai_state.secondary_position.y = dest_point.y; - if (_ai_state.secondary_position.x < _ai_state.initial_position.x) { - state.direction = ANIM_DIRECTION_LEFT; - } else { - state.direction = ANIM_DIRECTION_RIGHT; - } + _ai_state.initial_position.x = position.x; + _ai_state.initial_position.y = position.y; + _ai_state.secondary_position.x = dest_point.x; + _ai_state.secondary_position.y = dest_point.y; + if (_ai_state.secondary_position.x < _ai_state.initial_position.x) { + set_direction(ANIM_DIRECTION_LEFT); + } else { + set_direction(ANIM_DIRECTION_RIGHT); + } } // walk until reaching a given X coordinate // @TODO - jump if needed void artificial_inteligence::ia_walk_to_position() { - // @TODO - if can't walk, change action to jump to player - //if (!test_change_position(-move_speed, 0)) { + // @TODO - if can't walk, change action to jump to player + //if (!test_change_position(-move_speed, 0)) { bool finished = false; - if (_ai_state.secondary_position.x < _ai_state.initial_position.x) { - position.x -= move_speed; - if (position.x <= _ai_state.secondary_position.x) { - finished = true; - } - } else { - position.x += move_speed; - if (position.x >= _ai_state.secondary_position.x) { - finished = true; - } - } - if (finished == true) { - if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #4" << std::endl; + if (_ai_state.secondary_position.x < _ai_state.initial_position.x) { + position.x -= move_speed; + if (position.x <= _ai_state.secondary_position.x) { + finished = true; + } + } else { + position.x += move_speed; + if (position.x >= _ai_state.secondary_position.x) { + finished = true; + } + } + if (finished == true) { set_animation_type(ANIM_TYPE_STAND); - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - } + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } } void artificial_inteligence::ia_float_to_position() { - bool finished = false; - int xinc = 0; - int yinc = 0; - bool reached_x = false; - bool reached_y = false; - - - if (_ai_state.secondary_position.x < _ai_state.initial_position.x) { - if (position.x <= _ai_state.secondary_position.x) { - xinc = 0; - } else { - xinc -= move_speed; - } - } else { - if (position.x >= _ai_state.secondary_position.x) { - xinc = 0; - } else { - xinc += move_speed; - } - } - if (_ai_state.secondary_position.y < _ai_state.initial_position.y) { - if (position.y <= _ai_state.secondary_position.y) { - yinc = 0; - } else { - yinc -= move_speed; - } - } else { - if (position.y >= _ai_state.secondary_position.y) { - yinc = 0; - } else { - yinc += move_speed; - } - } - - - if (test_change_position(xinc, 0) == false) { - xinc = 0; - } - if (test_change_position(0, yinc) == false) { - yinc = 0; - } - if (xinc == 0 && yinc == 0) { // both X and Y blocked, leave - finished = true; - } else { - std::cout << "*** artificial_inteligence::ia_float_to_position - xinc: " << xinc << ", yinc: " << yinc << std::endl; - position.x += xinc; - position.y += yinc; - } - - if (reached_x == true && reached_y == true) { - finished = true; - } - // check if reached the point - if (finished == true) { - if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #5" << std::endl; + bool finished = false; + int xinc = 0; + int yinc = 0; + bool reached_x = false; + bool reached_y = false; + + + if (_ai_state.secondary_position.x < _ai_state.initial_position.x) { + if (position.x <= _ai_state.secondary_position.x) { + xinc = 0; + } else { + xinc -= move_speed; + } + } else { + if (position.x >= _ai_state.secondary_position.x) { + xinc = 0; + } else { + xinc += move_speed; + } + } + if (_ai_state.secondary_position.y < _ai_state.initial_position.y) { + if (position.y <= _ai_state.secondary_position.y) { + yinc = 0; + } else { + yinc -= move_speed; + } + } else { + if (position.y >= _ai_state.secondary_position.y) { + yinc = 0; + } else { + yinc += move_speed; + } + } + + + if (test_change_position(xinc, 0) == false) { + xinc = 0; + } + if (test_change_position(0, yinc) == false) { + yinc = 0; + } + if (xinc == 0 && yinc == 0) { // both X and Y blocked, leave + finished = true; + } else { + position.x += xinc; + position.y += yinc; + } + + if (reached_x == true && reached_y == true) { + finished = true; + } + // check if reached the point + if (finished == true) { set_animation_type(ANIM_TYPE_STAND); - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - } + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } } void artificial_inteligence::ia_dash() { - bool finished = false; - if (_ai_state.secondary_position.x < _ai_state.initial_position.x) { + bool finished = false; + if (_ai_state.secondary_position.x < _ai_state.initial_position.x) { position.x -= max_speed; - if (position.x <= _ai_state.secondary_position.x) { - finished = true; - } - } else { + if (position.x <= _ai_state.secondary_position.x) { + finished = true; + } + } else { position.x += max_speed; - if (position.x >= _ai_state.secondary_position.x) { - finished = true; - } - } - if (finished == true) { - if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #6" << std::endl; + if (position.x >= _ai_state.secondary_position.x) { + finished = true; + } + } + if (finished == true) { set_animation_type(ANIM_TYPE_STAND); - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - } + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } } @@ -956,44 +1040,46 @@ void artificial_inteligence::ia_dash() /// @TODO - jump if needed void artificial_inteligence::execute_ai_step_walk() { + can_fall_during_move = false; short move_type = _parameter; + if (move_type == AI_ACTION_WALK_OPTION_HORIZONTAL_AHEAD_FALLING) { + can_fall_during_move = true; + } _dest_point.y = position.y; // is not flying, keep the position - //if (name == "KURUPIRA BOT") std::cout << "execute_ai_step_walk::EXEC - status: " << _ai_state.sub_status << ", move_type: " << move_type << std::endl; - if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + // if not on ground and can't fly, leave - //if (name == "KURUPIRA BOT") std::cout << "execute_ai_step_walk::INIT" << std::endl; + // aqui, está dizendo que não chegou no chão porque está em cima de escada - // if not on ground and can't fly, leave if (hit_ground() == false && can_fly == false) { - if (name == "KURUPIRA BOT") std::cout << "**** AI::execute_ai_step_walk - INIT - can't walk on midair" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; set_animation_type(ANIM_TYPE_STAND); return; } - //std::cout << "**** AI::execute_ai_step_walk - move_type: " << move_type << std::endl; - if (move_type == AI_ACTION_WALK_OPTION_HORIZONTAL_TURN || move_type == AI_ACTION_WALK_OPTION_TURN_TO_PLAYER) { - //std::cout << "AI::execute_ai_step_walk::init - TURN::INIT" << std::endl; if (state.animation_type != ANIM_TYPE_TURN) { - //std::cout << "AI::execute_ai_step_walk::init - TURN - change animation to TURN" << std::endl; set_animation_type(ANIM_TYPE_TURN); } } else { if (move_type == AI_ACTION_WALK_OPTION_TO_PLAYER) { struct_player_dist dist_players = dist_npc_players(); _dest_point = dist_players.pObj->getPosition(); - } else if (move_type == AI_ACTION_WALK_OPTION_HORIZONTAL_AHEAD) { + if (dist_players.pObj->getPosition().x > (position.x + frameSize.width/2)) { + set_direction(ANIM_DIRECTION_RIGHT); + } else { + set_direction(ANIM_DIRECTION_LEFT); + } + } else if (move_type == AI_ACTION_WALK_OPTION_HORIZONTAL_AHEAD || move_type == AI_ACTION_WALK_OPTION_HORIZONTAL_AHEAD_FALLING) { if (state.direction == ANIM_DIRECTION_LEFT) { _dest_point.x = position.x - frameSize.width/2 - walk_range; } else { _dest_point.x = position.x + frameSize.width/2 + walk_range; } } else if (move_type == AI_ACTION_WALK_OPTION_TO_RANDOM_DIRECTION) { - state.direction = rand() % 2; - if (name == "KURUPIRA BOT") std::cout << "AI_ACTION_WALK_OPTION_TO_RANDOM_DIRECTION, direction: " << (int)state.direction << std::endl; + set_direction(rand() % 2); if (state.direction == ANIM_DIRECTION_LEFT) { _dest_point.x = position.x - frameSize.width/2 - walk_range; } else { @@ -1001,46 +1087,40 @@ void artificial_inteligence::execute_ai_step_walk() } } else if (move_type == AI_ACTION_WALK_OPTION_TO_OPPOSITE_DIRECTION) { if (realPosition.x > RES_W/2) { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); _dest_point.x = position.x - walk_range; } else { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); _dest_point.x = position.x + walk_range; } - //std::cout << "AI::AI_ACTION_WALK_OPTION_TO_OPPOSITE_DIRECTION - dest.x: " << _dest_point.x << ", dest.y: " << _dest_point.y << ", pos.x: " << position.x << ", pos.y: " << position.y << std::endl; _origin_point.x = position.x; } set_animation_type(ANIM_TYPE_WALK); } - - _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; - //if (name == "KURUPIRA BOT") std::cout << ">>>>>>> artificial_inteligence::execute_ai_step_walk - direction" << (int)state.direction << std::endl; - } else { + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + } else { if (move_type == AI_ACTION_WALK_OPTION_HORIZONTAL_TURN) { - //if (name == "KURUPIRA BOT") std::cout << "AI::execute_ai_step_walk::exec - TURN - direction: " << state.direction << std::endl; if (_is_last_frame == true) { // finished turn animation - //std::cout << "AI::execute_ai_step_walk::exec - TURN - last frame - direction: " << state.direction << std::endl; if (state.direction == ANIM_DIRECTION_LEFT) { - state.direction = ANIM_DIRECTION_RIGHT; /// @TODO - turn if not facing the given direction + set_direction(ANIM_DIRECTION_RIGHT); /// @TODO - turn if not facing the given direction } else { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } set_animation_type(ANIM_TYPE_WALK); _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (move_type == AI_ACTION_WALK_OPTION_TURN_TO_PLAYER) { - //std::cout << "AI_ACTION_WALK_OPTION_TURN_TO_PLAYER::EXEC" << std::endl; struct_player_dist dist_players = dist_npc_players(); if (dist_players.pObj->getPosition().x > position.x) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } else { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } set_animation_type(ANIM_TYPE_WALK); _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } else { - if (move_to_point(_dest_point, move_speed, 0, is_ghost) == true) { - if (name == "KURUPIRA BOT") std::cout << "AI::execute_ai_step_walk::exec - reached point or is blocked" << std::endl; + bool moved = move_to_point(_dest_point, move_speed, 0, is_ghost, false); + if (moved == true) { set_animation_type(ANIM_TYPE_STAND); _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } @@ -1051,24 +1131,21 @@ void artificial_inteligence::execute_ai_step_walk() void artificial_inteligence::execute_ai_action_wait_until_player_in_range() { - if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; - if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #7" << std::endl; + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; set_animation_type(ANIM_TYPE_STAND); - } else { - struct_player_dist dist_players = dist_npc_players(); - int dist_player = abs((float)dist_players.pObj->getPosition().x - position.x); - //std::cout << "AI::WAIT_PLAYER_RANGE - dist_player: " << dist_player << ", walk_range: " << walk_range << std::endl; - if (dist_player <= walk_range) { - //std::cout << "AI::WAIT_PLAYER_RANGE::FINISHED" << std::endl; - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - } - } + } else { + struct_player_dist dist_players = dist_npc_players(); + int dist_player = abs((float)dist_players.pObj->getPosition().x - position.x); + if (dist_player <= walk_range) { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } + } } void artificial_inteligence::execute_ai_action_trow_projectile(Uint8 n, bool invert_direction) { - if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { if (state.animation_type == ANIM_TYPE_WALK_AIR) { set_animation_type(ANIM_TYPE_JUMP_ATTACK); } else if (is_on_attack_frame() == false){ @@ -1076,37 +1153,113 @@ void artificial_inteligence::execute_ai_action_trow_projectile(Uint8 n, bool inv } // face player to shoot, if parameter is not shot-ahead-only if (move_speed > 0 && _current_ai_type != AI_ACTION_SHOT_PROJECTILE_AHEAD) { - //std::cout << "AI::execute_ai_action_trow_projectile - face player, walk_range: " << walk_range << std::endl; struct_player_dist dist_players = dist_npc_players(); if (dist_players.pObj->getPosition().x > position.x) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); + } else { + set_direction(ANIM_DIRECTION_LEFT); + } + } + state.animation_state = 0; + state.animation_timer = timer.getTimer() + (graphLib.character_graphics_list.find(name)->second).frames[state.direction][state.animation_type][state.animation_state].delay; + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + _did_shot = false; + } else { + if (_was_animation_reset == true && _did_shot == true) { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + _did_shot = false; + if (state.animation_type == ANIM_TYPE_WALK_AIR || state.animation_type == ANIM_TYPE_JUMP || state.animation_type == ANIM_TYPE_JUMP_ATTACK) { + set_animation_type(ANIM_TYPE_JUMP); } else { - state.direction = ANIM_DIRECTION_LEFT; + set_animation_type(ANIM_TYPE_STAND); } + } else if ((_is_attack_frame == true || _is_last_frame == true) && _did_shot == false) { // only shoot when reached the last frame in animation attack + shot_success = throw_projectile(_parameter, invert_direction); + _did_shot = true; + shot_timer = timer.getTimer(); + } + } +} + +void artificial_inteligence::execute_shot_multiple_projectile() +{ + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + if (state.animation_type == ANIM_TYPE_WALK_AIR) { + set_animation_type(ANIM_TYPE_JUMP_ATTACK); + } else if (is_on_attack_frame() == false){ + set_animation_type(ANIM_TYPE_ATTACK); } - state.animation_state = 0; + state.animation_state = 0; state.animation_timer = timer.getTimer() + (graphLib.character_graphics_list.find(name)->second).frames[state.direction][state.animation_type][state.animation_state].delay; - _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; _did_shot = false; - } else { + } else { if (_was_animation_reset == true && _did_shot == true) { - //std::cout << "AI::execute_ai_action_trow_projectile - FINISH" << std::endl; - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; _did_shot = false; if (state.animation_type == ANIM_TYPE_WALK_AIR || state.animation_type == ANIM_TYPE_JUMP || state.animation_type == ANIM_TYPE_JUMP_ATTACK) { set_animation_type(ANIM_TYPE_JUMP); } else { - if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #8" << std::endl; set_animation_type(ANIM_TYPE_STAND); } } else if ((_is_attack_frame == true || _is_last_frame == true) && _did_shot == false) { // only shoot when reached the last frame in animation attack - //std::cout << "AI::execute_ai_action_trow_projectile - SHHHHHHHHHHHOOOOOOOOOOOT" << std::endl; - throw_projectile(_parameter, invert_direction); + if (_parameter == AI_ACTION_SHOT_MULTIPLE_PROJECTILE_5_UP) { + throw_direction_projectile(ANIM_DIRECTION_LEFT); + throw_direction_projectile(ANIM_DIRECTION_UP_LEFT); + throw_direction_projectile(ANIM_DIRECTION_UP); + throw_direction_projectile(ANIM_DIRECTION_UP_RIGHT); + throw_direction_projectile(ANIM_DIRECTION_RIGHT); + } else if (_parameter == AI_ACTION_SHOT_MULTIPLE_PROJECTILE_8) { + throw_direction_projectile(ANIM_DIRECTION_LEFT); + throw_direction_projectile(ANIM_DIRECTION_UP_LEFT); + throw_direction_projectile(ANIM_DIRECTION_UP); + throw_direction_projectile(ANIM_DIRECTION_UP_RIGHT); + throw_direction_projectile(ANIM_DIRECTION_RIGHT); + throw_direction_projectile(ANIM_DIRECTION_DOWN_LEFT); + throw_direction_projectile(ANIM_DIRECTION_DOWN); + throw_direction_projectile(ANIM_DIRECTION_DOWN_RIGHT); + } else if (_parameter == AI_ACTION_SHOT_MULTIPLE_PROJECTILE_3_UP) { + throw_direction_projectile(ANIM_DIRECTION_LEFT); + throw_direction_projectile(ANIM_DIRECTION_UP); + throw_direction_projectile(ANIM_DIRECTION_RIGHT); + } else if (_parameter == AI_ACTION_SHOT_MULTIPLE_PROJECTILE_3_AHEAD) { + if (state.direction == ANIM_DIRECTION_LEFT) { + throw_direction_projectile(ANIM_DIRECTION_LEFT); + throw_direction_projectile(ANIM_DIRECTION_UP_LEFT); + throw_direction_projectile(ANIM_DIRECTION_DOWN_LEFT); + } else { + throw_direction_projectile(ANIM_DIRECTION_RIGHT); + throw_direction_projectile(ANIM_DIRECTION_UP_RIGHT); + throw_direction_projectile(ANIM_DIRECTION_DOWN_RIGHT); + } + } _did_shot = true; + shot_timer = timer.getTimer(); + //_ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } } +void artificial_inteligence::execute_explode_itself() +{ + CURRENT_FILE_FORMAT::file_projectilev3 temp_projectile = GameMediator::get_instance()->get_projectile(0); + projectile_list.push_back(projectile(0, state.direction, get_attack_position(), is_player(), _number)); + projectile &temp_proj = projectile_list.back(); + temp_proj.transform_into_explosion(); + hitPoints.current = 0; +} + +void artificial_inteligence::execute_throw_item() +{ + int x_pos = position.x + frameSize.width + TILESIZE; + if (state.direction == ANIM_DIRECTION_LEFT) { + x_pos = position.x - TILESIZE; + } + gameControl.get_current_map_obj()->drop_great_random_item(st_position(x_pos, position.y - TILESIZE)); + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; +} + + // creates a projectile, return false if could not fire bool artificial_inteligence::throw_projectile(int projectile_type, bool invert_direction) { @@ -1122,7 +1275,6 @@ bool artificial_inteligence::throw_projectile(int projectile_type, bool invert_d struct_player_dist dist_players = dist_npc_players(); if ((dist_players.pObj->getPosition().x > position.x && state.direction == ANIM_DIRECTION_LEFT) || (dist_players.pObj->getPosition().x < position.x && state.direction == ANIM_DIRECTION_RIGHT)) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - std::cout << "AI::SHOT::LEAVE #1" << std::endl; return false; } } @@ -1133,7 +1285,6 @@ bool artificial_inteligence::throw_projectile(int projectile_type, bool invert_d } if (projectile_list.size() >= max_shots) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - //std::cout << "AI::SHOT::LEAVE #2, shots[" << projectile_list.size() << "], max_shots[" << max_shots << "]" << std::endl; return false; } @@ -1142,7 +1293,11 @@ bool artificial_inteligence::throw_projectile(int projectile_type, bool invert_d proj_direction = !proj_direction; } - projectile_list.push_back(projectile(projectile_type, proj_direction, get_attack_position(), is_player())); + if (is_shooter) { + proj_direction = shoot_direction; + } + + projectile_list.push_back(projectile(projectile_type, proj_direction, get_attack_position(), is_player(), _number)); projectile &temp_proj = projectile_list.back(); temp_proj.play_sfx(true); temp_proj.set_owner(this); @@ -1156,50 +1311,46 @@ bool artificial_inteligence::throw_projectile(int projectile_type, bool invert_d if (temp_projectile.trajectory == TRAJECTORY_TARGET_DIRECTION || temp_projectile.trajectory == TRAJECTORY_TARGET_EXACT || temp_projectile.trajectory == TRAJECTORY_ARC_TO_TARGET || temp_projectile.trajectory == TRAJECTORY_FOLLOW) { if (!is_player() && gameControl.get_current_map_obj()->_player_ref != NULL) { character* p_player = gameControl.get_current_map_obj()->_player_ref; + //std::cout << "AI::throw_projectile::set_target_pos[" << p_player->get_position_ref()->x << "][" << p_player->get_position_ref()->y << "], real_pos[" << p_player->get_real_position().x << "][" << p_player->get_real_position().y << "]" << std::endl; temp_proj.set_target_position(p_player->get_position_ref()); } } - - return true; } +void artificial_inteligence::throw_direction_projectile(int direction) +{ + projectile_list.push_back(projectile(0, direction, get_attack_position(), is_player(), _number)); + projectile &temp_proj = projectile_list.back(); +} + void artificial_inteligence::execute_ai_step_fly() { - //std::cout << "AI::execute_ai_step_fly, _parameter: " << _parameter << std::endl; // INITIALIZATION - if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { must_show_dash_effect = false; previous_position_list.clear(); if (_parameter == AI_ACTION_FLY_OPTION_TO_PLAYER || _parameter == AI_ACTION_FLY_OPTION_DASH_TO_PLAYER) { - std::cout << "AI_ACTION_FLY_OPTION_TO_PLAYER[INIT]" << std::endl; struct_player_dist dist_players = dist_npc_players(); _dest_point = dist_players.pObj->getPosition(); - must_show_dash_effect = true; - - } else if (_parameter == AI_ACTION_FLY_OPTION_TO_RANDOM_POINT) { - /* - int rand_x = rand() % RES_W*2; - int dest_x = position.x + rand_x; - if (realPosition.x > RES_W/2) { - dest_x = position.x - rand_x; + if (_parameter == AI_ACTION_FLY_OPTION_DASH_TO_PLAYER) { + must_show_dash_effect = true; } - int rand_y = rand() % RES_H; - */ + if (dist_players.pObj->getPosition().x < position.x) { + set_direction(ANIM_DIRECTION_LEFT); + } else { + set_direction(ANIM_DIRECTION_RIGHT); + } + } else if (_parameter == AI_ACTION_FLY_OPTION_TO_RANDOM_POINT) { int rand_x = create_rand_x_point(walk_range); int rand_Y = create_rand_y_point(walk_range); - //std::cout << ">>>>>> FLY.RANDOM - pos.x[" << position.x << "], real.x[" << realPosition.x << "], x[" << dest_x << "], y[" << rand_y << "]" << std::endl; _dest_point = st_position(rand_x, rand_Y); } else if (_parameter == AI_ACTION_FLY_OPTION_RANDOM_X) { - //int rand_x = rand() % RES_W; int rand_x = create_rand_x_point(walk_range); - std::cout << ">>>>>>>>>>>>>>>>>>>>> FLY=RAND-X[" << rand_x << "] <<<<<<<<<<<<<<<<<<<<<" << std::endl; _dest_point = st_position(rand_x, position.y); } else if (_parameter == AI_ACTION_FLY_OPTION_RANDOM_Y) { - //int rand_y = rand() % RES_H; int rand_y = create_rand_y_point(walk_range); - //std::cout << ">>>>>>>>>>>>>>>>>>>>> FLY=RAND-Y[" << rand_y << "] <<<<<<<<<<<<<<<<<<<<<" << std::endl; _dest_point = st_position(position.x, rand_y); } else if (_parameter == AI_ACTION_FLY_OPTION_HORIZONTAL_AHEAD) { if (state.direction == ANIM_DIRECTION_LEFT) { @@ -1208,49 +1359,43 @@ void artificial_inteligence::execute_ai_step_fly() _dest_point.x = position.x + frameSize.width/2 + walk_range; } } else if (_parameter == AI_ACTION_FLY_OPTION_UP) { - //std::cout << "FLY::UP - position.y: " << position.y << ", _dest_point.y: " << _dest_point.y << std::endl; _dest_point.y = position.y - walk_range; } else if (_parameter == AI_ACTION_FLY_OPTION_DOWN) { _dest_point.y = position.y + walk_range; } else if (_parameter == AI_ACTION_FLY_OPTION_FALL) { _dest_point.y = RES_H + frameSize.height + 2; } else if (_parameter == AI_ACTION_FLY_OPTION_DRILL_DOWN) { // DRILL_DOWN is similar to move-down, but NPC is ghostly (can walk walls) and when on walls, move 1/4 of speed.Also, it randomizes its x point when restarted - randomize_x_point(TILESIZE*2); _dest_point.y = RES_H + frameSize.height + TILESIZE; _ghost_move_speed_reducer = 4; walk_range = RES_H + TILESIZE*4; } else if (_parameter == AI_ACTION_FLY_OPTION_VERTICAL_CENTER) { _dest_point.y = RES_H/2 - frameSize.height/2; - } else if (_parameter == AI_ACTION_FLY_OPTION_PLAYER_DIRECTION) { struct_player_dist dist_players = dist_npc_players(); if (dist_players.pObj->getPosition().x < position.x) { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); _dest_point.x = position.x - walk_range; } else { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); _dest_point.x = position.x + walk_range; } _dest_point.y = position.y; - - } else if (_parameter == AI_ACTION_FLY_OPTION_OPOSITE_WALL) { if (realPosition.x > RES_W/2) { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); _dest_point.x = position.x - walk_range; } else { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); _dest_point.x = position.x + walk_range; } _dest_point.y = position.y; - //std::cout << "AI::AI_ACTION_FLY_OPTION_OPOSITE_WALL - dest.x: " << _dest_point.x << ", dest.y: " << _dest_point.y << ", pos.x: " << position.x << ", pos.y: " << position.y << std::endl; _origin_point.x = position.x; } else if (_parameter == AI_ACTION_FLY_OPTION_OPOSITE_SHOOT_1) { if (realPosition.x + frameSize.width/2 > RES_W/2) { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); _dest_point.x = position.x - walk_range; } else { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); _dest_point.x = position.x + walk_range; } _dest_point.y = position.y; @@ -1259,12 +1404,11 @@ void artificial_inteligence::execute_ai_step_fly() } else if (_parameter == AI_ACTION_FLY_OPTION_TO_PLAYER_X) { struct_player_dist dist_players = dist_npc_players(); if (dist_players.pObj->getPosition().x < position.x) { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } else { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } _dest_point.x = dist_players.pObj->getPosition().x; - std::cout << "AI_ACTION_FLY_OPTION_TO_PLAYER_X::x: " << _dest_point.x << std::endl; _dest_point.y = position.y; } else if (_parameter == AI_ACTION_FLY_OPTION_TO_PLAYER_Y) { struct_player_dist dist_players = dist_npc_players(); @@ -1280,37 +1424,47 @@ void artificial_inteligence::execute_ai_step_fly() _ai_state.initial_position.x = 0; _ai_state.initial_position.y = position.y; _dest_point.y = position.y; + //std::cout << "### AI_ACTION_FLY_OPTION_ZIGZAG_AHEAD.INIT - direction[" << (int)state.direction << "], pos.x[" << position.x << "], dest.x[" << _dest_point.x << "], dest.y[" << _dest_point.y << "]" << std::endl; + } else if (_parameter == AI_ACTION_FLY_OPTION_DOWN_RANDOM_DIAGONAL) { + _ai_state.initial_position.x = position.x; + _ai_state.initial_position.y = position.y; + _angle = 30 + rand() % 20; + } else if (_parameter == AI_ACTION_FLY_OPTION_DIAGONAL_UP || _parameter == AI_ACTION_FLY_OPTION_DIAGONAL_DOWN) { + _ai_state.initial_position.x = position.x; + _ai_state.initial_position.y = position.y; + if (state.direction == ANIM_DIRECTION_LEFT) { + _dest_point.x = position.x - frameSize.width/2 - walk_range; + } else { + _dest_point.x = position.x + frameSize.width/2 + walk_range; + } + if (_parameter == AI_ACTION_FLY_OPTION_DIAGONAL_UP) { + _dest_point.y = position.y - walk_range; + } else { + _dest_point.y = position.y + walk_range; + } } set_animation_type(ANIM_TYPE_WALK_AIR); - _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; // EXECUTION - } else { - - + } else { + //std::cout << "AI::execute_ai_step_fly::EXECUTE, param[" << _parameter << "]" << std::endl; if (state.animation_type == ANIM_TYPE_TURN && have_frame_graphic(state.direction, state.animation_type, (state.animation_state+1)) == false) { - //std::cout << "*************** artificial_inteligence::execute_ai_step_fly - reached last turn frame, reset to stand" << std::endl; - if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #9" << std::endl; set_animation_type(ANIM_TYPE_STAND); - state.direction = !state.direction; - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - return; - } + set_direction(!state.direction); + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + return; + } if (_parameter == AI_ACTION_FLY_OPTION_HORIZONTAL_AHEAD) { - //std::cout << "artificial_inteligence::execute_ai_step_fly - HORIZONTAL RIGHT" << std::endl; - if (move_to_point(_dest_point, move_speed, 0, is_ghost) == true) { - //std::cout << "AI::execute_ai_step_fly - HORIZONTAL RIGHT - FINISHED" << std::endl; + if (move_to_point(_dest_point, move_speed, 0, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_HORIZONTAL_TURN) { if (state.animation_type != ANIM_TYPE_TURN) { - if (name == "Giant Fly") std::cout << "artificial_inteligence::execute_ai_step_fly - HORIZONTAL TURN" << std::endl; if (have_frame_graphic(state.direction, ANIM_TYPE_TURN, 0) == false) { - if (name == "Giant Fly") std::cout << "#1 - NO TURN GRAPHIC, direction: " << state.direction << std::endl; - state.direction = !state.direction; - if (name == "Giant Fly") std::cout << "#2 - NO TURN GRAPHIC, direction: " << state.direction << std::endl; + set_direction(!state.direction); _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } else { set_animation_type(ANIM_TYPE_TURN); @@ -1320,90 +1474,57 @@ void artificial_inteligence::execute_ai_step_fly() state.animation_timer = timer.getTimer() + 200; } } else if (_parameter == AI_ACTION_FLY_OPTION_UP) { - //std::cout << "artificial_inteligence::execute_ai_step_fly - UP" << std::endl; - if (move_to_point(_dest_point, 0, move_speed, is_ghost) == true) { + if (move_to_point(_dest_point, 0, move_speed, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_DOWN) { - //std::cout << "artificial_inteligence::execute_ai_step_fly - DOWN - dest_point.y: " << _dest_point.y << std::endl; - if (move_to_point(_dest_point, 0, move_speed, is_ghost) == true) { + if (move_to_point(_dest_point, 0, move_speed, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_DRILL_DOWN) { - bool res_move = move_to_point(_dest_point, 0, move_speed, true); - //if (res_move == true || position.y >= RES_H+TILESIZE) { if (position.y >= RES_H+TILESIZE) { position.y = -TILESIZE*2; - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - std::cout << "**** DRILL.FINISHED - move to initial position, position.y[" << position.y << "]" << std::endl; - } - } else if (_parameter == AI_ACTION_FLY_OPTION_FALL) { - //std::cout << "artificial_inteligence::execute_ai_step_fly - DOWN - dest_point.y: " << _dest_point.y << std::endl; - if (move_to_point(_dest_point, 0, move_speed, is_ghost) == true) { - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - } - /* - } else if (_parameter == AI_ACTION_FLY_OPTION_TO_PLAYER) { - struct_player_dist dist_players = dist_npc_players(); - - // @TODO - finish when player was hit, player must set a flag in the enemy to indicate this - if (did_hit_player == true || dist_players.dist < TILESIZE/2) { + randomize_x_point(TILESIZE*3); _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } else { - st_float_position target_pos = st_float_position(dist_players.pObj->getPosition().x, dist_players.pObj->getPosition().y+dist_players.pObj->get_size().height); - int dist_x = position.x - target_pos.x; - int dist_y = position.y - target_pos.y; - int speed_x = 0; - int speed_y = 0; - // if X or Y axis is greather than the other - if (abs(dist_x-dist_y) > move_speed) { - // if X axis is greater, move left/right - if (abs(dist_x) > abs(dist_y)) { - speed_x = move_speed; - // if Y axis is greater, move up/down - } else { - speed_y = move_speed; - } - - // is both are more or less equal, go to diagonal - } else { - speed_x = move_speed; - speed_y = move_speed; + can_move_struct check_move_res = check_can_move_to_point(_dest_point, 0, move_speed, false, false); + float adjusted_move_speed = move_speed; + if (!check_move_res.can_move_y) { + adjusted_move_speed = move_speed / _ghost_move_speed_reducer; } - if (move_to_point(target_pos, speed_x, speed_y, is_ghost) == true) { - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + if (adjusted_move_speed <= 0.0) { + adjusted_move_speed = 1.0; } + move_to_point(_dest_point, 0, adjusted_move_speed, true, false); + } + } else if (_parameter == AI_ACTION_FLY_OPTION_FALL) { + if (move_to_point(_dest_point, 0, move_speed, is_ghost, false) == true) { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } - */ } else if (_parameter == AI_ACTION_FLY_OPTION_TO_PLAYER || _parameter == AI_ACTION_FLY_OPTION_TO_RANDOM_POINT || _parameter == AI_ACTION_FLY_OPTION_RANDOM_X || _parameter == AI_ACTION_FLY_OPTION_RANDOM_Y) { - //std::cout << "artificial_inteligence::execute_ai_step_fly - POSITION[" << position.x << ", " << position.y << "], POINT[" << _dest_point.x << ", " << _dest_point.y << "]" << std::endl; - if (move_to_point(_dest_point, move_speed, move_speed, is_ghost) == true) { - //std::cout << "artificial_inteligence::execute_ai_step_fly: FINISHED" << std::endl; + if (move_to_point(_dest_point, move_speed, move_speed, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_DASH_TO_PLAYER) { - if (move_to_point(_dest_point, move_speed*2, move_speed*2, is_ghost) == true) { - //std::cout << "artificial_inteligence::execute_ai_step_fly: FINISHED" << std::endl; + if (move_to_point(_dest_point, move_speed*2, move_speed*2, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_TO_SAVED_POINT) { - if (move_to_point(_saved_point, move_speed, move_speed, is_ghost) == true) { - //std::cout << "artificial_inteligence::execute_ai_step_fly[SAVED_POINT]: FINISHED" << std::endl; + //std::cout << "AI_ACTION_FLY_OPTION_TO_SAVED_POINT - point[" << _saved_point.x << "][" << _saved_point.y << "]" << std::endl; + if (move_to_point(_saved_point, move_speed, move_speed, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_VERTICAL_CENTER) { - if (move_to_point(_dest_point, 0, move_speed, is_ghost) == true) { + if (move_to_point(_dest_point, 0, move_speed, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_PLAYER_DIRECTION) { - //std::cout << "FLY_PLAYER_DIRECTION(EXEC) - dest.x: " << _dest_point.x << ", pos.x : " << position.x << std::endl; - if (move_to_point(_dest_point, move_speed, 0, is_ghost) == true) { - //std::cout << "FLY_PLAYER_DIRECTION(FINISH)" << std::endl; + if (move_to_point(_dest_point, move_speed, 0, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_OPOSITE_WALL) { - if (move_to_point(_dest_point, move_speed, 0, is_ghost) == true) { + if (move_to_point(_dest_point, move_speed, 0, is_ghost, false) == true) { // invert direction so the character won't be facing the wall invert_left_right_direction(); _ai_state.sub_status = IA_ACTION_STATE_FINISHED; @@ -1413,9 +1534,8 @@ void artificial_inteligence::execute_ai_step_fly() if (dist > 120 * _counter) { _counter++; - int n = 0; int proj_direction = state.direction; - projectile_list.push_back(projectile(_parameter, proj_direction, get_attack_position(), is_player())); + projectile_list.push_back(projectile(_parameter, proj_direction, get_attack_position(), is_player(), _number)); projectile &temp_proj = projectile_list.back(); temp_proj.play_sfx(true); temp_proj.set_owner(this); @@ -1434,7 +1554,7 @@ void artificial_inteligence::execute_ai_step_fly() _did_shot = true; } - if (move_to_point(_dest_point, move_speed, move_speed, is_ghost) == true) { + if (move_to_point(_dest_point, move_speed, move_speed, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_TO_PLAYER_X) { @@ -1443,21 +1563,18 @@ void artificial_inteligence::execute_ai_step_fly() _dest_point.x = dist_players.pObj->getPosition().x; if (dist_players.pObj->getPosition().x < position.x) { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } else { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } - //std::cout << "AI_ACTION_FLY_OPTION_TO_PLAYER_X - is_ghost[" << is_ghost << "], x: " << position.x << ", p.x: " << dist_players.pObj->getPosition().x << std::endl; if (abs(dist_players.pObj->getPosition().x - position.x) < TILESIZE/2) { - //std::cout << "AI_ACTION_FLY_OPTION_TO_PLAYER_X::FINISH #1" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - } else if (move_to_point(_dest_point, move_speed, 0, is_ghost) == true) { - //std::cout << "AI_ACTION_FLY_OPTION_TO_PLAYER_X::FINISH #2" << std::endl; + } else if (move_to_point(_dest_point, move_speed, 0, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_TO_PLAYER_Y) { - if (move_to_point(_dest_point, 0, move_speed, is_ghost) == true) { + if (move_to_point(_dest_point, 0, move_speed, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else if (_parameter == AI_ACTION_FLY_OPTION_ZIGZAG_AHEAD) { @@ -1466,19 +1583,24 @@ void artificial_inteligence::execute_ai_step_fly() _dest_point.y = position.y - TILESIZE; } else if (position.y <= _ai_state.initial_position.y - TILESIZE) { _dest_point.y = position.y + TILESIZE; + } else if (hit_ground() == true) { + _dest_point.y = position.y - TILESIZE; } + //std::cout << "### AI::AI_ACTION_FLY_OPTION_ZIGZAG_AHEAD - pos.y[" << position.y << "], dest.y[" << _dest_point.y << "]" << std::endl; } int pos_x_before = position.x; - if (move_to_point(_dest_point, move_speed, 2, is_ghost) == true || (move_speed != 0 && pos_x_before == position.x)) { - state.direction = !state.direction; + bool res_moved = move_to_point(_dest_point, move_speed, 2, is_ghost, false); + bool reached_point = position.x == _dest_point.x && position.y == _dest_point.y; + + if ((move_blocked_x_axis == true && move_blocked_y_axis == false && (res_moved == true || (move_speed != 0 && pos_x_before == position.x))) || reached_point == true) { + set_direction(!state.direction); if (state.direction == ANIM_DIRECTION_LEFT) { _dest_point.x = position.x - frameSize.width/2 - walk_range; } else { _dest_point.x = position.x + frameSize.width/2 + walk_range; } - //std::cout << "AI::execute_ai_step_fly - HORIZONTAL RIGHT - FINISHED" << std::endl; } } else if (_parameter == AI_ACTION_FLY_OPTION_SIN_AHEAD) { @@ -1487,13 +1609,10 @@ void artificial_inteligence::execute_ai_step_fly() _sin_x += 0.12; float sin_value = (TILESIZE*3)*sin(_sin_x); - //std::cout << "position.x[" << position.x << "], _dest_point.x[" << _dest_point.x << "], dist_y[" << dist_y << "]" << std::endl; - if (position.x == _dest_point.x && dist_y < 0.2) { - std::cout << "AI_ACTION_FLY_OPTION_SIN_AHEAD::FINISH #1" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } else { - if (move_to_point(_dest_point, move_speed, 0, is_ghost) == true) { + if (move_to_point(_dest_point, move_speed, 0, is_ghost, false) == true) { if (dist_y > 0.2) { int move_adjust_y = 0.1; @@ -1507,33 +1626,75 @@ void artificial_inteligence::execute_ai_step_fly() } } - std::cout << "ADJUST-Y[" << move_adjust_y << "], y[" << position.y << "], dest.y[" << _dest_point.y << "], dist_y[" << dist_y << "]" << std::endl; - position.y = _ai_state.initial_position.y + move_adjust_y; } else { - std::cout << "AI_ACTION_FLY_OPTION_SIN_AHEAD::FINISH #2" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } else { // reached x, use small y-movement to reach point position.y = _ai_state.initial_position.y + sin_value; - //std::cout << "_sin_x: " << _sin_x << ", sin_value: [" << sin_value << "], sin-y-diff[" << abs(dist_y-sin_value) << "]" << std::endl; } - } - - - } else { - std::cout << "AI::FLY(EXECUTE) - unknown parameter #" << _parameter << std::endl; + } else if (_parameter == AI_ACTION_FLY_OPTION_DOWN_RANDOM_DIAGONAL) { + position.y += move_speed; + int radius = position.y - _ai_state.initial_position.y; + if (state.direction == ANIM_DIRECTION_LEFT) { + position.x = _ai_state.initial_position.x - (radius * sin(_angle)); + } else { + position.x = _ai_state.initial_position.x + (radius * sin(_angle)); + } + //std::cout << "AI_ACTION_FLY_OPTION_DOWN_RANDOM_DIAGONAL - angle[" << _angle << "], x[" << position.x << "]" << std::endl; + if (position.y > RES_H) { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + position.x = _ai_state.initial_position.x; + } + //var x = radius * Math.sin(Math.PI * 2 * angle / 360); + } else if (_parameter == AI_ACTION_FLY_OPTION_UP_UNTIL_GROUND) { + st_position current_map_point((position.x + frameSize.width/2)/TILESIZE, (position.y + frameSize.height)/TILESIZE); + int lock = gameControl.get_current_map_obj()->getMapPointLock(current_map_point); + if (lock == TERRAIN_UNBLOCKED || lock == TERRAIN_WATER) { + // small adjust to get perfect y + for (int i=move_speed-1; i>0; i--) { + st_position current_map_point((position.x + frameSize.width/2)/TILESIZE, (position.y + i + frameSize.height)/TILESIZE); + int lock = gameControl.get_current_map_obj()->getMapPointLock(current_map_point); + if (lock != TERRAIN_UNBLOCKED && lock != TERRAIN_WATER) { + position.y -= i-1; + break; + } + } + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } else { + position.y -= move_speed; + } + } else if (_parameter == AI_ACTION_FLY_OPTION_DOWN_INTO_GROUND) { + if (position.y + frameSize.height + move_speed < RES_H-TILESIZE/2) { + position.y += move_speed; + } else { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } + } else if (_parameter == AI_ACTION_FLY_OPTION_DIAGONAL_UP || _parameter == AI_ACTION_FLY_OPTION_DIAGONAL_DOWN) { + /* + int move_speed_y = move_speed; + int move_speed_x = move_speed; + if (_parameter == AI_ACTION_FLY_OPTION_DIAGONAL_UP) { + move_speed_y = -move_speed; + } + if (state.direction == ANIM_DIRECTION_DOWN_LEFT) { + int move_speed_x = -move_speed; + } + */ + can_move_struct check_move_res = check_can_move_to_point(_dest_point, move_speed, move_speed, false, false); + if (check_move_res.can_move_x == false || check_move_res.can_move_y == false) { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } + move_to_point(_dest_point, move_speed, move_speed, is_ghost, false); } } } void artificial_inteligence::execute_ai_save_point() { - std::cout << "execute_ai_save_point" << std::endl; if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - std::cout << "execute_ai_save_point INIT/END" << std::endl; _saved_point = position; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; last_execute_time = timer.getTimer() + 20; @@ -1550,21 +1711,16 @@ void artificial_inteligence::execute_ai_step_dash() // check if can't move to the current direction and change to other, if needed if (state.direction == ANIM_DIRECTION_LEFT) { - can_move_struct can_move_left = check_can_move_to_point(st_float_position(position.x-move_speed*4, position.y), -move_speed*2, 0, is_ghost); - std::cout << "#### can_move_left.result[" << (int)can_move_left.result << "], xinc[" << can_move_left.xinc << "], can_move_x[" << can_move_left.can_move_x << "]" << std::endl; + can_move_struct can_move_left = check_can_move_to_point(st_float_position(position.x-move_speed*4, position.y), -move_speed*2, 0, is_ghost, false); if (can_move_left.result != CAN_MOVE_SUCESS || can_move_left.xinc == 0 || can_move_left.can_move_x == false) { - std::cout << "DASH::INVERT #1" << std::endl; - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } } else if (state.direction == ANIM_DIRECTION_RIGHT) { - can_move_struct can_move_right = check_can_move_to_point(st_float_position(position.x+move_speed*4, position.y), move_speed*2, 0, is_ghost); - std::cout << "#### can_move_right.result[" << (int)can_move_right.result << "], xinc[" << can_move_right.xinc << "], can_move_x[" << can_move_right.can_move_x << "]" << std::endl; + can_move_struct can_move_right = check_can_move_to_point(st_float_position(position.x+move_speed*4, position.y), move_speed*2, 0, is_ghost, false); if (can_move_right.result != CAN_MOVE_SUCESS || can_move_right.xinc == 0 || can_move_right.can_move_x == false) { - std::cout << "DASH::INVERT #2" << std::endl; - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } } - std::cout << "DASH::INVERT DEFINE" << std::endl; if (state.direction == ANIM_DIRECTION_LEFT) { _dest_point.x = position.x + frameSize.width/2 - walk_range; @@ -1573,52 +1729,52 @@ void artificial_inteligence::execute_ai_step_dash() } } else if (_parameter == AI_ACTION_DASH_OPTION_LEFT) { _dest_point.x = position.x + frameSize.width/2 - walk_range; - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } else if (_parameter == AI_ACTION_DASH_OPTION_RIGHT) { _dest_point.x = position.x + frameSize.width/2 + walk_range; - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } else if (_parameter == AI_ACTION_DASH_OPTION_TO_PLAYER) { struct_player_dist dist_players = dist_npc_players(); - - //std::cout << "AI::DASH::TO_PLAYER::dist: " << dist_players.dist << std::endl; - if (dist_players.pObj->getPosition().x > (position.x + frameSize.width/2)) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); _dest_point.x = position.x + frameSize.width/2 + walk_range; } else { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); _dest_point.x = position.x + frameSize.width/2 - walk_range; } - //_dest_point.x = dist_players.pObj->getPosition().x; _dest_point.y = position.y; - //std::cout << ">>>>>>>>> AI::DASH::INIT - dest_point.x: " << _dest_point.x << ", walk_range: " << walk_range << ", position.x: " << position.x << std::endl; + } else if (_parameter == AI_ACTION_DASH_OPTION_TO_NEAR_PLAYER) { + st_rectangle player_hitbox = gameControl.get_current_map_obj()->_player_ref->get_hitbox(); + struct_player_dist dist_players = dist_npc_players(); + if (dist_players.pObj->getPosition().x > (position.x + frameSize.width/2)) { + set_direction(ANIM_DIRECTION_RIGHT); + _dest_point.x = player_hitbox.x - (player_hitbox.w*2 + 10); + } else { + set_direction(ANIM_DIRECTION_LEFT); + _dest_point.x = player_hitbox.x + player_hitbox.w - 10; + } + int scroll_x = gameControl.get_current_map_obj()->getMapScrolling().x; + _dest_point.y = position.y; } else if (_parameter == AI_ACTION_DASH_OPTION_OPPOSITE_DIRECTION) { if (realPosition.x > RES_W/2) { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); _dest_point.x = position.x - walk_range; } else { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); _dest_point.x = position.x + walk_range; } - //std::cout << "AI::AI_ACTION_DASH_OPTION_OPPOSITE_DIRECTION - dest.x: " << _dest_point.x << ", dest.y: " << _dest_point.y << ", pos.x: " << position.x << ", pos.y: " << position.y << std::endl; _origin_point.x = position.x; } else { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; // unknown mode - if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #10" << std::endl; set_animation_type(ANIM_TYPE_STAND); } } else { - //std::cout << "###### AI::execute_ai_step_dash - execute - dest_point.x: " << _dest_point.x << ", position.x: " << position.x << std::endl; - if (move_to_point(_dest_point, move_speed*2, 0, is_ghost) == true) { - //std::cout << "AI::DASH::FINISH #1" << std::endl; + if (move_to_point(_dest_point, move_speed*2, 0, is_ghost, false) == true) { _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - //if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #11" << std::endl; set_animation_type(ANIM_TYPE_STAND); } if (abs(_dest_point.x - position.x) < TILESIZE) { - //std::cout << "AI::DASH::FINISH #2 - diff: " << abs(_dest_point.x - position.x) << ", _dest_point.x: " << _dest_point.x << ", position.x: " << position.x << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - //if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #11" << std::endl; set_animation_type(ANIM_TYPE_STAND); } } @@ -1628,14 +1784,14 @@ void artificial_inteligence::execute_ai_step_dash() void artificial_inteligence::execute_ai_step_change_animation_type() { if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - //std::cout << "$$$$$$$$ execute_ai_step_change_animation_type[" << name << "][INIT]" << std::endl; set_animation_type(static_cast(_parameter)); _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { - //std::cout << "$$$$$$$$ execute_ai_step_change_animation_type[" << name << "][EXEC]" << std::endl; - if (_is_last_frame == true) { - _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - //std::cout << "$$$$$$$$ execute_ai_step_change_animation_type[" << name << "][FINISH]" << std::endl; + // some attacks keep enemy in current animation until it's effect is finished, so we check against the next.delay + if (started_action_timer <= timer.getTimer()) { + if (_is_last_frame == true) { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } } } } @@ -1643,19 +1799,13 @@ void artificial_inteligence::execute_ai_step_change_animation_type() void artificial_inteligence::execute_ai_step_change_animation_type_reverse() { if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - - std::cout << "#execute_ai_step_change_animation_type_reverse#START - parameter: " << _parameter << std::endl; - set_animation_type(static_cast(_parameter)); state.animation_inverse = true; advance_to_last_frame(); // always call this once setting animation_inverse to true to avoid false _was_animation_reset _was_animation_reset = false; _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; - std::cout << "#execute_ai_step_change_animation_type_reverse#INITIAL, frame[" << state.animation_state << "/" << frames_count()-1 << "]" << std::endl; } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { - std::cout << "#execute_ai_step_change_animation_type_reverse#EXECUTING, frame[" << state.animation_state << "/" << frames_count()-1 << "]" << std::endl; if (_is_last_frame == true) { - std::cout << "#execute_ai_step_change_animation_type_reverse#FINISHED" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } @@ -1666,16 +1816,99 @@ void artificial_inteligence::execute_ai_wait_random_time() if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { int delay = rand() % _parameter; _ai_timer = timer.getTimer() + delay*1000; - std::cout << "IA_ACTION_STATE_INITIAL - rand: " << delay << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } } -// returns false if can ove and true if blocked -bool artificial_inteligence::move_to_point(st_float_position dest_point, float speed_x, float speed_y, bool can_pass_walls) +void artificial_inteligence::execute_ai_wall_walk() +{ + // INITIALIZATION + if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { + must_show_dash_effect = false; + previous_position_list.clear(); + bool must_turn = false; + if (_parameter == AI_ACTION_WALL_WALK_OPTION_LEFT) { + _dest_point.x = position.x + frameSize.width/2 - walk_range; + _dest_point.y = position.y; + if (state.direction != ANIM_DIRECTION_LEFT) { + must_turn = true; + } + } else if (_parameter == AI_ACTION_WALL_WALK_OPTION_RIGHT) { + if (state.direction != ANIM_DIRECTION_RIGHT) { + must_turn = true; + } + _dest_point.x = position.x + frameSize.width/2 + walk_range; + _dest_point.y = position.y; + } else if (_parameter == AI_ACTION_WALL_WALK_OPTION_UP) { + _dest_point.y = position.y + frameSize.height/2 - walk_range; + _dest_point.x = position.x; + } else if (_parameter == AI_ACTION_WALL_WALK_OPTION_DOWN) { + _dest_point.y = position.y + frameSize.height/2 + walk_range; + _dest_point.x = position.x; + } + + + if (must_turn) { + if (state.animation_type != ANIM_TYPE_TURN && have_frame_graphic(state.direction, ANIM_TYPE_TURN, (state.animation_state+1)) == true) { + set_animation_type(ANIM_TYPE_TURN); + } else { + set_direction(!state.direction); + } + } + + set_animation_type(ANIM_TYPE_WALK_AIR); + _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; + + // EXECUTION + } else { + if (state.animation_type == ANIM_TYPE_TURN && have_frame_graphic(state.direction, state.animation_type, (state.animation_state+1)) == false) { + set_animation_type(ANIM_TYPE_STAND); + set_direction(!state.direction); + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + return; + } + + int move_speed_x = 0; + int move_speed_y = 0; + if (_parameter == AI_ACTION_WALL_WALK_OPTION_LEFT || _parameter == AI_ACTION_WALL_WALK_OPTION_RIGHT) { + move_speed_x = move_speed; + } else if (_parameter == AI_ACTION_WALL_WALK_OPTION_UP || _parameter == AI_ACTION_WALL_WALK_OPTION_DOWN) { + move_speed_y = move_speed; + } + + + // all actions are just move to point-with-wall + if (move_to_point(_dest_point, move_speed_x, move_speed_y, is_ghost, true) == true) { + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; + } + } +} + +// returns false if can move and true if blocked +bool artificial_inteligence::move_to_point(st_float_position dest_point, float speed_x, float speed_y, bool can_pass_walls, bool must_walk_along_wall) { + move_blocked_x_axis = false; + move_blocked_y_axis = false; + can_move_struct move_inc = check_can_move_to_point(dest_point, speed_x, speed_y, can_pass_walls, must_walk_along_wall); + + // decrease move-speed until can move (only for horizontal move, for now) + if (move_inc.can_move_x == false && speed_x != 0 && abs(speed_x) > 1) { + int abs_speed_x = abs(speed_x); + int multiplier = 1; + if (speed_x < 0) { + multiplier = -1; + } + for (int i=abs_speed_x; i>=1; i--) { + move_inc = check_can_move_to_point(dest_point, i*multiplier, speed_y, can_pass_walls, must_walk_along_wall); + if (move_inc.can_move_x == true) { + break; + } + } + } - can_move_struct move_inc = check_can_move_to_point(dest_point, speed_x, speed_y, can_pass_walls); + move_blocked_x_axis = !move_inc.can_move_x; + move_blocked_y_axis = !move_inc.can_move_y; + //std::cout << "AI::move_to_point[" << name << "] - pos.x[" << position.x << "], dest.x[" << dest_point.x << "], move_inc.result[" << (int)move_inc.result << "], move_inc.can_move_x[" << move_inc.can_move_x << "], move_inc.can_move_y[" << move_inc.can_move_y << "]" << std::endl; if (move_inc.result == CAN_MOVE_LEAVE_TRUE) { return true; @@ -1697,20 +1930,21 @@ bool artificial_inteligence::move_to_point(st_float_position dest_point, float s position.y += move_inc.yinc; } } + return false; } -can_move_struct artificial_inteligence::check_can_move_to_point(st_float_position dest_point, float speed_x, float speed_y, bool can_pass_walls) +can_move_struct artificial_inteligence::check_can_move_to_point(st_float_position dest_point, float speed_x, float speed_y, bool can_pass_walls, bool must_walk_along_wall) { float xinc = 0; float yinc = 0; // invert direction if needed - if (position.x > dest_point.x && state.direction != ANIM_DIRECTION_LEFT) { - state.direction = ANIM_DIRECTION_LEFT; + if (xinc != 0 && position.x > dest_point.x && state.direction != ANIM_DIRECTION_LEFT) { + set_direction(ANIM_DIRECTION_LEFT); } - if (position.x < dest_point.x && state.direction != ANIM_DIRECTION_RIGHT) { - state.direction = ANIM_DIRECTION_RIGHT; + if (xinc != 0 && position.x < dest_point.x && state.direction != ANIM_DIRECTION_RIGHT) { + set_direction(ANIM_DIRECTION_RIGHT); } if (abs(dest_point.x - position.x) < speed_x) { @@ -1724,6 +1958,7 @@ can_move_struct artificial_inteligence::check_can_move_to_point(st_float_positio float block_speed_y = speed_y; if (can_pass_walls == true) { + must_walk_along_wall = false; // can't have both flags enabled if (_ghost_move_speed_reducer > 0 && speed_x != 0) { block_speed_x = speed_x/_ghost_move_speed_reducer; if ((int)block_speed_x == 0) { @@ -1737,8 +1972,6 @@ can_move_struct artificial_inteligence::check_can_move_to_point(st_float_positio if (_ghost_move_speed_reducer > 0 && speed_y != 0) { block_speed_y = (int)(speed_y/_ghost_move_speed_reducer); - std::cout << "AI::move_to_point - _ghost_move_speed_reducer[" << _ghost_move_speed_reducer << "], speed_y[" << speed_y << "], block_speed_y[" << block_speed_y << "]" << std::endl; - if (block_speed_y == 0) { if (speed_y > 0) { block_speed_y = 1; @@ -1754,13 +1987,10 @@ can_move_struct artificial_inteligence::check_can_move_to_point(st_float_positio bool test_x_move = test_change_position(block_speed_x, 0); bool test_y_move = test_change_position(0, block_speed_y); - std::cout << "AI::move_to_point - GHOST.test_x_move[" << test_x_move << "], test_y_move[" << test_y_move << "]" << std::endl; - if (!test_x_move) { speed_x = block_speed_x; } if (!test_y_move) { - std::cout << "AI::move_to_point - GHOST, REDUCE::Y" << std::endl; speed_y = block_speed_y; } } @@ -1778,15 +2008,19 @@ can_move_struct artificial_inteligence::check_can_move_to_point(st_float_positio yinc = -speed_y; } - //if (name == "KURUPIRA BOT") std::cout << ">> AI::move_to_point - xinc: " << xinc << ", yinc: " << yinc << std::endl; - // checking bool can_move_x = true; bool can_move_y = true; can_move_x = test_change_position(xinc, 0); can_move_y = test_change_position(0, yinc); - //if (name == "SHIELD GROUND") std::cout << ">> AI::move_to_point - can_move_x: " << can_move_x << ", can_move_y: " << can_move_y << std::endl; + //std::cout << "AI::check_can_move_to_point - x[" << position.x << "], xinc[" << xinc << "], can_move_x[" << can_move_x << "]" << std::endl; + + if (must_walk_along_wall == true) { + if (check_moving_along_wall(xinc, yinc) == false) { + return can_move_struct(0, 0, false, false, CAN_MOVE_LEAVE_TRUE); + } + } if (xinc == 0 && yinc == 0) { return can_move_struct(0, 0, false, false, CAN_MOVE_LEAVE_TRUE); @@ -1802,11 +2036,15 @@ can_move_struct artificial_inteligence::check_can_move_to_point(st_float_positio if (state.direction == ANIM_DIRECTION_RIGHT) { map_point.x = (position.x + frameSize.width)/TILESIZE; } + st_position current_map_point((position.x + frameSize.width/2)/TILESIZE, (position.y + frameSize.height + 3)/TILESIZE); int map_lock = gameControl.get_current_map_obj()->getMapPointLock(map_point); - //if (!is_player()) std::cout << "AI::move_to_point[" << name << "] - HOLE check: " << map_lock << " - direction: " << (int)state.direction << std::endl; - if (map_lock == TERRAIN_UNBLOCKED || map_lock == TERRAIN_WATER || (map_lock == TERRAIN_EASYMODEBLOCK && game_save.difficulty != DIFFICULTY_EASY) || (map_lock == TERRAIN_HARDMODEBLOCK && game_save.difficulty != DIFFICULTY_HARD)) { - //if (!is_player()) std::cout << "AI::move_to_point[" << name << "] - HOLE AHEAD - direction: " << (int)state.direction << std::endl; - return can_move_struct(0, 0, false, false, CAN_MOVE_LEAVE_TRUE); + int current_map_lock = gameControl.get_current_map_obj()->getMapPointLock(current_map_point); + + if ((can_fall_during_move == false || can_fall_during_move == true && map_lock == TERRAIN_SPIKE) && map_lock != current_map_lock) { + if (map_lock == TERRAIN_UNBLOCKED || map_lock == TERRAIN_WATER || (map_lock == TERRAIN_EASYMODEBLOCK && game_save.difficulty != DIFFICULTY_EASY) || (map_lock == TERRAIN_HARDMODEBLOCK && game_save.difficulty != DIFFICULTY_HARD)) { + //std::cout << "AI::check_can_move_to_point - LEAVE #3 - can_fall_during_move[" << can_fall_during_move << "]" << std::endl; + return can_move_struct(0, 0, false, false, CAN_MOVE_LEAVE_TRUE); + } } } // always ahead will try to jump over obstables checking them a whole TILE ahead of time @@ -1823,28 +2061,62 @@ can_move_struct artificial_inteligence::check_can_move_to_point(st_float_positio - if (name == "KURUPIRA BOT") std::cout << "pos.x/TILESIZE: " << (position.x/TILESIZE) << ", map_point_ahead.x: " << map_point_ahead.x << ", map_point_ahead.y: " << map_point_ahead.y << ", map_lock_ahead: " << map_lock_ahead << ", map_lock_top: " << map_lock_top << std::endl; if (hit_ground() == true && speed_y == 0 && speed_x != 0) { // check if is trying to move on X axis only if ((map_lock_ahead != TERRAIN_WATER && map_lock_ahead != TERRAIN_UNBLOCKED) && (map_lock_top == TERRAIN_WATER || map_lock_top == TERRAIN_UNBLOCKED)) { // check that the terrain over the block is free - //std::cout << ">> AI::move_to_point - TRY TO JUMP <<" << std::endl; /// @TODO - implement have a way to change AI type only for a short period then return to the current one _current_ai_type = AI_ACTION_JUMP; _parameter = AI_ACTION_JUMP_OPTION_ONCE; _ai_state.sub_status = IA_ACTION_STATE_INITIAL; _ai_state.main_status = 0; - //std::cout << "SET JUMP >>>>> artificial_inteligence::execute_ai_step[" << name << "] - _number: " << _number << ", _current_ai_type: " << _current_ai_type << std::endl; return can_move_struct(0, 0, false, false, CAN_MOVE_LEAVE_FALSE); } } } + //if (name == "BOUNCING BALL") std::cout << "AI::check_can_move_to_point - END, xinc[" << xinc << "], can_move_x[" << can_move_x << "], can_move_y[" << can_move_y << "]" << std::endl; return can_move_struct(xinc, yinc, can_move_x, can_move_y, CAN_MOVE_SUCESS); } +bool artificial_inteligence::check_moving_along_wall(int xinc, int yinc) +{ + if (xinc != 0) { + st_position check_point_top; + st_position check_point_bottom; + if (xinc > 0) { + check_point_top = st_position((position.x+frameSize.width+xinc)/TILESIZE, (position.y-4)/TILESIZE); + check_point_bottom = st_position((position.x+frameSize.width+xinc)/TILESIZE, (position.y+frameSize.height+4)/TILESIZE); + } else { + check_point_top = st_position((position.x+xinc)/TILESIZE, (position.y-4)/TILESIZE); + check_point_bottom = st_position((position.x+xinc)/TILESIZE, (position.y+frameSize.height+4)/TILESIZE); + } + int point_lock_top = gameControl.get_current_map_obj()->getMapPointLock(check_point_top); + int point_lock_bottom = gameControl.get_current_map_obj()->getMapPointLock(check_point_bottom); + + if (point_lock_top == TERRAIN_UNBLOCKED && point_lock_bottom == TERRAIN_UNBLOCKED) { + return false; + } + } else if (yinc != 0) { + st_position check_point_left; + st_position check_point_right; + if (yinc > 0) { + check_point_left = st_position((position.x-4)/TILESIZE, (position.y+frameSize.height+yinc)/TILESIZE); + check_point_right = st_position((position.x+4+frameSize.width)/TILESIZE, (position.y+frameSize.height+yinc)/TILESIZE); + } else { + check_point_left = st_position((position.x-4)/TILESIZE, position.y/TILESIZE); + check_point_right = st_position((position.x+4+frameSize.width)/TILESIZE, (position.y+yinc)/TILESIZE); + } + int point_lock_left = gameControl.get_current_map_obj()->getMapPointLock(check_point_left); + int point_lock_right = gameControl.get_current_map_obj()->getMapPointLock(check_point_right); + if (point_lock_left == TERRAIN_UNBLOCKED && point_lock_right == TERRAIN_UNBLOCKED) { + return false; + } + } + return true; +} + void artificial_inteligence::randomize_x_point(int max_adjust) { int rand_x = rand() % max_adjust*2; - std::cout << ">>artificial_inteligence::randomize_x_point - max_adjust: " << max_adjust << ", start_point.x: " << start_point.x << ", rand_x: " << rand_x << std::endl; position.x = position.x + rand_x - max_adjust; } @@ -1911,36 +2183,26 @@ st_position artificial_inteligence::create_rand_point(int max_range) void artificial_inteligence::execute_ai_step_jump() { - //std::cout << "AI::execute_ai_step_jump" << std::endl; -/* -enum AI_ACTION_JUMP_OPTION_LIST { - AI_ACTION_JUMP_OPTION_LEFT, - AI_ACTION_JUMP_OPTION_RIGHT, - AI_ACTION_JUMP_OPTION_UP, - AI_ACTION_JUMP_OPTION_TO_PLAYER, - AI_ACTION_JUMP_OPTION_TO_ROOF, - AI_ACTION_JUMP_OPTION_TO_SAVED_POINT }; -*/ if (_parameter == AI_ACTION_JUMP_OPTION_TO_ROOF) { - //std::cout << ">> AI:exec[" << name << "] JUMP TO ROOF <<" << std::endl; ia_action_jump_to_roof(); } else if (_parameter == AI_ACTION_JUMP_OPTION_TO_PLAYER) { - //std::cout << ">> AI:exec[" << name << "] JUMP TO PLAYER <<" << std::endl; ia_action_jump_to_player(); } else if (_parameter == AI_ACTION_JUMP_OPTION_AHEAD) { - //std::cout << ">> AI:exec[" << name << "] JUMP TO AHEAD <<" << std::endl; ia_action_jump_ahead(); + } else if (_parameter == AI_ACTION_JUMP_OPTION_LONG_AHEAD) { + ia_action_jump_long_ahead(); } else if (_parameter == AI_ACTION_JUMP_OPTION_TO_RANDOM_POINT) { - //std::cout << ">> AI:exec[" << name << "] JUMP TO RANDOM <<" << std::endl; ia_action_jump_to_random(); } else if (_parameter == AI_ACTION_JUMP_OPTION_ONCE) { - //std::cout << ">> AI:exec[" << name << "] JUMP TO ONCE <<" << std::endl; ia_action_jump_once(); } else if (_parameter == AI_ACTION_JUMP_OPTION_UP) { - //std::cout << ">> AI:exec[" << name << "] JUMP TO UP <<" << std::endl; ia_action_jump_up(); - } else { - std::cout << "*********** artificial_inteligence::execute_ai_step_jump - extra-parameter _parameter[" << _parameter << "] not implemented ******" << std::endl; + } else if (_parameter == AI_ACTION_JUMP_OPTION_TO_PLAYER_DIRECTION) { + ia_action_jump_once(); + } else if (_parameter == AI_ACTION_JUMP_OPTION_TELEPORT_IN) { + ia_action_jump_teleport_in(); + } else if (_parameter == AI_ACTION_JUMP_OPTION_TELEPORT_OUT) { + ia_action_jump_teleport_out(); } } @@ -1958,7 +2220,6 @@ int artificial_inteligence::find_wall(float initial_x, int direction) } else if (direction == ANIM_DIRECTION_DOWN) { pos_x = gameControl.get_current_map_obj()->get_first_lock_on_right(ini_x); } - std::cout << "AI::find_wall - pos_x: " << pos_x << std::endl; return pos_x; } @@ -1969,18 +2230,14 @@ int artificial_inteligence::find_wall(float initial_x, int direction) void artificial_inteligence::execute_ai_step_jump_to_wall() { if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - std::cout << "AI::execute_ai_step_jump_to_wall - INIT" << std::endl; struct_player_dist dist_players = dist_npc_players(); if (dist_players.pObj->getPosition().x > position.x) { - std::cout << "AI::execute_ai_step_jump_to_wall - face RIGHT" << std::endl; - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } else { - std::cout << "AI::execute_ai_step_jump_to_wall - face LEFT" << std::endl; - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } int pos_x = find_wall(position.x, state.direction); if (pos_x == -1) { // no wall found to grab - std::cout << "AI::execute_ai_step_jump_to_wall - no wall found" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } _dest_point.x = pos_x; @@ -1990,7 +2247,6 @@ void artificial_inteligence::execute_ai_step_jump_to_wall() int dist_y = _dest_point.y - position.y; _diagonal_speed.x = move_speed*2; _diagonal_speed.y = (_diagonal_speed.x * dist_y) / dist_x; - std::cout << ">>>>> AI::execute_ai_step_jump_to_wall - dist_x: " << dist_x << ", _diagonal_speed.x: " << _diagonal_speed.x << ", _diagonal_speed.y: " << _diagonal_speed.y << std::endl; if (_diagonal_speed.y < 0) { // move_to_point always use positive values, and adjust depending on target itself _diagonal_speed.y = _diagonal_speed.y * -1; } @@ -1999,22 +2255,17 @@ void artificial_inteligence::execute_ai_step_jump_to_wall() set_animation_type(ANIM_TYPE_JUMP); state.animation_state = 0; } else if (_ai_state.sub_status == IA_ACTION_STATE_EXECUTING) { - if (move_to_point(_dest_point, _diagonal_speed.x, _diagonal_speed.y, is_ghost) == true) { - std::cout << ">>>>> AI::execute_ai_step_jump_to_wall - FINISHED" << std::endl; + if (move_to_point(_dest_point, _diagonal_speed.x, _diagonal_speed.y, is_ghost, false) == true) { state.animation_state = 0; set_animation_type(ANIM_TYPE_WALK_AIR); _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - state.direction = !state.direction; + set_direction(!state.direction); } } } void artificial_inteligence::execute_ai_replace_itself(bool morph) { - - std::cout << "execute_ai_replace_itself[" << name << "]: _ai_state.sub_status: " << _ai_state.sub_status << ", _reaction_state: " << _reaction_state << ", _dead_state: " << _dead_state << ", hitPoints.current: " << hitPoints.current << std::endl; - - std::cout << "execute_ai_replace_itself::EXEC" << std::endl; // kills/remove itself _dead_state = 2; st_hit_points hp_copy = hitPoints; @@ -2022,14 +2273,16 @@ void artificial_inteligence::execute_ai_replace_itself(bool morph) _ai_state.sub_status = IA_ACTION_STATE_FINISHED; // spawn new npc classnpc* npc_ref = gameControl.get_current_map_obj()->spawn_map_npc(_parameter, st_position(position.x, position.y+frameSize.height/2), state.direction, false, false); + // is executing reaction and is dying and is map-boss -> set child as new map-boss if (_reaction_state == 1 && _reaction_type == 2 && _is_stage_boss == true) { - std::cout << "########################## SET NEW BOSS (REPLACE)" << std::endl; _is_stage_boss = false; npc_ref->set_stage_boss(true); + hp_copy.total = BOSS_INITIAL_HP; + hp_copy.current = hitPoints.total; + npc_ref->npc_set_hp(hp_copy); // is morphing into the new NPC, copy some properties } else if (morph == true) { - std::cout << "############# MORPH #############" << std::endl; if (_is_stage_boss) { _is_stage_boss = false; npc_ref->set_stage_boss(true); @@ -2037,37 +2290,30 @@ void artificial_inteligence::execute_ai_replace_itself(bool morph) // @TODO: the boss HP HUD gets lost with morph // _dead_state = DEAD_STATE_IGNORE; npc_ref->npc_set_hp(hp_copy); - // adjust Y post because of heigth difference // - st_float_position new_pos = position; - new_pos.y += frameSize.height - npc_ref->get_size().height; - npc_ref->npc_set_position(new_pos); - npc_ref->npc_set_direction(state.direction); - npc_ref->npc_set_initialized(3); } + st_float_position new_pos = position; + //new_pos.y += frameSize.height - npc_ref->get_size().height; // adjust Y post because of heigth difference // + npc_ref->npc_set_position(new_pos); + npc_ref->npc_set_initialized(4); } void artificial_inteligence::execute_ai_step_spawn_npc() { - // limit for spawed npcs - - //std::cout << "%%%%%%%%%%%%%%%% EXECUTE-SPAWN-NPC %%%%%%%%%%%%%%%%%%%%" << std::endl; // still spawning an NPC, leave if (gameControl.get_current_map_obj()->_npc_spawn_list.size() > 0) { - //std::cout << ">>>>>>> still executing a previous spawn, leave" << std::endl; + //std::cout << "AI::execute_ai_step_spawn_npc - still waiting for last spawn, LEAVE!" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; return; } - int child_count = gameControl.get_current_map_obj()->child_npc_count(get_number()); + int child_count = gameControl.get_current_map_obj()->child_npc_count(start_point); if (child_count >= MAX_NPC_SPAWN) { - //std::cout << ">> CAN'T SPAWN - child-count[" << child_count << "], max[" << MAX_NPC_SPAWN << "]" << std::endl; + //std::cout << "AI::execute_ai_step_spawn_npc - reached MAX_NPC_SPAWN, LEAVE!" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; return; } - //std::cout << ">> SPAWNNPC - child-count[" << child_count << "], max[" << MAX_NPC_SPAWN << "]" << std::endl; - if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { if (state.animation_type == ANIM_TYPE_JUMP) { set_animation_type(ANIM_TYPE_JUMP_ATTACK); @@ -2078,34 +2324,33 @@ void artificial_inteligence::execute_ai_step_spawn_npc() if (name == "TOP HAT") { npc_ref = gameControl.get_current_map_obj()->spawn_map_npc(_parameter, st_position(position.x, position.y), state.direction, false, true); } else { - npc_ref = gameControl.get_current_map_obj()->spawn_map_npc(_parameter, st_position(position.x, position.y+frameSize.height/2), state.direction, false, false); + st_position_int8 attack_arm_pos = GameMediator::get_instance()->get_enemy(_number)->attack_arm_pos; + st_position proj_pos; + if (state.direction == ANIM_DIRECTION_LEFT) { + proj_pos = st_position(position.x + attack_arm_pos.x, position.y + attack_arm_pos.y); + } else { + proj_pos = st_position(position.x + frameSize.width - attack_arm_pos.x, position.y + attack_arm_pos.y); + } + proj_pos.x -= GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x; + proj_pos.y -= GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.y; + npc_ref = gameControl.get_current_map_obj()->spawn_map_npc(_parameter, proj_pos, state.direction, false, false); } if (npc_ref == NULL) { - std::cout << "ERROR: Could not create child NPC, leaving" << std::endl; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; return; } - npc_ref->set_parent_id(get_number()); + npc_ref->set_parent_id(start_point); // is executing reaction and is dying and is map-boss -> set child as new map-boss if (_reaction_state == 1 && _reaction_type == 2 && _is_stage_boss == true) { - #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "AI::SPAWN, SET NEW BOSS"); - #endif - std::cout << "########################## SET NEW BOSS (SPAWN)" << std::endl; + RockbotLogger::get_instance()->write("AI::SPAWN, SET NEW BOSS"); _is_stage_boss = false; npc_ref->set_stage_boss(true); } } _ai_state.sub_status = IA_ACTION_STATE_FINISHED; - - -#ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "AI::SPAWN, DONE"); -#endif - } void artificial_inteligence::execute_ai_circle_player() @@ -2123,15 +2368,13 @@ void artificial_inteligence::execute_ai_circle_player() _target_point.y = dist_players.pObj->getPosition().y + dist_players.pObj->get_size().height / 2; if (dist_players.pObj->getPosition().x > position.x) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); _dest_point.x = dist_players.pObj->getPosition().x - (_parameter * TILESIZE) - (frameSize.width *2); } else { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); _dest_point.x = dist_players.pObj->getPosition().x + (_parameter * TILESIZE) + (frameSize.width * 2); } - std::cout << ">>>> player.x[" << dist_players.pObj->getPosition().x << "], dest.x[" << _dest_point.x << "], pos.x[" << position.x << "]" << std::endl; - _execution_state = 0; _dest_point.y = _target_point.y; // @TODO - use TURN frames to leave stand @@ -2141,7 +2384,7 @@ void artificial_inteligence::execute_ai_circle_player() } else { if (_execution_state == 0) { // moving from stand point to near-player - if (move_to_point(_dest_point, move_speed, move_speed, true) == true) { + if (move_to_point(_dest_point, move_speed, move_speed, true, false) == true) { _execution_state = 1; _counter = 0; if (state.direction == ANIM_DIRECTION_LEFT) { @@ -2149,7 +2392,6 @@ void artificial_inteligence::execute_ai_circle_player() } else { _angle = 3.14; } - std::cout << "#0 x[" << position.x << "], y[" << position.y << "]" << ", _target_point.x[" << _target_point.x << "], _target_point.y[" << _target_point.y << "]" << std::endl; radius = _parameter * TILESIZE + frameSize.width; } // circle player (3 and half laps) @@ -2157,8 +2399,6 @@ void artificial_inteligence::execute_ai_circle_player() float x = _target_point.x + radius * cos(_angle) - (TILESIZE*1.5); float y = _target_point.y + radius * sin(_angle); - //std::cout << "CIRCLE radius[" << radius << "], counter[" << _counter << "], angle[" << _angle << "] a[" << _target_point.x << "], b[" << _target_point.y << "], x[" << x << "], y[" << y << "]" << std::endl; - //move_to_point(st_float_position(x, y), move_speed, move_speed, is_ghost); position.x = x; position.y = y; @@ -2190,7 +2430,7 @@ void artificial_inteligence::execute_ai_circle_player() _execution_state = 3; // returning to stand } else if (_execution_state == 3) { - if (move_to_point(_dest_point, move_speed, move_speed, true) == true) { + if (move_to_point(_dest_point, move_speed, move_speed, true, false) == true) { _execution_state = 0; _ai_state.sub_status = IA_ACTION_STATE_FINISHED; } @@ -2202,41 +2442,33 @@ void artificial_inteligence::ia_action_teleport() { // go teleporting if (_ai_state.sub_status == IA_ACTION_STATE_INITIAL) { - std::cout << ">> AI::ia_action_teleport::INIT <<" << std::endl; if (state.animation_type != ANIM_TYPE_TELEPORT) { /// @TODO - must use teleport - std::cout << ">> AI::ia_action_teleport(INIT) - set anim_type to ANIM_TYPE_TELEPORT <<" << std::endl; // remove all projectiles, so we don't end with a circle one around an emey that moved clean_effect_projectiles(); set_animation_type(ANIM_TYPE_TELEPORT); } else { if (_is_last_frame == true) { // finished teleport animation - std::cout << ">> AI::ia_action_teleport(INIT) - animation was reset " << std::endl; _ai_state.sub_status = IA_ACTION_STATE_EXECUTING; state.invisible = true; // find wall to the left if (_parameter == AI_ACTION_TELEPORT_OPTION_LEFT || (_parameter == AI_ACTION_TELEPORT_OPTION_AHEAD && state.direction == ANIM_DIRECTION_LEFT)) { - std::cout << "#1 - AI::AI_ACTION_TELEPORT_LEFT/AHEAD - x: " << position.x << std::endl; st_position dest_pos = gameControl.get_current_map_obj()->get_first_lock_in_direction(st_position(position.x, position.y+frameSize.height/2), st_size(walk_range, 0), ANIM_DIRECTION_LEFT); position.x = dest_pos.x; // find wall to the right } else if (_parameter == AI_ACTION_TELEPORT_OPTION_RIGHT || (_parameter == AI_ACTION_TELEPORT_OPTION_AHEAD && state.direction == ANIM_DIRECTION_RIGHT)) { st_position dest_pos = gameControl.get_current_map_obj()->get_first_lock_in_direction(st_position(position.x+frameSize.width, position.y+frameSize.height/2), st_size(walk_range, 0), ANIM_DIRECTION_RIGHT); - std::cout << "#1 - AI::AI_ACTION_TELEPORT_RIGHT/AHEAD - x: " << position.x << ", walk_range[" << walk_range << "], dest.x[" << dest_pos.x << "]" << std::endl; position.x = dest_pos.x-frameSize.width; } else if (_parameter == AI_ACTION_TELEPORT_OPTION_TO_PLAYER) { struct_player_dist dist_npc_player = dist_npc_players(); position.x = dist_npc_player.pObj->getPosition().x; } else if (_parameter == AI_ACTION_TELEPORT_OPTION_RANDOM_X) { - std::cout << "#1 - AI::AI_ACTION_TELEPORT_OPTION_RANDOM_X - x: " << position.x << std::endl; int rand_x = create_rand_x_point(walk_range); st_position dest_pos = gameControl.get_current_map_obj()->get_first_lock_in_direction(st_position(position.x, position.y+frameSize.height/2), st_size(abs(position.x-rand_x), 0), (rand_x > position.x)); position.x = dest_pos.x; - //std::cout << "#2 - AI::AI_ACTION_TELEPORT_OPTION_RANDOM_X - x: " << position.x << std::endl; } else if (_parameter == AI_ACTION_TELEPORT_OPTION_RANDOM_Y) { - std::cout << "#1 - AI::AI_ACTION_TELEPORT_OPTION_RANDOM_Y - y: " << position.x << std::endl; int rand_y = create_rand_y_point(walk_range); int direction = ANIM_DIRECTION_UP; st_position pos(position.x+frameSize.width/2, position.y); @@ -2250,13 +2482,9 @@ void artificial_inteligence::ia_action_teleport() } else { position.y = dest_pos.y; } - std::cout << "#2 - AI::AI_ACTION_TELEPORT_OPTION_RANDOM_Y - y: " << position.x << std::endl; } else if (_parameter == AI_ACTION_TELEPORT_OPTION_RANDOM_POINT) { st_position rand_pos = create_rand_point(walk_range); - std::cout << "#1 - AI::AI_ACTION_TELEPORT_OPTION_RANDOM_POINT- current.x: " << position.x << ", current.y: " << position.y << std::endl; - std::cout << "#1 - AI::AI_ACTION_TELEPORT_OPTION_RANDOM_POINT- rand_pos.x: " << rand_pos.x << ", rand_pos.y: " << rand_pos.y << std::endl; - // if y is -TILESIZE or less, use half screen-height, as it can be a boss out of screen due to initial pos if (position.y < -TILESIZE) { position.y = RES_H/2; @@ -2289,34 +2517,23 @@ void artificial_inteligence::ia_action_teleport() if (direction == ANIM_DIRECTION_DOWN_LEFT || direction == ANIM_DIRECTION_DOWN_RIGHT) { position.y -= frameSize.height; } - - //teleport_find_limit_x((position.x + walk_range + frameSize.width), (rand_x > position.x)); - std::cout << "#2 - AI::AI_ACTION_TELEPORT_OPTION_RANDOM_POINT - x: " << position.x << ", y: " << position.y << std::endl; - } else { - std::cout << "AI::TELEPORT unknown parameter #" << _parameter << std::endl; } _ai_timer = timer.getTimer() + 600; _was_animation_reset = false; _ignore_gravity = true; state.animation_state = 0; - } else { - std::cout << "AI::TELEPORT[INIT] waiting for animation to reset <<" << std::endl; } } // return from teleporting } else { if (state.invisible == true) { - std::cout << ">> AI::ia_action_teleport - EXEC - MAKE VISIBLE - animation_type: " << state.animation_type << " <<" << std::endl; state.invisible = false; state.animation_inverse = true; /// @TODO: to avoid this problem,c reate method to start inverse animation /// advance_to_last_frame(); // always call this once setting animation_inverse to true to avoid false _was_animation_reset _was_animation_reset = false; - //std::cout << ">> AI::ia_action_teleport.EXEC.SET-LAST-FRAME, state.animation_state: " << state.animation_state << std::endl; } if (_was_animation_reset == true) { - std::cout << ">> AI::ia_action_teleport - FINISH, x[" << position.x << "], state.animation_state: " << state.animation_state << " <<" << std::endl; - //if (_show_reset_stand) std::cout << "AI::RESET_TO_STAND #12" << std::endl; set_animation_type(ANIM_TYPE_STAND); _ai_state.sub_status = IA_ACTION_STATE_FINISHED; _ignore_gravity = false; @@ -2329,16 +2546,38 @@ void artificial_inteligence::ia_action_teleport() int artificial_inteligence::get_ai_type() { int type = -1; + // check for error + if (_number < 0 || _number >= GameMediator::get_instance()->ai_list.size()) { + char int_to_str[256]; + sprintf(int_to_str, "%d", _reaction_type); + RockbotLogger::get_instance()->write(std::string("AI::get_ai_type, invalid number[").append(std::string(int_to_str)).append(std::string("]"))); + return 0; + } + if (_reaction_type < 0 || _reaction_type >= MAX_AI_REACTIONS) { + char int_to_str[256]; + sprintf(int_to_str, "%d", _reaction_type); + RockbotLogger::get_instance()->write(std::string("AI::get_ai_type, invalid reaction_type[").append(std::string(int_to_str)).append(std::string("]"))); + _reaction_type = 0; + return 0; + } + + if (_ai_chain_n < 0 || _ai_chain_n >= AI_MAX_STATES) { + char int_to_str[256]; + sprintf(int_to_str, "%d", _ai_chain_n); + RockbotLogger::get_instance()->write(std::string("AI::get_ai_type, invalid _ai_chain_n[").append(std::string(int_to_str)).append(std::string("]"))); + _ai_chain_n = 0; + return 0; + } + if (_reaction_state == 0 || GameMediator::get_instance()->ai_list.at(_number).reactions[_reaction_type].action == -1) { type = GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].action; _parameter = GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].extra_parameter; - //std::cout << ">> AI::get_ai_type - _number: " << _number << ", _ai_chain_n: " << _ai_chain_n << ", action: " << type << ", extra_parameter: " << _parameter << std::endl; - } else { + //std::cout << "#1 PARAM set to [" << _parameter << "]" << std::endl; + } else if (reaction_loop_check.size() == 0) { type = GameMediator::get_instance()->ai_list.at(_number).reactions[_reaction_type].action; _parameter = GameMediator::get_instance()->ai_list.at(_number).reactions[_reaction_type].extra_parameter; - //std::cout << ">> AI::execute_ai_step - REACTION-MODE - _number: " << _number << ", _reaction_type: " << _reaction_type << ", type: " << type << ", _parameter: " << _parameter << std::endl; + //std::cout << "#2 PARAM set to [" << _parameter << "]" << std::endl; } - //std::cout << "AI::get_ai_type ==> _current_ai_type: " << _current_ai_type << ", new_type: " << type << ", _parameter: " << _parameter << std::endl; return type; } @@ -2363,12 +2602,20 @@ bool artificial_inteligence::uses_fly_fall() void artificial_inteligence::invert_left_right_direction() { if (state.direction == ANIM_DIRECTION_LEFT) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } else if (state.direction == ANIM_DIRECTION_RIGHT) { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } } + +void artificial_inteligence::execute_play_sfx() +{ + // TODO: add options + soundManager.play_shared_sfx("dinosaur_growl.wav"); + _ai_state.sub_status = IA_ACTION_STATE_FINISHED; +} + bool artificial_inteligence::is_teleporting() { if (_current_ai_type == AI_ACTION_TELEPORT) { diff --git a/character/artificial_inteligence.h b/character/artificial_inteligence.h index f8b3b3cd..5ad5cd11 100644 --- a/character/artificial_inteligence.h +++ b/character/artificial_inteligence.h @@ -4,6 +4,7 @@ #include "character.h" #include +#define LONG_JUMP_DIST 7 /** * @brief AI sub-state, indicates if the current state is starting (must set initial values), executing or finishing (must set next step and set values) @@ -122,17 +123,15 @@ class artificial_inteligence : public character * @brief */ void ia_action_jump_to_player(); - void ia_action_jump_to_point(st_position point); - void ia_action_jump_to_random(); - void ia_action_jump_ahead(); - - + void ia_action_jump_long_ahead(); + int calc_jump_pos_x(int distance); void ia_action_jump_once(); - void ia_action_jump_up(); + void ia_action_jump_teleport_in(); + void ia_action_jump_teleport_out(); /** * @brief @@ -190,55 +189,26 @@ class artificial_inteligence : public character * @brief */ void execute_ai_step_jump_to_wall(); - - void execute_ai_replace_itself(bool morph); - void execute_ai_step_spawn_npc(); - void execute_ai_circle_player(); - void ia_action_teleport(); - void check_ai_reaction(); - void define_ai_next_step(); - void execute_ai_step(); - void execute_ai_step_walk(); - - /** - * @brief - */ void execute_ai_action_wait_until_player_in_range(); - - /** - * @brief - * @param n - * @param invert_direction - */ void execute_ai_action_trow_projectile(Uint8 n, bool invert_direction); - bool throw_projectile(int projectile_type, bool invert_direction); - - /** - * @brief - */ + void throw_direction_projectile(int direction); void execute_ai_step_fly(); - void execute_ai_save_point(); - - /** - * @brief - */ void execute_ai_step_dash(); - void execute_ai_step_change_animation_type(); - void execute_ai_step_change_animation_type_reverse(); - void execute_ai_wait_random_time(); + void execute_ai_wall_walk(); + void execute_ai_step_jump(); /** * @brief moves to a point, returns true when point was reached or can't reach the target @@ -248,31 +218,23 @@ class artificial_inteligence : public character * @param can_pass_walls the NPC can cross walls like a ghost or not * @return bool true -> point reached */ - bool move_to_point(st_float_position dest_point, float speed_x, float speed_y, bool can_pass_walls); - - can_move_struct check_can_move_to_point(st_float_position dest_point, float speed_x, float speed_y, bool can_pass_walls); - - + bool move_to_point(st_float_position dest_point, float speed_x, float speed_y, bool can_pass_walls, bool must_walk_along_wall); + can_move_struct check_can_move_to_point(st_float_position dest_point, float speed_x, float speed_y, bool can_pass_walls, bool must_walk_along_wall); + bool check_moving_along_wall(int xinc, int yinc); void randomize_x_point(int max_adjust); - int create_rand_x_point(int max_range); int create_rand_y_point(int max_range); st_position create_rand_point(int max_range); - - void execute_ai_step_jump(); - int find_wall(float initial_x, int direction); - int get_ai_type(); - bool always_move_ahead() const; // indicates if this NPC will always go on in AI - bool uses_fly_fall(); // uses to respawn it inside holes - void invert_left_right_direction(); - - - + void adjust_position_opposite_wall(); + void execute_play_sfx(); + void execute_shot_multiple_projectile(); + void execute_explode_itself(); + void execute_throw_item(); protected: st_size distance; /**< TODO */ @@ -289,18 +251,20 @@ class artificial_inteligence : public character // "external" members - static std::vector *player_list; // reference to the players list /**< TODO */ - unsigned int _ai_timer; // used to not execute AI before a while /**< TODO */ - short _ai_chain_n; // indicates witch one of the four AI actions is the NPC on /**< TODO */ - short _ghost_move_speed_reducer; // some NPCs walk slowly when throught walls - struct st_position start_point; /**< TODO */ + static std::vector *player_list; // reference to the players list /**< TODO */ + unsigned int _ai_timer; // used to not execute AI before a while /**< TODO */ + double started_action_timer = 0; + short _ai_chain_n; // indicates witch one of the four AI actions is the NPC on /**< TODO */ + short _ghost_move_speed_reducer; // some NPCs walk slowly when throught walls + struct st_position start_point; unsigned int _auto_respawn_timer; // used to check if enought time has passed to auto-respawn trajectory_parabola *_trajectory_parabola; // used for jumping to a specific point bool _did_shot; // used to avoid shooting multiple times + double shot_timer = 0; // used to check if we need to keep the enemy in animation for a given period st_float_position _diagonal_speed; float _sin_x; // used for sinoidal movement - int _reaction_state; // used to control reaction so it won't execute two times or over an executing state + int _reaction_state = 0; // used to control reaction so it won't execute two times or over an executing state // 0 - waiting, 1 - executing int _reaction_type; // 1: near, 2: hit, 3: dead int _parameter; // stores the extra-parameter @@ -315,6 +279,17 @@ class artificial_inteligence : public character int radius; short int jump_attack_type; // used by jump attack to store attack-type, if any. otherwise, it is set as -1 bool did_hit_player; // when player collides with this enemy, it will set this flag as on, so the enemy knows it + bool is_shooter = false; + double shooter_timer = 0; + short shoot_direction = ANIM_DIRECTION_LEFT; + bool shot_success = false; + + unsigned long execution_timer = 0; // used to timeout an operation if the enemy got stuck into something + unsigned int move_to_point_tries = 0; // used to check if an enemy can't move to a point several times to interrupt AI + bool move_blocked_y_axis = false; + bool move_blocked_x_axis = false; + std::vector reaction_loop_check; + int first_unlocked_from_bottom = RES_H/2; }; #endif // ARTIFICIAL_INTELIGENCE_H diff --git a/character/character.cpp b/character/character.cpp index 5d8bf0c1..d9a610b1 100644 --- a/character/character.cpp +++ b/character/character.cpp @@ -1,19 +1,19 @@ #include "character.h" -#include "game.h" -#include "timerlib.h" +#include "../game.h" +#include "../timerlib.h" +#include "shareddata.h" extern game gameControl; -#include "timerlib.h" extern timerLib timer; -#include "soundlib.h" +#include "../soundlib.h" extern soundLib soundManager; -#include "inputlib.h" +#include "../inputlib.h" extern inputLib input; -#include "game_mediator.h" +#include "../game_mediator.h" #ifdef ANDROID #include @@ -21,6 +21,7 @@ extern inputLib input; #define STAIR_ANIMATION_WAIT_FRAMES 10 #define STAIRS_GRAB_TIMEOUT 200 +#define SLIDE_Y_ADJUST 12 extern bool GAME_FLAGS[FLAG_COUNT]; @@ -31,9 +32,6 @@ extern CURRENT_FILE_FORMAT::st_save game_save; extern FREEZE_EFFECT_TYPES freeze_weapon_effect; extern int freeze_weapon_id; -extern CURRENT_FILE_FORMAT::st_game_config game_config; - - // initialize static member static std::map _character_frames_surface; @@ -44,7 +42,7 @@ static std::map _character_frames_surface; character::character() : hitPoints(1, 1), last_hit_time(0), is_player_type(false), _platform(NULL), hit_animation_timer(0), hit_moved_back_n(0), jump_button_released(true), attack_button_released(true), dead(false), charging_color_n(0), charging_color_timer(0), shield_type(0), _moving_platform_timer(0), position(), _number(0), _super_jump(false), _force_jump(false), _teleport_minimal_y(0), _is_falling(false), _dead_state(0), slide_type(0), _water_splash(false), _has_background(false), hit_duration(300), _is_boss(false), _is_stage_boss(false), is_ghost(false) { _was_animation_reset = false; - move_speed = 2.0; + move_speed = 2.0 * SharedData::get_instance()->get_movement_multiplier(); accel_speed_y = 1; gravity_y = 0.25; @@ -53,7 +51,7 @@ character::character() : hitPoints(1, 1), last_hit_time(0), is_player_type(false can_fly = false; attack_state = ATTACK_NOT; max_projectiles = 1; - _debug_char_name = "MUMMY BOT"; + _debug_char_name = "PLAYER_0"; _stairs_stopped_count = 0; _charged_shot_projectile_id = -1; _normal_shot_projectile_id = 0; @@ -101,7 +99,6 @@ void character::char_update_real_position() { if (gameControl.get_current_map_obj() != NULL) { realPosition.x = position.x - (int)gameControl.get_current_map_obj()->getMapScrolling().x; realPosition.y = position.y - (int)gameControl.get_current_map_obj()->getMapScrolling().y; - //std::cout << ">>>> show::char_update_real_position - realPosition.y: " << realPosition.y << ", pos.y: " << position.y << ", gameControl.get_current_map_obj()->getMapScrolling().y: " << gameControl.get_current_map_obj()->getMapScrolling().y << std::endl; } else { realPosition.x = position.x; realPosition.y = position.y; @@ -114,7 +111,6 @@ st_float_position character::get_screen_position_from_point(st_float_position po if (gameControl.get_current_map_obj() != NULL) { res_pos.x = pos.x - (int)gameControl.get_current_map_obj()->getMapScrolling().x; res_pos.y = pos.y - (int)gameControl.get_current_map_obj()->getMapScrolling().y; - //std::cout << ">>>> show::char_update_real_position - realPosition.y: " << realPosition.y << ", pos.y: " << position.y << ", gameControl.get_current_map_obj()->getMapScrolling().y: " << gameControl.get_current_map_obj()->getMapScrolling().y << std::endl; } else { res_pos.x = pos.x; res_pos.y = pos.y; @@ -126,7 +122,6 @@ st_float_position character::get_screen_position_from_point(st_float_position po // // // ********************************************************************************************** // void character::charMove() { - int mapLock = 0; bool moved = false; float temp_move_speed = move_speed; @@ -154,11 +149,8 @@ void character::charMove() { } - //if (is_player()) std::cout << "CHAR::CHARMOVE - _fractional_move_speed: " << _fractional_move_speed << std::endl; - if (gameControl.get_current_map_obj() == NULL) { - std::cout << "# CHAR::MOVE::NO-MAP" << std::endl; return; // error - can't execute this action without an associated map } @@ -170,17 +162,12 @@ void character::charMove() { int map_point_x = (position.x+frameSize.width/2)/TILESIZE; int map_point_y = (position.y+frameSize.height)/TILESIZE; int bottom_point_lock = gameControl.get_current_map_obj()->getMapPointLock(st_position(map_point_x, map_point_y)); - //std::cout << "map.x: " << map_point_x << ", map.y: " << map_point_y << ", bottom_point_lock: " << bottom_point_lock << std::endl; - if (state.frozen == true) { - std::cout << "CHAR::charMove - timer: " << timer.getTimer() << ", frozen_timer: " << state.frozen_timer << std::endl; if (state.frozen_timer < timer.getTimer()) { state.frozen = false; } else { // if is player, check collision agains NPCs to leave freeze if (is_player()) { - std::cout << "CHAR::charMove::frozen - check collision (is_player)" << std::endl; - std::cout << "collision_player_npcs #1" << std::endl; classnpc* npc_touch = gameControl.get_current_map_obj()->collision_player_npcs(this, 0, 0); if (npc_touch != NULL) { if (npc_touch->get_size().height > this->get_size().height) { @@ -204,10 +191,7 @@ void character::charMove() { if (state.animation_type == ANIM_TYPE_HIT) { - //if (is_player()) std::cout << "hit_moved_back_n: " << hit_moved_back_n << ", get_hit_push_back_n(): " << get_hit_push_back_n() << std::endl; - if (hit_moved_back_n < get_hit_push_back_n()) { - //std::cout << ">>>>>>>>>>>>> ANIM_TYPE_HIT::PUSHBACK #2" << std::endl; if (state.direction == ANIM_DIRECTION_LEFT) { moveCommands.left = 0; @@ -226,7 +210,6 @@ void character::charMove() { } } else { - if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #Z" << std::endl; set_animation_type(ANIM_TYPE_STAND); hit_moved_back_n = 0; } @@ -235,7 +218,7 @@ void character::charMove() { if (moveCommands.left == 1 && position.x > 0 && state.animation_type != ANIM_TYPE_SLIDE && is_in_stairs_frame() == false) { // check inverting direction if (state.animation_type != ANIM_TYPE_HIT && state.direction != ANIM_DIRECTION_LEFT) { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); return; } @@ -245,17 +228,19 @@ void character::charMove() { if (state.animation_type == ANIM_TYPE_HIT) { hit_moved_back_n += temp_move_speed; } - if (mapLock == BLOCK_UNBLOCKED || mapLock == BLOCK_WATER || mapLock == BLOCK_Y) { + if (mapLock == BLOCK_UNBLOCKED || mapLock == BLOCK_WATER || mapLock == BLOCK_Y || mapLock == BLOCK_QUICKSAND) { if (mapLock == BLOCK_UNBLOCKED || mapLock == BLOCK_Y) { position.x -= i + gameControl.get_current_map_obj()->get_last_scrolled().x; } else if (mapLock == BLOCK_WATER) { position.x -= i*WATER_SPEED_MULT + gameControl.get_current_map_obj()->get_last_scrolled().x; - } + } else if (mapLock == BLOCK_QUICKSAND) { + position.x -= i*QUICKSAND_SPEED_MULT + gameControl.get_current_map_obj()->get_last_scrolled().x; + } if (state.animation_type != ANIM_TYPE_HIT) { if (is_player() && state.direction == ANIM_DIRECTION_RIGHT && is_in_stairs_frame() != true) { position.x -= PLAYER_RIGHT_TO_LEFT_DIFF; } - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } else { gravity(false); return; @@ -275,35 +260,47 @@ void character::charMove() { if (is_player() && state.direction == ANIM_DIRECTION_RIGHT && is_in_stairs_frame() != true) { position.x -= PLAYER_RIGHT_TO_LEFT_DIFF; } - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } if (moveCommands.left != 1 && moveCommands.right == 1 && state.animation_type != ANIM_TYPE_SLIDE && is_in_stairs_frame() == false) { if (state.animation_type != ANIM_TYPE_HIT && state.direction != ANIM_DIRECTION_RIGHT) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); return; } + if (state.animation_type == ANIM_TYPE_HIT) { + hit_moved_back_n += temp_move_speed; + } + + if (is_on_quicksand()) { + temp_move_speed = QUICKSAND_JUMP_LIMIT/2; + } + for (float i=temp_move_speed; i>=0.1; i--) { - if (state.animation_type == ANIM_TYPE_HIT) { - hit_moved_back_n += temp_move_speed; + // movement is too small to change a pixel in player movement, ignore it + int adjusted_real_pos = (int)(realPosition.x + i); + int real_pos = (int)realPosition.x; + if (adjusted_real_pos == real_pos) { + break; } if (is_player() == false || (realPosition.x + i + frameSize.width/2) < RES_W) { st_map_collision map_col = map_collision(i, 0, gameControl.get_current_map_obj()->getMapScrolling()); mapLock = map_col.block; - //mapLock = gameControl.getMapPointLock(st_position((position.x + frameSize.width + i)/TILESIZE, (position.y + frameSize.height/2)/TILESIZE)); - if (mapLock == BLOCK_UNBLOCKED || mapLock == BLOCK_WATER || mapLock == BLOCK_Y) { - //std::cout << "character::charMove - temp_move_speed: " << temp_move_speed << ", gameControl.get_current_map_obj()->get_last_scrolled().x: " << gameControl.get_current_map_obj()->get_last_scrolled().x << std::endl; + + if (mapLock == BLOCK_UNBLOCKED || mapLock == BLOCK_WATER || mapLock == BLOCK_Y || mapLock == BLOCK_QUICKSAND) { if (mapLock == TERRAIN_UNBLOCKED || mapLock == BLOCK_Y) { position.x += i - gameControl.get_current_map_obj()->get_last_scrolled().x; } else if (mapLock == BLOCK_WATER) { position.x += i*WATER_SPEED_MULT - gameControl.get_current_map_obj()->get_last_scrolled().x; + } else if (mapLock == BLOCK_QUICKSAND) { + position.x += i*QUICKSAND_SPEED_MULT + gameControl.get_current_map_obj()->get_last_scrolled().x; } if (state.animation_type != ANIM_TYPE_HIT) { if (is_player() && state.direction == ANIM_DIRECTION_LEFT && is_in_stairs_frame() != true) { position.x += PLAYER_RIGHT_TO_LEFT_DIFF; } - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } else { gravity(false); return; @@ -316,6 +313,8 @@ void character::charMove() { } moved = true; break; + } else { + moved = false; } } } @@ -324,7 +323,7 @@ void character::charMove() { if (is_player() && state.direction == ANIM_DIRECTION_LEFT && is_in_stairs_frame() != true) { position.x += PLAYER_RIGHT_TO_LEFT_DIFF; } - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } // Ice inertia @@ -332,6 +331,7 @@ void character::charMove() { if (moved == true) { if (moveCommands.right == 1) { + std::cout << "ICE MOVE" << std::endl; st_map_collision map_col = map_collision(1, 0, gameControl.get_current_map_obj()->getMapScrolling()); mapLock = map_col.block; if (mapLock == BLOCK_UNBLOCKED || mapLock == BLOCK_WATER || mapLock == BLOCK_Y) { @@ -350,30 +350,22 @@ void character::charMove() { if (inertia_xinc != 0) { if (state.direction == ANIM_DIRECTION_LEFT) { if (position.x - inertia_xinc < 0) { - std::cout << "INERTIA::STOP #1" << std::endl; _inertia_obj.stop(); } else { st_map_collision map_col = map_collision(-inertia_xinc, 0, gameControl.get_current_map_obj()->getMapScrolling()); mapLock = map_col.block; if (mapLock == BLOCK_UNBLOCKED || mapLock == BLOCK_WATER || mapLock == BLOCK_Y) { - //std::cout << "inertia CONTINUE, pos.x: " << position.x << ", mapLock: " << mapLock << std::endl; position.x -= inertia_xinc; - //} else { - //std::cout << "inertia DONT EXECUTE, pos.x: " << position.x << ", mapLock: " << mapLock << std::endl; } } } else { if (realPosition.x+inertia_xinc > RES_W) { - //std::cout << "INERTIA::STOP #2" << std::endl; _inertia_obj.stop(); } else { st_map_collision map_col = map_collision(inertia_xinc, 0, gameControl.get_current_map_obj()->getMapScrolling()); mapLock = map_col.block; if (mapLock == BLOCK_UNBLOCKED || mapLock == BLOCK_WATER || mapLock == BLOCK_Y) { - //std::cout << "inertia CONTINUE, pos.x: " << position.x << ", mapLock: " << mapLock << std::endl; position.x += inertia_xinc; - //} else { - //std::cout << "inertia DONT EXECUTE, pos.x: " << position.x << ", mapLock: " << mapLock << std::endl; } } } @@ -402,28 +394,22 @@ void character::charMove() { } if (is_in_stairs_frame() && (top_terrain == TERRAIN_UNBLOCKED || top_terrain == TERRAIN_WATER || top_terrain == TERRAIN_STAIR)) { position.y -= temp_move_speed * STAIRS_MOVE_MULTIPLIER; - position.x = stairs_pos.x * TILESIZE - 6; + position.x = stairs_pos.x * TILESIZE - (frameSize.width-TILESIZE)/2; } // out of stairs } else { int map_terrain = gameControl.get_current_map_obj()->getMapPointLock(st_position(((position.x+frameSize.width/2)/TILESIZE), ((position.y+frameSize.height-4)/TILESIZE))); - //std::cout << ">> map_terrain: " << map_terrain << ", _dropped_from_stairs: " << _dropped_from_stairs << std::endl; if (_dropped_from_stairs == false && map_terrain == TERRAIN_STAIR) { // check stairs bottom (leaving) - //if (is_player()) std::cout << "STAIRS SEMI - SET #1" << std::endl; set_animation_type(ANIM_TYPE_STAIRS_SEMI); position.y -= temp_move_speed * STAIRS_MOVE_MULTIPLIER; } else if (state.animation_type == ANIM_TYPE_STAIRS_SEMI) { - //if (is_player()) std::cout << "CHAR::RESET_TO_STAND #A" << std::endl; set_animation_type(ANIM_TYPE_STAND); - //std::cout << "LEAVE STAIRS (BOTTOM->UP)" << std::endl; position.y -= 2; } } } - - if (moveCommands.down == 1 && state.animation_type != ANIM_TYPE_SLIDE && state.animation_type != ANIM_TYPE_STAIRS_ATTACK) { st_position stairs_pos_center = is_on_stairs(st_rectangle(position.x, position.y+frameSize.height/2, frameSize.width, frameSize.height/2)); bool is_already_on_stairs = is_in_stairs_frame(); @@ -433,7 +419,6 @@ void character::charMove() { if (is_already_on_stairs == true) { // if frame is semi, but already entered whole body, change to full-stairs frame if (state.animation_type == ANIM_TYPE_STAIRS_SEMI && stairs_pos_center.x != -1 && _stairs_falling_timer < timer.getTimer()) { - //std::cout << "STAIRS *MOVE* - SET #2" << std::endl; set_animation_type(ANIM_TYPE_STAIRS_MOVE); } @@ -445,11 +430,9 @@ void character::charMove() { // if bottom point is not stairs, leave it if (bottom_point_lock != TERRAIN_STAIR) { if (stairs_pos_center.x == -1 && (bottom_point_lock == TERRAIN_UNBLOCKED || bottom_point_lock == TERRAIN_WATER)) { - if (is_player()) std::cout << "CHAR::RESET_TO_JUMP #A" << std::endl; set_animation_type(ANIM_TYPE_JUMP); } if (bottom_point_lock != TERRAIN_UNBLOCKED && bottom_point_lock != TERRAIN_WATER) { - if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #B, bottom_point_lock[" << bottom_point_lock << "]" << std::endl; set_animation_type(ANIM_TYPE_STAND); } } @@ -459,13 +442,9 @@ void character::charMove() { // over stairs, enter it st_position stairs_pos_bottom = is_on_stairs(st_rectangle(position.x, position.y+frameSize.height, frameSize.width, frameSize.height/2)); if (stairs_pos_bottom.x != -1) { - //std::cout << "STAIRS SEMI - SET #2" << std::endl; set_animation_type(ANIM_TYPE_STAIRS_SEMI); - - //std::cout << "### STAIRS-DOWN #2 ###" << std::endl; - position.y += temp_move_speed * STAIRS_MOVE_MULTIPLIER; - position.x = stairs_pos_bottom.x * TILESIZE - 6; + position.x = stairs_pos_bottom.x * TILESIZE - (frameSize.width-TILESIZE)/2; } } } @@ -481,7 +460,6 @@ void character::charMove() { } else if ((moveCommands.down != 0 || moveCommands.up != 0) && _stairs_falling_timer < timer.getTimer()) { _stairs_stopped_count = 0; if (state.animation_type == ANIM_TYPE_STAIRS) { - //std::cout << "STAIRS *MOVE* - SET #3" << std::endl; set_animation_type(ANIM_TYPE_STAIRS_MOVE); } } @@ -506,27 +484,18 @@ void character::charMove() { if (is_player_type && moved == false && resJump == false && res_slide == false) { //if (state.animation_type != ANIM_TYPE_WALK) { - if (is_in_stairs_frame() == false && state.animation_type != ANIM_TYPE_STAND && state.animation_type != ANIM_TYPE_JUMP && state.animation_type != ANIM_TYPE_JUMP_ATTACK && state.animation_type != ANIM_TYPE_TELEPORT && state.animation_type != ANIM_TYPE_SHIELD && state.animation_type != ANIM_TYPE_TELEPORT && state.animation_type != ANIM_TYPE_HIT && state.animation_type != ANIM_TYPE_SLIDE && (is_on_attack_frame() == false || (is_on_attack_frame() == true && state.attack_timer+ATTACK_DELAY < timer.getTimer()))) { - //if (is_player()) std::cout << "********* reset to stand - on_stairs_frame: " << is_in_stairs_frame() << ", state.animation_type: " << state.animation_type << std::endl; - if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #D" << std::endl; + if (is_in_stairs_frame() == false && state.animation_type != ANIM_TYPE_STAND && state.animation_type != ANIM_TYPE_JUMP && state.animation_type != ANIM_TYPE_JUMP_ATTACK && state.animation_type != ANIM_TYPE_TELEPORT && state.animation_type != ANIM_TYPE_SHIELD && state.animation_type != ANIM_TYPE_HIT && state.animation_type != ANIM_TYPE_SLIDE && (is_on_attack_frame() == false || (is_on_attack_frame() == true && state.attack_timer+ATTACK_DELAY < timer.getTimer()))) { set_animation_type(ANIM_TYPE_STAND); } - //std::cout << "charMove - ANIM_TYPE_HIT: " << ANIM_TYPE_HIT << ", animation_type: " << state.animation_type << ", timer.getTimer(): " << timer.getTimer() << ", hit_duration+last_hit_time: " << hit_duration+last_hit_time << std::endl; if (state.animation_type == ANIM_TYPE_HIT && timer.getTimer() > hit_duration/2+last_hit_time) { // finished hit time - //if (is_player()) std::cout << "state.animation_type SET to STAND " << std::endl; - if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #E" << std::endl; set_animation_type(ANIM_TYPE_STAND); } } - //if (is_player()) std::cout << "pos.x: " << position.x << ", pos.y: " << position.y << std::endl; - if (_dropped_from_stairs == true) { if (timer.getTimer() > hit_duration+last_hit_time) { - std::cout << "RESET _dropped_from_stairs flag #1" << std::endl; _dropped_from_stairs = false; } else if (hit_ground() == true) { - std::cout << "RESET _dropped_from_stairs flag #2" << std::endl; _dropped_from_stairs = false; } } @@ -551,7 +520,6 @@ void character::clear_move_commands() moveCommands.down = 0; moveCommands.left = 0; moveCommands.right = 0; - //std::cout << ">>> moveCommands.attack::RESET #3" << std::endl; moveCommands.attack = 0; moveCommands.jump = 0; moveCommands.start = 0; @@ -594,12 +562,10 @@ ATTACK_TYPES character::check_must_attack(bool always_charged) return ATTACK_TYPE_NOATTACK; } if (graphLib.character_graphics_list.find(name) == graphLib.character_graphics_list.end()) { - std::cout << "CHAR::ATTACK::ERROR: could not find character graphics!" << std::endl; return ATTACK_TYPE_NOATTACK; } if (state.animation_type == ANIM_TYPE_SLIDE) { - //std::cout << "character::attack - LEAVE #2" << std::endl; return ATTACK_TYPE_NOATTACK; } @@ -614,7 +580,7 @@ ATTACK_TYPES character::check_must_attack(bool always_charged) int now_timer = timer.getTimer(); int time_diff = now_timer - attack_button_pressed_timer; - if (game_config.turbo_mode == true && moveCommands.attack != 0) { + if (SharedData::get_instance()->game_config.turbo_mode == true && moveCommands.attack != 0) { if (now_timer < state.attack_timer + TURBO_ATTACK_INTERVAL) { return ATTACK_TYPE_NOATTACK; } else { @@ -624,15 +590,13 @@ ATTACK_TYPES character::check_must_attack(bool always_charged) // button changed from released to pressed if (moveCommands.attack != 0 && attack_button_last_state == 0) { - //std::cout << "CHAR::check_must_attack - ATTACK NORMAL" << std::endl; return ATTACK_TYPE_NORMAL; // button changed from pressed to released and char can use charged attacks - } else if (game_config.turbo_mode == false && _charged_shot_projectile_id > 0 && moveCommands.attack == 0 && attack_button_last_state == 1) { + } else if (SharedData::get_instance()->game_config.turbo_mode == false && _charged_shot_projectile_id > 0 && moveCommands.attack == 0 && attack_button_last_state == 1) { // @TODO use super charged time also if (time_diff >= CHARGED_SHOT_TIME) { return ATTACK_TYPE_FULLYCHARGED; } else if (time_diff >= CHARGED_SHOT_INITIAL_TIME) { - std::cout << "time_diff: " << time_diff << std::endl; return ATTACK_TYPE_SEMICHARGED; } } @@ -645,7 +609,7 @@ void character::check_charging_colors(bool always_charged) int now_timer = timer.getTimer(); int attack_diff_timer = now_timer-attack_button_pressed_timer; - if (game_config.turbo_mode == true) { + if (SharedData::get_instance()->game_config.turbo_mode == true) { return; } @@ -660,9 +624,6 @@ void character::check_charging_colors(bool always_charged) return; } - - //std::cout << "_charged_shot_projectile_id[" << _charged_shot_projectile_id << "]" << std::endl; - if (_charged_shot_projectile_id > 0 && attack_diff_timer > CHARGED_SHOT_INITIAL_TIME && attack_diff_timer < CHARGED_SHOT_TIME && attack_button_last_state == 1 && moveCommands.attack == 1 && _simultaneous_shots < 2) { if (is_player() && soundManager.is_playing_repeated_sfx() == false) { soundManager.play_repeated_sfx(SFX_CHARGING1, 0); @@ -687,7 +648,7 @@ void character::check_charging_colors(bool always_charged) } } } - if (_charged_shot_projectile_id > 0 && is_player() && attack_diff_timer >= CHARGED_SHOT_TIME && attack_button_last_state == 1 && moveCommands.attack == 1) { + if (_charged_shot_projectile_id > 0 && is_player() && attack_diff_timer >= CHARGED_SHOT_TIME && attack_button_last_state == 1 && moveCommands.attack == 1 && !is_dead()) { if (soundManager.is_playing_repeated_sfx() == true && soundManager.get_repeated_sfx_n() == SFX_CHARGING1) { soundManager.stop_repeated_sfx(); soundManager.play_repeated_sfx(SFX_CHARGING2, 255); @@ -730,7 +691,7 @@ st_position character::get_attack_position(short direction) } if (is_player() == false) { st_position_int8 attack_arm_pos = GameMediator::get_instance()->get_enemy(_number)->attack_arm_pos; - if (attack_arm_pos.x >= 1 || attack_arm_pos.y >= 1) { + if (attack_arm_pos.x != 0 || attack_arm_pos.y >= 1) { if (direction == ANIM_DIRECTION_LEFT) { proj_pos = st_position(position.x + attack_arm_pos.x, position.y + attack_arm_pos.y); } else { @@ -746,7 +707,6 @@ st_position character::get_attack_position(short direction) void character::attack(bool dont_update_colors, short updown_trajectory, bool always_charged) { if (attack_state != ATTACK_NOT && (timer.getTimer()-state.attack_timer) >= (graphLib.character_graphics_list.find(name)->second).frames[state.direction][state.animation_type][state.animation_state].delay) { - //std::cout << "character::attack - shoot projectile END" << std::endl; attack_state = ATTACK_NOT; } @@ -778,20 +738,15 @@ void character::attack(bool dont_update_colors, short updown_trajectory, bool al if (attack_id != -1) { - std::cout << "character::attack - attack_id: " << attack_id << std::endl; - - //if (!is_player()) { std::cout << "CHAR::attack::attack_id: " << attack_id << std::endl; } if (attack_id == _charged_shot_projectile_id || attack_id == game_data.semi_charged_projectile_id) { if (is_player() && soundManager.is_playing_repeated_sfx() == true) { soundManager.stop_repeated_sfx(); } } - - //std::cout << "character::attack - shoot projectile" << std::endl; st_position proj_pos = get_attack_position(); - projectile_list.push_back(projectile(attack_id, state.direction, proj_pos, is_player())); + projectile_list.push_back(projectile(attack_id, state.direction, proj_pos, is_player(), _number)); projectile &temp_proj = projectile_list.back(); temp_proj.set_is_permanent(); temp_proj.play_sfx(!is_player()); @@ -806,7 +761,7 @@ void character::attack(bool dont_update_colors, short updown_trajectory, bool al if (state.direction == ANIM_DIRECTION_RIGHT) { pos_x_second = proj_pos.x-TILESIZE; } - projectile_list.push_back(projectile(attack_id, state.direction, st_position(pos_x_second, proj_pos.y+5), is_player())); + projectile_list.push_back(projectile(attack_id, state.direction, st_position(pos_x_second, proj_pos.y+5), is_player(), _number)); projectile &temp_proj2 = projectile_list.back(); temp_proj2.set_is_permanent(); temp_proj2.set_owner(this); @@ -858,7 +813,6 @@ void character::attack(bool dont_update_colors, short updown_trajectory, bool al } else if (is_in_stairs_frame()) { set_animation_type(ANIM_TYPE_STAIRS_ATTACK); } else if (state.animation_type == ANIM_TYPE_WALK) { - //std::cout << "+++++++++++ CHARACTER - set animation to ANIM_TYPE_WALK_ATTACK" << std::endl; set_animation_type(ANIM_TYPE_WALK_ATTACK); } } @@ -870,37 +824,25 @@ void character::attack(bool dont_update_colors, short updown_trajectory, bool al void character::advance_frameset() { - //if (is_player()) std::cout << "character::show - direction: " << state.direction << ", type: " << state.animation_type << ", state: " << state.animation_state << "\n"; - //[CHAR_ANIM_DIRECTION_COUNT][ANIM_TYPE_COUNT][ANIM_FRAMES_COUNT] if (state.direction > CHAR_ANIM_DIRECTION_COUNT) { - //if (is_player()) std::cout << "WARNING - character::show - (" << name << ") error, direction value " << state.direction << " is invalid" << std::endl; - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); return; } if (state.animation_type > ANIM_TYPE_COUNT) { - //if (is_player()) std::cout << "character::show - error, type value " << state.direction << " is invalid" << std::endl; return; } if ((is_player() && state.animation_state > MAX_PLAYER_SPRITES) || (!is_player() && state.animation_state > MAX_NPC_SPRITES)) { - //if (is_player()) std::cout << "character::show - error, animation_state value " << state.animation_state << " is invalid. state.animation_type: " << state.animation_type << std::endl; - - //std::cout << "### RESET-FRAME-N #1 ###" << std::endl; state.animation_state = 0; return; } if (have_frame_graphic(state.direction, state.animation_type, state.animation_state) == false) { - //if (!is_player()) std::cout << "CHAR::advance_frameset - reset frameset animation" << std::endl; _was_animation_reset = true; - - //std::cout << "### RESET-FRAME-N #2 ###" << std::endl; state.animation_state = 0; _is_last_frame = true; } else { if (have_frame_graphic(state.direction, state.animation_type, state.animation_state+1) == false) { - //if (!is_player()) std::cout << "CHAR::advance_frameset - _is_last_frame TRUE" << std::endl; _is_last_frame = true; } else { - //if (is_player()) std::cout << "CHAR::advance_frameset - _is_last_frame FALSE" << std::endl; _is_last_frame = false; } } @@ -928,12 +870,14 @@ void character::consume_projectile() // ********************************************************************************************** // void character::show() { if (is_dead() == true) { + //if (!is_player()) std::cout << "CHAR::show[" << name << "] - LEAVE #1" << std::endl; return; } // update real position char_update_real_position(); if (!is_player() && is_on_visible_screen() == false) { + //if (!is_player()) std::cout << "CHAR::show[" << name << "] - LEAVE #2" << std::endl; return; } @@ -953,7 +897,7 @@ void character::show() { void character::show_previous_sprites() { if (must_show_dash_effect == false && state.animation_type != ANIM_TYPE_SLIDE) { - dash_effect_shadow_surface_frame.freeGraphic(); + reset_dash_effect(); return; } @@ -978,6 +922,11 @@ void character::show_previous_sprites() graphLib.set_surface_alpha_nocolorkey(255, dash_effect_shadow_surface_frame); } +void character::reset_dash_effect() +{ + dash_effect_shadow_surface_frame.freeGraphic(); +} + void character::show_at(st_position pos) { // check attack frame @@ -989,16 +938,28 @@ void character::show_at(st_position pos) } // show background, if any - if (have_background_graphics() == true) { - graphLib.showSurfaceAt(&(graphLib.character_graphics_background_list.find(name)->second), pos, false); + if (is_player() == false && have_background_graphics() == true) { + st_position bg_pos = st_position(pos.x-background_pos.x, pos.y-background_pos.y); + if (state.direction != ANIM_DIRECTION_LEFT) { + graphLib.showSurfaceAt(&(graphLib.character_graphics_background_list.find(name)->second), bg_pos, false); + } else { + graphLib.showSurfaceAt(&(graphLib.character_graphics_background_list_left.find(name)->second), bg_pos, false); + } + if (state.direction == ANIM_DIRECTION_LEFT) { + // calcular distância com base largura total, pq é inverttido + int original_pos_x = pos.x - background_pos.x; + int graph_diff_x = graphLib.character_graphics_background_list.find(name)->second.width-background_pos.x - frameSize.width; + //std::cout << "char[" << name << "], original_pos_x[" << original_pos_x << "], pos.x[" << pos.x << "], background_pos.x[" << background_pos.x << "], graph_diff_x[" << graph_diff_x << "]" << std::endl; + pos.x = original_pos_x + graph_diff_x; + } } + // only advance if time for the current frame has finished advance_frameset(); // turn is a special case, if it does not exist, we must show stand instead if ((state.animation_type == ANIM_TYPE_TURN || state.animation_type == ANIM_TYPE_VERTICAL_TURN) && have_frame_graphic(state.direction, state.animation_type, state.animation_state) == false) { - //if (is_player() == false) std::cout << "show() - TURN graphic FINISHED, y[" << position.y << "]" << std::endl; if (have_frame_graphic(state.direction, ANIM_TYPE_WALK, state.animation_state) == true) { show_sprite_graphic(state.direction, ANIM_TYPE_WALK, state.animation_state, pos); } else { @@ -1016,39 +977,39 @@ void character::show_at(st_position pos) if (freeze_weapon_effect != FREEZE_EFFECT_NPC || is_weak_to_freeze() == false) { show_sprite(); #ifdef SHOW_HITBOXES - //std::cout << "[" << name << "] - pos.x: " << position.x << ", hitbox - x: " << hitbox.x << ", hitbox.y: " << hitbox.y << std::endl; graphLib.draw_rectangle(hitbox, 255, 0, 255, 100); #endif } } else { show_sprite(); #ifdef SHOW_HITBOXES - //std::cout << "[" << name << "] - pos.x: " << position.x << ", hitbox - x: " << hitbox.x << ", hitbox.y: " << hitbox.y << std::endl; graphLib.draw_rectangle(hitbox, 0, 0, 255, 100); #endif } #ifdef SHOW_VULNERABLE_AREAS st_rectangle vulnerable_area = get_vulnerable_area(); - graphLib.draw_rectangle(vulnerable_area, 255, 0, 0, 100); + if (!is_player()) { + //std::cout << "DRAW_VUL-AREA[" << name << "][" << vulnerable_area.x << "][" << vulnerable_area.y << "][" << vulnerable_area.w << "][" << vulnerable_area.h << "], scroll.x[" << gameControl.get_current_map_obj()->getMapScrolling().x << "]" << std::endl; + vulnerable_area.x -= gameControl.get_current_map_obj()->getMapScrolling().x; + graphLib.draw_rectangle(vulnerable_area, 255, 0, 0, 180); + } #endif } - - - void character::show_sprite() { - //if (is_player()) std::cout << "######### timer[" << timer.getTimer() << "], state.animation_timer[" << state.animation_timer << "]" << std::endl; - if (state.animation_timer < timer.getTimer()) { // time passed the value to advance frame + unsigned int now_timer = timer.getTimer(); + if (state.animation_timer < now_timer) { // time passed the value to advance frame // change animation state to next frame int frame_inc = 1; if (state.animation_inverse == true) { frame_inc = frame_inc * -1; - std::cout << "show_sprite, INVERSE, inc: " << frame_inc << std::endl; } int new_frame = (state.animation_state + frame_inc); + + if (have_frame_graphic(state.direction, state.animation_type, new_frame)) { state.animation_state += frame_inc; if (state.animation_state < 0) { @@ -1061,16 +1022,14 @@ void character::show_sprite() } else { if (state.animation_type == ANIM_TYPE_VERTICAL_TURN) { if (state.direction == ANIM_DIRECTION_LEFT) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } else { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } - if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #F" << std::endl; set_animation_type(ANIM_TYPE_STAND); } if (state.animation_inverse == false) { if (state.animation_state > 0) { - //std::cout << "### RESET-FRAME-N #3 ###" << std::endl; state.animation_state = 0; } } else { @@ -1080,7 +1039,7 @@ void character::show_sprite() _was_animation_reset = true; // some animation types reset to stand/other if (state.animation_type == ANIM_TYPE_STAIRS_ATTACK) { - state.animation_type = ANIM_TYPE_STAIRS; + set_animation_type(ANIM_TYPE_STAIRS); } } if (state.animation_type == ANIM_TYPE_WALK_ATTACK) { @@ -1101,7 +1060,17 @@ void character::reset_sprite_animation_timer() state.animation_timer = timer.getTimer() + 180; } else { short direction = ANIM_DIRECTION_RIGHT; - int delay = (graphLib.character_graphics_list.find(name)->second).frames[direction][state.animation_type][state.animation_state].delay; + + int delay = 100; + if (graphLib.character_graphics_list.find(name) != graphLib.character_graphics_list.end()) { + if (direction < CHAR_ANIM_DIRECTION_COUNT) { + if (state.animation_type < ANIM_TYPE_COUNT) { + if (state.animation_state < ANIM_FRAMES_COUNT) { + delay = (graphLib.character_graphics_list.find(name)->second).frames[direction][state.animation_type][state.animation_state].delay; + } + } + } + } state.animation_timer = timer.getTimer() + delay; } } @@ -1123,8 +1092,6 @@ void character::show_sprite_graphic(short direction, short type, short frame_n, unsigned int now_timer = timer.getTimer(); if (now_timer < hit_duration+last_hit_time) { - //if (is_player()) { std::cout << "PLATER::HIT. hit_animation_timer: " << hit_animation_timer << ", now_timer: " << now_timer << std::endl; } - if (hit_animation_timer > now_timer) { //graphLib.show_white_surface_at(&it_graphic->second.frames[direction][type][frame_n].frameSurface, frame_pos); graphLib.show_white_surface_at(frame_surface, frame_pos); @@ -1157,7 +1124,6 @@ graphicsLib_gSurface *character::get_current_frame_surface(short direction, shor { if (frame_n < 0) { - std::cout << "ERROR::haracter::get_current_frame_surface - negative frame-n" << std::endl; frame_n = 0; } @@ -1167,16 +1133,18 @@ graphicsLib_gSurface *character::get_current_frame_surface(short direction, shor std::cout << "ERROR: #1 character::show_sprite_graphic - Could not find graphic for NPC [" << name << "]" << std::endl; return NULL; } + // for non left-right directions, use the original facing direction for NPCs + if (is_player() == false && direction != ANIM_DIRECTION_LEFT && direction != ANIM_DIRECTION_RIGHT) { + direction = facing; + } if (have_frame_graphic(direction, type, frame_n) == false) { // check if we can find the graphic with the given N position if (frame_n == 0) { - //std::cout << ">> character::show_sprite_graphic(" << name << ") #1 - no graphic for type (" << type << "):frame_n(" << frame_n << "), set to STAND" << std::endl; if (type == ANIM_TYPE_TELEPORT) { type = ANIM_TYPE_JUMP; } else { type = ANIM_TYPE_STAND; } } else { - //std::cout << ">> character::show_sprite_graphic(" << name << ") #1 - no graphic for type (" << type << "):frame_n(" << frame_n << "), set to ZERO pos" << std::endl; frame_n = 0; state.animation_state = 0; _was_animation_reset = true; @@ -1186,9 +1154,7 @@ graphicsLib_gSurface *character::get_current_frame_surface(short direction, shor _was_animation_reset = true; - //std::cout << "### RESET-FRAME-N #4 ###" << std::endl; if (have_frame_graphic(direction, type, frame_n) == false) { // check if we can find the graphic with the given type - //if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #G" << std::endl; set_animation_type(ANIM_TYPE_STAND); type = ANIM_TYPE_STAND; if (have_frame_graphic(direction, type, frame_n) == false) { // check if we can find the graphic at all @@ -1212,9 +1178,6 @@ void character::reset_gravity_speed() // ********************************************************************************************** // bool character::gravity(bool boss_demo_mode=false) { - - /// @TODO: gravity speed is starting at 1.25, it should start at 0.25 - if (_progressive_appear_pos != 0) { reset_gravity_speed(); return false; @@ -1237,20 +1200,36 @@ bool character::gravity(bool boss_demo_mode=false) return false; } - int gravity_max_speed = GRAVITY_MAX_SPEED; + if ((_is_boss || _is_stage_boss) && get_anim_type() == ANIM_TYPE_INTRO) { + return false; + } + + if (is_player() && state.animation_type == ANIM_TYPE_TELEPORT) { + return false; + } + + if (!is_player() && teleporting_out > 0) { + return false; + } + + if (is_player() == false && (game_data.final_boss_id == _number || (GameMediator::get_instance()->ai_list.at(_number).reactions[AI_REACTION_DEAD].action == AI_ACTION_REPLACE_NPC && GameMediator::get_instance()->ai_list.at(_number).reactions[AI_REACTION_DEAD].extra_parameter == game_data.final_boss_id))) { + _is_final_game_boss = true; + } + + int gravity_max_speed = GRAVITY_MAX_SPEED * SharedData::get_instance()->get_movement_multiplier(); if (state.animation_type == ANIM_TYPE_TELEPORT) { - gravity_max_speed = GRAVITY_TELEPORT_MAX_SPEED; + gravity_max_speed = GRAVITY_TELEPORT_MAX_SPEED * SharedData::get_instance()->get_movement_multiplier(); } else if (state.animation_type == ANIM_TYPE_HIT) { - gravity_max_speed = 2; + gravity_max_speed = 2 * SharedData::get_instance()->get_movement_multiplier(); } // ------------- NPC gravity ------------------ // if (!is_player()) { - if (_ignore_gravity == true) { return false; } - if (can_fly == false || gameControl.is_showing_boss_intro == true) { + + if (can_fly == false || can_fall_during_move == true || (_is_boss && SharedData::get_instance()->is_showing_boss_intro == true)) { bool is_moved = false; short int limit_speed = move_speed; if (boss_demo_mode == true) { @@ -1260,10 +1239,9 @@ bool character::gravity(bool boss_demo_mode=false) limit_speed = 1; } - - for (int i=limit_speed; i>0; i--) { bool res_test_move = test_change_position(0, i); + //if (i > 0) std::cout << "CHAR::GRAVITY[PLAYER] - res_test_move[" << res_test_move << "], yinc[" << i << "]" << std::endl; if ((boss_demo_mode == true && position.y <= TILESIZE*2) || res_test_move == true) { position.y += i; is_moved = true; @@ -1279,7 +1257,6 @@ bool character::gravity(bool boss_demo_mode=false) // ------------ PLAYER gravity --------------------- // if (is_player() && position.y > RES_H+TILESIZE) { - //std::cout << "**** gravity - LEAVE (death)" << std::endl; hitPoints.current = 0; death(); reset_gravity_speed(); @@ -1331,8 +1308,6 @@ bool character::gravity(bool boss_demo_mode=false) } } - //if (is_player()) std::cout << "gravity - accel_speed_y: " << accel_speed_y << ", gravity_y: " << gravity_y << ", adjusted_speed: " << adjusted_speed << ", position.y: " << position.y << std::endl; - st_map_collision map_col; bool was_moved = false; for (int i=adjusted_speed; i>0; i--) { @@ -1347,23 +1322,26 @@ bool character::gravity(bool boss_demo_mode=false) mapLock = BLOCK_UNBLOCKED; } - if (mapLock == BLOCK_UNBLOCKED || mapLock == BLOCK_WATER || mapLock == BLOCK_STAIR_X || mapLock == BLOCK_STAIR_Y) { - //if (is_player()) std::cout << "character::gravity - FALL" << std::endl; - if (mapLock != BLOCK_WATER || (mapLock == BLOCK_WATER && abs((float)i*WATER_SPEED_MULT) < 1)) { - position.y += i; - } else { - position.y += i*WATER_SPEED_MULT; - } - if (state.animation_type != ANIM_TYPE_JUMP && state.animation_type != ANIM_TYPE_JUMP_ATTACK && state.animation_type != ANIM_TYPE_TELEPORT && state.animation_type != ANIM_TYPE_SLIDE && state.animation_type != ANIM_TYPE_HIT && (state.animation_type != ANIM_TYPE_JUMP_ATTACK || (state.animation_type == ANIM_TYPE_JUMP_ATTACK && state.attack_timer+ATTACK_DELAY < timer.getTimer()))) { - //std::cout << "LEAVE STAIRS - GRAVITY #1, current-anim-type[" << state.animation_type << "]" << std::endl; - set_animation_type(ANIM_TYPE_JUMP); - } - was_moved = true; + if (_platform == nullptr || (_platform != nullptr && _platform->get_type() != OBJ_MOVING_PLATFORM_UPDOWN && _platform->get_type() != OBJ_MOVING_PLATFORM_UP_LOOP && _platform->get_type() != OBJ_MOVING_PLATFORM_DOWN)) { + if (mapLock == BLOCK_UNBLOCKED || mapLock == BLOCK_WATER || mapLock == BLOCK_STAIR_X || mapLock == BLOCK_STAIR_Y) { + if (mapLock != BLOCK_WATER || (mapLock == BLOCK_WATER && abs((float)i*WATER_SPEED_MULT) < 1)) { + position.y += i; + } else { + position.y += i*WATER_SPEED_MULT; + } + if (state.animation_type != ANIM_TYPE_JUMP && state.animation_type != ANIM_TYPE_JUMP_ATTACK && state.animation_type != ANIM_TYPE_TELEPORT && state.animation_type != ANIM_TYPE_SLIDE && state.animation_type != ANIM_TYPE_HIT && (state.animation_type != ANIM_TYPE_JUMP_ATTACK || (state.animation_type == ANIM_TYPE_JUMP_ATTACK && state.attack_timer+ATTACK_DELAY < timer.getTimer()))) { + set_animation_type(ANIM_TYPE_JUMP); + } + was_moved = true; - if (state.animation_type != ANIM_TYPE_TELEPORT) { - _is_falling = true; + if (state.animation_type != ANIM_TYPE_TELEPORT) { + _is_falling = true; + } + break; + } else if (map_col.terrain_type == TERRAIN_QUICKSAND) { + //std::cout << "CHAR::GRAVITY - over QUICKSAND" << std::endl; + position.y += QUICKSAND_GRAVITY; } - break; } if (i == 1) { reset_gravity_speed(); @@ -1371,28 +1349,21 @@ bool character::gravity(bool boss_demo_mode=false) } if (was_moved == false && (state.animation_type == ANIM_TYPE_JUMP || state.animation_type == ANIM_TYPE_JUMP_ATTACK) && state.animation_type != ANIM_TYPE_SLIDE) { - //if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #H" << std::endl; set_animation_type(ANIM_TYPE_STAND); return true; } else if (was_moved == false && state.animation_type == ANIM_TYPE_TELEPORT && position.y >= RES_H/3) { - //if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #I" << std::endl; set_animation_type(ANIM_TYPE_STAND); return true; } if (was_moved == false && _is_falling == true) { _is_falling = false; if (is_player()) { - if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #Y.1" << std::endl; set_animation_type(ANIM_TYPE_STAND); - //std::cout << "SFX_PLAYER_JUMP #2" << std::endl; soundManager.play_sfx(SFX_PLAYER_JUMP); } } check_platform_move(map_col.terrain_type); - - // teleport finished - //std::cout << "NOT FALLING, RESET ACCEL_SPEED_Y" << std::endl; } return false; @@ -1406,21 +1377,31 @@ bool character::hit_ground() // indicates if character is standing above ground return _hit_ground; } */ - short map_tile_x = (position.x + frameSize.width/2)/TILESIZE; - short map_tile_y1 = (position.y + frameSize.height)/TILESIZE; - short map_tile_y2 = (position.y + frameSize.height/2)/TILESIZE; - int pointLock1 = gameControl.getMapPointLock(st_position(map_tile_x, map_tile_y1)); - _hit_ground = false; - if (pointLock1 != TERRAIN_UNBLOCKED && pointLock1 != TERRAIN_WATER && pointLock1 != TERRAIN_STAIR) { - //if (is_player()) std::cout << "hit_ground #1" << std::endl; - _hit_ground = true; - } else { - int pointLock2 = gameControl.getMapPointLock(st_position(map_tile_x, map_tile_y2)); - if (pointLock1 != pointLock2) { - //if (is_player()) std::cout << "hit_ground #2" << std::endl; + st_rectangle hitbox = get_hitbox(); + std::vector map_tile_x; + map_tile_x.push_back((hitbox.x + hitbox.w/2)/TILESIZE); // center + map_tile_x.push_back((hitbox.x)/TILESIZE); // left + map_tile_x.push_back((hitbox.x + hitbox.w)/TILESIZE); // right + short map_tile_y1 = (hitbox.y + hitbox.h)/TILESIZE; + short map_tile_y2 = (hitbox.y + hitbox.h/2)/TILESIZE; + + for (unsigned int i=0; iget_enemy(_number)->sprites_pos_bg.x; + pos_y -= GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.y; + //if (name == "BIG FISH") std::cout << "CHAR::is_on_screen[" << name << "], pos_x[" << pos_x << "], pos_y[" << pos_y << "]" << std::endl; + } scroll = gameControl.get_current_map_obj()->getMapScrolling(); // is on screen plus a bit more on both sides - if (abs((float)position.x+frameSize.width*2) >= scroll.x && abs((float)position.x-frameSize.width*2) <= scroll.x+RES_W) { + if (abs(pos_x+total_frame_size.width*2) >= scroll.x && abs(pos_x-total_frame_size.width*2) <= scroll.x+RES_W) { + //if (name == "BIG FISH") std::cout << "CHAR::is_on_screen - TRUE #1" << std::endl; return true; } - - // regular enemies work only on a limited screen if (is_stage_boss() == false) { + //if (name == "BIG FISH") std::cout << "CHAR::is_on_screen - FALSE #1" << std::endl; return false; } // is on left of the screen - if (abs((float)position.x) > scroll.x-RES_W/2 && abs((float)position.x) < scroll.x) { + if (abs(pos_x) > scroll.x-RES_W/2 && abs(pos_x) < scroll.x) { // check wall-lock on the range int map_point_start = (scroll.x-RES_W/2)/TILESIZE; int map_point_end = scroll.x/TILESIZE; @@ -1468,12 +1456,13 @@ bool character::is_on_screen() } } if (found_lock == false) { + //if (name == "BIG FISH") std::cout << "CHAR::is_on_screen - TRUE #2" << std::endl; return true; } } // is on right to the screen - if (abs((float)position.x) > scroll.x+RES_W && abs((float)position.x) < scroll.x+RES_W*1.5) { + if (abs(pos_x) > scroll.x+RES_W && abs(pos_x) < scroll.x+RES_W*1.5) { int map_point_start = (scroll.x+RES_W)/TILESIZE; int map_point_end = (scroll.x*1.5)/TILESIZE; bool found_lock = false; @@ -1483,11 +1472,11 @@ bool character::is_on_screen() } } if (found_lock == false) { - std::cout << "CHAR::is_on_screen[" << name << "], x[" << position.x << "], map_point_start[" << map_point_start << "], map_point_end[" << map_point_end << "]" << std::endl; + //if (name == "BIG FISH") std::cout << "CHAR::is_on_screen - TRUE #2" << std::endl; return true; } - if (name == "Dynamite Bot") std::cout << ">>>> character::is_on_screen - right <<<<" << std::endl; } + //if (name == "BIG FISH") std::cout << "CHAR::is_on_screen - FALSE #2" << std::endl; return false; } @@ -1498,13 +1487,15 @@ bool character::is_on_visible_screen() } st_float_position scroll = gameControl.get_current_map_obj()->getMapScrolling(); // entre scroll.x e scroll.x+RES_W + float pos_x = position.x; + float pos_y = position.y; + if (!is_player()) { + pos_x -= GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x; + pos_y -= GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.y; + //if (name == "BIG FISH") std::cout << "CHAR::is_on_screen[" << name << "], pos_x[" << pos_x << "], pos_y[" << pos_y << "]" << std::endl; + } - - - if (abs((float)position.x + frameSize.width) >= scroll.x && abs((float)position.x) < scroll.x+RES_W) { - if (!is_player()) { - //std::cout << "CHAR::is_on_visible_screen - pos.x[" << position.x << "], w[" << frameSize.width << "], scroll.x[" << scroll.x << "]" << std::endl; - } + if (abs(pos_x + total_frame_size.width) >= scroll.x && abs(pos_x) < scroll.x+RES_W) { return true; } return false; @@ -1516,11 +1507,11 @@ bool character::is_entirely_on_screen() return true; } st_float_position scroll = gameControl.get_current_map_obj()->getMapScrolling(); + float my_pos = abs((float)position.x+(float)frameSize.width); + int limit_min = scroll.x+TILESIZE; + int limit_max = scroll.x+RES_W; - if (abs((float)position.x + frameSize.width) >= scroll.x+TILESIZE && abs((float)position.x+(float)frameSize.width) < scroll.x+RES_W-TILESIZE) { - if (!is_player()) { - //std::cout << "CHAR::is_on_visible_screen - pos.x[" << position.x << "], w[" << frameSize.width << "], scroll.x[" << scroll.x << "]" << std::endl; - } + if (my_pos >= limit_min && my_pos <= limit_max) { return true; } return false; @@ -1559,8 +1550,6 @@ st_float_position character::getPosition() const void character::set_position(struct st_position new_pos) { - //std::cout << "\\\\\\\\\\\\ character::set_position - pos.x: " << position.x << ", new_pos.x: " << new_pos.x << std::endl; - //std::cout << "\\\\\\\\\\\\ character::set_position - pos.y: " << position.x << ", new_pos.y: " << new_pos.x << std::endl; position.x = new_pos.x; position.y = new_pos.y; char_update_real_position(); @@ -1622,21 +1611,26 @@ bool character::slide(st_float_position mapScrolling) if (slide_type == 1) { // if is slide-type, use greater adjust adjust = -TILESIZE; } + //st_map_collision character::map_collision(const float incx, const short incy, st_float_position mapScrolling, int hitbox_anim_type) st_map_collision map_col = map_collision(0, adjust, gameControl.get_current_map_obj()->getMapScrolling(), ANIM_TYPE_SLIDE); // slide_adjust is used because of adjustments in slide collision int map_lock = map_col.block; + /* // player have double jump (without being armor) can't use slide in ground if (GameMediator::get_instance()->player_list_v3_1[_number].can_double_jump) { if (did_hit_ground == true) { return false; } } + */ + + int map_lock_above = gameControl.getMapPointLock(st_position((position.x+frameSize.width/2)/TILESIZE, (position.y)/TILESIZE)); + bool is_blocked_above = !(map_lock_above == TERRAIN_UNBLOCKED || map_lock_above == TERRAIN_WATER); // releasing down (or dash button) interrupts the slide - if (moveCommands.dash != 1 && state.animation_type == ANIM_TYPE_SLIDE && (map_lock == BLOCK_UNBLOCKED || map_lock == BLOCK_WATER)) { + if (moveCommands.dash != 1 && state.animation_type == ANIM_TYPE_SLIDE && (map_lock == BLOCK_UNBLOCKED || map_lock == BLOCK_WATER) && !is_blocked_above) { if (did_hit_ground) { - if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #Y.2" << std::endl; set_animation_type(ANIM_TYPE_STAND); } else { set_animation_type(ANIM_TYPE_JUMP); @@ -1647,7 +1641,6 @@ bool character::slide(st_float_position mapScrolling) if (state.slide_distance > TILESIZE*5 && (map_lock == BLOCK_UNBLOCKED || map_lock == BLOCK_WATER)) { if (did_hit_ground == true) { - if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #Y.3" << std::endl; set_animation_type(ANIM_TYPE_STAND); } else { set_animation_type(ANIM_TYPE_JUMP); @@ -1656,8 +1649,6 @@ bool character::slide(st_float_position mapScrolling) return false; } - //std::cout << "_dash_button_released: " << _dash_button_released << std::endl; - // start slide if (state.animation_type != ANIM_TYPE_SLIDE && _dash_button_released == true) { if (moveCommands.dash == 1) { @@ -1684,8 +1675,6 @@ bool character::slide(st_float_position mapScrolling) st_map_collision map_col_fall = map_collision(0, 1, gameControl.get_current_map_obj()->getMapScrolling()); int fall_map_lock = map_col_fall.block; - //std::cout << "character::slide - fall_map_lock: " << fall_map_lock << std::endl; - if (can_air_dash() == false && (fall_map_lock == BLOCK_UNBLOCKED || fall_map_lock == BLOCK_WATER)) { set_animation_type(ANIM_TYPE_JUMP); state.slide_distance = 0; @@ -1737,12 +1726,10 @@ bool character::slide(st_float_position mapScrolling) } } - if (res_move_x != 0 && (mapLockAfter == BLOCK_UNBLOCKED || mapLockAfter == BLOCK_WATER)) { position.x += res_move_x; state.slide_distance += abs((float)res_move_x); - } else { - std::cout << "SLIDE::BLOCKED" << std::endl; + } else if (!is_blocked_above || slide_type != 1) { set_animation_type(ANIM_TYPE_JUMP); state.slide_distance = 0; return false; @@ -1770,32 +1757,35 @@ bool character::jump(int jumpCommandStage, st_float_position mapScrolling) return false; } + if (timer.getTimer() < jump_lock_timer) { // some effect blocked jumping + std::cout << ">>>>>>>>>>>>>>>>> jump blocked!" << std::endl; + return false; + } + int water_lock = gameControl.get_current_map_obj()->getMapPointLock(st_position((position.x+frameSize.width/2)/TILESIZE, (position.y+6)/TILESIZE)); if (_force_jump == true || (jumpCommandStage == 1 && jump_button_released == true)) { - //std::cout << "char::jump - button pressed" << std::endl; if (is_in_stairs_frame()) { if (_obj_jump.is_started() == false) { set_animation_type(ANIM_TYPE_JUMP); _is_falling = true; _stairs_falling_timer = timer.getTimer() + STAIRS_GRAB_TIMEOUT; // avoid player entering stairs immediatlly after jumping from it - std::cout << "JUMP OUT OF STAIRS #1" << std::endl; return false; } else { - std::cout << "JUMP OUT OF STAIRS #2" << std::endl; _obj_jump.interrupt(); if (_force_jump == true) { _force_jump = false; } } } else { - //std::cout << "char::_jumps_number: " << _jumps_number << ", obj::_jumps_number: " << _obj_jump.get_jumps_number() << std::endl; if (_is_falling == false && (_obj_jump.is_started() == false || (_jumps_number > _obj_jump.get_jumps_number()))) { if (_super_jump == true) { _super_jump = false; + set_platform(nullptr); _obj_jump.start(true, water_lock); } else { + set_platform(nullptr); _obj_jump.start(false, water_lock); } if (state.animation_type == ANIM_TYPE_SLIDE && slide_type == 0) { @@ -1807,9 +1797,14 @@ bool character::jump(int jumpCommandStage, st_float_position mapScrolling) } } + bool is_onquicksand = false; + if (is_on_quicksand()) { + is_onquicksand = true; + } + if (_obj_jump.is_started() == true) { - int jump_speed = _obj_jump.get_speed(); + float jump_speed = _obj_jump.get_speed(); bool jump_moved = false; // if got into stairs, finish jumping @@ -1824,7 +1819,8 @@ bool character::jump(int jumpCommandStage, st_float_position mapScrolling) // check collision - for (int i=abs((float)jump_speed); i>0; i--) { + float abs_jump_speed = abs(jump_speed); + for (float i=abs_jump_speed; i>0.0; i--) { int speed_y = 0; if (jump_speed > 0) { speed_y = i; @@ -1833,34 +1829,43 @@ bool character::jump(int jumpCommandStage, st_float_position mapScrolling) } st_map_collision map_col = map_collision(0, speed_y, mapScrolling); int map_lock = map_col.block; - //std::cout << "jump::check_collision - i[" << i << "], map_lock[" << map_lock << "]" << std::endl; + //std::cout << "CHAR::JUMP - speed[" << i << "], map_lock[" << map_lock << "]" << std::endl; - if (map_lock == BLOCK_UNBLOCKED || map_lock == BLOCK_WATER) { - //std::cout << "jump.speed[" << speed_y << "]" << std::endl; + if (abs(speed_y) > 0 && (map_lock == BLOCK_UNBLOCKED || map_lock == BLOCK_WATER || map_lock == BLOCK_QUICKSAND)) { position.y += speed_y; + jump_last_moved = speed_y; jump_moved = true; break; } } + //std::cout << "CHAR::JUMP - jump_speed[" << jump_speed << "], jump_last_moved[" << jump_last_moved << "], abs_jump_speed[" << abs_jump_speed << "], jump_moved[" << jump_moved << "], position.y[" << position.y << "]" << std::endl; if (jump_speed != 0 && jump_moved == false) { - //std::cout << "chat::jump - must interrupt because a collision happened" << std::endl; if (jump_speed < 0) { + //std::cout << "CHAR::JUMP - INTERRUMP #1" << std::endl; _obj_jump.interrupt(); - } else { + } else if (hit_ground() == true) { + //std::cout << "CHAR::JUMP - FINISH" << std::endl; _obj_jump.finish(); } + if (position.y < -frameSize.width) { + //std::cout << "CHAR::JUMP - ADJUST" << std::endl; + position.y += TILESIZE; + } + _force_jump = false; + } + if (_obj_jump.is_started() == true && jump_speed < 0.0 && abs(jump_speed) < 1.0 && abs(jump_last_moved) < 1.0) { + std::cout << "CHAR::JUMP - INTERRUMP #1" << std::endl; + _obj_jump.interrupt(); } _obj_jump.execute(water_lock); if (_obj_jump.is_started() == false) { - //std::cout << "SFX_PLAYER_JUMP #1" << std::endl; soundManager.play_sfx(SFX_PLAYER_JUMP); if (_force_jump == true) { _force_jump = false; } } else { if (is_player() && position.y > RES_H+1) { - std::cout << "**** JUMP::LEAVE (death)" << std::endl; _obj_jump.finish(); } } @@ -1880,15 +1885,14 @@ bool character::jump(int jumpCommandStage, st_float_position mapScrolling) -void character::check_map_collision_point(int &map_block, int &new_map_lock, int mode_xy, st_position map_pos) // mode_xy 0 is x, 1 is y +void character::check_map_collision_point(int &map_block, int &new_map_lock, int &old_map_lock, int mode_xy) // mode_xy 0 is x, 1 is y { - UNUSED(map_pos); - - int old_map_lock = gameControl.getMapPointLock(st_position((position.x+frameSize.width/2)/TILESIZE, (position.y+frameSize.height/2)/TILESIZE)); - if (map_block == BLOCK_UNBLOCKED && new_map_lock == TERRAIN_WATER) { map_block = BLOCK_WATER; } + if (map_block == BLOCK_UNBLOCKED && new_map_lock == TERRAIN_QUICKSAND) { + map_block = BLOCK_QUICKSAND; + } bool must_block = false; @@ -1908,17 +1912,29 @@ void character::check_map_collision_point(int &map_block, int &new_map_lock, int } else if (new_map_lock == TERRAIN_HARDMODEBLOCK) { if (game_save.difficulty == DIFFICULTY_HARD) { if (mode_xy == 1 || is_player()) { - //std::cout << "HARD_MODE SPIKES DAMAGE" << std::endl; damage_spikes(true); } must_block = true; } - } else if (new_map_lock != TERRAIN_UNBLOCKED && new_map_lock != TERRAIN_WATER && new_map_lock != TERRAIN_SCROLL_LOCK && new_map_lock != TERRAIN_CHECKPOINT && new_map_lock != TERRAIN_STAIR) { + } else if (new_map_lock != TERRAIN_UNBLOCKED && new_map_lock != TERRAIN_WATER && new_map_lock != TERRAIN_SCROLL_LOCK && new_map_lock != TERRAIN_CHECKPOINT && new_map_lock != TERRAIN_STAIR && new_map_lock != TERRAIN_HARDMODEBLOCK && new_map_lock != TERRAIN_EASYMODEBLOCK) { must_block = true; } - } else if (map_block == BLOCK_UNBLOCKED && new_map_lock == TERRAIN_SOLID) { - must_block = true; + } else { + if (new_map_lock == TERRAIN_EASYMODEBLOCK && game_save.difficulty == DIFFICULTY_EASY) { + must_block = true; + } else if (new_map_lock == TERRAIN_HARDMODEBLOCK && game_save.difficulty == DIFFICULTY_HARD) { + if (mode_xy == 1 || is_player()) { + damage_spikes(true); + } + must_block = true; + } else if (map_block == BLOCK_UNBLOCKED && (new_map_lock != BLOCK_UNBLOCKED && new_map_lock != TERRAIN_STAIR && new_map_lock != TERRAIN_WATER && new_map_lock != TERRAIN_EASYMODEBLOCK && new_map_lock != TERRAIN_HARDMODEBLOCK)) { + must_block = true; + } else if (map_block == BLOCK_WATER && new_map_lock == BLOCK_X) { + must_block = true; + } else if (map_block == BLOCK_QUICKSAND && new_map_lock == BLOCK_X) { + must_block = true; + } } if (must_block == true) { @@ -1943,20 +1959,9 @@ bool character::process_special_map_points(int map_lock, int incx, int incy, st_ if (incx > 0) { direction = ANIM_DIRECTION_RIGHT; } - int check_y = get_hitbox().y; - if (incx > 0 && map_lock == TERRAIN_DOOR) { - //std::cout << "#1 - p.y[" << check_y << "], map.y[" << map_pos.y << "], map_real_y[" << (map_pos.y*TILESIZE) << "]" << std::endl; - } - /* - if (incx > 0 && map_lock == TERRAIN_DOOR && check_y > map_pos.y*TILESIZE) { - //std::cout << "#2 - p.y[" << check_y << "], map.y[" << map_pos.y << "], map_real_y[" << (map_pos.y*TILESIZE) << "]" << std::endl; - gameControl.horizontal_screen_move(direction, true, map_pos.x, map_pos.y); - return true; - } - */ if (incx != 0 && map_lock == TERRAIN_SCROLL_LOCK) { //gameControl.horizontal_screen_move(direction, false, map_pos.x, map_pos.y); - gameControl.horizontal_screen_move(state.direction, true, map_pos.x); + gameControl.horizontal_screen_move(state.direction, false, map_pos.x); return true; } if (state.animation_type != ANIM_TYPE_TELEPORT && (map_lock == TERRAIN_SPIKE || (map_lock == TERRAIN_HARDMODEBLOCK && game_save.difficulty == 2))) { @@ -2022,35 +2027,40 @@ st_map_collision character::map_collision(const float incx, const short incy, st return st_map_collision(BLOCK_XY, TERRAIN_SOLID); } - //std::cout << "CHAR::map_collision, y_inc[" << incy << "]" << std::endl; gameControl.get_current_map_obj()->collision_char_object(this, incx, incy); object_collision res_collision_object = gameControl.get_current_map_obj()->get_obj_collision(); - if (is_player() == true && res_collision_object._block != 0) { + bool is_on_moving_platform = false; + if (_platform != nullptr && _platform == res_collision_object._object && (_platform->get_type() == OBJ_MOVING_PLATFORM_UP_LOOP || _platform->get_type() == OBJ_MOVING_PLATFORM_DOWN)) { + is_on_moving_platform = true; + } + + //if (is_player()) std::cout << "CHAR::map_collision - is_on_moving_platform[" << is_on_moving_platform << "], py[" << position.y << "], py+h[" << (get_hitbox().y + get_hitbox().h) << "]" << std::endl; + + if (is_player() == true && res_collision_object._block != 0 && is_on_moving_platform == false) { // deal with teleporter object that have special block-area and effect (9)teleporting) if (state.animation_type != ANIM_TYPE_TELEPORT && res_collision_object._object != NULL) { - //std::cout << "CHAR::PLAYER::check-obj-collision #1, block[" << res_collision_object._block << "], type[" << res_collision_object._object->get_type() << "]" << std::endl; - if (res_collision_object._object->get_type() == OBJ_BOSS_TELEPORTER || (res_collision_object._object->get_type() == OBJ_FINAL_BOSS_TELEPORTER && res_collision_object._object->is_started() == true)) { if (is_on_teleporter_capsulse(res_collision_object._object) == true) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); gameControl.object_teleport_boss(res_collision_object._object->get_boss_teleporter_dest(), res_collision_object._object->get_boss_teleport_map_dest(), res_collision_object._object->get_obj_map_id(), true); } } else if (res_collision_object._object->get_type() == OBJ_STAGE_BOSS_TELEPORTER) { - std::cout << "character::map_collision - OBJ_STAGE_BOSS_TELEPORTER" << std::endl; if (is_on_teleporter_capsulse(res_collision_object._object) == true) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); gameControl.object_teleport_boss(res_collision_object._object->get_boss_teleporter_dest(), res_collision_object._object->get_boss_teleport_map_dest(), res_collision_object._object->get_obj_map_id(), false); } // platform teleporter is just a base where player can step in to teleport } else if (res_collision_object._object->get_type() == OBJ_PLATFORM_TELEPORTER && is_on_teleport_platform(res_collision_object._object) == true) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); soundManager.play_sfx(SFX_TELEPORT); gameControl.object_teleport_boss(res_collision_object._object->get_boss_teleporter_dest(), res_collision_object._object->get_boss_teleport_map_dest(), res_collision_object._object->get_obj_map_id(), false); // ignore block } else if (res_collision_object._object->get_type() == OBJ_FINAL_BOSS_TELEPORTER && res_collision_object._object->is_started() == false) { - // do nothing + // acho que era para ver se todos os inimigos estão mortos, mas não completei o código, então vamos fazer como um boss-teleproter + set_direction(ANIM_DIRECTION_RIGHT); + gameControl.object_teleport_boss(res_collision_object._object->get_boss_teleporter_dest(), res_collision_object._object->get_boss_teleport_map_dest(), res_collision_object._object->get_obj_map_id(), false); } else if (!get_item(res_collision_object)) { map_block = res_collision_object._block; @@ -2059,11 +2069,8 @@ st_map_collision character::map_collision(const float incx, const short incy, st } // INSIDE PLATFORM OBJECT, MUST DIE if (map_block == BLOCK_INSIDE_OBJ) { - //std::cout << "DEBUG-OBJ-COLlISION #5" << std::endl; damage(999, true); return st_map_collision(BLOCK_UNBLOCKED, TERRAIN_SOLID); - } else { - //std::cout << "player-over-obj-platform, map_block[" << map_block << "], py[" << position.y << "]" << std::endl; } } } @@ -2101,9 +2108,9 @@ st_map_collision character::map_collision(const float incx, const short incy, st } - if (incx == 0 && incy == 0) { + if (incx == 0 && incy == 0) { return st_map_collision(BLOCK_UNBLOCKED, TERRAIN_UNBLOCKED); - } + } if (_always_move_ahead == false && ((incx < 0 && position.x+incx) < 0 || (incx > 0 && position.x+incx > MAP_W*TILESIZE))) { if (map_block == BLOCK_UNBLOCKED) { @@ -2129,7 +2136,9 @@ st_map_collision character::map_collision(const float incx, const short incy, st /// @TODO - use collision rect for the current frame. Until there, use 3 points check int py_top, py_middle, py_bottom; - int px_left, px_center, px_right; + int px_left, px_center, px_right; + int old_px_left, old_px_center, old_px_right; + st_rectangle rect_hitbox = get_hitbox(hitbox_anim_type); py_top = rect_hitbox.y + incy + py_adjust; @@ -2141,23 +2150,31 @@ st_map_collision character::map_collision(const float incx, const short incy, st px_left = rect_hitbox.x + incx; px_right = rect_hitbox.x + incx + rect_hitbox.w; + old_px_left = rect_hitbox.x; + old_px_right = rect_hitbox.x + rect_hitbox.w; + if (incx == 0 && incy != 0) { px_right--; } - - //std::cout << "py_bottom: " << py_bottom << std::endl; - - st_position map_point; - map_point.x = px_left/TILESIZE; - int new_map_lock = TERRAIN_UNBLOCKED; + st_position map_point; + st_position old_map_point; + map_point.x = px_left/TILESIZE; + old_map_point.x = old_px_left/TILESIZE; + int new_map_lock = TERRAIN_UNBLOCKED; + int old_map_lock = TERRAIN_UNBLOCKED; if (incx > 0) { - map_point.x = px_right/TILESIZE; + map_point.x = px_right/TILESIZE; + old_map_point.x = old_px_right/TILESIZE; } - /// @TODO - use a array-of-array for poijts in order to having a cleaner code + /// @TODO - use a array-of-array for points in order to having a cleaner code - int map_x_points[3]; + int map_x_points[3]; + if (incx == 0 && incy != 0) { + px_left++; + px_right--; + } map_x_points[0] = px_left/TILESIZE; map_x_points[1] = px_center/TILESIZE; map_x_points[2] = px_right/TILESIZE; @@ -2169,19 +2186,23 @@ st_map_collision character::map_collision(const float incx, const short incy, st // TEST X POINTS if (incx != 0) { - for (int i=0; i<3; i++) { + for (int i=0; i<3; i++) { if (is_player() && (state.animation_type == ANIM_TYPE_JUMP || state.animation_type == ANIM_TYPE_JUMP_ATTACK) && i == 0) { map_point.y = (py_top+1)/TILESIZE; } else { map_point.y = map_y_points[i]; } + old_map_point.y = map_point.y; + old_map_lock = gameControl.getMapPointLock(old_map_point); new_map_lock = gameControl.getMapPointLock(map_point); - check_map_collision_point(map_block, new_map_lock, 0, map_point); + check_map_collision_point(map_block, new_map_lock, old_map_lock, 0); + if (is_player() && process_special_map_points(new_map_lock, incx, incy, map_point) == true) { return st_map_collision(map_block, new_map_lock); } - } - } + } + //if (is_player() == false) std::cout << "CHAR::map_collision - px_left[" << px_left << "],px_right[" << px_right << "], map_block[" << (int)map_block << "]" << std::endl; + } // TEST Y POINTS if (incy < 0) { @@ -2189,21 +2210,19 @@ st_map_collision character::map_collision(const float incx, const short incy, st } else if (incy > 0) { map_point.y = py_bottom/TILESIZE; } -/* -#ifdef ANDROID - if (is_player() == false) { - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "CHAR::MAP_COLLISION[%s], map_point.y[%d]", name.c_str(), map_point.y); - } -#endif + old_map_point.y = py_middle/TILESIZE; - if (is_player() == false) std::cout << "CHAR::MAP_COLLISION[" << name << "], map_point.y: " << map_point.y << std::endl; -*/ - if (incy != 0) { - for (int i=0; i<3; i++) { + if (incy != 0) { + for (int i=0; i<3; i++) { map_point.x = map_x_points[i]; + old_map_point.x = map_x_points[i]; + + old_map_lock = gameControl.getMapPointLock(old_map_point); new_map_lock = gameControl.getMapPointLock(map_point); - check_map_collision_point(map_block, new_map_lock, 1, map_point); + + check_map_collision_point(map_block, new_map_lock, old_map_lock, 1); + if (new_map_lock != TERRAIN_UNBLOCKED) { terrain_type = new_map_lock; } @@ -2211,8 +2230,10 @@ st_map_collision character::map_collision(const float incx, const short incy, st if (is_player() && process_special_map_points(new_map_lock, incx, incy, map_point) == true) { return st_map_collision(map_block, new_map_lock); } + // STAIRS if ((map_block == BLOCK_UNBLOCKED || map_block == BLOCK_X || map_block == BLOCK_WATER) && incy > 0 && new_map_lock == TERRAIN_STAIR) { // stairs special case + int middle_y_point_lock = TERRAIN_UNBLOCKED; if (incy == 1) { // gravity middle_y_point_lock = gameControl.getMapPointLock(st_position(map_x_points[i], (py_bottom-1)/TILESIZE)); @@ -2237,8 +2258,6 @@ st_map_collision character::map_collision(const float incx, const short incy, st int point_middle = gameControl.getMapPointLock(st_position(map_x_points[1], map_y_points[1])); int point_bottom = gameControl.getMapPointLock(st_position(map_x_points[1], map_y_points[2])); - //std::cout << ">> check water-splash - point_top.x: " << map_x_points[1] << ", point_top.y: " << map_y_points[1] << ", pos.x: " << position.x << ", pos.y: " << position.y << ", point_bottom: " << point_bottom << ", point_middle: " << point_middle << ", point_top: " << point_top << std::endl; - if (incy != 0) { if (point_top == TERRAIN_UNBLOCKED && point_middle == TERRAIN_UNBLOCKED && point_bottom == TERRAIN_WATER && _water_splash == false) { if (incy < 0) { @@ -2246,21 +2265,14 @@ st_map_collision character::map_collision(const float incx, const short incy, st } else { soundManager.play_sfx(SFX_WATER_LEAVE); } - //std::cout << ">> ADD water splash animation - adjust_y: " << adjust_y << ", point_bottom: " << point_bottom << ", point_middle: " << point_middle << ", point_top: " << point_top << std::endl; _water_splash = true; - //ANIMATION_TYPES pos_type, graphicsLib_gSurface* surface, const st_position &pos, st_position adjust_pos, unsigned int frame_time, unsigned int repeat_times, int direction, st_size framesize - gameControl.get_current_map_obj()->add_animation(ANIMATION_STATIC, &graphLib.water_splash, st_float_position(position.x, (map_y_points[2]-1)*TILESIZE), st_position(0, -6), 100, 0, ANIM_DIRECTION_LEFT, st_size(32, 23)); + gameControl.get_current_map_obj()->add_animation(ANIMATION_STATIC, &graphLib.water_splash, st_float_position(position.x, (map_y_points[2]-1)*TILESIZE-TILESIZE/3), st_position(0, -6), 100, 0, ANIM_DIRECTION_LEFT, st_size(32, 23)); } else if (point_top == point_bottom && point_top == point_middle && _water_splash == true) { - //std::cout << ">> RE-ENABLE water splash animation - point_bottom: " << point_bottom << ", point_middle: " << point_middle << ", point_top: " << point_top << std::endl; _water_splash = false; } } } - - //if (is_player()) std::cout << "character::map_collision_v2 - map_block: " << map_block << std::endl; - - return st_map_collision(map_block, terrain_type); } @@ -2276,7 +2288,6 @@ bool character::is_on_teleporter_capsulse(object *object) int limit_min = object->get_position().x + obj_center_diff; int limit_max = object->get_position().x + object->get_size().width - obj_center_diff; int px = position.x + frameSize.width/2; - std::cout << "px: " << px << ", limit_min: " << limit_min << ", limit_max: " << limit_max << std::endl; if (px > limit_min && px < limit_max) { return true; } @@ -2296,7 +2307,6 @@ bool character::is_on_teleport_platform(object *object) int limit_min = object->get_position().x + obj_center_diff; int limit_max = object->get_position().x + object->get_size().width - obj_center_diff; int px = position.x + frameSize.width/2; - std::cout << "px: " << px << ", limit_min: " << limit_min << ", limit_max: " << limit_max << std::endl; if (px > limit_min && px < limit_max) { return true; } @@ -2320,8 +2330,6 @@ void character::addSpriteFrame(int anim_type, int posX, graphicsLib_gSurface &sp // ANIM_TYPE_STAIRS_MOVE and ANIM_TYPE_STAIRS_SEMI have an extra frame that is the mirror of the first one - if (is_player()) std::cout << "delay: " << delay << std::endl; - for (int anim_direction=0; anim_direction<=1; anim_direction++) { for (int i=0; isecond).frames[anim_direction][anim_type][i].frameSurface.get_surface() == NULL) { @@ -2397,7 +2405,6 @@ string character::get_name(void) const st_position character::is_on_stairs(st_rectangle pos) { if (_dropped_from_stairs == true) { // was dropped from stairs, can't grab again until invencibility time ends - //if (is_player()) std::cout << "is_on_stairs - FALSE 1" << std::endl; return st_position(-1, -1);; } int map_tile_x, map_tile_y; @@ -2407,17 +2414,14 @@ st_position character::is_on_stairs(st_rectangle pos) map_tile_y = (pos.y)/TILESIZE; if (gameControl.get_current_map_obj()->getMapPointLock(st_position(map_tile_x, map_tile_y)) == TERRAIN_STAIR) { - //if (is_player()) std::cout << "is_on_stairs - TRUE 1" << std::endl; return st_position(map_tile_x, map_tile_y); } map_tile_x = (pos.x+pos.w-diff_w)/TILESIZE; if (gameControl.get_current_map_obj()->getMapPointLock(st_position(map_tile_x, map_tile_y)) == TERRAIN_STAIR) { - //if (is_player()) std::cout << "is_on_stairs - TRUE 2" << std::endl; return st_position(map_tile_x, map_tile_y); } - //if (is_player()) std::cout << "is_on_stairs - FALSE 2" << std::endl; return st_position(-1, -1); } @@ -2443,25 +2447,24 @@ st_rectangle character::get_hitbox(int anim_type) // player hitbox is hardcoded if (is_player()) { + x = position.x + GameMediator::get_instance()->player_list_v3_1[_number].sprite_hit_area.x; + y = position.y + GameMediator::get_instance()->player_list_v3_1[_number].sprite_hit_area.y; + w = GameMediator::get_instance()->player_list_v3_1[_number].sprite_hit_area.w; + h = GameMediator::get_instance()->player_list_v3_1[_number].sprite_hit_area.h; if (anim_type == ANIM_TYPE_SLIDE && slide_type == 1) { - x = position.x + 2; - w = 23; - y = position.y + 15; - h = 14; - } else { // stand/default - x = position.x + 8; - y = position.y + 3; - w = 12; - h = 26; + y = position.y + GameMediator::get_instance()->player_list_v3_1[_number].sprite_hit_area.y + SLIDE_Y_ADJUST; + h = GameMediator::get_instance()->player_list_v3_1[_number].sprite_hit_area.h - SLIDE_Y_ADJUST; } + //std::cout << "CHAT:get_hitbox - pos.x[" << position.x << "], hit.x[" << x << "], adjust.x[" << GameMediator::get_instance()->player_list_v3_1[_number].sprite_hit_area.x << "]" << std::endl; } else { int anim_n = state.animation_state; - int anim_type = state.animation_type; // prevent getting size from a frame that does not have information, use Vulnerable-area or hitbox from STAND instead st_rectangle col_rect; if (GameMediator::get_instance()->get_enemy(_number)->sprites[anim_type][anim_n].used == true) { col_rect = GameMediator::get_instance()->get_enemy(_number)->sprites[anim_type][anim_n].collision_rect; + } else if (GameMediator::get_instance()->get_enemy(_number)->sprites[ANIM_TYPE_STAND][0].used == true) { + col_rect = GameMediator::get_instance()->get_enemy(_number)->sprites[ANIM_TYPE_STAND][0].collision_rect; } else { col_rect = st_rectangle(GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x, GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.y, @@ -2469,27 +2472,25 @@ st_rectangle character::get_hitbox(int anim_type) GameMediator::get_instance()->get_enemy(_number)->frame_size.height); } - if (state.direction == ANIM_DIRECTION_LEFT) { - x = position.x - (frameSize.width - col_rect.w) + col_rect.x + 2; + if (!_has_background) { + if (state.direction == ANIM_DIRECTION_LEFT) { + x = position.x + frameSize.width - col_rect.x - col_rect.w; + } else { + x += col_rect.x; + } + y += col_rect.y; } else { - x += col_rect.x - 2; - } - y += col_rect.y; - w = col_rect.w - 4; - h = col_rect.h; - if (w <= 0 || h <= 0) { - CURRENT_FILE_FORMAT::file_npc_v3_1_2* npc_ref = GameMediator::get_instance()->get_enemy(_number); - std::cout << "#### CHAR::GET_HITBOX name[" << name << "], x[" << x << "], y[" << y << "], w[" << w << "], h[" << h << "], animation_state[" << anim_n << "], animation_type[" << anim_type << "]" << std::endl; - if (GameMediator::get_instance()->get_enemy(_number)->sprites[anim_type][anim_n].used == true) { - std::cout << "###### using sprite collision rect" << std::endl; + if (state.direction == ANIM_DIRECTION_LEFT) { + x = position.x - GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x; } else { - std::cout << "###### using npc basic info for rect" << std::endl; + x = position.x - GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x; } + y -= GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.y; } + w = col_rect.w; + h = col_rect.h; } - - - + //if (!is_player()) std::cout << "NPC[" << name << "] - has-bg[" << _has_background << "], pos.x[" << position.x << "], hitbox[" << x << ", " << y << ", " << w << ", " << h << "]" << std::endl; return st_rectangle(x, y, w, h); } @@ -2500,30 +2501,25 @@ st_rectangle character::get_vulnerable_area(int anim_type) float w = frameSize.width; float h = frameSize.height; - if (vulnerable_area_box.x == 0 && vulnerable_area_box.y == 0 && vulnerable_area_box.w == frameSize.width && vulnerable_area_box.h == frameSize.height) { - //std::cout << "#### DEFAULT hitbox" << std::endl; - return st_rectangle(0, 0, 0, 0); - } if (vulnerable_area_box.w != 0 && vulnerable_area_box.h != 0) { // use vulnerable area - //std::cout << "CHAR::get_vulnerable_area[" << name << "] - EXISTS - pos[" << position.x << ", " << position.y << "], x[" << vulnerable_area_box.x << "], w[" << vulnerable_area_box.w << "], h[" << vulnerable_area_box.h << "]" << std::endl; + y = position.y + vulnerable_area_box.y; if (state.direction == ANIM_DIRECTION_LEFT) { - x += vulnerable_area_box.x; + x = position.x - GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x; } else { - //std::cout << "%%%%%%% RIGHT - pos.x[" << position.x << "], vulnerable_area_box.x[" << vulnerable_area_box.x << "], hitbox.x[" << x << "]" << std::endl; - x = position.x + frameSize.width - vulnerable_area_box.w; + x = position.x - vulnerable_area_box.x; + if (_has_background == true) { + int diff_left = total_frame_size.width - vulnerable_area_box.w; + x = position.x - GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x + diff_left; + //std::cout << "NPC[" << name << "] - x[" << x << "], diff_left[" << diff_left << "], pos.x[" << position.x << "], total_w[" << total_frame_size.width << "], vulnerable_area_box.w[" << vulnerable_area_box.w << "], vulnerable.x[" << vulnerable_area_box.x << "], calc-x[" << x << "], bg_adjust.x[" << GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x << "]" << std::endl; + } } - y += vulnerable_area_box.y; w = vulnerable_area_box.w; h = vulnerable_area_box.h; - //if (state.animation_type == ANIM_TYPE_SLIDE) { std::cout << "#### CHAR::get_vulnerable_area [" << name << "][" << x << "," << y << "," << w << "," << h << "]" << std::endl; } return st_rectangle(x, y, w, h); } else { - //std::cout << "CHAR::get_vulnerable_area[" << name << "] - DO NOT EXISTS" << std::endl; - return st_rectangle(0, 0, 0, 0); + return get_hitbox(); } - - } @@ -2579,7 +2575,6 @@ void character::clean_character_graphics_list() std::map::iterator it; it = graphLib.character_graphics_list.find(name); if (it != graphLib.character_graphics_list.end()) { - //std::cout << "CHAR::clean_character_graphics_list[" << name << "]" << std::endl; graphLib.character_graphics_list.erase(it); } } @@ -2595,8 +2590,6 @@ bool character::have_background_graphics() } - - int character::frames_count() { for (int i=0; i 0) { state.animation_state = frames_n - 1; } else { - //std::cout << "### RESET-FRAME-N #5 ###" << std::endl; state.animation_state = 0; } } +bool character::is_on_last_animation_frame() +{ + bool result = (_is_last_frame && state.animation_timer < timer.getTimer()); + return result; +} + bool character::have_frame_graphic(int direction, int type, int pos) { if (pos >= ANIM_FRAMES_COUNT) { @@ -2626,7 +2624,23 @@ bool character::have_frame_graphic(int direction, int type, int pos) if ((graphLib.character_graphics_list.find(name)->second).frames[direction][type][pos].frameSurface.width == 0 || (graphLib.character_graphics_list.find(name)->second).frames[direction][type][pos].frameSurface.get_surface() == NULL) { return false; } - return true; + return true; +} + +bool character::is_on_quicksand() +{ + int px = (get_hitbox().x + get_hitbox().w/2)/TILESIZE; + int py = (get_hitbox().y + get_hitbox().h - QUICKSAND_JUMP_LIMIT)/TILESIZE; + Uint8 terrain_type = gameControl.get_current_map_obj()->getMapPointLock(st_position(px, py)); + bool result = (terrain_type == TERRAIN_QUICKSAND); + //std::cout << "CHAR::is_on_quicksand - [" << result << "], terrain[" << (int)terrain_type << "]" << std::endl; + return result; + +} + +int character::get_teleport_state() +{ + return teleporting_out; } bool character::is_in_stairs_frame() const @@ -2657,7 +2671,6 @@ bool character::is_on_attack_frame() void character::recharge(e_energy_types _en_type, int value) { - //std::cout << "character::recharge"; if (_en_type == ENERGY_TYPE_HP) { if (hitPoints.current < hitPoints.total) { if (hitPoints.current + value <= hitPoints.total) { @@ -2757,8 +2770,6 @@ void character::push_back(short direction) xinc = (move_speed-0.2); } - //std::cout << "CHAR::PUSH_BACK - xinc: " << xinc << std::endl; - if (test_change_position(xinc, 0)) { position.x += xinc; } @@ -2771,8 +2782,6 @@ void character::pull(short direction) xinc = -(move_speed-0.2); } - //std::cout << "CHAR::PULL - xinc: " << xinc << std::endl; - if (test_change_position(xinc, 0)) { position.x += xinc; } @@ -2809,8 +2818,7 @@ st_position character::get_int_position() void character::add_projectile(short id, st_position pos, int trajectory, int direction) { - std::cout << "CHAR::add_projectile - id[" << id << "], pos[" << pos.x << "," << pos.y << "], trajectory[" << trajectory << "], direction[" << direction << "]" << std::endl; - projectile_to_be_added_list.push_back(projectile(id, direction, pos, is_player())); + projectile_to_be_added_list.push_back(projectile(id, direction, pos, is_player(), _number)); projectile &new_projectile = projectile_to_be_added_list.back(); new_projectile.set_is_permanent(); new_projectile.set_trajectory(trajectory); @@ -2825,7 +2833,7 @@ void character::check_reset_stand() // is walking without moving, reset to stand if (moveCommands.left == 0 && moveCommands.right == 0) { if (state.animation_type == ANIM_TYPE_WALK) { - if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #C" << std::endl; + //std::cout << "CHAR - RESET STAND #1" << std::endl; set_animation_type(ANIM_TYPE_STAND); } else if (state.animation_type == ANIM_TYPE_WALK_ATTACK) { set_animation_type(ANIM_TYPE_ATTACK); @@ -2834,16 +2842,15 @@ void character::check_reset_stand() if ((state.animation_type == ANIM_TYPE_ATTACK || state.animation_type == ANIM_TYPE_WALK_ATTACK || state.animation_type == ANIM_TYPE_JUMP_ATTACK || state.animation_type == ANIM_TYPE_ATTACK_DIAGONAL_DOWN || state.animation_type == ANIM_TYPE_ATTACK_DIAGONAL_UP) && timer.getTimer() > state.attack_timer+500) { switch (state.animation_type) { case ANIM_TYPE_WALK_ATTACK: - //std::cout << "CHAR::check_reset_stand #1" << std::endl; - state.animation_type = ANIM_TYPE_WALK; + set_animation_type(ANIM_TYPE_WALK); + //std::cout << "CHAR - RESET STAND #2" << std::endl; break; case ANIM_TYPE_JUMP_ATTACK: - //std::cout << "CHAR::check_reset_stand #2" << std::endl; - state.animation_type = ANIM_TYPE_JUMP; + set_animation_type(ANIM_TYPE_JUMP); break; default: - //std::cout << "CHAR::check_reset_stand #3" << std::endl; - state.animation_type = ANIM_TYPE_STAND; + //std::cout << "CHAR - RESET STAND #3" << std::endl; + set_animation_type(ANIM_TYPE_STAND); break; } @@ -2859,7 +2866,6 @@ unsigned int character::get_projectile_count() for (it=projectile_list.begin(); itgetMapScrolling()); jump(1, gameControl.get_current_map_obj()->getMapScrolling()); - //std::cout << "execute_jump::START - " << initial_y << ", position.y: " << position.y << std::endl; while (_obj_jump.get_speed() < 0) { input.read_input(); char_update_real_position(); @@ -3079,6 +3085,18 @@ void character::execute_jump_up() _obj_jump.interrupt(); } +bool character::is_jumping() +{ + return _obj_jump.is_started(); +} + +void character::interrupt_jump() +{ + _obj_jump.interrupt(); + _obj_jump.finish(); + set_animation_type(ANIM_TYPE_STAND); +} + void character::execute_jump() { // fall until reaching ground @@ -3088,10 +3106,8 @@ void character::execute_jump() jump(0, gameControl.get_current_map_obj()->getMapScrolling()); int initial_y = (int)position.y; jump(1, gameControl.get_current_map_obj()->getMapScrolling()); - std::cout << "execute_jump::START - " << initial_y << ", position.y: " << position.y << std::endl; while (position.y != initial_y) { input.read_input(); - //std::cout << "execute_jump::LOOP - " << initial_y << ", position.y: " << position.y << std::endl; char_update_real_position(); bool resJump = jump(1, gameControl.get_current_map_obj()->getMapScrolling()); if (resJump == false) { @@ -3108,6 +3124,9 @@ void character::execute_jump() void character::fall() { + if (name == "OCTOPUS TENTACLE") { + std::cout << "######## OCTOPUS TENTACLE::fall #1" << std::endl; + } _obj_jump.finish(); // already on the ground if (hit_ground() == true) { @@ -3135,7 +3154,9 @@ void character::fall() // @TODO: find first ground from bottom, that have space for player (2 tiles above are free), check 2 tiles on the x-axis also void character::fall_to_ground() { - std::cout << "################## CHAR::fall_to_ground START" << std::endl; + if (name == "OCTOPUS TENTACLE") { + std::cout << "######## OCTOPUS TENTACLE::fall_to_ground #1" << std::endl; + } _obj_jump.finish(); if (hit_ground() == true) { return; @@ -3144,16 +3165,12 @@ void character::fall_to_ground() char_update_real_position(); position.y++; if (position.y >= RES_H/2 && hit_ground() == true) { - std::cout << "################## CHAR::fall_to_ground STOP - y[" << position.y << "]" << std::endl; return; - } else { - std::cout << "################## CHAR::fall_to_ground CONTINUE - y[" << position.y << "]" << std::endl; } } - std::cout << "################## CHAR::fall_to_ground::END y[" << position.y << "]" << std::endl; } -void character::initialize_position_to_ground() +void character::initialize_boss_position_to_ground() { if (can_fly == true) { return; @@ -3170,17 +3187,22 @@ void character::initialize_position_to_ground() bool character::change_position(short xinc, short yinc) { - st_map_collision map_col = map_collision(xinc, yinc, gameControl.get_current_map_obj()->getMapScrolling()); short int mapLock = map_col.block; - //if (is_player()) std::cout << "*** character::change_position - x: " << position.x << ", y: " << position.y << ", xinc: " << xinc << ", yinc: " << yinc << ", BLOCKED (" << mapLock << ")" << std::endl; - if (mapLock != BLOCK_UNBLOCKED && mapLock != BLOCK_WATER) { + int type = -1; + if (_platform != nullptr) { + type = _platform->get_type(); + } + bool is_on_fly_obj = (yinc > 0 && type == OBJ_ITEM_FLY); + + if (mapLock != BLOCK_UNBLOCKED && mapLock != BLOCK_WATER && is_on_fly_obj == false) { return false; } + int py_before = position.y; position.x += xinc; - //std::cout << "### STAIRS-DOWN #6 ###" << std::endl; position.y += yinc; + //std::cout << "CHAR::change_position - TRUE, yinc[" << yinc << "], py_before[" << py_before << "], py_after[" <get_last_scrolled().x: " << gameControl.get_current_map_obj()->get_last_scrolled().x << std::endl; if (mapLock == TERRAIN_UNBLOCKED || (mapLock == BLOCK_WATER && abs((float)i*WATER_SPEED_MULT) < 1) || mapLock == BLOCK_Y) { position.x += i - gameControl.get_current_map_obj()->get_last_scrolled().x; } else { position.x += i*WATER_SPEED_MULT - gameControl.get_current_map_obj()->get_last_scrolled().x; } if (state.animation_type != ANIM_TYPE_HIT) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } else { gravity(false); return; @@ -3253,7 +3274,7 @@ bool character::test_change_position(short xinc, short yinc) return false; } if (yinc < 0 && position.y < 0) { - return false; + return false; } if (yinc > 0 && position.y > RES_H) { return true; @@ -3271,7 +3292,13 @@ bool character::test_change_position(short xinc, short yinc) short int mapLock = map_col.block; if (mapLock != BLOCK_UNBLOCKED && mapLock != BLOCK_WATER) { - return false; + if (mapLock == BLOCK_X && xinc != 0) { + return false; + } else if (mapLock == BLOCK_Y && yinc != 0) { + return false; + } else if (mapLock == BLOCK_XY) { + return false; + } } } @@ -3297,9 +3324,8 @@ bool character::is_shielded(int projectile_direction) const } return false; } else { - //std::cout << ">> classnpc::is_shielded[" << name << "] - shield_type: " << shield_type << ", projectile_direction: " << projectile_direction << ", state.direction: " << state.direction << std::endl; + //std::cout << "NPC[" << name << "], shield_type[" << shield_type << "], SHIELD_BACK[" << (int)SHIELD_BACK << "], anim-type[" << state.animation_type << "], ANIM_TYPE_SHIELD[" << ANIM_TYPE_SHIELD << "]" << std::endl; if (shield_type == SHIELD_FULL || (shield_type == SHIELD_FRONT && projectile_direction != state.direction && (state.animation_type == ANIM_TYPE_STAND || state.animation_type == ANIM_TYPE_WALK || state.animation_type == ANIM_TYPE_WALK_AIR)) || (shield_type == SHIELD_STAND && state.animation_type == ANIM_TYPE_STAND)) { - //std::cout << ">> classnpc::is_shielded[" << name << "] - TRUE" << std::endl; return true; } if (shield_type == SHIELD_STAND_AND_WALK && projectile_direction != state.direction && (state.animation_type == ANIM_TYPE_STAND || state.animation_type == ANIM_TYPE_WALK)) { @@ -3308,8 +3334,13 @@ bool character::is_shielded(int projectile_direction) const if (shield_type == SHIELD_STAND_FRONT && projectile_direction != state.direction && state.animation_type == ANIM_TYPE_STAND) { return true; } - //std::cout << ">> classnpc::is_shielded[" << name << "] - FALSE" << std::endl; - return false; + if (shield_type == SHIELD_BACK && projectile_direction == state.direction) { + return true; + } + if (shield_type == SHIELD_USING_SHIELD && state.animation_type == ANIM_TYPE_SHIELD) { + return true; + } + return false; } } @@ -3321,6 +3352,9 @@ bool character::is_intangible() if (state.animation_type == ANIM_TYPE_STAND && shield_type == SHIELD_DISGUISE) { return true; } + if (timer.getTimer() < hit_duration+last_hit_time) { // is still intangible from last hit + return true; + } return false; } @@ -3355,7 +3389,6 @@ bool character::is_using_circle_weapon() { if (projectile_list.size() == 1) { if (projectile_list.at(0).get_move_type() == TRAJECTORY_CENTERED) { - std::cout << "CHAR::is_using_circle_weapon[" << name << "] - TRUE" << std::endl; return true; } } @@ -3379,12 +3412,7 @@ void character::set_animation_type(ANIM_TYPE type) _obj_jump.finish(); } - if (name == "MUMMY BOT" && type == ANIM_TYPE_ATTACK) { - std::cout << "DBUG" << std::endl; - } - if (type != state.animation_type) { - //std::cout << "### RESET-FRAME-N #6 ###" << std::endl; state.animation_state = 0; if (is_in_stairs_frame() && type == ANIM_TYPE_HIT) { @@ -3393,13 +3421,6 @@ void character::set_animation_type(ANIM_TYPE type) } } - if (type == ANIM_TYPE_STAIRS) { - //std::cout << ">>> SET STAIRS ANIM TYPE" << std::endl; - } else if (type == ANIM_TYPE_STAIRS_MOVE) { - //std::cout << ">>> SET STAIRS MOOOVE ANIM TYPE, timer: " << timer.getTimer() << ", _stairs_falling_timer: " << _stairs_falling_timer << std::endl; - } else if (type == ANIM_TYPE_JUMP) { - //std::cout << ">>> SET JUMP ANIM TYPE" << std::endl; - } state.animation_type = type; _was_animation_reset = false; @@ -3415,23 +3436,17 @@ void character::set_animation_type(ANIM_TYPE type) } int frame_delay = 20; if (graphLib.character_graphics_list.find(name) != graphLib.character_graphics_list.end()) { - st_char_sprite_data sprite_data = graphLib.character_graphics_list.find(name)->second; - - //std::cout << "set_animation_type::state.direction[" << (int)state.direction << "]" << std::endl; - //std::cout << "set_animation_type::state.animation_type[" << state.animation_type << "]" << std::endl; - //std::cout << "set_animation_type::state.animation_state[" << state.animation_state << "]" << std::endl; - if (state.direction >= CHAR_ANIM_DIRECTION_COUNT) { - state.direction = 0; + set_direction(0); } if (state.animation_type >= ANIM_TYPE_COUNT) { - state.animation_type = 0; + set_animation_type(ANIM_TYPE_STAND); } if (state.animation_state >= ANIM_FRAMES_COUNT) { state.animation_state = 0; } - frame_delay = sprite_data.frames[state.direction][state.animation_type][state.animation_state].delay; + frame_delay = (graphLib.character_graphics_list.find(name)->second).frames[state.direction][state.animation_type][state.animation_state].delay; } state.animation_timer = timer.getTimer() + frame_delay; animation_obj.set_type(static_cast(state.animation_type)); @@ -3453,6 +3468,11 @@ bool character::is_stage_boss() return _is_stage_boss; } +bool character::is_final_game_boss() +{ + return _is_final_game_boss; +} + bool character::is_weak_to_freeze() { if (freeze_weapon_id == -1) { @@ -3467,7 +3487,6 @@ bool character::is_weak_to_freeze() if (wpn_id == -1) { return false; } - //if (game_data.game_npcs[_number].weakness[wpn_id].damage_multiplier == 0) { if (GameMediator::get_instance()->get_enemy(_number)->weakness[wpn_id].damage_multiplier == 0) { return false; } @@ -3486,7 +3505,6 @@ void character::cancel_slide() state.slide_distance = 999; if (state.animation_type == ANIM_TYPE_SLIDE) { if (hit_ground() == true) { - if (name == _debug_char_name) std::cout << "CHAR::RESET_TO_STAND #Y.4" << std::endl; set_animation_type(ANIM_TYPE_STAND); } else { set_animation_type(ANIM_TYPE_JUMP); @@ -3496,7 +3514,8 @@ void character::cancel_slide() float character::get_hit_push_back_n() { - return TILESIZE*0.8; + //return TILESIZE*0.8; + return TILESIZE * 1.2; } bool character::have_shoryuken() diff --git a/character/character.h b/character/character.h index 02bbdac9..afacab4b 100644 --- a/character/character.h +++ b/character/character.h @@ -6,14 +6,14 @@ #include // local includes -#include "file/format/st_hitPoints.h" -#include "file/format/st_common.h" -#include "file/format/st_characterState.h" -#include "graphicslib.h" -#include "projectilelib.h" -#include "character/movement/jump.h" -#include "character/movement/inertia.h" -#include "character/character_animation.h" +#include "../file/format/st_hitPoints.h" +#include "../file/format/st_common.h" +#include "../file/format/st_characterState.h" +#include "../graphicslib.h" +#include "../projectilelib.h" +#include "movement/jump.h" +#include "movement/inertia.h" +#include "character_animation.h" @@ -103,6 +103,7 @@ class character void advance_frameset(); // changes the state for the next (or previous) frame void show(); void show_previous_sprites(); + void reset_dash_effect(); void show_at(st_position pos); void show_sprite(); void reset_sprite_animation_timer(); @@ -127,9 +128,11 @@ class character void set_current_hp(Uint8 inc); void execute_jump(); // execute a complete jump void execute_jump_up(); // execute jump until reaches the maximum height + bool is_jumping(); + void interrupt_jump(); void fall(); // falls until reaching ground or leaving screen /// @TODO void fall_to_ground(); - void initialize_position_to_ground(); + void initialize_boss_position_to_ground(); bool change_position(short int xinc, short int yinc); void change_position_x(short int xinc); int change_position_y(short int yinc); @@ -206,7 +209,9 @@ class character void set_progressive_appear_pos(int pos); bool is_stage_boss(); + bool is_final_game_boss(); void clean_character_graphics_list(); + bool have_background_graphics(); void cancel_slide(); virtual float get_hit_push_back_n(); virtual bool have_shoryuken(); @@ -222,6 +227,10 @@ class character void add_projectile(short id, st_position pos, int trajectory, int direction); st_position get_attack_position(); st_position get_attack_position(short direction); + bool is_on_last_animation_frame(); + bool have_frame_graphic(int direction, int type, int pos); // indicates if the given frame graphic exits + bool is_on_quicksand(); + int get_teleport_state(); private: @@ -238,14 +247,12 @@ class character st_map_collision map_collision(const float incx, const short int incy, st_float_position mapScrolling, int hitbox_anim_type=-1); bool is_on_teleporter_capsulse(object* object); bool is_on_teleport_platform(object* object); - void check_map_collision_point(int &map_block, int &new_map_lock, int mode_xy, st_position map_pos); + void check_map_collision_point(int &map_block, int &new_map_lock, int &old_map_lock, int mode_xy); bool process_special_map_points(int map_lock, int incx, int incy, st_position map_pos); void check_platform_move(short map_lock); void add_graphic(); virtual void death() = 0; bool have_frame_graphics(); - bool have_background_graphics(); - bool have_frame_graphic(int direction, int type, int pos); // indicates if the given frame graphic exits bool is_in_stairs_frame() const; // indicates if the character is on some of the STAIRS animation types bool is_on_attack_frame(); virtual void recharge(e_energy_types _en_type, int value); @@ -272,6 +279,7 @@ class character // members static that can be moved to use game_data std::string name; struct st_size frameSize; + struct st_size total_frame_size; unsigned int max_projectiles; // maximum number of simultaneuous projectiles the character can shot float move_speed; // how many pixels the character moves by cycle (default value) @@ -321,7 +329,7 @@ class character float hit_moved_back_n; // external members - object* _platform; // used to move player when object moves + object* _platform = NULL; // used to move player when object moves bool dead; @@ -345,6 +353,7 @@ class character short slide_type; // 0 - dash (24 px height), 1 - slide (16px height) bool _water_splash; // used to prevent making a new splash until completaly inside or outside water bool _has_background; + st_position background_pos; short _stairs_stopped_count; // used to prevent stopping stairs animation because of a single frame without player input short _charged_shot_projectile_id; short _normal_shot_projectile_id; @@ -360,6 +369,7 @@ class character bool _check_always_move_ahead; // used to prevent setting _always_move_ahead each time we can AI exec int _progressive_appear_pos; // used by spawn-npc to show just a part of the NPC bool _is_stage_boss; // used in NPC class. Indicates if this is the stage-boss + bool _is_final_game_boss = false; // this enemy is the final game boss or spawns it bool _dropped_from_stairs; // used to avoid grabbing stairs again when dropped from it classjump _obj_jump; short _jumps_number; // used for double or triple jumping @@ -370,7 +380,7 @@ class character bool _dashed_jump; // adds horizontal acceleration fo X movement if jump was made during a dash (not slide) until player reaches ground again bool _can_execute_airdash; // prevents dashing multiple-times in middle-air bool _player_must_reset_colors; // inform the player class that he must get back into default-weapon colors - int _stairs_falling_timer; // controls time when player can again grab the staircase + long _stairs_falling_timer; // controls time when player can again grab the staircase bool is_ghost; // if can shoot or not /**< TODO */ st_rectangle vulnerable_area_box; // hitarea, set by classnpc character_animation animation_obj; @@ -378,6 +388,12 @@ class character std::vector previous_position_list; bool must_show_dash_effect; graphicsLib_gSurface dash_effect_shadow_surface_frame; + short int facing = ANIM_DIRECTION_LEFT; // defines the side npc is facing before start moving (also used by LINEWALK behavior) /**< TODO */ + bool can_fall_during_move = false; + float jump_last_moved = 1.0; + unsigned long jump_lock_timer = 0; + int teleporting_out = 0; + }; #endif // CHARACTER_H diff --git a/character/character_animation.cpp b/character/character_animation.cpp index c2224f46..46ecc9b1 100644 --- a/character/character_animation.cpp +++ b/character/character_animation.cpp @@ -1,7 +1,7 @@ #include "character_animation.h" extern graphicsLib graphLib; -#include "timerlib.h" +#include "../timerlib.h" extern timerLib timer; // @TODO: flip on direction // diff --git a/character/character_animation.h b/character/character_animation.h index 01a05a9d..2be3a975 100644 --- a/character/character_animation.h +++ b/character/character_animation.h @@ -4,10 +4,10 @@ #include #include -#include "defines.h" -#include "graphicslib.h" -#include "file/v4/file_game_v4.h" -#include "game_mediator.h" +#include "../defines.h" +#include "../graphicslib.h" +#include "../file/v4/file_game_v4.h" +#include "../game_mediator.h" class character_animation diff --git a/character/classnpc.cpp b/character/classnpc.cpp index 8d6af0fd..23ca2cfb 100644 --- a/character/classnpc.cpp +++ b/character/classnpc.cpp @@ -1,23 +1,26 @@ #include #include -#include "classnpc.h" -#include "graphicslib.h" -#include "stage.h" -#include "classplayer.h" -#include "classmap.h" #include #include - -#include "game_mediator.h" - #ifdef ANDROID #include #endif -#include "inputlib.h" + + +#include "../graphicslib.h" +#include "../stage.h" +#include "classnpc.h" +#include "classplayer.h" +#include "../classmap.h" + +#include "../game_mediator.h" + + +#include "../inputlib.h" extern inputLib input; -#include "game.h" +#include "../game.h" extern game gameControl; @@ -35,7 +38,7 @@ extern int freeze_weapon_id; classnpc::classnpc() : graphic_filename(), first_run(true), _is_player_friend(false) { add_graphic(); - hit_duration = 500; + hit_duration = HIT_BLINK_ANIMATION_LAPSE; if (is_subboss()) { hit_duration = BOSS_HIT_DURATION; } @@ -44,8 +47,9 @@ classnpc::classnpc() : graphic_filename(), first_run(true), _is_player_friend(fa _is_spawn = false; _initialized = 0; _screen_blinked = false; - _parent_id = -1; + _parent_id = st_position(-1, -1); is_ghost = false; + } @@ -53,29 +57,33 @@ classnpc::classnpc() : graphic_filename(), first_run(true), _is_player_friend(fa classnpc::classnpc(int stage_id, int map_id, int main_id, int id) : _is_player_friend(false) // map-loaded npc { + background_pos.x = GameMediator::get_instance()->get_enemy(main_id)->sprites_pos_bg.x; + background_pos.y = GameMediator::get_instance()->get_enemy(main_id)->sprites_pos_bg.y; + + is_ghost = false; build_basic_npc(stage_id, map_id, main_id); facing = GameMediator::get_instance()->map_npc_data[id].direction; - state.direction = facing; + set_direction(facing); fflush(stdout); start_point.x = (GameMediator::get_instance()->map_npc_data[id].start_point.x * TILESIZE) + GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x; - if (GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x != 0) { - std::cout << ">>>>>>>>>>>>> bg_pos.x[" << GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.x << "]" << std::endl; - } start_point.y = (GameMediator::get_instance()->map_npc_data[id].start_point.y * TILESIZE) + GameMediator::get_instance()->get_enemy(_number)->sprites_pos_bg.y; + + static_bg_pos = st_position(GameMediator::get_instance()->map_npc_data[id].start_point.x * TILESIZE, GameMediator::get_instance()->map_npc_data[id].start_point.y * TILESIZE); position.x = start_point.x; position.y = start_point.y; - if (name == "OCTOPUS") { - std::cout << "NPC[" << name << "], x[" << position.x << "], y[" << position.y << "]" << std::endl; + + if (name == "BIG FISH") { + std::cout << "CLASSNPC.BUILD - start_point[" << GameMediator::get_instance()->map_npc_data[id].start_point.x << "][" << GameMediator::get_instance()->map_npc_data[id].start_point.y << "], pos[" << position.x << "][" << position.y << "]" << std::endl; } + _is_spawn = false; _initialized = 0; _screen_blinked = false; - _parent_id = -1; + _parent_id = st_position(-1, -1); - is_ghost = false; if (is_static()) { can_fly = true; @@ -84,10 +92,15 @@ classnpc::classnpc(int stage_id, int map_id, int main_id, int id) : _is_player_f classnpc::classnpc(int stage_id, int map_id, int main_id, st_position npc_pos, short int direction, bool player_friend) // spawned npc { + background_pos.x = GameMediator::get_instance()->get_enemy(main_id)->sprites_pos_bg.x; + background_pos.y = GameMediator::get_instance()->get_enemy(main_id)->sprites_pos_bg.y; + + is_ghost = false; + build_basic_npc(stage_id, map_id, main_id); _is_player_friend = player_friend; facing = direction; - state.direction = direction; + set_direction(direction); start_point.x = npc_pos.x; start_point.y = npc_pos.y; static_bg_pos = st_position(npc_pos.x * TILESIZE, npc_pos.y * TILESIZE); @@ -96,9 +109,8 @@ classnpc::classnpc(int stage_id, int map_id, int main_id, st_position npc_pos, s _is_spawn = true; _initialized = 0; _screen_blinked = false; - _parent_id = -1; + _parent_id = st_position(-1, -1); - is_ghost = false; if (is_static()) { can_fly = true; } @@ -119,7 +131,7 @@ classnpc::classnpc(std::string set_name) : graphic_filename(), first_run(true), _is_spawn = false; _initialized = 0; _screen_blinked = false; - _parent_id = -1; + _parent_id = st_position(-1, -1); is_ghost = false; } @@ -141,7 +153,7 @@ void classnpc::build_basic_npc(int stage_id, int map_id, int main_id) graphicsLib_gSurface npc_sprite_surface; #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "CLASSNPC::build_basic_npc, id[%d]", _number); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "CLASSNPC::build_basic_npc, id[%d]", _number); #endif CURRENT_FILE_FORMAT::file_npc_v3_1_2* copyref = GameMediator::get_instance()->get_enemy(main_id); @@ -149,8 +161,8 @@ void classnpc::build_basic_npc(int stage_id, int map_id, int main_id) name = std::string(copyref->name); #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "CLASSNPC::build_basic_npc, name#1[%s]", copyref->name); - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "CLASSNPC::build_basic_npc, name#2[%s]", name.c_str()); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "CLASSNPC::build_basic_npc, name#1[%s]", copyref->name); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "CLASSNPC::build_basic_npc, name#2[%s]", name.c_str()); #endif @@ -167,13 +179,11 @@ void classnpc::build_basic_npc(int stage_id, int map_id, int main_id) } } - - hitPoints.total = GameMediator::get_instance()->get_enemy(main_id)->hp.total; hitPoints.current = hitPoints.total; if (state.direction > CHAR_ANIM_DIRECTION_COUNT) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } move_speed = GameMediator::get_instance()->get_enemy(main_id)->speed; @@ -182,11 +192,7 @@ void classnpc::build_basic_npc(int stage_id, int map_id, int main_id) walk_range = TILESIZE*6; } - - graphic_filename = GameMediator::get_instance()->get_enemy(main_id)->graphic_filename; - - frameSize.width = GameMediator::get_instance()->get_enemy(main_id)->frame_size.width; frameSize.height = GameMediator::get_instance()->get_enemy(main_id)->frame_size.height; is_ghost = (GameMediator::get_instance()->get_enemy(main_id)->is_ghost != 0); @@ -198,14 +204,12 @@ void classnpc::build_basic_npc(int stage_id, int map_id, int main_id) // TODO - this logic can be passed to the editor if (GameMediator::get_instance()->get_enemy(main_id)->fly_flag != 0) { - //std::cout << "******** classnpc::set_file_data - npc: " << name << ", canfly: " << can_fly << std::endl; can_fly = true; } realPosition.x = 0; realPosition.y = 0; max_projectiles = 1; // hardcoded, fix this in editor - //move_speed = 6; // hardcoded, fix this in editor attack_state = 0; last_execute_time = 0; @@ -213,14 +217,10 @@ void classnpc::build_basic_npc(int stage_id, int map_id, int main_id) // only add graphics if there is no graphic for this NPC yet if (have_frame_graphics() == false) { // load the graphic from file and set it into frameset - - std::string temp_filename = FILEPATH + "images/sprites/enemies/" + graphic_filename; - //printf(">> temp_filename: '%s'\n", temp_filename.c_str()); - graphLib.surfaceFromFile(temp_filename, &npc_sprite_surface); if (npc_sprite_surface.get_surface() == NULL) { - std::cout << "initFrames - Error loading player surface from file\n"; + std::cout << "ERROR: initFrames - Error loading player surface from file\n"; return; } @@ -233,23 +233,30 @@ void classnpc::build_basic_npc(int stage_id, int map_id, int main_id) } } - - if (have_background_graphics() == false) { - graphicsLib_gSurface bg_surface; - std::string bg_filename(GameMediator::get_instance()->get_enemy(main_id)->bg_graphic_filename); - //std::cout << ">>>>>>>>> NPC[" << name << "].bg_filename: '" << bg_filename << "', length: " << bg_filename.length() << ", size: " << bg_filename.size() << std::endl; - if (bg_filename.size() > 0) { + std::string bg_filename(GameMediator::get_instance()->get_enemy(main_id)->bg_graphic_filename); + if (bg_filename.size() > 0) { + _has_background = true; + if (have_background_graphics() == false) { + graphicsLib_gSurface bg_surface; + std::string bg_filename(GameMediator::get_instance()->get_enemy(main_id)->bg_graphic_filename); std::string full_bggraphic_filename = FILEPATH + "images/sprites/enemies/backgrounds/" + bg_filename; - //std::cout << ">>>>>>>>> NPC[" << name << "].bg_filename: " << bg_filename << std::endl; graphLib.surfaceFromFile(full_bggraphic_filename, &bg_surface); if (bg_surface.get_surface() == NULL) { - std::cout << "initFrames - Error loading NPC background surface from file '" << full_bggraphic_filename << std::endl; + std::cout << "ERROR: initFrames - Error loading NPC background surface from file '" << full_bggraphic_filename << std::endl; return; } - /* + graphicsLib_gSurface gsurface_flip; graphLib.character_graphics_background_list.insert(std::pair(name, bg_surface)); + graphLib.flip_image(bg_surface, gsurface_flip, flip_type_horizontal); + graphLib.character_graphics_background_list_left.insert(std::pair(name, gsurface_flip)); _has_background = true; - */ + total_frame_size.width = bg_surface.width; + total_frame_size.height = bg_surface.height; + } else { + static std::map::iterator it; + it = graphLib.character_graphics_background_list.find(name); + total_frame_size.width = (*it).second.width; + total_frame_size.height = (*it).second.height; } } @@ -261,8 +268,11 @@ void classnpc::build_basic_npc(int stage_id, int map_id, int main_id) can_fly = true; } + vulnerable_area_box = vulnerable_area_box = GameMediator::get_instance()->get_enemy(_number)->vulnerable_area; - vulnerable_area_box = GameMediator::get_instance()->get_enemy(_number)->vulnerable_area; + if (_is_player_friend == false && GameMediator::get_instance()->get_enemy(main_id)->behavior == NPC_BEHAVIOR_PLAYER_FRIEND) { + _is_player_friend = true; + } } @@ -284,6 +294,7 @@ bool classnpc::is_subboss() void classnpc::reset_position() { + //std::cout << ">>>>>>>>>> NPC::reset_position[" << name << "], pos[" << position.x << "][" << position.y << "]" << std::endl; position.x = start_point.x; position.y = start_point.y; // if the NPC uses fly/fall, it means, we need to respawn it inside the hole @@ -320,27 +331,28 @@ void classnpc::npc_set_position(st_float_position pos) void classnpc::npc_set_direction(short dir) { - state.direction = dir; + set_direction(dir); } void classnpc::npc_set_initialized(short init) { + std::cout << ">>>> NPC::npc_set_initialized[" << name << "], init[" << init << "]" << std::endl; _initialized = init; } -void classnpc::set_parent_id(int parent_id) +void classnpc::set_parent_id(st_position parent_id) { _parent_id = parent_id; } -int classnpc::get_parent_id() +st_position classnpc::get_parent_id() { return _parent_id; } void classnpc::reset_timers() { - reset_sprite_animation_timer(); + character::reset_sprite_animation_timer(); } bool classnpc::is_static() @@ -351,24 +363,21 @@ bool classnpc::is_static() return false; } +bool classnpc::npc_is_ghost() +{ + return is_ghost; +} + void classnpc::npc_set_hp(st_hit_points new_hp) { hitPoints = new_hp; } - - -// ********************************************************************************************** // -// // -// ********************************************************************************************** // void classnpc::initFrames() { } -// ********************************************************************************************** // -// // -// ********************************************************************************************** // void classnpc::execute() { if (freeze_weapon_effect == FREEZE_EFFECT_NPC && is_weak_to_freeze() == true) { @@ -395,39 +404,36 @@ void classnpc::init_animation() void classnpc::boss_move() { - //std::cout << "NPC::boss_move::BEGIN" << std::endl; if (hitPoints.current <= 0 || position.x < gameControl.get_current_map_obj()->getMapScrolling().x-TILESIZE*2 || position.x > gameControl.get_current_map_obj()->getMapScrolling().x+RES_W+TILESIZE*2) { - //std::cout << "classboss::execute - LEAVE #1" << std::endl; return; } if (last_execute_time > timer.getTimer()) { - //std::cout << "classboss::execute - LEAVE #2" << std::endl; return; } if (freeze_weapon_effect == FREEZE_EFFECT_NPC && is_weak_to_freeze() == true) { - //std::cout << "classboss::execute - LEAVE #3" << std::endl; clean_projectiles(); return; } - //std::cout << "classboss::boss_move[" << name << "] - _initialized: " << _initialized << std::endl; - move_projectiles(); bool is_static_boss = is_static(); + // no need for further numbers, otherwise it will create an overflow + if (_initialized > 4) { + _initialized = 4; + } + if (is_entirely_on_screen() == true && _initialized == 0 && _is_boss == true) { /// @TODO: move this logic to map (player should not move while boss is presenting) _initialized++; set_animation_type(ANIM_TYPE_TELEPORT); - gameControl.map_present_boss(is_stage_boss(), is_static_boss); + gameControl.map_present_boss(is_stage_boss(), is_static_boss, is_stage_boss()); // set temp-background in map return; - } else if (is_entirely_on_screen() == false && is_on_screen() == true && _initialized == 0 && _is_boss == true) { + } else if (is_entirely_on_screen() == false && is_on_screen() == true && _initialized == 0 && _is_boss == true) { fall_to_ground(); + _initialized = 1; return; } else if (_initialized == 1 && _is_boss == true && is_static_boss == false) { -#ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "NPC::boss_move::GRAVITY #1, position.x[%f]", position.x); -#endif if (position.x > RES_H/3 && gravity(true) == false) { _initialized++; } @@ -436,22 +442,23 @@ void classnpc::boss_move() if (first_run == 0) { first_run = 1; + _ai_timer = timer.getTimer() + 1500; // add an initial delay to the boss, until player gets the hang of it } if (_ai_timer > timer.getTimer()) { + //std::cout << "NPC::EXECUTE.boss_move[" << name << "] - END #1" << std::endl; return; } execute_ai(); gravity(false); + //std::cout << "NPC::EXECUTE.boss_move[" << name << "] - END #2" << std::endl; } void classnpc::copy(classnpc *from) { - int i; - facing = from->facing; start_point = from->start_point; static_bg_pos = from->static_bg_pos; @@ -462,7 +469,9 @@ void classnpc::copy(classnpc *from) shield_type = from->shield_type; _is_boss = from->_is_boss; - hitPoints = from->hitPoints; + + hitPoints = from->hitPoints; + name = from->name; position = from->position; realPosition = from->realPosition; @@ -475,24 +484,30 @@ void classnpc::copy(classnpc *from) attack_state = 0; state = from->state; + _has_background = from->_has_background; + + background_pos.x = from->background_pos.x; + background_pos.y = from->background_pos.y; } void classnpc::move_projectiles() { - //int i = 0; - // animate projectiles - //if (name == "Dynamite Bot") std::cout << "******* NPC::move_projectiles - projectile_list.size: " << projectile_list.size() << std::endl; std::vector::iterator it; st_rectangle player_hitbox = gameControl.get_current_map_obj()->get_player_hitbox(); for (it=projectile_list.begin(); it_player_ref->is_shielded((*it).get_direction()) == true && (*it).get_trajectory() != TRAJECTORY_BOMB && (*it).get_trajectory() != TRAJECTORY_LIGHTING&& (*it).get_trajectory() != TRAJECTORY_SLASH) { (*it).reflect(); } else if (gameControl.get_current_map_obj()->_player_ref->is_using_circle_weapon() == true) { - //std::cout << "consume_projectile #0" << std::endl; (*it).consume_projectile(); gameControl.get_current_map_obj()->_player_ref->consume_projectile(); } else { @@ -528,18 +542,15 @@ void classnpc::move_projectiles() } gameControl.get_current_map_obj()->_player_ref->damage(damage_pts, false); if ((*it).get_vanishes_on_hit() == true) { - //std::cout << "consume_projectile #1" << std::endl; (*it).consume_projectile(); } } } } else { // NPC attacking other NPCs - - for (int i=0; i_npc_list.size(); i++) { + for (unsigned int i=0; i_npc_list.size(); i++) { st_rectangle other_npc_hitbox = gameControl.get_current_map_obj()->_npc_list.at(i).get_vulnerable_area(); //classnpc* enemy = (*enemy_it); if (other_npc_hitbox.is_empty() == false && (*it).check_collision(other_npc_hitbox, st_position(moved.width, moved.height)) == true) { - //std::cout << "is_shielded::CALL 2" << std::endl; if (gameControl.get_current_map_obj()->_npc_list.at(i).is_intangible() == true) { continue; } else if (gameControl.get_current_map_obj()->_npc_list.at(i).is_shielded((*it).get_direction()) == true && (*it).get_trajectory() != TRAJECTORY_BOMB && (*it).get_trajectory() != TRAJECTORY_LIGHTING&& (*it).get_trajectory() != TRAJECTORY_SLASH) { @@ -547,7 +558,6 @@ void classnpc::move_projectiles() } else { gameControl.get_current_map_obj()->_npc_list.at(i).damage((*it).get_damage(), false); if ((*it).get_move_type() != TRAJECTORY_CHAIN) { /// @TODO non-destructable types - //std::cout << "consume_projectile #2" << std::endl; (*it).consume_projectile(); } } @@ -575,7 +585,7 @@ void classnpc::show_projectiles() // executes the NPC sub-IA behavior void classnpc::move() { if (state.direction > CHAR_ANIM_DIRECTION_COUNT-1) { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } /// @TODO: this check must be placed in game.cpp and npc must have a set_frozen() method, for individual effect @@ -596,14 +606,9 @@ void classnpc::move() { execute_ai(); } - //std::cout << "classnpc::move - position.y: " << position.y << std::endl; - if (can_fly == false && position.y >= RES_H+1) { // death because felt in a hole damage(999, true); - position.x = start_point.x; - position.y = start_point.y; - //std::cout << "classnpc::move - FELT IN HOLE - DEATH - pos.x: " << position.x << ", pos.y: " << position.y << std::endl; return; } @@ -635,16 +640,20 @@ short classnpc::get_dead_state() void classnpc::death() { + if (dead == true) { + return; + } _obj_jump.interrupt(); _obj_jump.finish(); dead = true; _auto_respawn_timer = timer.getTimer() + GameMediator::get_instance()->get_enemy(_number)->respawn_delay; - //std::cout << "classnpc::death" << std::endl; if (_ai_state.main_status == IA_STATE_QUAKE_ATTACK) { graphLib.set_screen_adjust(st_position(0, 0)); } if (is_stage_boss()) { gameControl.get_current_map_obj()->clear_animations(); + } else if (is_boss()) { + gameControl.restart_stage_music(); } } @@ -699,13 +708,11 @@ void classnpc::set_stage_boss(bool boss_flag) void classnpc::revive() { - //std::cout << "**** classnpc::revive[" << name << " ****" << std::endl; - //position.x = start_point.x; - //position.y = start_point.y; if (GameMediator::get_instance()->ai_list.at(_number).states[_ai_chain_n].extra_parameter == AI_ACTION_FLY_OPTION_DRILL_DOWN) { position.y = -TILESIZE; } hitPoints.current = hitPoints.total; + dead = false; } @@ -715,9 +722,9 @@ void classnpc::revive() void classnpc::invert_direction() { if (state.direction == ANIM_DIRECTION_LEFT) { - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); } else { - state.direction = ANIM_DIRECTION_LEFT; + set_direction(ANIM_DIRECTION_LEFT); } _ai_state.main_status = IA_STAND; } diff --git a/character/classnpc.h b/character/classnpc.h index 480afd02..a28c7602 100644 --- a/character/classnpc.h +++ b/character/classnpc.h @@ -2,9 +2,9 @@ #define CLASSNPC_H #include +#include "../file/format.h" #include "character.h" -#include "file/format.h" -#include "character/artificial_inteligence.h" +#include "artificial_inteligence.h" class classPlayer; @@ -60,11 +60,11 @@ class classnpc : public artificial_inteligence void npc_set_position(st_float_position pos); void npc_set_direction(short dir); void npc_set_initialized(short init); - void set_parent_id(int parent_id); - int get_parent_id(); + void set_parent_id(st_position parent_id); + st_position get_parent_id(); void reset_timers(); bool is_static(); - + bool npc_is_ghost(); @@ -93,7 +93,6 @@ class classnpc : public artificial_inteligence protected: // W A R N I N G -----------------> new members must be reflected in copy() method - short int facing; // defines the side npc is facing before start moving (also used by LINEWALK behavior) /**< TODO */ std::string graphic_filename; // graphic file used on it /**< TODO */ bool first_run; /**< TODO */ bool _is_player_friend; // player spawned npcs must not hit him, but other npcs instead /**< TODO */ @@ -103,7 +102,7 @@ class classnpc : public artificial_inteligence // boss member variables short _initialized; /**< TODO */ bool _screen_blinked; /**< TODO */ - int _parent_id; + st_position _parent_id; // parent original position in the map is the id st_position static_bg_pos; }; diff --git a/character/classplayer.cpp b/character/classplayer.cpp index d11a34e8..b1f9c9cc 100644 --- a/character/classplayer.cpp +++ b/character/classplayer.cpp @@ -7,22 +7,22 @@ #endif #include "classplayer.h" -#include "inputlib.h" -#include "game_mediator.h" +#include "../inputlib.h" +#include "../game_mediator.h" extern inputLib input; -#include "class_config.h" +#include "../class_config.h" -#include "soundlib.h" +#include "../soundlib.h" extern soundLib soundManager; -#include "game.h" +#include "../game.h" extern game gameControl; -#define PLAYER_MOVE_SPEED 1.25 // higher is faster -#include "file/file_io.h" -#include "classmap.h" +#define PLAYER_MOVE_SPEED 1.65 // higher is faster +#include "../file/file_io.h" +#include "../classmap.h" extern std::string FILEPATH; @@ -31,7 +31,6 @@ extern CURRENT_FILE_FORMAT::st_save game_save; extern FREEZE_EFFECT_TYPES freeze_weapon_effect; extern CURRENT_FILE_FORMAT::file_io fio; extern struct CURRENT_FILE_FORMAT::st_checkpoint checkpoint; -extern CURRENT_FILE_FORMAT::st_game_config game_config; // ********************************************************************************************** // // // @@ -39,8 +38,6 @@ extern CURRENT_FILE_FORMAT::st_game_config game_config; classPlayer::classPlayer(int playerNumber) : teleporter_n(-1), selected_weapon(WEAPON_DEFAULT), l_key_released(true), r_key_released(true) { - std::cout << "### PLAYER::CREATE::number[" << _number << "]" << std::endl; - _number = playerNumber; if (_number == 3 || _number == 0) { //_obj_jump.set_jump_acceleration(0.95); @@ -54,7 +51,7 @@ classPlayer::classPlayer(int playerNumber) : teleporter_n(-1), selected_weapon(W shield_type = SHIELD_FRONT; /// @TODO: from editor // load items from save selected_weapon = 0; - move_speed = PLAYER_MOVE_SPEED; + move_speed = PLAYER_MOVE_SPEED * SharedData::get_instance()->get_movement_multiplier(); reset_charging_shot(); } @@ -84,14 +81,10 @@ void classPlayer::initialize() slide_type = 1; } - //std::cout << "player.number[" << _number << "]" << std::endl; _charged_shot_projectile_id = GameMediator::get_instance()->player_list_v3_1[_number].full_charged_projectile_id; _normal_shot_projectile_id = GameMediator::get_instance()->player_list_v3_1[_number].normal_shot_projectile_id; - - //std::cout << "classPlayer::initialize - player[" << _number << "][" << name << "], _normal_shot_projectile_id[" << _normal_shot_projectile_id << "]" << std::endl; - _simultaneous_shots = GameMediator::get_instance()->player_list_v3_1[_number].simultaneous_shots; - //std::cout << "classjump::set_acceleration - player[" << name << "], accel[" << GameMediator::get_instance()->player_list[_number].jump_gravity << "]" << std::endl; + if (can_double_jump() == true) { _jumps_number = 2; } else { @@ -125,7 +118,6 @@ bool classPlayer::get_item(object_collision &obj_info) bool res = false; // deal with non-blocking items if (obj_info._object != NULL && obj_info._object->finished() == false) { - //std::cout << "classPlayer::get_item" << std::endl; switch (obj_info._object->get_type()) { case OBJ_ENERGY_TANK: if (game_save.items.energy_tanks < 9) { // max 9 @@ -136,27 +128,22 @@ bool classPlayer::get_item(object_collision &obj_info) res = true; break; case OBJ_WEAPON_TANK: - game_save.items.weapon_tanks = 1; // max 1 + if (game_save.items.weapon_tanks < 9) { // max 9 + game_save.items.weapon_tanks++; + } obj_info._object->set_finished(true); soundManager.play_sfx(SFX_GOT_ITEM); res = true; break; case OBJ_SPECIAL_TANK: - game_save.items.special_tanks = 1; // max 1 + if (game_save.items.special_tanks < 9) { // max 9 + game_save.items.special_tanks++; + } obj_info._object->set_finished(true); soundManager.play_sfx(SFX_GOT_ITEM); res = true; break; - case OBJ_LIFE: - game_save.items.lifes++; - if (game_save.items.lifes > 9) { - game_save.items.lifes = 9; - } - obj_info._object->set_finished(true); - soundManager.play_sfx(SFX_GOT_ITEM); - res = true; - break; - case OBJ_WEAPON_PILL_BIG: + case OBJ_WEAPON_PILL_BIG: obj_info._object->set_finished(true); recharge(ENERGY_TYPE_WEAPON, ENERGY_ITEM_BIG); res = true; @@ -193,8 +180,13 @@ bool classPlayer::get_item(object_collision &obj_info) update_armor_properties(); res = true; break; + case OBJ_LIFE: + obj_info._object->set_finished(true); + soundManager.play_sfx(SFX_GOT_ITEM); + if (game_save.items.lifes < 9) { + game_save.items.lifes++; // max 9 + } default: - //std::cout << "classPlayer::get_item - unknown item type: " << obj_info._object->get_type() << std::endl; break; } } @@ -221,23 +213,19 @@ void classPlayer::recharge(e_energy_types _en_type, int value) } -bool classPlayer::shoryuken() +bool classPlayer::shouryuken() { // trying to start command (can only start if standing) - - //std::cout << ">> SHOURYUKEN - up: " << moveCommands.up << ", dash: " << moveCommands.dash << ", jump: " << moveCommands.jump << std::endl; - if (moveCommands.up != 0 && moveCommands.dash != 0 && state.animation_type == ANIM_TYPE_STAND) { - state.animation_type = ANIM_TYPE_SPECIAL_ATTACK; - std::cout << ">>>>>>>>>>>>>>>>>>>> SHORYUKEN::START" << std::endl; + set_animation_type(ANIM_TYPE_SPECIAL_ATTACK); + _can_execute_airdash = false; soundManager.play_sfx(SFX_SHORYUKEN_GIRL); _obj_jump.start(true, TERRAIN_UNBLOCKED); return true; // is executing } else if (state.animation_type == ANIM_TYPE_SPECIAL_ATTACK) { - std::cout << ">>>>>>>>>>>>>>>>>>>> SHORYUKEN::EXECUTE" << std::endl; _obj_jump.execute(TERRAIN_UNBLOCKED); - int jump_speed = _obj_jump.get_speed(); + float jump_speed = _obj_jump.get_speed(); bool jump_moved = false; // check collision @@ -250,22 +238,19 @@ bool classPlayer::shoryuken() } st_map_collision map_col = map_collision(0, speed_y, gameControl.get_current_map_obj()->getMapScrolling()); int map_lock = map_col.block; - //std::cout << "jump::check_collision - i[" << i << "], map_lock[" << map_lock << "]" << std::endl; if (map_lock == BLOCK_UNBLOCKED || map_lock == BLOCK_WATER) { - //std::cout << "jump.speed[" << speed_y << "]" << std::endl; position.y += speed_y; jump_moved = true; break; } } if (jump_speed != 0 && jump_moved == false) { - //std::cout << "chat::jump - must interrupt because a collision happened" << std::endl; if (jump_speed < 0) { _obj_jump.interrupt(); } else { _obj_jump.finish(); - state.animation_type = ANIM_TYPE_STAND; + set_animation_type(ANIM_TYPE_STAND); } } @@ -293,6 +278,14 @@ Uint8 classPlayer::get_max_hp() return fio.get_heart_pieces_number(game_save); } +void classPlayer::block_jump() +{ + if (hit_ground() == false) { + return; + } + jump_lock_timer = timer.getTimer() + JUMP_LOCK_DURATION; +} + void classPlayer::attack(bool dont_update_colors) { @@ -317,9 +310,8 @@ void classPlayer::attack(bool dont_update_colors) if (selected_weapon == WEAPON_DEFAULT) { /// @NOTE: desabilitei o tiro em diagonal pois vai precisar mudanças no sistema de arquivos para comportar as poses/frames de ataque para cima e para baixo - if (game_config.auto_charge_mode) { + if (SharedData::get_instance()->game_config.auto_charge_mode && !is_dead()) { if (moveCommands.attack == 1) { - std::cout << "auto-charge-attack" << std::endl; moveCommands.attack = 0; attack_button_released = true; } else { @@ -342,13 +334,11 @@ void classPlayer::attack(bool dont_update_colors) } return; } else if (game_save.items.weapons[selected_weapon] <= 0) { - std::cout << "invalid weapon" << std::endl; return; } if (moveCommands.attack == 0 && attack_button_released == false) { - //std::cout << ">>>>>>>>> attack_button_released[TRUE] #2 <<<<<<<<<<<<<" << std::endl; attack_button_released = true; return; } @@ -371,7 +361,6 @@ void classPlayer::attack(bool dont_update_colors) } if (moveCommands.attack != 0 && (timer.getTimer()-state.attack_timer) > 100 && attack_button_released == true) { - //std::cout << "########## attack_button_released[FALSE] #1 ##########" << std::endl; attack_button_released = false; @@ -383,19 +372,35 @@ void classPlayer::attack(bool dont_update_colors) short int weapon_id = 0; - if (used_weapon == WEAPON_ITEM_COIL) { if (gameControl.get_current_map_obj()->have_player_object() == true) { weapon_id = -1; } else { add_coil_object(); } + //set_weapon(WEAPON_DEFAULT, true); } else if (used_weapon == WEAPON_ITEM_JET) { if (gameControl.get_current_map_obj()->have_player_object() == true) { weapon_id = -1; } else { add_jet_object(); } + //set_weapon(WEAPON_DEFAULT, true); + } else if (used_weapon == WEAPON_ITEM_ETANK) { + class_config config_manager; + config_manager.set_player_ref(this); + config_manager.use_tank(TANK_ENERGY); + set_weapon(WEAPON_DEFAULT, true); + } else if (used_weapon == WEAPON_ITEM_WTANK) { + class_config config_manager; + config_manager.set_player_ref(this); + config_manager.use_tank(TANK_WEAPON); + set_weapon(WEAPON_DEFAULT, true); + } else if (used_weapon == WEAPON_ITEM_STANK) { + class_config config_manager; + config_manager.set_player_ref(this); + config_manager.use_tank(TANK_SPECIAL); + set_weapon(WEAPON_DEFAULT, true); } else { weapon_id = used_weapon; } @@ -408,17 +413,10 @@ void classPlayer::attack(bool dont_update_colors) // check if projectiles limit from weapon/projectile os not reached if (projectile_list.size() >= GameMediator::get_instance()->get_projectile(game_data.weapons[weapon_id].id_projectile).max_shots) { - std::cout << "#### PLAYER::ATTACK - can't shot, weapon number reached ###" << std::endl; return; } - - //soundManager.play_sfx(SFX_PLAYER_SHOT); - - - //std::cout << "############ weapon_id: " << weapon_id << std::endl; - - projectile_list.push_back(projectile(game_data.weapons[weapon_id].id_projectile, state.direction, get_attack_position(), is_player())); + projectile_list.push_back(projectile(game_data.weapons[weapon_id].id_projectile, state.direction, get_attack_position(), is_player(), _number)); projectile &temp_proj = projectile_list.back(); temp_proj.play_sfx(false); temp_proj.set_is_permanent(); @@ -426,8 +424,6 @@ void classPlayer::attack(bool dont_update_colors) temp_proj.set_owner(this); - //std::cout << "weapon_id: " << weapon_id << ", projectile_id: " << game_data.weapons[weapon_id].id_projectile << std::endl; - int weapon_trajectory = GameMediator::get_instance()->get_projectile(game_data.weapons[weapon_id].id_projectile).trajectory; if (weapon_trajectory == TRAJECTORY_CENTERED || weapon_trajectory == TRAJECTORY_SLASH) { temp_proj.set_owner_direction(&state.direction); @@ -440,7 +436,6 @@ void classPlayer::attack(bool dont_update_colors) st_rectangle hitbox = get_hitbox(); classnpc* temp = gameControl.get_current_map_obj()->find_nearest_npc(st_position(hitbox.x+hitbox.w/2, hitbox.y+hitbox.h/2)); if (temp != NULL) { - //std::cout << "PLAYER::attack - could not find target" << std::endl; temp_proj.set_target_position(temp->get_position_ref()); } } else if (weapon_trajectory == TRAJECTORY_TARGET_DIRECTION || weapon_trajectory == TRAJECTORY_TARGET_EXACT || weapon_trajectory == TRAJECTORY_ARC_TO_TARGET) { @@ -448,7 +443,6 @@ void classPlayer::attack(bool dont_update_colors) st_position player_pos(hitbox.x+hitbox.w/2, hitbox.y+hitbox.h/2); classnpc* temp = gameControl.get_current_map_obj()->find_nearest_npc_on_direction(player_pos, state.direction); if (temp != NULL) { - //std::cout << "PLAYER::attack - could not find target" << std::endl; temp_proj.set_target_position(temp->get_position_ref()); } if (weapon_trajectory == TRAJECTORY_ARC_TO_TARGET) { @@ -468,8 +462,6 @@ void classPlayer::attack(bool dont_update_colors) } } - //std::cout << "Added projectile - id: " << game_data.weapons[weapon_id].id_projectile << std::endl; - if (selected_weapon != WEAPON_DEFAULT) { if (weapon_trajectory == TRAJECTORY_QUAKE) { consume_weapon(4); @@ -480,7 +472,6 @@ void classPlayer::attack(bool dont_update_colors) } } - attack_state = ATTACK_START; state.attack_timer = timer.getTimer(); if (state.animation_type == ANIM_TYPE_STAND) { @@ -507,7 +498,6 @@ void classPlayer::damage_ground_npcs() } } if (projectile_n == -1) { - std::cout << "damage_ground_npcs - could not find projectile of QUAKE trajectory type" << std::endl; return; } // find quake weapon in weapons list @@ -520,7 +510,6 @@ void classPlayer::damage_ground_npcs() } // could not find the weapon if (weapon_n == -1) { - std::cout << "damage_ground_npcs - could not find weapon with projectile of id '" << weapon_n << "'" << std::endl; return; } @@ -528,6 +517,9 @@ void classPlayer::damage_ground_npcs() if (gameControl.get_current_map_obj()->_npc_list.at(i).is_on_visible_screen() == false) { continue; } + if (gameControl.get_current_map_obj()->_npc_list.at(i).is_player_friend() == true) { + continue; + } // check if NPC is vulnerable to quake (all bosses except the one with weakness are not) short damage = GameMediator::get_instance()->get_enemy(gameControl.get_current_map_obj()->_npc_list.at(i).get_number())->weakness[weapon_n].damage_multiplier; @@ -552,9 +544,10 @@ void classPlayer::damage_ground_npcs() // ********************************************************************************************** // void classPlayer::initFrames() { - frameSize.width = 29; - frameSize.height = 29; - + frameSize.width = GameMediator::get_instance()->player_list_v3_1[_number].sprite_size.width; + frameSize.height = GameMediator::get_instance()->player_list_v3_1[_number].sprite_size.height; + total_frame_size.width = frameSize.width; + total_frame_size.height = frameSize.height; add_graphic(); init_weapon_colors(); @@ -566,7 +559,7 @@ void classPlayer::initFrames() //playerSpriteSurface.show_debug = true; graphLib.surfaceFromFile(filename.str(), &playerSpriteSurface); if (playerSpriteSurface.get_surface() == NULL) { - std::cout << "initFrames - Error loading player surface from file\n"; + std::cout << "ERROR: initFrames - Error loading player surface from file\n"; return; } @@ -576,8 +569,8 @@ void classPlayer::initFrames() // @TODO - automatically add inverse direction (right) sprites // STAND - addSpriteFrame(ANIM_TYPE_STAND, 3, playerSpriteSurface, 5000); - addSpriteFrame(ANIM_TYPE_STAND, 4, playerSpriteSurface, 150); + addSpriteFrame(ANIM_TYPE_STAND, 3, playerSpriteSurface, 2000); + addSpriteFrame(ANIM_TYPE_STAND, 4, playerSpriteSurface, 100); // WALK addSpriteFrame(ANIM_TYPE_WALK, 7, playerSpriteSurface, WALK_FRAME_DELAY); addSpriteFrame(ANIM_TYPE_WALK, 8, playerSpriteSurface, WALK_FRAME_DELAY); @@ -601,7 +594,7 @@ void classPlayer::initFrames() addSpriteFrame(ANIM_TYPE_TELEPORT, 0, playerSpriteSurface, 200); addSpriteFrame(ANIM_TYPE_TELEPORT, 1, playerSpriteSurface, 100); addSpriteFrame(ANIM_TYPE_TELEPORT, 2, playerSpriteSurface, 100); - // STAIRS + // STAIRS addSpriteFrame(ANIM_TYPE_STAIRS, 17, playerSpriteSurface, 5000); // stairs semi addSpriteFrame(ANIM_TYPE_STAIRS_SEMI, 18, playerSpriteSurface, 5000); @@ -632,6 +625,9 @@ void classPlayer::initFrames() addSpriteFrame(ANIM_TYPE_GOT_WEAPON, 26, playerSpriteSurface, 200); addSpriteFrame(ANIM_TYPE_GOT_WEAPON, 27, playerSpriteSurface, 200); + addSpriteFrame(ANIM_TYPE_SPECIAL_ATTACK, 29, playerSpriteSurface, 200); + + playerSpriteSurface.freeGraphic(); change_player_color(true); @@ -647,7 +643,7 @@ void classPlayer::execute() clear_move_commands(); input.clean(); } - if (have_shoryuken() == true && shoryuken() == true) { // while doing shoryuken won't move + if (have_shoryuken() == true && shouryuken() == true) { // while doing shoryuken won't move return; } @@ -671,9 +667,7 @@ void classPlayer::execute_projectiles() projectile_list.erase(it); break; } - st_size moved = (*it).move(); - - //std::cout << "projectile.move_type: " << (*it)->get_move_type() << std::endl; + st_float_size moved = (*it).move(); /// @TODO projectiles that are tele-guided if ((*it).get_move_type() == TRAJECTORY_QUAKE) { @@ -686,7 +680,7 @@ void classPlayer::execute_projectiles() } // check collision against enemies - for (int i=0; i_npc_list.size(); i++) { + for (unsigned int i=0; i_npc_list.size(); i++) { if ((*it).is_finished == true) { projectile_list.erase(it); break; @@ -697,23 +691,22 @@ void classPlayer::execute_projectiles() if (gameControl.get_current_map_obj()->_npc_list.at(i).is_dead() == true) { continue; } - + if (gameControl.get_current_map_obj()->_npc_list.at(i).is_player_friend() == true) { + continue; + } // collision against whole body - st_rectangle npc_hitbox = gameControl.get_current_map_obj()->_npc_list.at(i).get_hitbox(); - //std::cout << "### #1 - enemy[" << gameControl.get_current_map_obj()->_npc_list.at(i).get_name() << "].hitbox[" << npc_hitbox.x << "," << npc_hitbox.y << "," << npc_hitbox.w << "," << npc_hitbox.h << "]" << std::endl; + st_rectangle npc_hitbox = gameControl.get_current_map_obj()->_npc_list.at(i).get_vulnerable_area(); - //classnpc* enemy = (*enemy_it); if ((*it).check_collision(npc_hitbox, st_position(moved.width, moved.height)) == true) { - - //std::cout << "### #2 - enemy[" << gameControl.get_current_map_obj()->_npc_list.at(i).get_name() << "].hit[TRUE]" << std::endl; - + if (gameControl.get_current_map_obj()->_npc_list.at(i).get_name() == "BIG FISH") { + std::cout << ">>>>>>>> projectile-hit-npc" << std::endl; + } // shielded NPC: reflects/finishes shot if (gameControl.get_current_map_obj()->_npc_list.at(i).is_intangible() == true) { - //std::cout << "### #3 - enemy[" << gameControl.get_current_map_obj()->_npc_list.at(i).get_name() << "].intangible[TRUE]" << std::endl; + (*it).consume_projectile(); continue; } else if (gameControl.get_current_map_obj()->_npc_list.at(i).is_shielded((*it).get_direction()) == true && (*it).get_trajectory() != TRAJECTORY_BOMB && (*it).get_trajectory() != TRAJECTORY_LIGHTING && (*it).get_trajectory() != TRAJECTORY_SLASH && (*it).get_vanishes_on_hit() == true) { - //std::cout << "### #4 - enemy[" << gameControl.get_current_map_obj()->_npc_list.at(i).get_name() << "].shielded[TRUE]" << std::endl; if ((*it).get_trajectory() == TRAJECTORY_CHAIN) { (*it).consume_projectile(); } else { @@ -722,31 +715,19 @@ void classPlayer::execute_projectiles() continue; } if (gameControl.get_current_map_obj()->_npc_list.at(i).is_invisible() == true) { // invisible NPC -> ignore shot - //std::cout << "### #5 - enemy[" << gameControl.get_current_map_obj()->_npc_list.at(i).get_name() << "].invisible[TRUE]" << std::endl; continue; } if (gameControl.get_current_map_obj()->_npc_list.at(i).is_teleporting() == true) { // executing AI-action TELEPORT - //std::cout << "### #6 - enemy[" << gameControl.get_current_map_obj()->_npc_list.at(i).get_name() << "].teleporting[TRUE]" << std::endl; continue; } // check if have hit area, and if hit it st_rectangle npc_vulnerable_area = gameControl.get_current_map_obj()->_npc_list.at(i).get_vulnerable_area(); - - //std::cout << "### enemy[" << gameControl.get_current_map_obj()->_npc_list.at(i).get_name() << "].vulnerable_area[" << npc_vulnerable_area.x << "," << npc_vulnerable_area.y << "," << npc_vulnerable_area.w << "," << npc_vulnerable_area.h << "]" << std::endl; - int temp_x = Sint16(npc_vulnerable_area.x-gameControl.get_current_map_obj()->getMapScrolling().x); if (npc_vulnerable_area.is_empty() == false && npc_vulnerable_area != npc_hitbox && (*it).check_collision(npc_vulnerable_area, st_position(moved.width, moved.height)) == false) { // hit body, but not the hit area -> reflect - - std::cout << "### MISS-ENEMY VULNERABLE-AREA - projectile.x[" << (*it).get_position().x << "], enemy.pos.x[" << gameControl.get_current_map_obj()->_npc_list.at(i).getPosition().x << "], enemy.pos.y[" << gameControl.get_current_map_obj()->_npc_list.at(i).getPosition().y << "]" << std::endl; - std::cout << "### npc_vulnerable_area x[" << npc_vulnerable_area.x << "], y[" << npc_vulnerable_area.y << "], w[" << npc_vulnerable_area.w << "], h[" << npc_vulnerable_area.h << "]" << std::endl; - std::cout << "### npc_hitbox x[" << npc_hitbox.x << "], y[" << npc_hitbox.y << "], w[" << npc_hitbox.w << "], h[" << npc_hitbox.h << "]" << std::endl; - (*it).reflect(); // HITAREA reflect continue; - } else { - std::cout << "### HIT-ENEMY VULNERABLE-AREA - enemy.pos.x[" << gameControl.get_current_map_obj()->_npc_list.at(i).getPosition().x << "], enemy.pos.y[" << gameControl.get_current_map_obj()->_npc_list.at(i).getPosition().y << "]"; } short wpn_id = (*it).get_weapon_id(); @@ -758,25 +739,19 @@ void classPlayer::execute_projectiles() // NPC using cicrcle weapon, is only be destroyed by CHAIN, but NPC won't take damage if (gameControl.get_current_map_obj()->_npc_list.at(i).is_using_circle_weapon() == true) { if ((*it).get_trajectory() == TRAJECTORY_CHAIN) { - std::cout << "PROJ::END #3" << std::endl; gameControl.get_current_map_obj()->_npc_list.at(i).consume_projectile(); } - std::cout << "PROJ::END #4" << std::endl; (*it).consume_projectile(); return; } if ((*it).get_damage() > 0) { int multiplier = GameMediator::get_instance()->get_enemy(gameControl.get_current_map_obj()->_npc_list.at(i).get_number())->weakness[wpn_id].damage_multiplier; + if (multiplier <= 0) { - multiplier = 1; + continue; } - - std::cout << ">>>>>> weapon multiplier[" << multiplier << "], damage[" << (int)(*it).get_damage() << "]" << std::endl; - gameControl.get_current_map_obj()->_npc_list.at(i).damage((*it).get_damage() * multiplier, ignore_hit_timer); - } else { - std::cout << "PLAYER::EXECUTE_PROJ - projectile damage is zero" << std::endl; } if ((*it).get_damage() > 0) { if ((*it).get_vanishes_on_hit() == true) { @@ -788,21 +763,31 @@ void classPlayer::execute_projectiles() } + // check collision against objects + // if projectile is a bomb, check collision against objects - if ((*it).get_effect_n() == 1 && ((*it).get_move_type() == TRAJECTORY_BOMB || (*it).get_move_type() == TRAJECTORY_FALL_BOMB) || (*it).is_explosive() == true) { - //std::cout << "PLAYER::execute_projectiles - Have exploding bomb, checking objects that collide..." << std::endl; - std::vector res_obj = gameControl.get_current_map_obj()->check_collision_with_objects((*it).get_area()); - if (res_obj.size() > 0) { - //std::cout << "PLAYER::execute_projectiles - Found objects (" << res_obj.size() << ") that collides with bomb!" << std::endl; - for (unsigned int i=0; iget_name() << "].type: " << temp_obj->get_type() << ", OBJ_DESTRUCTIBLE_WALL: " << OBJ_DESTRUCTIBLE_WALL << std::endl; - if (temp_obj->get_type() == OBJ_DESTRUCTIBLE_WALL) { - //std::cout << "PLAYER::execute_projectiles - Found destructible block!!!!" << std::endl; + std::vector res_obj = gameControl.get_current_map_obj()->check_collision_with_objects((*it).get_area()); + if (res_obj.size() > 0) { + for (unsigned int i=0; iget_type() == OBJ_DESTRUCTIBLE_NO_DROP) { + temp_obj->set_hidden(true); + } else if (temp_obj->get_type() == OBJ_JUMP_SHOOT_DESTRUCTIBLE_NO_DROP) { + temp_obj->inc_status(); + continue; + } else { temp_obj->set_finished(true); - if ((*it).is_explosive() == true) { - (*it).transform_into_explosion(); - } + } + if ((*it).is_explosive() == true) { + (*it).transform_into_explosion(); + } else { + st_float_position obj_pos(temp_obj->get_position().x, temp_obj->get_position().y); + gameControl.get_current_map_obj()->add_animation(ANIMATION_STATIC, &graphLib.explosion16, obj_pos, st_position(0, 0), 80, 2, ANIM_DIRECTION_RIGHT, st_size(16, 16)); + } + if (temp_obj->get_type() == OBJ_DESTRUCTIBLE_WITH_DROP) { + st_position drop_pos(temp_obj->get_position().x+temp_obj->get_size().width/2, (temp_obj->get_position().y)); + gameControl.get_current_map_obj()->drop_random_item(drop_pos); } } } @@ -812,9 +797,20 @@ void classPlayer::execute_projectiles() projectile_to_be_added_list.clear(); } +bool classPlayer::object_is_affected_by_projectile(object *temp_obj, projectile &projectile) +{ + if (projectile.get_effect_n() == 1 && (projectile.get_move_type() == TRAJECTORY_BOMB || projectile.get_move_type() == TRAJECTORY_FALL_BOMB) || projectile.is_explosive() == true && temp_obj->get_type() == OBJ_DESTRUCTIBLE_WALL) { + return true; + } + if (temp_obj->get_type() == OBJ_DESTRUCTIBLE_NO_DROP || temp_obj->get_type() == OBJ_DESTRUCTIBLE_WITH_DROP || temp_obj->get_type() == OBJ_JUMP_SHOOT_DESTRUCTIBLE_NO_DROP) { + return true; + } + return false; +} + void classPlayer::move() { - if (input.p1_input[BTN_DOWN] == 1) { + if (input.p1_input[BTN_DOWN] == 1) { moveCommands.down = 1; } else { moveCommands.down = 0; @@ -842,7 +838,6 @@ void classPlayer::move() if (input.p1_input[BTN_ATTACK] == 1) { moveCommands.attack = 1; } else { - //std::cout << ">>> moveCommands.attack::RESET #1" << std::endl; moveCommands.attack = 0; } if (input.p1_input[BTN_SHIELD] == 1) { @@ -881,10 +876,9 @@ void classPlayer::move() if (input.p1_input[BTN_L] == 1 && l_key_released == true) { int selected_weapon_c = find_next_weapon(selected_weapon, -1); if (selected_weapon_c != -1) { - set_weapon((WEAPON_ICONS_ENUM)selected_weapon_c, true); + set_weapon(selected_weapon_c, true); } l_key_released = false; - //std::cout << ">>> LBUTTON - selected_weapon: " << selected_weapon << ", selected_weapon_c: " << selected_weapon_c << ", WEAPON_COUNT: " << WEAPON_COUNT << std::endl; } if (input.p1_input[BTN_R] != 1 && r_key_released == false) { @@ -896,10 +890,9 @@ void classPlayer::move() selected_weapon_c = WEAPON_DEFAULT; } if (selected_weapon_c != -1) { - set_weapon((WEAPON_ICONS_ENUM)selected_weapon_c, true); + set_weapon(selected_weapon_c, true); } r_key_released = false; - //std::cout << ">>> RBUTTON - selected_weapon: " << selected_weapon << ", selected_weapon_c: " << selected_weapon_c << ", WEAPON_COUNT: " << WEAPON_COUNT << std::endl; } @@ -914,7 +907,6 @@ void classPlayer::move() } _platform->set_timer(timer.getTimer()+240); } - //std::cout << ">>> PLAYER SEND COMMAND FOR " << _platform->get_name() << ", type: " << _platform->get_type() << std::endl; if (moveCommands.up == 1) { _platform->command_up(); } @@ -925,15 +917,12 @@ void classPlayer::move() if (GameMediator::get_instance()->player_list_v3_1[_number].have_shield == true && moveCommands.up == 0 && moveCommands.down == 0 && moveCommands.left == 0 && moveCommands.right == 0 && moveCommands.jump == 0 && moveCommands.shield == 1) { if (state.animation_type != ANIM_TYPE_SHIELD) { - std::cout << "playerClass::initShield CHANGE anim_type: " << state.animation_type << " to " << ANIM_TYPE_SHIELD << std::endl; set_animation_type(ANIM_TYPE_SHIELD); state.animation_timer = 0; state.animation_state = 0; } return; } else if (state.animation_type == ANIM_TYPE_SHIELD) { - //std::cout << "playerClass::initShield REMOVE shield" << std::endl; - if (is_player()) std::cout << "********* reset to STAND #15 **********" << std::endl; set_animation_type(ANIM_TYPE_STAND); } execute_projectiles(); @@ -942,7 +931,6 @@ void classPlayer::move() void classPlayer::set_teleporter(int n) { - //std::cout << "******** classPlayer::set_teleporter - current: " << teleporter_n << ", new: " << n << std::endl; teleporter_n = n; } @@ -955,19 +943,27 @@ int classPlayer::get_teleporter() void classPlayer::death() { + clean_projectiles(); + clean_effect_projectiles(); soundManager.stop_music(); + soundManager.stop_repeated_sfx(); soundManager.play_sfx(SFX_PLAYER_DEATH); + gameControl.draw_player_death(realPosition); + + game_save.items.lifes--; + if (game_save.items.lifes < 0) { + reset_lifes(); + gameControl.game_over(); + return; + } - //std::cout << "PLAYER::death, x: " << position.x << std::endl; - gameControl.get_current_map_obj()->print_objects_number(); reset_charging_shot(); gameControl.get_current_map_obj()->clear_animations(); - gameControl.get_current_map_obj()->print_objects_number(); gameControl.get_current_map_obj()->reset_objects(); - gameControl.get_current_map_obj()->print_objects_number(); dead = true; _obj_jump.interrupt(); _obj_jump.finish(); + set_platform(nullptr); freeze_weapon_effect = FREEZE_EFFECT_NONE; last_hit_time = 0; @@ -979,22 +975,19 @@ void classPlayer::death() _inertia_obj.stop(); clear_move_commands(); input.clean(); - state.direction = ANIM_DIRECTION_RIGHT; + set_direction(ANIM_DIRECTION_RIGHT); gameControl.remove_current_teleporter_from_list(); +} - //draw_lib.add_fade_out_effect(171, 0, 19); - gameControl.draw_explosion(realPosition, false); - //draw_lib.draw_explosion(realPosition); - //draw_lib.remove_fade_out_effect(); - - if (game_save.items.lifes == 0) { +void classPlayer::reset_lifes() +{ + if (game_save.difficulty != DIFFICULTY_EASY) { + game_save.items.lifes = 9; + } else if (game_save.difficulty != DIFFICULTY_NORMAL) { + game_save.items.lifes = 5; + } else { game_save.items.lifes = 3; - std::cout << "GAME OVER" << std::endl; - gameControl.game_over(); - return; } - game_save.items.lifes--; - std::cout << "PLAYER::DEATH::DONE" << std::endl; } void classPlayer::reset_hp() @@ -1004,44 +997,44 @@ void classPlayer::reset_hp() void classPlayer::change_player_color(bool full_change) { - //std::cout << "PLAYER::change_player_color - selected_weapon[" << selected_weapon << "], full_change[" << full_change << "]" << std::endl; - if (full_change == false) { - graphLib.change_surface_color(0, weapon_colors[selected_weapon].color1, &(graphLib.character_graphics_list.find(name)->second).frames[state.direction][state.animation_type][state.animation_state].frameSurface); - graphLib.change_surface_color(1, weapon_colors[selected_weapon].color2, &(graphLib.character_graphics_list.find(name)->second).frames[state.direction][state.animation_type][state.animation_state].frameSurface); - graphLib.change_surface_color(2, weapon_colors[selected_weapon].color3, &(graphLib.character_graphics_list.find(name)->second).frames[state.direction][state.animation_type][state.animation_state].frameSurface); - } else { + int color_n = selected_weapon; + if (selected_weapon > WEAPON_ITEM_JET) { + color_n = 0; + } + if (full_change == false) { + graphLib.change_surface_color(0, weapon_colors[color_n].color1, &(graphLib.character_graphics_list.find(name)->second).frames[state.direction][state.animation_type][state.animation_state].frameSurface); + graphLib.change_surface_color(1, weapon_colors[color_n].color2, &(graphLib.character_graphics_list.find(name)->second).frames[state.direction][state.animation_type][state.animation_state].frameSurface); + graphLib.change_surface_color(2, weapon_colors[color_n].color3, &(graphLib.character_graphics_list.find(name)->second).frames[state.direction][state.animation_type][state.animation_state].frameSurface); + } else { for (int i=0; isecond).frames[i][j][k].frameSurface); - } - if (weapon_colors[selected_weapon].color2.r != -1) { - graphLib.change_surface_color(1, weapon_colors[selected_weapon].color2, &(graphLib.character_graphics_list.find(name)->second).frames[i][j][k].frameSurface); - } - if (weapon_colors[selected_weapon].color3.r != -1) { - graphLib.change_surface_color(2, weapon_colors[selected_weapon].color3, &(graphLib.character_graphics_list.find(name)->second).frames[i][j][k].frameSurface); - } - } - } - } - } + for (int j=0; jsecond).frames[i][j][k].frameSurface); + } + if (weapon_colors[0].color2.r != -1) { + graphLib.change_surface_color(1, weapon_colors[color_n].color2, &(graphLib.character_graphics_list.find(name)->second).frames[i][j][k].frameSurface); + } + if (weapon_colors[0].color3.r != -1) { + graphLib.change_surface_color(2, weapon_colors[color_n].color3, &(graphLib.character_graphics_list.find(name)->second).frames[i][j][k].frameSurface); + } + } + } + } + } } void classPlayer::save_input() { saved_move_commands = moveCommands; - //std::cout << "PLAYER::save_input::ATTACK: " << moveCommands.attack << ", BTN-ATTACK: " << (int)saved_input[BTN_ATTACK] << std::endl; } void classPlayer::restore_input() { - //std::cout << "PLAYER::restore_input::OLD-ATTACK: " << saved_move_commands.attack << std::endl; moveCommands = saved_move_commands; - //std::cout << "PLAYER::restore_input::ATTACK: " << moveCommands.attack << ", BTN-ATTACK: " << (int)input.p1_input[BTN_ATTACK] << std::endl; } -void classPlayer::set_weapon(short weapon_n, bool show_tooltip_icon) +void classPlayer::set_weapon(int weapon_n, bool show_tooltip_icon) { selected_weapon = weapon_n; clean_projectiles(); @@ -1092,7 +1085,6 @@ void classPlayer::refill_weapons() void classPlayer::set_teleport_minimal_y(int y) { - //std::cout << "PLAYER::set_teleport_minimal_y[" << y << "]" << std::endl; _teleport_minimal_y = y-2; } @@ -1105,7 +1097,6 @@ bool classPlayer::can_fly() void classPlayer::add_coil_object() { if (game_save.items.weapons[selected_weapon] > 0) { - //std::cout << ">>>>>>> adding coil object" << std::endl; st_position obj_pos; obj_pos.y = position.y; if (state.direction == ANIM_DIRECTION_LEFT) { @@ -1115,16 +1106,16 @@ void classPlayer::add_coil_object() } - object temp_obj(game_data.player_items[0], gameControl.get_current_map_obj(), st_position(position.x/TILESIZE, position.y/TILESIZE), st_position(-1, -1), -1); + object temp_obj(game_data.player_items[0], gameControl.get_current_map_obj(), st_position(position.x/TILESIZE, position.y/TILESIZE), st_position(-1, -1), -1, state.direction); + + int first_unlocked_from_bottom = gameControl.get_current_map_obj()->get_first_lock_on_bottom(obj_pos.x, getPosition().y+frameSize.height+4, temp_obj.get_size().width, temp_obj.get_size().height); - int first_unlocked_from_bottom = gameControl.get_current_map_obj()->get_first_lock_on_bottom(obj_pos.x, getPosition().y+get_size().height, temp_obj.get_size().width, temp_obj.get_size().height); obj_pos.y = (first_unlocked_from_bottom+1)*TILESIZE - temp_obj.get_size().height; temp_obj.set_precise_position(obj_pos, state.direction); temp_obj.set_duration(2500); temp_obj.enable_teleport_animation(); temp_obj.set_collision_mode(COLlISION_MODE_Y); - temp_obj.set_direction(state.direction); gameControl.get_current_map_obj()->add_object(temp_obj); consume_weapon(1); } @@ -1133,7 +1124,6 @@ void classPlayer::add_coil_object() void classPlayer::add_jet_object() { if (game_save.items.weapons[selected_weapon] > 0) { - //std::cout << ">>>>>>> adding JET object" << std::endl; st_position obj_pos; obj_pos.y = position.y + TILESIZE; if (state.direction == ANIM_DIRECTION_LEFT) { @@ -1141,11 +1131,10 @@ void classPlayer::add_jet_object() } else { obj_pos.x = position.x + frameSize.width + 2; } - object temp_obj(game_data.player_items[1], gameControl.get_current_map_obj(), st_position(position.x/TILESIZE, position.y/TILESIZE), st_position(-1, -1), -1); + object temp_obj(game_data.player_items[1], gameControl.get_current_map_obj(), st_position(position.x/TILESIZE, position.y/TILESIZE), st_position(-1, -1), -1, state.direction); temp_obj.set_precise_position(obj_pos, state.direction); temp_obj.enable_teleport_animation(); temp_obj.set_duration(4500); - temp_obj.set_direction(state.direction); gameControl.get_current_map_obj()->add_object(temp_obj); } } @@ -1154,7 +1143,6 @@ int classPlayer::find_next_weapon(int current, int move) { class_config config_manager; int res = config_manager.find_next_weapon(current, move); - //std::cout << "PLAYER::find_next_weapon - res: " << res << std::endl; return res; } @@ -1162,7 +1150,6 @@ int classPlayer::find_next_weapon(int current, int move) void classPlayer::clean_move_commands() { - std::cout << ">>> moveCommands.attack::RESET #2" << std::endl; moveCommands.attack = 0; moveCommands.dash = 0; moveCommands.down = 0; @@ -1213,15 +1200,14 @@ void classPlayer::damage(unsigned int damage_points, bool ignore_hit_timer) { if (damage_points > 1 && game_save.difficulty == DIFFICULTY_EASY) { damage_points--; - std::cout << "HARD-MODE, damage--[" << damage_points << "]" << std::endl; } + int new_damage_points = damage_points; if (game_save.armor_pieces[ARMOR_TYPE_BODY] == true && game_data.armor_pieces[ARMOR_TYPE_BODY].special_ability[_number] == ARMOR_ABILITY_BODY_HALFDAMAGE) { new_damage_points = damage_points/2; if (damage_points > 0 && new_damage_points <= 0) { new_damage_points = 1; } - //std::cout << "ARMOR-HALF-DAMAGE, damage[" << damage_points << "], new_damage_points[" << new_damage_points << "]" << std::endl; character::damage(new_damage_points, ignore_hit_timer); return; } @@ -1231,9 +1217,8 @@ void classPlayer::damage(unsigned int damage_points, bool ignore_hit_timer) void classPlayer::damage_spikes(bool ignore_hit_timer) { if (game_save.armor_pieces[ARMOR_TYPE_BODY] == true && game_data.armor_pieces[ARMOR_TYPE_BODY].special_ability[_number] == ARMOR_ABILITY_BODY_SPIKESIMMMUNE) { - std::cout << "################## SPIKES Immunity" << std::endl; #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "####### SPIKES Immunity #######"); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "####### SPIKES Immunity #######"); #endif return; } @@ -1288,7 +1273,6 @@ void classPlayer::reset_charging_shot() return; } state.attack_timer = 0; - //std::cout << ">>>>>>>>> attack_button_released[TRUE] #3 <<<<<<<<<<<<<" << std::endl; attack_button_released = true; soundManager.stop_repeated_sfx(); diff --git a/character/classplayer.h b/character/classplayer.h index a3ecfcb9..fd3f9c87 100644 --- a/character/classplayer.h +++ b/character/classplayer.h @@ -1,8 +1,10 @@ #ifndef CLASSPLAYER_H #define CLASSPLAYER_H -#include "character/character.h" -#include "character/classnpc.h" +#include "character.h" +#include "classnpc.h" + +#define JUMP_LOCK_DURATION 1000 class classnpc; // advance declaration @@ -38,6 +40,7 @@ class classPlayer : public character * @brief move the projectiles created by this player and damage any npcs that are in it's way */ void execute_projectiles(); + bool object_is_affected_by_projectile(object* temp_obj, projectile& projectile); /** * @brief this is used when player enters a boss-teleport that teleport the player back to it's origin point @@ -60,7 +63,7 @@ class classPlayer : public character * @brief change the weapon player is using * @param weapon_n id of the weapon to be set */ - void set_weapon(short weapon_n, bool show_tooltip_icon); + void set_weapon(int weapon_n, bool show_tooltip_icon); /** * @brief get the number of energy a given weapon still has (the number decreases as the weapon is used) @@ -126,11 +129,6 @@ class classPlayer : public character void damage(unsigned int damage_points, bool ignore_hit_timer); void damage_spikes(bool ignore_hit_timer); - - /** - * @brief changes the colormap of stored frames surfaces for the current weapon color - * @param full_change indicates if must update all (true) or only current (false) frame - */ void change_player_color(bool full_change); // to be used when game is paused @@ -139,35 +137,15 @@ class classPlayer : public character Uint8 get_max_hp(); + void block_jump(); + private: - /** - * @brief called by execute() method, moves player depending on input - */ void move(); - - /** - * @brief virtual from character, execute actions when player dies (reset map, explosion, etc) - */ void death(); - - - /** - * @brief load from game_data into class properties. @TODO: this should be replaced by using game_data directly if possible - */ + void reset_lifes(); void init_weapon_colors(); - - /** - * @brief called when player collides with an object. execute the object (like giving more HP) or storer it in player's possessions - * @param obj_info information about the object that player collided - * @return bool in case object is not executable or storable (like a platform), returns false - */ bool get_item(object_collision& obj_info); - - - /** - * @brief execute an attack, including weapon usage - */ void attack(bool dont_update_colors = false); /** @@ -211,7 +189,7 @@ class classPlayer : public character bool have_shoryuken(); - bool shoryuken(); + bool shouryuken(); void consume_weapon(int value); @@ -219,7 +197,7 @@ class classPlayer : public character private: int teleporter_n; /**< current teleporter being used, -1 if none */ - short selected_weapon; /**< current selected weapon */ + int selected_weapon; /**< current selected weapon */ CURRENT_FILE_FORMAT::file_weapon_colors weapon_colors[MAX_WEAPON_N]; /**< TODO */ bool l_key_released; /**< avoid changing weapon continuously if L key is held */ bool r_key_released; // < avoid changing weapon continuously if R key is held diff --git a/character/movement/jump.cpp b/character/movement/jump.cpp index 58ea9f31..185dc8e1 100644 --- a/character/movement/jump.cpp +++ b/character/movement/jump.cpp @@ -6,17 +6,16 @@ // if not interrupted, jump takes 700 milisseconds // jump max high is 74 px -#define JUMP_INITIAL_SPEED 5.375 - -#include "game.h" +#include "../../game.h" extern game gameControl; classjump::classjump() : started(false) { - JUMP_ACCELERATION = 0.25; - JUMP_LIMIT = (TILESIZE*3)-6; - JUMP_LIMIT = 240; + JUMP_INITIAL_SPEED = 5.675 * SharedData::get_instance()->get_movement_multiplier(); + JUMP_ACCELERATION = 0.25 * SharedData::get_instance()->get_movement_multiplier(); + JUMP_LIMIT = TILESIZE*3.5; + //JUMP_LIMIT = 240; state = NOJUMP; jumps_number = 0; start_terrain_type = TERRAIN_UNBLOCKED; @@ -24,6 +23,7 @@ classjump::classjump() : started(false) void classjump::start(bool bigjump_mode, int terrain_type) { + //std::cout << "### JUMP::START" << std::endl; started = true; state = JUMPUP; is_bigjump = bigjump_mode; @@ -45,9 +45,6 @@ void classjump::start(bool bigjump_mode, int terrain_type) acceleration = JUMP_ACCELERATION; } jumps_number++; - - //std::cout << "CLASSJUMP::START::speed: " << speed << std::endl; - moved = 0; } @@ -69,26 +66,26 @@ void classjump::execute(int terrain_type) } else { acceleration = JUMP_ACCELERATION * 0.7; } + } else if (speed_multiplier != 1.0) { + acceleration = JUMP_ACCELERATION * speed_multiplier; } - - //std::cout << "CLASSJUMP::EXECUTE[#1]::speed: " << speed << std::endl; speed += acceleration; - moved += std::abs((double)speed); + moved += abs(speed); - //std::cout << "CLASSJUMP::EXECUTE[#2]::speed: " << speed << std::endl; + //std::cout << "JUMP::execute - moved[" << moved << "], JUMP_LIMIT[" << JUMP_LIMIT << "], speed[" << speed << "], is_bigjump[" << is_bigjump << "]" << std::endl; if (state == JUMPUP) { if (speed >= 0) { state = JUMPDOWN; - } else if (is_bigjump == false && std::abs((double)moved) > JUMP_LIMIT) { // hardcoded limit of 3 tiles + } else if (is_bigjump == false && moved > JUMP_LIMIT) { // hardcoded limit of 3.5 tiles + //std::cout << "### JUMP::interrupt - reached LIMIT" << std::endl; state = JUMPDOWN; - std::cout << "OBJUMP RESET SPEED #3" << std::endl; speed = 0; } } else { - if (speed > GRAVITY_MAX_SPEED) { // do not surpass the speed limit - speed = GRAVITY_MAX_SPEED; + if (speed > GRAVITY_MAX_SPEED * SharedData::get_instance()->get_movement_multiplier()) { // do not surpass the speed limit + speed = GRAVITY_MAX_SPEED * SharedData::get_instance()->get_movement_multiplier(); } } } @@ -98,9 +95,9 @@ void classjump::interrupt() if (!started) { return; } + //std::cout << "### JUMP::interrupt" << std::endl; if (state != JUMPUP) { state = JUMPDOWN; - std::cout << "%%%%%%%%%%%%%%%%% OBJUMP RESET SPEED #4 %%%%%%%%%%%%%%%%%%" << std::endl; speed = 0; return; } @@ -110,15 +107,14 @@ void classjump::interrupt() } state = JUMPDOWN; - speed = 0; } void classjump::finish() { + //std::cout << "### JUMP::finish" << std::endl; jumps_number = 0; state = NOJUMP; - speed = 0; started = false; } @@ -141,5 +137,11 @@ void classjump::set_jump_acceleration(double value) void classjump::set_jump_limit(int value) { - JUMP_LIMIT = value; + // ignored for now, as makes jump odd. Better use initial-speed as a way to diff players or enemies jumps + //JUMP_LIMIT = value; +} + +void classjump::set_speed_multiplier(float multi) +{ + speed_multiplier = multi; } diff --git a/character/movement/jump.h b/character/movement/jump.h index 5b2dac59..8cc84837 100644 --- a/character/movement/jump.h +++ b/character/movement/jump.h @@ -1,7 +1,8 @@ #ifndef JUMP_H #define JUMP_H -#include "defines.h" +#include "../../defines.h" +#include "shareddata.h" enum E_JUMP_STATE { NOJUMP, @@ -23,6 +24,7 @@ class classjump short get_jumps_number(); void set_jump_acceleration(double value); void set_jump_limit(int value); + void set_speed_multiplier(float multi); private: @@ -31,12 +33,14 @@ class classjump float speed; E_JUMP_STATE state; short jumps_number; // how many consecutive jumps used (for double/triple jumping) - short moved; // this is used to hardcode the number of pixels a jump should move in maximum + float moved; // this is used to hardcode the number of pixels a jump should move in maximum bool is_bigjump; double JUMP_ACCELERATION; - int JUMP_LIMIT; + float JUMP_LIMIT; int start_terrain_type; bool start_big_jump; + double JUMP_INITIAL_SPEED; + float speed_multiplier = 1.0; }; #endif // JUMP_H diff --git a/class_config.cpp b/class_config.cpp index d2932ce5..86ba454c 100644 --- a/class_config.cpp +++ b/class_config.cpp @@ -12,7 +12,7 @@ extern soundLib soundManager; #include "game.h" extern game gameControl; - +#include "data/datautil.h" extern CURRENT_FILE_FORMAT::st_save game_save; @@ -46,8 +46,6 @@ void class_config::move_cursor(Sint8 x_inc, Sint8 y_inc) { bool moved = false; st_position res; - //std::cout << ">>>>> class_config::move_cursor - xinc: " << x_inc << ", y_inc: " << y_inc << std::endl; - if (ingame_menu_pos.y != 6) { // weapons positions if (x_inc > 0) { if (ingame_menu_pos.x == 0) { @@ -103,7 +101,7 @@ void class_config::move_cursor(Sint8 x_inc, Sint8 y_inc) { if (y_inc > 0) { if (ingame_menu_pos.y < 6) { - res = move_weapon_curstor_down(); + res = move_weapon_cursor_down(); if (res.y != -1) { ingame_menu_pos = res; moved = true; @@ -115,13 +113,12 @@ void class_config::move_cursor(Sint8 x_inc, Sint8 y_inc) { moved = true; } else if (y_inc < 0) { if ((ingame_menu_pos.x == 0 && ingame_menu_pos.y == 0) || (ingame_menu_pos.x == 1 && ingame_menu_pos.y == 1)) { // when on top, go to energy drinks section - std::cout << "MOVE CURSOR #1" << std::endl; ingame_menu_pos.y = 6; } else { if (ingame_menu_pos.y == 6 && ingame_menu_pos.x == 2) { // just fix x, as there is no third column on weapons section as there is in the energy drinks section ingame_menu_pos.x = 1; } - res = move_weapon_curstor_up(); + res = move_weapon_cursor_up(); if (res.y != -1) { ingame_menu_pos = res; moved = true; @@ -166,14 +163,11 @@ st_position class_config::move_weapon_curstor_right() const // move from left to return move_weapon_curstor_left(); // both are the same code } -st_position class_config::move_weapon_curstor_up() +st_position class_config::move_weapon_cursor_up() { // from position to top - //std::cout << "$$$$$ move_weapon_curstor_up - ini: " << (ingame_menu_pos.y-1) << std::endl; for (int i=ingame_menu_pos.y-1; i>=0; i--) { - //std::cout << "move_weapon_curstor_up - looking slot [" << ingame_menu_pos.x << "][" << i << "] value: " << _weapons_matrix[ingame_menu_pos.x][i] << std::endl; if (_weapons_matrix[ingame_menu_pos.x][i] == true) { - //std::cout << "move_weapon_curstor_up - found slot at [" << ingame_menu_pos.x << "][" << i << "]" << std::endl; return st_position(ingame_menu_pos.x, i); } } @@ -194,15 +188,13 @@ st_position class_config::move_weapon_curstor_up() } -st_position class_config::move_weapon_curstor_down() +st_position class_config::move_weapon_cursor_down() { // from position to bottom for (int i=ingame_menu_pos.y+1; iget_char_frame(ANIM_DIRECTION_RIGHT, ANIM_TYPE_ATTACK, 0), &graphLib.gameScreen); -} void class_config::use_tank(int tank_type) { @@ -247,21 +235,17 @@ void class_config::use_tank(int tank_type) return; } if (tank_type == TANK_ENERGY || tank_type == TANK_SPECIAL) { - while (player_ref->get_hp().current < player_ref->get_hp().total) { - input.read_input(); - player_ref->set_current_hp(1); - if (n == 0 || n % 6 == 0) { - soundManager.play_sfx(SFX_GOT_ENERGY); - } - n++; - graphLib.draw_weapon_cursor(st_position(0, 0), player_ref->get_hp().current, -1, player_ref->get_max_hp()); - draw_lib.update_screen(); - timer.delay(50); - } + int diff = player_ref->get_hp().current - player_ref->get_hp().total; + int play_times = diff/6; + if (play_times < 2) { + play_times = 2; + } + player_ref->set_current_hp(player_ref->get_hp().total); + soundManager.play_sfx(SFX_GOT_ENERGY); } if (tank_type == TANK_SPECIAL || tank_type == TANK_WEAPON) { st_position weapon_pos(0, 0); - for (int i=0; iget_weapon_value(i); if (value < player_ref->get_hp().total) { @@ -273,8 +257,6 @@ void class_config::use_tank(int tank_type) soundManager.play_sfx(SFX_GOT_ENERGY); } n++; - graphLib.draw_weapon_cursor(weapon_pos, player_ref->get_weapon_value(i), -1, player_ref->get_max_hp()); - draw_lib.update_screen(); timer.delay(50); } } @@ -302,9 +284,7 @@ void class_config::use_tank(int tank_type) void class_config::draw_ingame_menu() { ingame_menu_pos = convert_stage_n_to_menu_pos(player_ref->get_selected_weapon()); - graphLib.draw_weapon_menu_bg(player_ref->get_current_hp(), player_ref->get_char_frame(ANIM_DIRECTION_RIGHT, ANIM_TYPE_ATTACK, 0), player_ref->get_max_hp()); - graphLib.draw_weapon_icon(convert_menu_pos_to_weapon_n(ingame_menu_pos), ingame_menu_pos, true); - graphLib.draw_weapon_cursor(ingame_menu_pos, player_ref->get_weapon_value(convert_menu_pos_to_weapon_n(ingame_menu_pos)), player_ref->get_number(), player_ref->get_max_hp()); + draw_lib.draw_in_game_menu(player_ref->get_char_frame(ANIM_DIRECTION_RIGHT, ANIM_TYPE_ATTACK, 0), player_ref->get_selected_weapon()); } bool class_config::execute_ingame_menu() @@ -312,7 +292,7 @@ bool class_config::execute_ingame_menu() st_position old_pos; - if (input.p1_input[BTN_START] == 1) { + if (input.p1_input[BTN_START] == 1 || (ingame_menu_active == true && input.p1_input[BTN_JUMP] == 1)) { input.clean(); timer.delay(100); @@ -325,17 +305,7 @@ bool class_config::execute_ingame_menu() draw_lib.fade_out_screen(0, 0, 0, 300); draw_ingame_menu(); } else { - // left menu, change player color/weapon and remove pause - if (ingame_menu_pos.y != 6) { - player_ref->set_weapon(convert_menu_pos_to_weapon_n(ingame_menu_pos), false); - gameControl.game_unpause(); - } else { - // use item - use_tank(ingame_menu_pos.x); - ingame_menu_active = !ingame_menu_active; // keep itself inside the menu - generate_weapons_matrix(); - draw_ingame_menu(); - } + gameControl.game_unpause(); } } @@ -343,13 +313,33 @@ bool class_config::execute_ingame_menu() old_pos.x = ingame_menu_pos.x; old_pos.y = ingame_menu_pos.y; if (input.p1_input[BTN_UP] == 1) { - move_cursor(0, -1); + soundManager.play_sfx(SFX_CURSOR); + int selected_weapon_c = find_next_weapon(player_ref->get_selected_weapon(), -WEAPON_MENU_COL_N); + if (selected_weapon_c != -1) { + player_ref->set_weapon(selected_weapon_c, true); + draw_ingame_menu(); + } } else if (input.p1_input[BTN_DOWN] == 1) { - move_cursor(0, 1); + soundManager.play_sfx(SFX_CURSOR); + int selected_weapon_c = find_next_weapon(player_ref->get_selected_weapon(), WEAPON_MENU_COL_N); + if (selected_weapon_c != -1) { + player_ref->set_weapon(selected_weapon_c, true); + draw_ingame_menu(); + } } else if (input.p1_input[BTN_LEFT] == 1) { - move_cursor(-1, 0); + int selected_weapon_c = find_next_weapon(player_ref->get_selected_weapon(), -1); + if (selected_weapon_c != -1) { + soundManager.play_sfx(SFX_CURSOR); + player_ref->set_weapon(selected_weapon_c, true); + draw_ingame_menu(); + } } else if (input.p1_input[BTN_RIGHT] == 1) { - move_cursor(1, 0); + int selected_weapon_c = find_next_weapon(player_ref->get_selected_weapon(), 1); + if (selected_weapon_c != -1) { + soundManager.play_sfx(SFX_CURSOR); + player_ref->set_weapon(selected_weapon_c, true); + draw_ingame_menu(); + } } else if (input.p1_input[BTN_R] == 1) { if (gameControl.show_config(game_save.stages[gameControl.currentStage]) == true) { // player picked "leave stage" option ingame_menu_active = false; @@ -357,26 +347,13 @@ bool class_config::execute_ingame_menu() return true; } draw_ingame_menu(); - } - if (old_pos.x != ingame_menu_pos.x || old_pos.y != ingame_menu_pos.y) { - //std::cout << ">> old_pos.y: " << old_pos.y << ", ingame_menu_pos.y: " << ingame_menu_pos.y << std::endl; - if (old_pos.y != 6) { - graphLib.draw_weapon_cursor(old_pos, player_ref->get_weapon_value(convert_menu_pos_to_weapon_n(old_pos)), -1, player_ref->get_max_hp()); - graphLib.draw_weapon_icon(convert_menu_pos_to_weapon_n(old_pos), old_pos, false); - } else { - graphLib.erase_menu_item(old_pos.x); - } - if (ingame_menu_pos.y != 6) { - graphLib.draw_weapon_cursor(ingame_menu_pos, player_ref->get_weapon_value(convert_menu_pos_to_weapon_n(ingame_menu_pos)), player_ref->get_number(), player_ref->get_max_hp()); - graphLib.draw_weapon_icon(convert_menu_pos_to_weapon_n(ingame_menu_pos), ingame_menu_pos, true); - player_ref->set_weapon(convert_menu_pos_to_weapon_n(ingame_menu_pos), false); - weapon_menu_show_player(); - } else { - graphLib.draw_menu_item(ingame_menu_pos.x); - } + } else if (input.p1_input[BTN_DASH] == 1) { + SharedData::get_instance()->leave_stage_request = true; + ingame_menu_active = false; + gameControl.game_unpause(); + return true; } input.clean(); - //timer.delay(MENU_CHANGE_DELAY); } return ingame_menu_active; @@ -390,7 +367,6 @@ short class_config::convert_menu_pos_to_weapon_n(st_position menu_pos) const } else { res = menu_pos.y + 5; } - //std::cout << "*** CONFIG::convert_menu_pos_to_weapon_n - res: " << res << ", menu_pos.x: " << menu_pos.x << ", menu_pos.y: " << menu_pos.y << std::endl; return res; /* @@ -415,37 +391,52 @@ st_position class_config::convert_stage_n_to_menu_pos(short stage_n) const res_pos.y = stage_n - 5; } - //std::cout << "*** CONFIG::convert_menu_pos_to_weapon_n - res.x: " << res_pos.x << ", res.y: " << res_pos.y << std::endl; - return res_pos; } +/* +// comportamento cima/baixo: move para aquela posição, se não tiver, continua andando, de 1 em 1, até achar a próxima/anterior +int class_config::find_next_weapon(int current, int move) const +{ + int result = -1; + for (int i=abs(move); i>=1; i--) { + int new_weapon_n = current + move; + if (new_weapon_n >= WEAPON_COUNT) { + new_weapon_n = new_weapon_n-WEAPON_COUNT; + } + if (new_weapon_n < 0) { + new_weapon_n = WEAPON_COUNT - new_weapon_n; + } + int move_n = 1; + if (move < 0) { + move_n = -1; + } + } + return result; +} +*/ -Sint8 class_config::find_next_weapon(Uint8 current, Uint8 move) const +int class_config::find_next_weapon(int current, int move) const { - if (move == 1) { - for (int i=current+1; i 0) { + for (int i=current+move; ihas_weapon(i) == true) { return i; } } for (int i=0; ihas_weapon(i) == true) { return i; } } } else { - for (int i=current-1; i>=0; i--) { // from position to start - if (game_save.stages[i] == 1) { - //std::cout << ">>#1 CONFIG::find_next_weapon - wpnId: " << i << std::endl; + for (int i=current+move; i>=0; i--) { // from position to start + if (dataUtil::get_instance()->has_weapon(i) == true) { return i; } } for (int i=WEAPON_COUNT-1; i>current; i--) { // from end to position - if (game_save.stages[i] == 1) { - //std::cout << ">>#2 CONFIG::find_next_weapon - wpnId: " << i << std::endl; + if (dataUtil::get_instance()->has_weapon(i) == true) { return i; } } @@ -496,7 +487,6 @@ void class_config::generate_weapons_matrix() if (game_save.stages[i] == 1) { st_position pos = convert_stage_n_to_menu_pos(i); - //std::cout << "CONFIG::generate_weapons_matrix - stage[" << i << "]: " << game_save.stages[i] << ", pos.x: " << pos.x << ", pos.y: " << pos.y << std::endl; _weapons_matrix[pos.x][pos.y] = true; } } diff --git a/class_config.h b/class_config.h index 66e59641..89981d71 100644 --- a/class_config.h +++ b/class_config.h @@ -2,6 +2,7 @@ #define CLASS_CONFIG_H #include "file/format/st_common.h" +#include "character/character.h" #include "character/classplayer.h" #define WPN_COLS 2 @@ -29,18 +30,18 @@ class class_config void set_player_ref(classPlayer* set_player_ref); short convert_menu_pos_to_weapon_n(st_position menu_pos) const; st_position convert_stage_n_to_menu_pos(short stage_n) const; - Sint8 find_next_weapon(Uint8 current, Uint8 move) const; // used by L/R buttons + int find_next_weapon(int current, int move) const; // used by L/R buttons void disable_ingame_menu(); + void use_tank(int tank_type); private: void move_cursor(Sint8 x_inc, Sint8 y_inc); st_position move_weapon_curstor_left() const; st_position move_weapon_curstor_right() const; - st_position move_weapon_curstor_up(); - st_position move_weapon_curstor_down(); + st_position move_weapon_cursor_up(); + st_position move_weapon_cursor_down(); void weapon_menu_show_player(); - void use_tank(int tank_type); void generate_weapons_matrix(); void generate_weapons_array(); // used to create an array with all weapons that have have depending on save diff --git a/classmap.cpp b/classmap.cpp index 6a6f8916..93d4914d 100644 --- a/classmap.cpp +++ b/classmap.cpp @@ -40,7 +40,6 @@ extern CURRENT_FILE_FORMAT::file_game game_data; extern CURRENT_FILE_FORMAT::file_stage stage_data; extern CURRENT_FILE_FORMAT::st_save game_save; extern CURRENT_FILE_FORMAT::st_save game_save; -extern CURRENT_FILE_FORMAT::st_game_config game_config; extern struct CURRENT_FILE_FORMAT::st_checkpoint checkpoint; @@ -71,7 +70,6 @@ classMap::classMap() : stage_number(-1), number(-1), bg_scroll(st_float_position // ********************************************************************************************** // classMap::~classMap() { - //std::cout << "map[" << number << "] destructor" << std::endl; } @@ -93,7 +91,6 @@ void classMap::reset_map() // // // ********************************************************************************************** // void classMap::setStageNumber(int setStageN) { - //std::cout << "classMap::setStageNumber - setStageN: " << setStageN << std::endl; stage_number = setStageN; } @@ -116,29 +113,20 @@ void classMap::setMapNumber(int setMapN) { void classMap::loadMap() { - std::cout << "classMap::loadMap, stage_number[" << stage_number << "]" << std::endl; - if (stage_number == -1) { graphLib.show_debug_msg("ERROR::loadStage invalid number[-1]"); - cout << "ERROR::map::loadMap - stage number was not set, can't load it before setting the number.\n"; + cout << "ERROR::map::loadMap - stage number was not set, can't load it before setting the number.\n"; return; } if (number == -1) { graphLib.show_debug_msg("ERROR::loadStage invalid number[>MAX]"); - cout << "ERROR::map::loadMap - map number was not set, can't load it before setting the number.\n"; + cout << "ERROR::map::loadMap - map number was not set, can't load it before setting the number.\n"; return; } - object_list.clear(); - _npc_list.clear(); animation_list.clear(); - - - - - _level3_tiles.clear(); for (int i=0; imap_data[number].tiles[i][j].tile3.x; int lvl3_y = GameMediator::get_instance()->map_data[number].tiles[i][j].tile3.y; if (lvl3_x != -1 && lvl3_y != -1) { - //std::cout << "tile_lvl3[" << lvl3_x << "][" << lvl3_y << "]" << std::endl; struct st_level3_tile temp_tile(st_position(lvl3_x, lvl3_y), st_position(i, j)); _level3_tiles.push_back(temp_tile); } } } - - load_map_npcs(); - load_map_objects(); - std::cout << "check-map-scroll-lock, object_list.size[" << object_list.size() << "]" << std::endl; bool column_locked = true; for (int i=0; iget_type() == OBJ_BOSS_DOOR) { - //std::cout << "obj[" << obj_item->get_name() << "], start[" << (obj_item->get_start_position().x/TILESIZE) << "][" << (obj_item->get_start_position().y/TILESIZE) << "], point[" << i << "][" << j << "]" << std::endl; if ((i >= obj_item->get_start_position().x/TILESIZE && i < obj_item->get_start_position().x/TILESIZE+obj_item->get_size().width/TILESIZE) && (j >= obj_item->get_start_position().y/TILESIZE && j < obj_item->get_start_position().y/TILESIZE+obj_item->get_size().height/TILESIZE)) { - std::cout << "classMap::loadMap, obj[" << obj_item->get_name() << "] is locking scroll at [" << i << "][" << j << "]" << std::endl; obj_locked = true; } } @@ -185,9 +165,7 @@ void classMap::loadMap() } wall_scroll_lock[i] = column_locked; } - create_dynamic_background_surfaces(); - init_animated_tiles(); @@ -204,6 +182,9 @@ void classMap::show_map() if (get_map_gfx_mode() == SCREEN_GFX_MODE_BACKGROUND) { draw_lib.show_gfx(); } + // TODO: optimization, build a list of visible enemies and one for ghost and other for non-ghost, + // and use those instead in the show-loop + show_ghost_npcs(); // redraw screen, if needed if (_show_map_pos_x == -1 || abs(_show_map_pos_x - scroll.x) > TILESIZE) { @@ -220,6 +201,8 @@ void classMap::show_map() draw_lib.show_gfx(); } + show_objects(); + show_npcs(); } @@ -296,11 +279,9 @@ void classMap::draw_animated_tiles(graphicsLib_gSurface &surface) { //scroll.x - dest.x for (int i=0; i= -TILESIZE && pos_x <= RES_W+1) { - //std::cout << "## scroll.x[" << scroll.x << "], dest.x[" << anim_tile_list.at(i).dest_x << "]" << std::endl; st_position dest_pos(pos_x, anim_tile_list.at(i).dest_y); graphLib.place_anim_tile(anim_tile_list.at(i).anim_tile_id, dest_pos, &surface); } @@ -323,7 +304,6 @@ void classMap::init_animated_tiles() if (pos_origin.x < -1 && pos_origin.y == 0) { int anim_tile_id = (pos_origin.x * -1) - 2; pos_destiny.y = j*TILESIZE; - //std::cout << "MAP::showMap::place_anim_tile[" << i << "][" << j << "]" << std::endl; anim_tile_list.push_back(anim_tile_desc(anim_tile_id, pos_destiny)); } } @@ -345,7 +325,6 @@ void classMap::showAbove(int scroll_y, int temp_scroll_x, bool show_fg) if (start_point > 0) { start_point--; } short end_point = (scroll_x+RES_W)/TILESIZE; if (end_point < MAP_W-1) { end_point++; } - //std::cout << "showAbove - start_point: " << start_point << ", end_point: " << end_point << std::endl; // draw 3rd tile level @@ -378,7 +357,6 @@ void classMap::showAbove(int scroll_y, int temp_scroll_x, bool show_fg) } } if (water_lock != TERRAIN_WATER || _water_bubble.timer < timer.getTimer()) { - //std::cout << ">> MAP::showAbove::HIDE_BUBBLE <<" <map_data[number].backgrounds[0].speed/10; - float foreground_layer_speed = (float)GameMediator::get_instance()->map_data[number].backgrounds[1].speed/10; - - //std::cout << "MAP::changeScrolling - foreground_layer_speed[" << foreground_layer_speed << "]" << std::endl; + float bg1_speed = (float)GameMediator::get_instance()->map_data[number].backgrounds[0].speed/10 * SharedData::get_instance()->get_movement_multiplier(); + float foreground_layer_speed = (float)GameMediator::get_instance()->map_data[number].backgrounds[1].speed/10 * SharedData::get_instance()->get_movement_multiplier(); // moving player to right, screen to left if (pos.x > 0 && ((scroll.x/TILESIZE+RES_W/TILESIZE)-1 < MAP_W-1)) { @@ -473,9 +441,7 @@ void classMap::changeScrolling(st_float_position pos, bool check_lock) } if (scroll.x/TILESIZE >= 0) { // if change is too big, do not update (TODO: must check all wall until lock) int tile_x = (scroll.x+TILESIZE-2)/TILESIZE; - //std::cout << "#2 LEFT changeScrolling - scroll.x: " << scroll.x << ", testing tile_x: " << tile_x << std::endl; if (check_lock == false || wall_scroll_lock[tile_x] == false) { - //std::cout << "classMap::changeScrolling - 2" << std::endl; scroll.x += x_change; bg_scroll.x -= ((float)x_change*bg1_speed); fg_layer_scroll.x -= ((float)x_change*foreground_layer_speed); @@ -497,7 +463,6 @@ void classMap::set_scrolling(st_float_position pos) scrolled = pos; scroll.x = pos.x; scroll.y = pos.y; - //std::cout << "------- classMap::set_scrolling - map: " << number << ", pos.x: " << pos.x << "-------" << std::endl; } void classMap::reset_scrolling() @@ -515,7 +480,6 @@ void classMap::reset_scrolling() // ********************************************************************************************** // st_float_position classMap::getMapScrolling() const { - //std::cout << "getMapScrolling, x: " << scroll.x << ", y: " << scroll.y << std::endl; return scroll; } @@ -532,7 +496,12 @@ st_float_position *classMap::get_map_scrolling_ref() // ********************************************************************************************** // void classMap::load_map_npcs() { - + // store friends that have already left into a list to avoid re-adding them + for (unsigned int i=0; i<_npc_list.size(); i++) { + if (GameMediator::get_instance()->get_enemy(_npc_list.at(i).get_number())->behavior == NPC_BEHAVIOR_PLAYER_FRIEND && _npc_list.at(i).get_teleport_state() > 0) { + finished_friend_list.insert(std::pair(_npc_list.at(i).get_number(), _npc_list.at(i).get_name())); + } + } // remove all elements currently in the list if (_npc_list.size() > 0) { _npc_list.back().clean_character_graphics_list(); @@ -541,8 +510,7 @@ void classMap::load_map_npcs() _npc_list.pop_back(); } - - for (int i=0; imap_npc_data.size(); i++) { + for (unsigned int i=0; imap_npc_data.size(); i++) { if (GameMediator::get_instance()->map_npc_data[i].difficulty_mode == DIFFICULTY_MODE_GREATER && GameMediator::get_instance()->map_npc_data[i].difficulty_level > game_save.difficulty) { continue; } else if (GameMediator::get_instance()->map_npc_data[i].difficulty_mode == DIFFICULTY_MODE_EQUAL && GameMediator::get_instance()->map_npc_data[i].difficulty_level != game_save.difficulty) { @@ -551,31 +519,25 @@ void classMap::load_map_npcs() int npc_ic = GameMediator::get_instance()->map_npc_data[i].id_npc; + if (finished_friend_list.find(npc_ic) != finished_friend_list.end()) { + continue; + } + if (npc_ic != -1 && GameMediator::get_instance()->map_npc_data[i].stage_id == stage_number && GameMediator::get_instance()->map_npc_data[i].map_id == number) { classnpc new_npc = classnpc(stage_number, number, npc_ic, i); - if (stage_data.boss.id_npc == npc_ic) { new_npc.set_stage_boss(true); } else if (GameMediator::get_instance()->get_enemy(npc_ic)->is_boss == true) { new_npc.set_is_boss(true); // adjust NPC position to ground, if needed } else if (new_npc.is_able_to_fly() == false && new_npc.hit_ground() == false) { - new_npc.initialize_position_to_ground(); + new_npc.initialize_boss_position_to_ground(); } new_npc.init_animation(); - std::string static_bg(GameMediator::get_instance()->get_enemy(npc_ic)->bg_graphic_filename); - if (new_npc.is_static() && static_bg.length() > 0) { - set_map_enemy_static_background(FILEPATH + std::string("images/sprites/enemies/backgrounds/") + static_bg, new_npc.get_bg_position()); - } - _npc_list.push_back(new_npc); // insert new npc at the list-end - //std::cout << "(A) ######### _npc_list.add, size[" << _npc_list.size() << "]" << std::endl; - } - - } } @@ -583,7 +545,6 @@ void classMap::load_map_npcs() void classMap::draw_dynamic_backgrounds() { // only draw solid background color, if map-heigth is less than RES_H - //std::cout << "number[" << number << "], bg1_surface.height[" << bg1_surface.height << "], bg1.y[" << GameMediator::get_instance()->map_data[number].backgrounds[0].adjust_y << "]" << std::endl; graphicsLib_gSurface* surface_bg = get_dynamic_bg(); if (surface_bg == NULL || surface_bg->width <= 0) { graphLib.clear_surface_area(0, 0, RES_W, RES_H, GameMediator::get_instance()->map_data[number].background_color.r, GameMediator::get_instance()->map_data[number].background_color.g, GameMediator::get_instance()->map_data[number].background_color.b, graphLib.gameScreen); @@ -595,10 +556,10 @@ void classMap::draw_dynamic_backgrounds() graphLib.clear_surface_area(0, 0, RES_W, RES_H, GameMediator::get_instance()->map_data[number].background_color.r, GameMediator::get_instance()->map_data[number].background_color.g, GameMediator::get_instance()->map_data[number].background_color.b, graphLib.gameScreen); } - float bg1_speed = (float)GameMediator::get_instance()->map_data[number].backgrounds[0].speed/10; + float bg1_speed = (float)GameMediator::get_instance()->map_data[number].backgrounds[0].speed/10 * SharedData::get_instance()->get_movement_multiplier(); int bg1_scroll_mode = GameMediator::get_instance()->map_data[number].backgrounds[0].auto_scroll; // dynamic background won't work in low-end graphics more - if (game_config.graphics_performance_mode != PERFORMANCE_MODE_LOW) { + if (SharedData::get_instance()->game_config.graphics_performance_mode != PERFORMANCE_MODE_LOW) { if (bg1_scroll_mode == BG_SCROLL_MODE_LEFT) { bg_scroll.x -= bg1_speed; adjust_dynamic_background_position(); @@ -614,8 +575,6 @@ void classMap::draw_dynamic_backgrounds() } } - //std::cout << "## bg1_speed[" << bg1_speed << "], bg_scroll.x[" << bg_scroll.x << "]" << std::endl; - float x1 = bg_scroll.x; if (x1 > 0.0) { // moving to right x1 = (RES_W - x1) * -1; @@ -623,21 +582,39 @@ void classMap::draw_dynamic_backgrounds() float y1 = bg_scroll.y + GameMediator::get_instance()->map_data[number].backgrounds[0].adjust_y; - //std::cout << "## x1[" << x1 << "]" << std::endl; - - if (surface_bg->width > 0) { - // draw leftmost part - graphLib.copyAreaWithAdjust(st_position(x1, y1), surface_bg, &graphLib.gameScreen); + if (bg1_scroll_mode == BG_SCROLL_MODE_ANIM_BG) { + // draw leftmost part + graphLib.copyAreaWithAdjustAndAnimFrame(st_position(x1, y1), surface_bg, &graphLib.gameScreen, bg_anim_pos); - // draw rightmost part, if needed - if (abs(bg_scroll.x) > RES_W) { - //std::cout << "### MUST DRAW SECOND BG-POS-LEFT ###" << std::endl; - float bg_pos_x = RES_W - (abs(x1)-RES_W); - graphLib.copyAreaWithAdjust(st_position(bg_pos_x, y1), surface_bg, &graphLib.gameScreen); - } else if (surface_bg->width - abs(bg_scroll.x) < RES_W) { - float bg_pos_x = surface_bg->width - (int)abs(bg_scroll.x); - graphLib.copyAreaWithAdjust(st_position(bg_pos_x, y1), surface_bg, &graphLib.gameScreen); + // draw rightmost part, if needed + if (abs(bg_scroll.x) > RES_W) { + float bg_pos_x = RES_W - (abs(x1)-RES_W); + graphLib.copyAreaWithAdjustAndAnimFrame(st_position(bg_pos_x, y1), surface_bg, &graphLib.gameScreen, bg_anim_pos); + } else if (surface_bg->width - abs(bg_scroll.x) < RES_W) { + float bg_pos_x = surface_bg->width - (int)abs(bg_scroll.x); + graphLib.copyAreaWithAdjustAndAnimFrame(st_position(bg_pos_x, y1), surface_bg, &graphLib.gameScreen, bg_anim_pos); + } + if (timer.getTimer() > bg_anim_timer) { + if (bg_anim_pos == 0) { + bg_anim_pos = 1; + } else { + bg_anim_pos = 0; + } + bg_anim_timer = timer.getTimer() + 200; + } + } else { + // draw leftmost part + graphLib.copyAreaWithAdjust(st_position(x1, y1), surface_bg, &graphLib.gameScreen); + + // draw rightmost part, if needed + if (abs(bg_scroll.x) > RES_W) { + float bg_pos_x = RES_W - (abs(x1)-RES_W); + graphLib.copyAreaWithAdjust(st_position(bg_pos_x, y1), surface_bg, &graphLib.gameScreen); + } else if (surface_bg->width - abs(bg_scroll.x) < RES_W) { + float bg_pos_x = surface_bg->width - (int)abs(bg_scroll.x); + graphLib.copyAreaWithAdjust(st_position(bg_pos_x, y1), surface_bg, &graphLib.gameScreen); + } } } @@ -646,10 +623,8 @@ void classMap::draw_dynamic_backgrounds() void classMap::draw_static_background() { - //std::cout << "STATIC-BG-DRAW bg.x[" << static_bg_pos.x << "], scroll.x[" << scroll.x << "]" << std::endl; if (static_bg.is_null() == false && static_bg_pos.x >= scroll.x-1 && static_bg_pos.x < scroll.x+RES_W) { st_position adjusted_static_bg_pos((static_bg_pos.x-scroll.x), static_bg_pos.y); - //std::cout << "STATIC-BG-DRAW bg.x[" << static_bg_pos.x << "], scroll.x[" << scroll.x << "], x[" << adjusted_static_bg_pos.x << "]" << std::endl; graphLib.copyAreaWithAdjust(adjusted_static_bg_pos, &static_bg, &graphLib.gameScreen); return; } @@ -659,12 +634,10 @@ void classMap::draw_foreground_layer(int scroll_x, int scroll_y) { if (strlen(GameMediator::get_instance()->map_data[number].backgrounds[1].filename) > 0) { - //std::cout << "draw_foreground_layer #1" << std::endl; - float foreground_speed = (float)GameMediator::get_instance()->map_data[number].backgrounds[1].speed/10; + float foreground_speed = (float)GameMediator::get_instance()->map_data[number].backgrounds[1].speed/10 * SharedData::get_instance()->get_movement_multiplier(); int scroll_mode = GameMediator::get_instance()->map_data[number].backgrounds[1].auto_scroll; // dynamic background won't work in low-end graphics more - if (game_config.graphics_performance_mode != PERFORMANCE_MODE_LOW) { - //std::cout << "draw_foreground_layer #2" << std::endl; + if (SharedData::get_instance()->game_config.graphics_performance_mode != PERFORMANCE_MODE_LOW) { if (scroll_mode == BG_SCROLL_MODE_LEFT) { fg_layer_scroll.x -= ((float)1*foreground_speed); adjust_foreground_position(); @@ -680,8 +653,6 @@ void classMap::draw_foreground_layer(int scroll_x, int scroll_y) } } - //std::cout << "## foreground_speed[" << foreground_speed << "], fg_layer_scroll.x[" << fg_layer_scroll.x << "]" << std::endl; - int x1 = fg_layer_scroll.x; if (x1 > 0) { // moving to right x1 = (RES_W - x1) * -1; @@ -689,23 +660,16 @@ void classMap::draw_foreground_layer(int scroll_x, int scroll_y) int y1 = fg_layer_scroll.y + GameMediator::get_instance()->map_data[number].backgrounds[1].adjust_y; - //std::cout << "## x1[" << x1 << "]" << std::endl; - - if (get_dynamic_foreground() != NULL && get_dynamic_foreground()->width > 0) { // draw leftmost part graphLib.copyAreaWithAdjust(st_position(x1, y1), get_dynamic_foreground(), &graphLib.gameScreen); // draw rightmost part, if needed - //std::cout << "fg_layer_scroll.x[" << fg_layer_scroll.x << "]" << std::endl; if (abs(fg_layer_scroll.x) > RES_W) { - //std::cout << "### MUST DRAW SECOND BG-POS-LEFT ###" << std::endl; int bg_pos_x = RES_W - (abs(x1)-RES_W); - //std::cout << "Need to draw second part of surface, bg_pos_x[" << bg_pos_x << "]" << std::endl; graphLib.copyAreaWithAdjust(st_position(bg_pos_x, y1), get_dynamic_foreground(), &graphLib.gameScreen); } else if (get_dynamic_foreground()->width - abs(fg_layer_scroll.x) < RES_W) { int foreground_pos_x = get_dynamic_foreground()->width - (int)abs(fg_layer_scroll.x); - //std::cout << "### MUST DRAW SECOND BG-POS-RIGHT width[" << get_dynamic_foreground()->width << "], scroll.x[" << (int)abs(fg_layer_scroll.x) << "] ###" << std::endl; // test if there isn't a overlap, so we need to add +1 graphLib.copyAreaWithAdjust(st_position(foreground_pos_x, y1), get_dynamic_foreground(), &graphLib.gameScreen); } @@ -726,16 +690,10 @@ void classMap::adjust_dynamic_background_position() // esq -> direita: #1 bg_limt[640], scroll.x[-640.799] if (bg_scroll.x < -bg_limit) { - //std::cout << "#1 bg_limt[" << bg_limit << "], scroll.x[" << bg_scroll.x << "]" << std::endl; - //std::cout << "RESET BG-SCROLL #1" << std::endl; bg_scroll.x = 0; } else if (bg_scroll.x > bg_limit) { - //std::cout << "#2 bg_limt[" << bg_limit << "], scroll.x[" << bg_scroll.x << "]" << std::endl; - //std::cout << "RESET BG-SCROLL #2" << std::endl; bg_scroll.x = 0; } else if (bg_scroll.x > 0) { - //std::cout << "#3 bg_limt[" << bg_limit << "], scroll.x[" << bg_scroll.x << "]" << std::endl; - //std::cout << "RESET BG-SCROLL #3" << std::endl; bg_scroll.x = -(get_dynamic_bg()->width); // erro aqui } @@ -759,16 +717,10 @@ void classMap::adjust_foreground_position() // esq -> direita: #1 bg_limt[640], scroll.x[-640.799] if (fg_layer_scroll.x < -foreground_limit) { - //std::cout << "#1 bg_limt[" << foreground_limit << "], scroll.x[" << fg_layer_scroll.x << "]" << std::endl; - //std::cout << "RESET BG-SCROLL #1" << std::endl; fg_layer_scroll.x = 0; } else if (fg_layer_scroll.x > foreground_limit) { - //std::cout << "#2 bg_limt[" << foreground_limit << "], scroll.x[" << fg_layer_scroll.x << "]" << std::endl; - //std::cout << "RESET BG-SCROLL #2" << std::endl; fg_layer_scroll.x = 0; } else if (fg_layer_scroll.x > 0) { - //std::cout << "#3 bg_limt[" << foreground_limit << "], scroll.x[" << fg_layer_scroll.x << "]" << std::endl; - //std::cout << "RESET BG-SCROLL #3" << std::endl; fg_layer_scroll.x = -(get_dynamic_foreground()->width); // erro aqui } @@ -798,26 +750,12 @@ bool classMap::must_show_static_bg() return false; } -void classMap::set_map_enemy_static_background(string filename, st_position pos) -{ - if (static_bg.is_null() == false) { - static_bg.freeGraphic(); - } - if (filename.length() > 0) { - graphLib.surfaceFromFile(filename, &static_bg); - } - static_bg_pos = pos; -} - - void classMap::draw_dynamic_backgrounds_into_surface(graphicsLib_gSurface &surface) { - //std::cout << "MAP::draw_dynamic_backgrounds_into_surface - color: (" << GameMediator::get_instance()->map_data[number].background_color.r << ", " << GameMediator::get_instance()->map_data[number].background_color.g << ", " << GameMediator::get_instance()->map_data[number].background_color.b << ")" << std::endl; graphLib.clear_surface_area(0, 0, surface.width, surface.height, GameMediator::get_instance()->map_data[number].background_color.r, GameMediator::get_instance()->map_data[number].background_color.g, GameMediator::get_instance()->map_data[number].background_color.b, surface); - if (get_dynamic_bg() == NULL) { return; } @@ -835,14 +773,11 @@ void classMap::draw_dynamic_backgrounds_into_surface(graphicsLib_gSurface &surfa graphLib.copyAreaWithAdjust(st_position(x1, y1), get_dynamic_bg(), &surface); // draw rightmost part, if needed - //std::cout << "bg_scroll.x[" << bg_scroll.x << "]" << std::endl; if (abs(bg_scroll.x) > RES_W) { - //std::cout << "### MUST DRAW SECOND BG-POS-LEFT ###" << std::endl; int bg_pos_x = RES_W - (abs(x1)-RES_W); graphLib.copyAreaWithAdjust(st_position(bg_pos_x, y1), get_dynamic_bg(), &surface); } else if (get_dynamic_bg()->width - abs(bg_scroll.x) < RES_W) { int bg_pos_x = get_dynamic_bg()->width - abs(bg_scroll.x); - //std::cout << "### MUST DRAW SECOND BG-POS-RIGHT bg_pos_x[" << bg_pos_x << "] ###" << std::endl; graphLib.copyAreaWithAdjust(st_position(bg_pos_x, y1), get_dynamic_bg(), &surface); } @@ -850,7 +785,7 @@ void classMap::draw_dynamic_backgrounds_into_surface(graphicsLib_gSurface &surfa } -void classMap::add_object(object obj) +void classMap::add_object(object& obj) { object_list.push_back(obj); } @@ -860,61 +795,65 @@ st_position classMap::get_first_lock_in_direction(st_position pos, st_size max_d st_position res; st_position x_limit_pos; - std::cout << "########### get_first_lock_in_direction pos[" << pos.x << "][" << pos.y << "]" << std::endl; - switch (direction) { case ANIM_DIRECTION_LEFT: + { res.y = pos.y; res.x = pos.x - max_dist.width; - for (int pos_i=pos.x; pos_i>(pos.x-max_dist.width); pos_i--) { - int map_lock = gameControl.get_current_map_obj()->getMapPointLock(st_position(pos_i/TILESIZE, pos.y/TILESIZE)); - //std::cout << "TELEPORT::LEFT x[" << pos_i << ", map_x[" << (pos_i/TILESIZE) << "], map_lock[" << map_lock << "]" << std::endl; - if (map_lock != TERRAIN_UNBLOCKED && map_lock != TERRAIN_WATER) { - std::cout << "LEFT - pos_i[" << pos_i << "]" << std::endl; - res.x = pos_i+1; - break; + int scroll_lock_left = get_first_lock_on_left(pos.x/TILESIZE); + if (scroll_lock_left < pos.x-max_dist.width) { + for (int pos_i=pos.x; pos_i>(pos.x-max_dist.width); pos_i--) { + int map_lock = gameControl.get_current_map_obj()->getMapPointLock(st_position(pos_i/TILESIZE, pos.y/TILESIZE)); + if (map_lock != TERRAIN_UNBLOCKED && map_lock != TERRAIN_WATER) { + res.x = pos_i+1; + break; + } } + } else { + res.x = scroll_lock_left+TILESIZE; } break; + } case ANIM_DIRECTION_RIGHT: + { res.y = pos.y; res.x = pos.x + max_dist.width; - for (int pos_i=pos.x; pos_i<(pos.x+max_dist.width); pos_i++) { - int map_lock = gameControl.get_current_map_obj()->getMapPointLock(st_position(pos_i/TILESIZE, pos.y/TILESIZE)); - //std::cout << "TELEPORT::RIGHT #1 x[" << pos_i << ", map_x[" << (pos_i/TILESIZE) << "], map_lock[" << map_lock << "]" << std::endl; - if (map_lock != TERRAIN_UNBLOCKED && map_lock != TERRAIN_WATER) { - std::cout << "TELEPORT::RIGHT #2 - pos_i[" << pos_i << "]" << std::endl; - res.x = pos_i-1; - break; + int scroll_lock_right = get_first_lock_on_right(pos.x/TILESIZE); + if (scroll_lock_right > pos.x+max_dist.width) { + for (int pos_i=pos.x; pos_i<(pos.x+max_dist.width); pos_i++) { + int map_lock = gameControl.get_current_map_obj()->getMapPointLock(st_position(pos_i/TILESIZE, pos.y/TILESIZE)); + if (map_lock != TERRAIN_UNBLOCKED && map_lock != TERRAIN_WATER) { + res.x = pos_i-1; + break; + } } + } else { + res.x = scroll_lock_right-TILESIZE; } break; - + } case ANIM_DIRECTION_UP: + { res.y = pos.y - max_dist.height; res.x = pos.x; for (int pos_i=pos.y; pos_i>(pos.y-max_dist.height); pos_i--) { int map_lock = gameControl.get_current_map_obj()->getMapPointLock(st_position(pos.x/TILESIZE, pos_i/TILESIZE)); - //std::cout << "TELEPORT::LEFT x[" << pos_i << ", map_x[" << (pos_i/TILESIZE) << "], map_lock[" << map_lock << "]" << std::endl; if (map_lock != TERRAIN_UNBLOCKED && map_lock != TERRAIN_WATER) { - std::cout << "UP - pos_i[" << pos_i << "]" << std::endl; res.y = pos_i+1; break; } } break; - + } case ANIM_DIRECTION_DOWN: res.y = pos.y + max_dist.height; res.x = pos.x; for (int pos_i=pos.y; pos_i<(pos.y+max_dist.height); pos_i++) { int map_lock = gameControl.get_current_map_obj()->getMapPointLock(st_position(pos.x/TILESIZE, pos_i/TILESIZE)); - //std::cout << "TELEPORT::RIGHT #1 x[" << pos_i << ", map_x[" << (pos_i/TILESIZE) << "], map_lock[" << map_lock << "]" << std::endl; if (map_lock != TERRAIN_UNBLOCKED && map_lock != TERRAIN_WATER) { - std::cout << "TELEPORT::DOWN #2 - pos_i[" << pos_i << "]" << std::endl; res.y = pos_i-1; break; } @@ -948,9 +887,9 @@ st_position classMap::get_first_lock_in_direction(st_position pos, st_size max_d return res; } -int classMap::get_first_lock_on_left(int x_pos) const +int classMap::get_first_lock_on_left(int x_tile_pos) const { - for (int i=x_pos; i>= 0; i--) { + for (int i=x_tile_pos; i>= 0; i--) { if (wall_scroll_lock[i] == true) { return i*TILESIZE; } @@ -958,14 +897,12 @@ int classMap::get_first_lock_on_left(int x_pos) const return -1; } -int classMap::get_first_lock_on_right(int x_pos) const +int classMap::get_first_lock_on_right(int x_tile_pos) const { int limit = (scroll.x+RES_W)/TILESIZE; - x_pos += 1; - std::cout << "classMap::get_first_lock_on_right - x_pos: " << x_pos << ", limit: " << limit << std::endl; - for (int i=x_pos; i<=limit; i++) { + x_tile_pos += 1; + for (int i=x_tile_pos; i<=limit; i++) { if (wall_scroll_lock[i] == true) { - std::cout << "classMap::get_first_lock_on_right - found lock at: " << i << std::endl; return i*TILESIZE; } } @@ -980,9 +917,6 @@ int classMap::get_first_lock_on_bottom(int x_pos, int y_pos) int classMap::get_first_lock_on_bottom(int x_pos, int y_pos, int w, int h) { - - //std::cout << "get_first_lock_on_bottom, y_pos[" << y_pos << "]" << std::endl; - int tilex = x_pos/TILESIZE; int above_tiles_to_test = h/TILESIZE; if (above_tiles_to_test < 2) { // at least two tiles above even for small npcs @@ -999,8 +933,6 @@ int classMap::get_first_lock_on_bottom(int x_pos, int y_pos, int w, int h) } for (int i=initial_y; i>=above_tiles_to_test+1; i--) { // ignore here first tiles, as we need to test them next - - //std::cout << "get_first_lock_on_bottom, i[" << i << "]" << std::endl; int map_lock = getMapPointLock(st_position(tilex, i)); bool found_bad_point = false; if (map_lock != TERRAIN_UNBLOCKED && map_lock != TERRAIN_WATER && map_lock != TERRAIN_EASYMODEBLOCK && map_lock != TERRAIN_HARDMODEBLOCK) { @@ -1009,7 +941,6 @@ int classMap::get_first_lock_on_bottom(int x_pos, int y_pos, int w, int h) for (int k=0; k>>>>> MAP::get_first_lock_on_bottom - test-point[" << (tilex+k) << "][" << j << "].terrain[" << map_lock2 << "], above_tiles_to_test[" << above_tiles_to_test << "],right_tiles_to_test[" << right_tiles_to_test << "]" << std::endl; if (map_lock2 != TERRAIN_UNBLOCKED && map_lock2 != TERRAIN_WATER) { // found a stop point, now check above ones found_bad_point = true; break; @@ -1020,7 +951,6 @@ int classMap::get_first_lock_on_bottom(int x_pos, int y_pos, int w, int h) } } if (found_bad_point == false) { - //std::cout << ">>>>>> MAP::get_first_lock_on_bottom - good-point[" << (i-1) << "]" << std::endl; return i-1; } } @@ -1030,45 +960,56 @@ int classMap::get_first_lock_on_bottom(int x_pos, int y_pos, int w, int h) void classMap::drop_item(classnpc* npc_ref) { + if (npc_ref == NULL) { + return; + } st_float_position position = st_float_position(npc_ref->getPosition().x + npc_ref->get_size().width/2, npc_ref->getPosition().y + npc_ref->get_size().height/2); // dying out of screen should not drop item if (position.y > RES_H) { return; } srand(static_cast(timer.getTimer())); - //int rand_n = rand() % 100; int rand_n = static_cast (100.0 * (rand() / (RAND_MAX + 1.0))); - std::cout << ">>>>>>> classMap::drop_item() - rand_n: " << rand_n << std::endl; DROP_ITEMS_LIST obj_type; // sub-bosses always will drop energy big if (npc_ref->is_subboss()) { obj_type = DROP_ITEM_ENERGY_BIG; } else { - // 1UP (1%), Big Energy (2%), Big Weapon (2%), Small Energy (15)%, Small Weapon (15%), Score Pearl (53%) - // .byt 99, 97, 95, 80, 65, 12 (http://tasvideos.org/RandomGenerators.html) - int drop_ratio[] = {99, 97, 95, 80, 65, 50}; + // Big Energy (3%), Big Weapon (2%), Small Energy (15)%, Small Weapon (15%), Score Pearl (53%) + int drop_ratio[5]; if (game_save.difficulty == DIFFICULTY_EASY) { // 5%, 10%, 10%, 20%, 20%, 20% // - int drop_ratio_easy[] = {95, 85, 75, 55, 35, 15}; - std::copy(drop_ratio_easy, drop_ratio_easy+6, drop_ratio); + drop_ratio[0] = 95; + drop_ratio[1] = 85; + drop_ratio[2] = 75; + drop_ratio[3] = 55; + drop_ratio[4] = 35; } else if (game_save.difficulty == DIFFICULTY_HARD) { // 1%, 1%, 1%, 10%, 10%, 10% // - int drop_ratio_hard[] = {99, 98, 97, 87, 77, 67}; - std::copy(drop_ratio_hard, drop_ratio_hard+6, drop_ratio); + drop_ratio[0] = 99; + drop_ratio[1] = 98; + drop_ratio[2] = 97; + drop_ratio[3] = 87; + drop_ratio[4] = 77; + } else { + // .byt 99, 97, 95, 80, 65, 12 (http://tasvideos.org/RandomGenerators.html) + drop_ratio[0] = 97; + drop_ratio[1] = 95; + drop_ratio[2] = 80; + drop_ratio[3] = 65; + drop_ratio[4] = 50; } - if (rand_n == drop_ratio[0]) { - obj_type = DROP_ITEM_1UP; - } else if (rand_n >= drop_ratio[1]) { + if (rand_n >= drop_ratio[0]) { obj_type = DROP_ITEM_ENERGY_BIG; - } else if (rand_n >= drop_ratio[2]) { + } else if (rand_n >= drop_ratio[1]) { obj_type = DROP_ITEM_WEAPON_BIG; - } else if (rand_n >= drop_ratio[3]) { + } else if (rand_n >= drop_ratio[2]) { obj_type = DROP_ITEM_ENERGY_SMALL; - } else if (rand_n >= drop_ratio[4]) { + } else if (rand_n >= drop_ratio[3]) { obj_type = DROP_ITEM_WEAPON_SMALL; - } else if (rand_n >= drop_ratio[5]) { + } else if (rand_n >= drop_ratio[4]) { obj_type = DROP_ITEM_COIN; } else { return; @@ -1080,16 +1021,107 @@ void classMap::drop_item(classnpc* npc_ref) short obj_type_n = gameControl.get_drop_item_id(obj_type); if (obj_type_n == -1) { - std::cout << ">>>>>>>>> obj_type_n(" << obj_type_n << ") invalid for obj_type(" << obj_type << ")" << std::endl; return; } - object temp_obj(obj_type_n, this, obj_pos, st_position(-1, -1), -1); + + object temp_obj(obj_type_n, this, obj_pos, st_position(-1, -1), -1, ANIM_DIRECTION_LEFT); + temp_obj.set_position(st_position(static_cast(position.x), static_cast(position.y))); + temp_obj.set_duration(4500); + add_object(temp_obj); +} + +void classMap::drop_random_item(st_position position) +{ + int rand_n = static_cast (100.0 * (rand() / (RAND_MAX + 1.0))); + DROP_ITEMS_LIST obj_type; + + int drop_ratio[5]; + if (game_save.difficulty == DIFFICULTY_EASY) { + // 5%, 10%, 10%, 20%, 20%, 20% // + drop_ratio[0] = 95; + drop_ratio[1] = 85; + drop_ratio[2] = 75; + drop_ratio[3] = 55; + drop_ratio[4] = 35; + } else if (game_save.difficulty == DIFFICULTY_HARD) { + // 1%, 1%, 1%, 10%, 10%, 10% // + drop_ratio[0] = 99; + drop_ratio[1] = 98; + drop_ratio[2] = 97; + drop_ratio[3] = 87; + drop_ratio[4] = 77; + } else { + // .byt 99, 97, 95, 80, 65, 12 (http://tasvideos.org/RandomGenerators.html) + drop_ratio[0] = 97; + drop_ratio[1] = 95; + drop_ratio[2] = 80; + drop_ratio[3] = 65; + drop_ratio[4] = 50; + } + + if (rand_n >= drop_ratio[0]) { + obj_type = DROP_ITEM_ENERGY_BIG; + } else if (rand_n >= drop_ratio[1]) { + obj_type = DROP_ITEM_WEAPON_BIG; + } else if (rand_n >= drop_ratio[2]) { + obj_type = DROP_ITEM_ENERGY_SMALL; + } else if (rand_n >= drop_ratio[3]) { + obj_type = DROP_ITEM_WEAPON_SMALL; + } else if (rand_n >= drop_ratio[4]) { + obj_type = DROP_ITEM_COIN; + } else { + std::cout << "DROP IGNORED #1" << std::endl; + return; + } + st_position obj_pos; + obj_pos.y = static_cast(position.y/TILESIZE); + obj_pos.x = static_cast((position.x - TILESIZE)/TILESIZE); + + short obj_type_n = gameControl.get_drop_item_id(obj_type); + if (obj_type_n == -1) { + std::cout << "DROP IGNORED #2" << std::endl; + return; + } + + object temp_obj(obj_type_n, this, obj_pos, st_position(-1, -1), -1, ANIM_DIRECTION_LEFT); temp_obj.set_position(st_position(static_cast(position.x), static_cast(position.y))); temp_obj.set_duration(4500); add_object(temp_obj); } +void classMap::drop_great_random_item(st_position position) +{ + int rand_n = static_cast (100.0 * (rand() / (RAND_MAX + 1.0))); + DROP_ITEMS_LIST obj_type; + // life 10%, energy-tank 20%, weapon-big 30%, energy-big 40% - 90, 70, 40 + if (rand_n >= 90) { + obj_type = DROP_ITEM_1UP; + } else if (rand_n >= 70) { + obj_type = DROP_ITEM_ENERGY_TANK; + } else if (rand_n >= 40) { + obj_type = DROP_ITEM_WEAPON_BIG; + } else { + obj_type = DROP_ITEM_ENERGY_BIG; + } + + st_position obj_pos; + obj_pos.y = static_cast(position.y/TILESIZE); + obj_pos.x = static_cast((position.x - TILESIZE)/TILESIZE); + + short obj_type_n = gameControl.get_drop_item_id(obj_type); + if (obj_type_n == -1) { + std::cout << "DROP IGNORED #2" << std::endl; + return; + } + + object temp_obj(obj_type_n, this, obj_pos, st_position(-1, -1), -1, ANIM_DIRECTION_LEFT); + temp_obj.set_position(st_position(static_cast(position.x), static_cast(position.y))); + temp_obj.set_duration(4500); + add_object(temp_obj); + +} + void classMap::set_bg_scroll(int scrollx) { bg_scroll.x = scrollx; @@ -1110,7 +1142,6 @@ void classMap::reset_map_timers() void classMap::reset_enemies_timers() { - //std::cout << ">>>>>> MAP::reset_enemies_timers - _npc_list.size: " << _npc_list.size() << std::endl; std::vector::iterator enemy_it; for (enemy_it = _npc_list.begin(); enemy_it != _npc_list.end(); enemy_it++) { (*enemy_it).reset_timers(); // TODO: must pass scroll map to npcs somwhow... @@ -1120,7 +1151,6 @@ void classMap::reset_enemies_timers() void classMap::reset_objects_timers() { - //std::cout << ">>>>>> MAP::reset_objects_timers - object_list.size: " << object_list.size() << std::endl; std::vector::iterator object_it; for (object_it = object_list.begin(); object_it != object_list.end(); object_it++) { (*object_it).reset_timers(); // TODO: must pass scroll map to npcs somwhow... @@ -1137,25 +1167,21 @@ void classMap::reset_objects_anim_timers() void classMap::reset_objects() { - //std::cout << ">>>>>> MAP::reset_objects - object_list.size: " << object_list.size() << std::endl; std::vector::iterator object_it; for (object_it = object_list.begin(); object_it != object_list.end(); object_it++) { - (*object_it).reset(); + if ((*object_it).get_id() == game_data.player_items[0] || (*object_it).get_id() == game_data.player_items[1]) { + (*object_it).set_finished(true); + } else { + (*object_it).reset(); + } } } -void classMap::print_objects_number() -{ - //std::cout << ">>>>>> MAP::print_objects_number - n: " << object_list.size() << std::endl; -} - void classMap::add_bubble_animation(st_position pos) { if (_water_bubble.timer > timer.getTimer()) { - //std::cout << ">> MAP::add_bubble::CANT_ADD <<" <> MAP::add_bubble::ADDED <<" <::iterator it=object_list.begin(); it!=object_list.end(); it++) { + object& temp_obj = (*it); + int item_id = temp_obj.get_id(); + if (item_id == game_data.player_items[0] || item_id == game_data.player_items[1]) { + temp_obj.set_finished(true); + } + } +} + bool classMap::subboss_alive_on_left(short tileX) { std::vector::iterator npc_it; for (npc_it = _npc_list.begin(); npc_it != _npc_list.end(); npc_it++) { classnpc* npc_ref = &(*npc_it); if ((npc_ref->is_boss() == true || npc_ref->is_subboss() == true) && npc_ref->is_dead() == false) { - std::cout << "Opa, achou um boss/sub-boss!" << std::endl; int dist_door_npc = tileX*TILESIZE - npc_ref->getPosition().x; - std::cout << "dist_door_npc[" << dist_door_npc << "], NPC-pos.x: " << npc_ref->getPosition().x << ", tileX*TILESIZE: " << tileX*TILESIZE << std::endl; if (npc_ref->getPosition().x >= (tileX-20)*TILESIZE && npc_ref->getPosition().x <= tileX*TILESIZE) { // 20 tiles is the size of a visible screen - std::cout << "Opa, achou um sub-boss NA ESQUERDA!!" << std::endl; return true; } } @@ -1197,7 +1231,6 @@ void classMap::finish_object_teleporter(int number) { for (std::vector::iterator it=object_list.begin(); it!=object_list.end(); it++) { object& temp_obj = (*it); - std::cout << "number: " << number << ", obj.id: " << temp_obj.get_obj_map_id() << std::endl; if (temp_obj.get_obj_map_id() == number) { temp_obj.set_direction(ANIM_DIRECTION_RIGHT); } @@ -1208,7 +1241,6 @@ void classMap::activate_final_boss_teleporter() { for (std::vector::iterator it=object_list.begin(); it!=object_list.end(); it++) { object& temp_obj = (*it); - std::cout << "number: " << number << ", obj.id: " << temp_obj.get_obj_map_id() << ", type: " << temp_obj.get_type() << ", OBJ_FINAL_BOSS_TELEPORTER: " << OBJ_FINAL_BOSS_TELEPORTER << std::endl; if (temp_obj.get_type() == OBJ_FINAL_BOSS_TELEPORTER) { temp_obj.start(); } @@ -1217,7 +1249,6 @@ void classMap::activate_final_boss_teleporter() Uint8 classMap::get_map_gfx() { - //std::cout << ">> MAP::get_map_gfx[" << number << "]" << std::endl; return GameMediator::get_instance()->map_data[number].backgrounds[0].gfx; } @@ -1268,13 +1299,11 @@ void classMap::load_map_objects() { } if (GameMediator::get_instance()->map_object_data[i].id_object != -1 && GameMediator::get_instance()->map_object_data[i].stage_id == stage_number && GameMediator::get_instance()->map_object_data[i].map_id == number) { - object temp_obj(GameMediator::get_instance()->map_object_data[i].id_object, this, GameMediator::get_instance()->map_object_data[i].start_point, GameMediator::get_instance()->map_object_data[i].link_dest, GameMediator::get_instance()->map_object_data[i].map_dest); + object temp_obj(GameMediator::get_instance()->map_object_data[i].id_object, this, GameMediator::get_instance()->map_object_data[i].start_point, GameMediator::get_instance()->map_object_data[i].link_dest, GameMediator::get_instance()->map_object_data[i].map_dest, GameMediator::get_instance()->map_object_data[i].direction); temp_obj.set_obj_map_id(i); - temp_obj.set_direction(GameMediator::get_instance()->map_object_data[i].direction); object_list.push_back(temp_obj); } } - std::cout << "classMap::load_map_objects, count[" << object_list.size() << "]" << std::endl; } @@ -1304,7 +1333,6 @@ void classMap::create_dynamic_background_surfaces() { std::string bg_filename = std::string(GameMediator::get_instance()->map_data[number].backgrounds[0].filename); if (bg_filename.length() > 0) { - //std::cout << "MAP[" << (int)number << "]::create_bg[" << bg_filename << "]" << std::endl; draw_lib.add_dynamic_background(bg_filename, GameMediator::get_instance()->map_data[number].backgrounds[0].auto_scroll, GameMediator::get_instance()->map_data[number].background_color); } // foreground image @@ -1313,9 +1341,8 @@ void classMap::create_dynamic_background_surfaces() // @NOTE: alpha must be the same for three maps if using same image if (draw_lib.get_dynamic_foreground(std::string(GameMediator::get_instance()->map_data[number].backgrounds[1].filename)) == NULL) { draw_lib.add_dynamic_background(std::string(GameMediator::get_instance()->map_data[number].backgrounds[1].filename), GameMediator::get_instance()->map_data[number].backgrounds[1].auto_scroll, st_color(COLORKEY_R, COLORKEY_G, COLORKEY_B)); - if (GameMediator::get_instance()->map_data[number].backgrounds[1].gfx != 100) { + if (GameMediator::get_instance()->map_data[number].backgrounds[1].gfx != 100 && SharedData::get_instance()->game_config.graphics_performance_mode != PERFORMANCE_MODE_LOW) { int fg_alpha = (255 * GameMediator::get_instance()->map_data[number].backgrounds[1].gfx)/100; - //std::cout << ">>>>>>>>>>>>>>> FG-Alpha[" << number << "][" << fg_alpha << "]" << std::endl; draw_lib.set_dynamic_bg_alpha(GameMediator::get_instance()->map_data[number].backgrounds[1].filename, fg_alpha); } } @@ -1383,14 +1410,10 @@ int classMap::collision_rect_player_obj(st_rectangle player_rect, object* temp_o if (blocked != 0 && temp_obj->get_type() == OBJ_ACTIVE_OPENING_SLIM_PLATFORM) { if (abs(p_rect.y + p_rect.h - obj_rect.y) > y_inc || y_inc < 0) { - std::cout << "SLIM - ignore block, y_inc[" << y_inc << "]" << std::endl; blocked = 0; } } - //std::cout << "blocked: " << blocked << ", xOverlap: " << xOverlap << ", yOverlap: " << yOverlap << ", p.x: " << p_rect.x << ", p.y: " << p_rect.y << ", p.w: " << p_rect.w << ", p.h: " << p_rect.h << ", o.y: " << obj_rect.y << ", y_inc: " << y_inc << std::endl; - - return blocked; } @@ -1416,14 +1439,10 @@ bool classMap::is_obj_ignored_by_enemies(Uint8 obj_type) if (obj_type == OBJ_WEAPON_PILL_SMALL) { return true; } - if (obj_type == OBJ_LIFE) { - return true; - } if (obj_type == OBJ_ITEM_FLY) { return true; } if (obj_type == OBJ_ITEM_JUMP) { - //std::cout << "IGNORE OBJ_ITEM_JUMP" << std::endl; return true; } if (obj_type == OBJ_ARMOR_ARMS) { @@ -1450,9 +1469,6 @@ bool classMap::is_obj_ignored_by_enemies(Uint8 obj_type) if (obj_type == OBJ_FINAL_BOSS_TELEPORTER) { return true; } - if (obj_type == OBJ_BOSS_DOOR) { - return true; - } if (obj_type == OBJ_CHECKPOINT) { return true; } @@ -1465,8 +1481,6 @@ void classMap::collision_char_object(character* charObj, const float x_inc, cons int blocked = 0; object* res_obj = NULL; - //if (y_inc < 0) std::cout << "MAP::collision_player_object - y_inc: " << y_inc << std::endl; - // ignore collision if teleporting if (charObj->get_anim_type() == ANIM_TYPE_TELEPORT) { return; @@ -1474,100 +1488,88 @@ void classMap::collision_char_object(character* charObj, const float x_inc, cons st_rectangle char_rect = charObj->get_hitbox(); - //std::cout << ">>>>>>>>> CLASSMAP::collision-player-object, char_rect.y[" << char_rect.y << "]" << std::endl; - /// @TODO: isso aqui deveria mesmo estar aqui? - if (charObj->get_platform() == NULL) { - for (std::vector::iterator it=object_list.begin(); it!=object_list.end(); it++) { - object& temp_obj = (*it); - - if (temp_obj.is_hidden() == true) { - //std::cout << "obj[" << temp_obj.get_name() << "] - leave #1" << std::endl; - continue; - } - - if (temp_obj.is_on_screen() == false) { - //std::cout << "obj[" << temp_obj.get_name() << "] - leave #2" << std::endl; - continue; - } - - if (temp_obj.finished() == true) { - //std::cout << "obj[" << temp_obj.get_name() << "] - leave #3" << std::endl; - continue; - } - - if (charObj->is_player() == false && is_obj_ignored_by_enemies(temp_obj.get_type())) { - //std::cout << "obj[" << temp_obj.get_name() << "] - leave #4" << std::endl; - continue; - } - - // slim platform won't collide if movement is from bottom to top - if (temp_obj.get_type() == OBJ_ACTIVE_OPENING_SLIM_PLATFORM && y_inc < 0) { - //std::cout << "obj[" << temp_obj.get_name() << "] - leave #5" << std::endl; - continue; + if (charObj->get_platform() != NULL) { + object* temp_obj = charObj->get_platform(); + if (temp_obj->is_hidden() == true) { + charObj->set_platform(NULL); + } else if (temp_obj->get_type() == OBJ_TRACK_PLATFORM && temp_obj->get_state() != 0) { + charObj->set_platform(NULL); + } else { + blocked = collision_rect_player_obj(char_rect, temp_obj, x_inc, y_inc, 0, 0); + if (blocked != 0) { + res_obj = temp_obj; } + } - if (temp_obj.is_teleporting()) { - //std::cout << "obj[" << temp_obj.get_name() << "] - leave #6 [teleporting object]" << std::endl; - continue; - } + } + // TODO: must keep checking against all objects instead of stopping on the first with collision + for (std::vector::iterator it=object_list.begin(); it!=object_list.end(); it++) { + object& temp_obj = (*it); - // jumping from inside item-coil must not block player - if (temp_obj.get_type() == OBJ_ITEM_JUMP && y_inc < 0) { - continue; - } + if (temp_obj.is_hidden() == true || temp_obj.is_on_screen() == false || temp_obj.finished() == true || temp_obj.is_teleporting() == true) { + continue; + } - st_rectangle stopped_char_rect = charObj->get_hitbox(); - stopped_char_rect.x+= CHAR_OBJ_COLlISION_KILL_ADJUST/2; - stopped_char_rect.y+= CHAR_OBJ_COLlISION_KILL_ADJUST; - stopped_char_rect.w-= CHAR_OBJ_COLlISION_KILL_ADJUST; - stopped_char_rect.h-= CHAR_OBJ_COLlISION_KILL_ADJUST*2; + if (charObj->is_player() == false && is_obj_ignored_by_enemies(temp_obj.get_type())) { + continue; + } - //std::cout << "collision_rect_player_obj::CALL #1" << std::endl; - // check if, without moving, player is inside object - int no_move_blocked = collision_rect_player_obj(stopped_char_rect, &temp_obj, 0, 0, 0, 0); + // slim platform won't collide if movement is from bottom to top + if (temp_obj.get_type() == OBJ_ACTIVE_OPENING_SLIM_PLATFORM && y_inc < 0) { + continue; + } + // jumping from inside item-coil must not block player + if (temp_obj.get_type() == OBJ_ITEM_JUMP && y_inc < 0) { + continue; + } - //std::cout << "### obj[" << temp_obj.get_name() << "] - CHECK #1 ###" << std::endl; + st_rectangle stopped_char_rect = charObj->get_hitbox(); + stopped_char_rect.x+= CHAR_OBJ_COLlISION_KILL_ADJUST/2; + stopped_char_rect.y+= CHAR_OBJ_COLlISION_KILL_ADJUST; + stopped_char_rect.w-= CHAR_OBJ_COLlISION_KILL_ADJUST; + stopped_char_rect.h-= CHAR_OBJ_COLlISION_KILL_ADJUST*2; + // check if, without moving, player is inside object + int no_move_blocked = collision_rect_player_obj(stopped_char_rect, &temp_obj, 0, 0, 0, 0); - // some platforms can kill the player if he gets stuck inside it - if (charObj->is_player() == true && (temp_obj.get_type() == OBJ_MOVING_PLATFORM_UPDOWN || temp_obj.get_type() == OBJ_FLY_PLATFORM)) { - if (no_move_blocked == BLOCK_XY) { - _obj_collision = object_collision(BLOCK_INSIDE_OBJ, &temp_obj); - std::cout << "obj[" << temp_obj.get_name() << "] - leave #5" << std::endl; - return; - } + // some platforms can kill the player if he gets stuck inside it + if (charObj->is_player() == true && no_move_blocked == BLOCK_XY) { + if (temp_obj.get_type() == OBJ_MOVING_PLATFORM_UPDOWN) { + // need to change platform + charObj->set_platform(&temp_obj); + } else if (temp_obj.get_type() == OBJ_FLY_PLATFORM) { + _obj_collision = object_collision(BLOCK_INSIDE_OBJ, &temp_obj); + return; } + } - // usar TEMP_BLOCKED aqui, para não zerar o blocked anterior, fazer merge dos valores - int temp_blocked = 0; - //std::cout << "collision_rect_player_obj::CALL #2" << std::endl; - temp_blocked = collision_rect_player_obj(char_rect, &temp_obj, x_inc, y_inc, 0, 0); - //std::cout << "### obj[" << temp_obj.get_name() << "] - CHECK::temp_blocked[" << temp_blocked << "] ###" << std::endl; - + // usar TEMP_BLOCKED aqui, para não zerar o blocked anterior, fazer merge dos valores + int temp_blocked = 0; + temp_blocked = collision_rect_player_obj(char_rect, &temp_obj, x_inc, y_inc, 0, 0); - int temp_obj_y = temp_obj.get_position().y; - if (temp_obj.get_type() == OBJ_ITEM_JUMP) { - temp_obj_y += OBJ_JUMP_Y_ADJUST; - } - - // to enter platform, player.x+player.h must not be much higher than obj.y - if (temp_blocked != 0 && temp_obj.is_platform()) { + int temp_obj_y = temp_obj.get_position().y; + if (temp_obj.get_type() == OBJ_ITEM_JUMP) { + temp_obj_y += OBJ_JUMP_Y_ADJUST; + } - if (temp_obj.get_type() == OBJ_CHECKPOINT) { - if (temp_obj.is_started() == false) { - temp_obj.start(); - } - checkpoint.x = charObj->getPosition().x; - checkpoint.y = (charObj->getPosition().y+charObj->get_size().height-1); - checkpoint.map = gameControl.get_current_map_obj()->get_number(); - checkpoint.map_scroll_x = gameControl.get_current_map_obj()->getMapScrolling().x; - return; - } else if (temp_obj.get_type() == OBJ_BOSS_DOOR) { - if (temp_obj.is_started() == false && subboss_alive_on_left(temp_obj.get_position().x/TILESIZE) == false) { - // check for sub-boss alive on the left + // to enter platform, player.x+player.h must not be much higher than obj.y + if (temp_blocked != 0) { + if (temp_obj.get_type() == OBJ_CHECKPOINT) { + if (temp_obj.is_started() == false) { + temp_obj.start(); + } + checkpoint.x = temp_obj.get_position().x; + checkpoint.y = temp_obj.get_position().y + temp_obj.get_size().height + TILESIZE/2; + checkpoint.map = gameControl.get_current_map_obj()->get_number(); + checkpoint.map_scroll_x = gameControl.get_current_map_obj()->getMapScrolling().x; + continue; + } else if (temp_obj.get_type() == OBJ_BOSS_DOOR && charObj->is_player()) { + if (temp_obj.is_started() == false && subboss_alive_on_left(temp_obj.get_position().x/TILESIZE) == false) { // check for sub-boss alive on the left + // check if player position is not under door // + if ((char_rect.y + char_rect.h) <= (temp_obj.get_position().y+temp_obj.get_size().height+2) && char_rect.y >= temp_obj.get_position().y) { temp_obj.start(); if (charObj->get_int_position().x > temp_obj.get_position().x + temp_obj.get_size().width) { temp_obj.set_direction(ANIM_DIRECTION_LEFT); @@ -1576,17 +1578,8 @@ void classMap::collision_char_object(character* charObj, const float x_inc, cons } } } - - //std::cout << "### obj[" << temp_obj.get_name() << "] - CHECK #2, temp_blocked[" << temp_blocked << "] ###" << std::endl; - if (char_rect.y+char_rect.h-2 > temp_obj_y) { - - //std::cout << "temp_blocked[" << temp_obj.get_name() << "] RESET BLOCK" << std::endl; - // this avoids that player gets stuck inside an object - /// @TODO: only do that if player is trying to leave object area (is locked even with xinc zero) - //temp_blocked = 0; - //} else { - //std::cout << "temp_blocked[" << temp_obj.get_name() << "] KEEP! BLOCK" << std::endl; - } + } else if (temp_obj.get_type() == OBJ_TIMED_BOMB && charObj->is_player()) { + temp_obj.start_timed_bomb(x_inc, y_inc, charObj->get_hitbox()); } @@ -1599,11 +1592,14 @@ void classMap::collision_char_object(character* charObj, const float x_inc, cons } if (charObj->is_player() == true && temp_obj.get_state() != 0 && (temp_obj.get_type() == OBJ_RAY_VERTICAL || temp_obj.get_type() == OBJ_RAY_HORIZONTAL)) { - //std::cout << "############# RAY.DAMAGE #############" << std::endl; charObj->damage(TOUCH_DAMAGE_BIG, false); continue; } else if (charObj->is_player() == true && temp_obj.get_state() != 0 && (temp_obj.get_type() == OBJ_DEATHRAY_VERTICAL || temp_obj.get_type() == OBJ_DEATHRAY_HORIZONTAL)) { - std::cout << "DEATHRAY(damage) - player.x: " << char_rect.x << ", map.scroll_x: " << scroll.x << ", pos.x: " << temp_obj.get_position().x << ", size.w: " << temp_obj.get_size().width << std::endl; + charObj->damage(999, false); + continue; + } + + if (charObj->is_player() == true && temp_obj.get_type() == OBJ_CRUSHER && temp_obj.check_player_crushed()) { charObj->damage(999, false); continue; } @@ -1613,35 +1609,40 @@ void classMap::collision_char_object(character* charObj, const float x_inc, cons charObj->set_position(st_position(charObj->get_int_position().x, temp_obj.get_position().y - charObj->get_size().height)); } - //std::cout << "y_inc[" << y_inc << "], char_rect.y[" << char_rect.y << "], temp_obj_y[" << temp_obj_y << "]" << std::endl; - if (y_inc > 0 && char_rect.y <= temp_obj_y) { - //std::cout << ">>>>>>>> entered_platform!!!!!!! <<<<<" << std::endl; entered_platform = true; } if (entered_platform == true) { - //std::cout << "player.platform: " << playerObj->get_platform() << std::endl; - - if (temp_obj.is_hidden() == false && (temp_obj.get_type() == OBJ_MOVING_PLATFORM_UPDOWN || temp_obj.get_type() == OBJ_MOVING_PLATFORM_LEFTRIGHT || temp_obj.get_type() == OBJ_DISAPPEARING_BLOCK)) { - if (charObj->get_platform() == NULL && (temp_blocked == 2 || temp_blocked == 3)) { + if (charObj->is_jumping()) { + charObj->interrupt_jump(); + } + if (y_inc > 1 && temp_obj.get_type() == OBJ_JUMP_SHOOT_DESTRUCTIBLE_NO_DROP) { // +1 is gravity or just going from a platform almost same height, so ignore it + temp_obj.inc_status(); + } + if (temp_obj.is_hidden() == false && (temp_obj.get_type() == OBJ_MOVING_PLATFORM_UPDOWN || temp_obj.get_type() == OBJ_MOVING_PLATFORM_UP_LOOP || temp_obj.get_type() == OBJ_MOVING_PLATFORM_DOWN || temp_obj.get_type() == OBJ_MOVING_PLATFORM_LEFTRIGHT || temp_obj.get_type() == OBJ_DISAPPEARING_BLOCK)) { + if (charObj->get_platform() == NULL && (temp_blocked == 2 || temp_blocked == 3)) { + //std::cout << "CLASSMAP::set_platfoprm #1" << std::endl; charObj->set_platform(&temp_obj); if (temp_obj.get_type() == OBJ_FALL_PLATFORM) { temp_obj.set_direction(ANIM_DIRECTION_LEFT); } } else if (charObj->get_platform() == NULL && temp_blocked == 1) { + //std::cout << "CLASSMAP::set_platfoprm #2" << std::endl; charObj->set_platform(&temp_obj); } if (temp_blocked != 0) { _obj_collision = object_collision(temp_blocked, &(*it)); + //std::cout << "MAP::collision_char_object - LEAVE #1" << std::endl; return; } } else if (temp_obj.get_type() == OBJ_ITEM_FLY) { if (charObj->get_platform() == NULL && (temp_blocked == 2 || temp_blocked == 3) && y_inc > 0) { + //std::cout << "CLASSMAP::set_platfoprm #3" << std::endl; charObj->set_platform(&temp_obj); if (temp_obj.get_distance() == 0) { temp_obj.start(); @@ -1651,6 +1652,7 @@ void classMap::collision_char_object(character* charObj, const float x_inc, cons } if (temp_blocked != 0) { _obj_collision = object_collision(temp_blocked, &(*it)); + //std::cout << "MAP::collision_char_object - LEAVE #2" << std::endl; return; } } else if (temp_obj.get_type() == OBJ_ITEM_JUMP) { @@ -1661,18 +1663,20 @@ void classMap::collision_char_object(character* charObj, const float x_inc, cons } if (temp_blocked != 0) { if (y_inc > 0) { - //std::cout << ">>>> temp_blocked: " << temp_blocked << ", y_inc: " << y_inc << std::endl; _obj_collision = object_collision(temp_blocked, &(*it)); + //std::cout << "MAP::collision_char_object - LEAVE #3" << std::endl; return; } else { - std::cout << ">>>> RESET BLOCKED" << std::endl; temp_blocked = 0; } } - } else if (temp_obj.is_hidden() == false && temp_obj.is_started() == false && (temp_obj.get_type() == OBJ_ACTIVE_DISAPPEARING_BLOCK || temp_obj.get_type() == OBJ_ACTIVE_OPENING_SLIM_PLATFORM)) { + } else if (temp_obj.is_hidden() == false && temp_obj.is_started() == false && temp_obj.is_active_platform() == true) { temp_obj.start(); + //std::cout << "CLASSMAP::set_platfoprm #4" << std::endl; + charObj->set_platform(&temp_obj); } else if (temp_obj.get_type() == OBJ_FALL_PLATFORM || temp_obj.get_type() == OBJ_FLY_PLATFORM) { if (charObj->get_platform() == NULL) { + //std::cout << "CLASSMAP::set_platfoprm #5" << std::endl; charObj->set_platform(&temp_obj); if (temp_obj.get_state() == OBJ_STATE_STAND) { temp_obj.set_state(OBJ_STATE_MOVE); @@ -1680,73 +1684,57 @@ void classMap::collision_char_object(character* charObj, const float x_inc, cons } temp_obj.set_timer(timer.getTimer()+30); _obj_collision = object_collision(temp_blocked, &(*it)); + //std::cout << "MAP::collision_char_object - LEAVE #4" << std::endl; return; } } else if (temp_obj.get_type() == OBJ_TRACK_PLATFORM) { if (charObj->get_platform() == NULL) { + //std::cout << "CLASSMAP::set_platfoprm #6" << std::endl; charObj->set_platform(&temp_obj); _obj_collision = object_collision(temp_blocked, &(*it)); + //std::cout << "MAP::collision_char_object - LEAVE #5" << std::endl; return; } } else if (temp_obj.get_type() == OBJ_DAMAGING_PLATFORM) { if (charObj->get_platform() == NULL) { + //std::cout << "CLASSMAP::set_platfoprm #7" << std::endl; charObj->set_platform(&temp_obj); _obj_collision = object_collision(temp_blocked, &(*it)); + //std::cout << "MAP::collision_char_object - LEAVE #6" << std::endl; temp_obj.start(); return; } } - - - } - if (temp_blocked != 0) { - res_obj = &(*it); - } } - - - // merge blocked + temp_blocked - if (temp_blocked == BLOCK_X) { - if (blocked == 0) { - blocked = BLOCK_X; - } else if (blocked == BLOCK_Y) { - blocked = BLOCK_XY; - } - } else if (temp_blocked == BLOCK_Y) { - if (blocked == 0) { - blocked = BLOCK_Y; - } else if (blocked == BLOCK_X) { - blocked = BLOCK_XY; - } - } else if (temp_blocked == BLOCK_XY) { - blocked = BLOCK_XY; + if (temp_blocked != 0) { + res_obj = &(*it); } - } + } - // this part seems to be OK - } else { - object* temp_obj = charObj->get_platform(); - if (temp_obj->is_hidden() == true) { - std::cout << "obj[" << temp_obj->get_name() << "] - leave #2.1" << std::endl; - charObj->set_platform(NULL); - } else if (temp_obj->get_type() == OBJ_TRACK_PLATFORM && temp_obj->get_state() != 0) { - std::cout << "obj[" << temp_obj->get_name() << "] - leave #2.2" << std::endl; - charObj->set_platform(NULL); - } else { - //std::cout << "collision_rect_player_obj::CALL #3" << std::endl; - blocked = collision_rect_player_obj(char_rect, temp_obj, x_inc, y_inc, 0, 0); - if (blocked != 0) { - res_obj = temp_obj; + // merge blocked + temp_blocked + if (temp_blocked == BLOCK_X) { + if (blocked == 0) { + blocked = BLOCK_X; + } else if (blocked == BLOCK_Y) { + blocked = BLOCK_XY; } - //std::cout << "IN-PLATFORM[" << temp_obj->get_name() << "], blocked[" << blocked << "], y_inc[" << y_inc << "]" << std::endl; + } else if (temp_blocked == BLOCK_Y) { + if (blocked == 0) { + blocked = BLOCK_Y; + } else if (blocked == BLOCK_X) { + blocked = BLOCK_XY; + } + } else if (temp_blocked == BLOCK_XY) { + blocked = BLOCK_XY; } + //std::cout << "MAP::collision_char_object - BLOCK[" << blocked << "]" << std::endl; } @@ -1754,21 +1742,18 @@ void classMap::collision_char_object(character* charObj, const float x_inc, cons if (blocked == 0 && charObj->get_platform() != NULL) { // for player item, platform must only be removed only if the item was already adtivated if (charObj->get_platform()->get_type() == OBJ_ITEM_FLY || charObj->get_platform()->get_type() == OBJ_ITEM_JUMP) { - //std::cout << "### DEBUG OBJ_ITEM_JUMP #1 ###" << std::endl; if (charObj->get_platform()->get_distance() > 0 && y_inc != 0) { - std::cout << "CHAR::OUT-PLATFORM #1" << std::endl; charObj->set_platform(NULL); } else { _obj_collision = object_collision(0, NULL); + std::cout << "MAP::collision_char_object - LEAVE #7" << std::endl; return; } } else if (charObj->get_platform()->is_hidden() == true) { - std::cout << ">> OUT OF PLATFORM #2" << std::endl; charObj->set_platform(NULL); } else { _platform_leave_counter++; if (_platform_leave_counter > 2) { - std::cout << ">> OUT OF PLATFORM #3" << std::endl; charObj->set_platform(NULL); _platform_leave_counter = 0; } @@ -1777,7 +1762,7 @@ void classMap::collision_char_object(character* charObj, const float x_inc, cons _platform_leave_counter = 0; } - + //std::cout << "MAP::collision_char_object - END #1" << std::endl; _obj_collision = object_collision(blocked, res_obj); } @@ -1820,7 +1805,6 @@ void classMap::remove_temp_objects() } for (int i=0; i>> OBJ::FINISHED[" << temp_obj.get_name() << "], id[" << (int)temp_obj.get_id() << "], game_data.player_items[" << i << "][" << (int)game_data.player_items[i] << "]" << std::endl; temp_obj.set_finished(true); } } @@ -1832,7 +1816,7 @@ void classMap::remove_temp_objects() bool classMap::get_map_point_wall_lock(int x) const { - return wall_scroll_lock[x/TILESIZE]; + return wall_scroll_lock[x/TILESIZE]; } void classMap::move_map(const short int move_x, const short int move_y) @@ -1852,21 +1836,16 @@ classnpc* classMap::collision_player_npcs(character* playerObj, const short int p_rect = playerObj->get_hitbox(); - //std::cout << "collision_player_npcs - p1.x: " << p1.x << ", p1.y: " << p1.y << std::endl; - std::vector::iterator npc_it; for (npc_it = _npc_list.begin(); npc_it != _npc_list.end(); npc_it++) { classnpc* npc_ref = &(*npc_it); if (npc_ref->is_player_friend() == true) { - //std::cout << "collision_player_npcs - FRIEND" << std::endl; continue; } if (npc_ref->is_dead() == true) { - //std::cout << "collision_player_npcs - DEAD" << std::endl; continue; } if (npc_ref->is_invisible() == true) { - //std::cout << "collision_player_npcs - INVISIBLE" << std::endl; continue; } @@ -1957,15 +1936,12 @@ classnpc* classMap::find_nearest_npc(st_position pos) for (npc_it = _npc_list.begin(); npc_it != _npc_list.end(); npc_it++) { classnpc* npc_ref = &(*npc_it); if (npc_ref->is_player_friend() == true) { - //std::cout << "collision_player_npcs - FRIEND" << std::endl; continue; } if (npc_ref->is_dead() == true) { - //std::cout << "collision_player_npcs - DEAD" << std::endl; continue; } if (npc_ref->is_invisible() == true) { - //std::cout << "collision_player_npcs - INVISIBLE" << std::endl; continue; } if (npc_ref->is_on_visible_screen() == false) { @@ -2020,13 +1996,8 @@ classnpc *classMap::find_nearest_npc_on_direction(st_position pos, int direction /// @TODO: fix animation. investigate a better way for drawing it (code is way too confusing) void classMap::redraw_boss_door(bool is_close, int nTiles, int tileX, int tileY, short player_number) { - //is_close = false; // THIS IS A TEMPORARY FIX - - //std::cout << "classMap::redraw_boss_door - is_close: " << is_close << std::endl; - timer.delay(10); for (int k=0; kmap_data[number].tiles[i][j].tile3.x != -1 && GameMediator::get_instance()->map_data[number].tiles[i][j].tile3.y != -1) { if (i == tileX && GameMediator::get_instance()->map_data[number].tiles[i][j].locked == TERRAIN_DOOR) { - //std::cout << "****** redraw_boss_door - k: " << k << ", tiles_showed: " << tiles_showed << ", nTiles: " << nTiles << std::endl; if (is_close == false) { if (tiles_showed < nTiles) { @@ -2065,7 +2035,6 @@ void classMap::redraw_boss_door(bool is_close, int nTiles, int tileX, int tileY, exception_manager::throw_general_exception(std::string("classMap::redraw_boss_door"), "Gamescreen is null #2"); } - graphLib.placeTile(st_position(GameMediator::get_instance()->map_data[number].tiles[i][j].tile3.x, GameMediator::get_instance()->map_data[number].tiles[i][j].tile3.y), st_position((i*TILESIZE)-scroll.x, (j*TILESIZE)-scroll.y), &graphLib.gameScreen); draw_lib.update_screen(); tiles_showed++; @@ -2101,7 +2070,6 @@ void classMap::redraw_boss_door(bool is_close, int nTiles, int tileX, int tileY, void classMap::add_animation(ANIMATION_TYPES pos_type, graphicsLib_gSurface* surface, const st_float_position &pos, st_position adjust_pos, unsigned int frame_time, unsigned int repeat_times, int direction, st_size framesize) { - //std::cout << ">>>>> classMap::add_animation - pos.x[" << pos.x << "], pos.y[" << pos.y << "]" << std::endl; animation_list.push_back(animation(pos_type, surface, pos, adjust_pos, frame_time, repeat_times, direction, framesize, &scroll)); } @@ -2124,34 +2092,29 @@ classnpc* classMap::spawn_map_npc(short npc_id, st_position npc_pos, short int d { #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT2###", "MAP::spawn_map_npc, id[%d]", npc_id); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "MAP::spawn_map_npc, id[%d]", npc_id); #endif - //std::cout << "$$$ MAP::SPAWN-NPC, pos[" << npc_pos.x << ", " << npc_pos.y << "], map.scroll.x[" << scroll.x << "]" << std::endl; - classnpc new_npc(stage_number, number, npc_id, npc_pos, direction, player_friend); if (progressive_span == true) { new_npc.set_progressive_appear_pos(new_npc.get_size().height); } _npc_spawn_list.push_back(new_npc); // insert new npc at the list-end + //std::cout << "MAP::spawn_map_npc - spawn_list.size[" << _npc_spawn_list.size() << "], direction[" << direction << "]" << std::endl; classnpc* npc_ref = &(_npc_spawn_list.back()); - - int id = npc_ref->get_number(); std::string npc_name = npc_ref->get_name(); - return npc_ref; } -int classMap::child_npc_count(int parent_id) +int classMap::child_npc_count(st_position parent_id) { int count = 0; std::vector::iterator npc_it; int n = 0; for (npc_it = _npc_list.begin(); npc_it != _npc_list.end(); npc_it++) { classnpc* npc_ref = &(*npc_it); - //std::cout << "NPC[" << n << "][" << npc_ref->get_name() << "].parent[" << npc_ref->get_parent_id() << ", parent_id[" << parent_id << "]" << std::endl; if (npc_ref->is_dead() == false && npc_ref->get_parent_id() == parent_id) { count++; } @@ -2159,7 +2122,6 @@ int classMap::child_npc_count(int parent_id) } for (npc_it = _npc_spawn_list.begin(); npc_it != _npc_spawn_list.end(); npc_it++) { classnpc* npc_ref = &(*npc_it); - //std::cout << "NPC.SPANWLIST[" << n << "][" << npc_ref->get_name() << "].parent[" << npc_ref->get_parent_id() << ", parent_id[" << parent_id << "]" << std::endl; if (npc_ref->is_dead() == false && npc_ref->get_parent_id() == parent_id) { count++; } @@ -2171,7 +2133,6 @@ int classMap::child_npc_count(int parent_id) void classMap::move_npcs() /// @TODO - check out of screen { - //std::cout << "*************** classMap::showMap - npc_list.size: " << _npc_list.size() << std::endl; std::vector::iterator npc_it; for (npc_it = _npc_list.begin(); npc_it != _npc_list.end(); npc_it++) { @@ -2181,8 +2142,6 @@ void classMap::move_npcs() /// @TODO - check out of screen st_position npc_pos = npc_ref->get_real_position(); short dead_state = npc_ref->get_dead_state(); - //std::cout << "classMap::move_npcs[" << npc_ref->get_name() << "]" << std::endl; - std::string name(npc_ref->get_name()); @@ -2196,19 +2155,16 @@ void classMap::move_npcs() /// @TODO - check out of screen npc_ref->reset_position(); npc_ref->revive(); continue; - } else if (dead_state == 1 && npc_ref->is_spawn() == false && npc_ref->is_boss() == false) {// drop item + } else if (dead_state == 1 && npc_ref->is_spawn() == false && npc_ref->is_boss() == false && npc_ref->is_player_friend() == false) { // drop item drop_item(npc_ref); } - // if is showing stage boss on a stage already finished, just teleport out, victory is yours! - if (npc_ref->is_stage_boss() == true && npc_ref->is_on_visible_screen() == true && game_save.stages[gameControl.currentStage] == 1 && gameControl.currentStage <= 8) { - gameControl.got_weapon(); - return; - } - npc_ref->execute(); // TODO: must pass scroll map to npcs somwhow... if (dead_state == 1) { + + //std::cout << "MAP::move_npcs - DEAD[" << npc_ref->get_name() << "], pos[" << npc_ref->get_int_position().x << "][" << npc_ref->get_int_position().y << "]" << std::endl; + if (npc_ref->is_stage_boss() == false) { npc_ref->execute_ai(); // to ensure death-reaction is run @@ -2235,30 +2191,23 @@ void classMap::move_npcs() /// @TODO - check out of screen npc_ref->clean_effect_projectiles(); } } else { - - std::cout << "##### STAGE-BOSS IS DEAD (#1) #####" << std::endl; - // run npc move one more time, so reaction is executed to test if it will spawn a new boss (replace-itself) for (int i=0; i<2; i++) { npc_ref->execute_ai(); // to ensure death-reaction is run } - if (npc_ref->is_stage_boss() == false) { // if now the NPC is not the stage boss anymore, continue - std::cout << "##### STAGE-BOSS IS DEAD (#2) #####" << std::endl; - gameControl.draw_explosion(npc_pos, true); + gameControl.draw_boss_explosion(npc_pos, true); soundManager.play_boss_music(); graphLib.blink_screen(255, 255, 255); continue; } else { - std::cout << "##### STAGE-BOSS IS DEAD (#3) #####" << std::endl; gameControl.remove_all_projectiles(); - std::cout << "classMap::showMap - killed stage boss" << std::endl; graphLib.set_screen_adjust(st_position(0, 0)); /// @TODO - replace with game_data.final_boss_id if (game_data.final_boss_id == npc_ref->get_number()) { soundManager.stop_music(); - gameControl.draw_explosion(npc_pos, true); + gameControl.draw_boss_explosion(npc_pos, true); graphLib.blink_screen(255, 255, 255); graphLib.blank_screen(); graphLib.updateScreen(); @@ -2266,7 +2215,7 @@ void classMap::move_npcs() /// @TODO - check out of screen gameControl.show_ending(); return; } else { - gameControl.draw_explosion(npc_pos, true); + gameControl.draw_boss_explosion(npc_pos, true); gameControl.got_weapon(); } } @@ -2278,7 +2227,6 @@ void classMap::move_npcs() /// @TODO - check out of screen if (_npc_spawn_list.size() > 0) { std::vector::iterator npc_it; for (npc_it = _npc_spawn_list.begin(); npc_it != _npc_spawn_list.end(); npc_it++) { - //std::cout << "(B) ######### _npc_list.add, size[" << _npc_list.size() << "]" << std::endl; _npc_list.push_back(*npc_it); } _npc_spawn_list.clear(); @@ -2291,6 +2239,9 @@ void classMap::show_npcs() /// @TODO - check out of screen std::vector::iterator npc_it; for (npc_it = _npc_list.begin(); npc_it != _npc_list.end(); npc_it++) { classnpc* npc_ref = &(*npc_it); + if (npc_ref->npc_is_ghost()) { + continue; + } if (gameControl.must_show_boss_hp() && npc_ref->is_boss() && npc_ref->is_on_visible_screen() == true) { has_boss = true; draw_lib.set_boss_hp(npc_ref->get_current_hp()); @@ -2305,12 +2256,34 @@ void classMap::show_npcs() /// @TODO - check out of screen } } +void classMap::show_ghost_npcs() +{ + bool has_boss = false; + std::vector::iterator npc_it; + for (npc_it = _npc_list.begin(); npc_it != _npc_list.end(); npc_it++) { + classnpc* npc_ref = &(*npc_it); + if (!npc_ref->npc_is_ghost()) { + continue; + } + if (gameControl.must_show_boss_hp() && npc_ref->is_boss() && npc_ref->is_on_visible_screen() == true) { + has_boss = true; + draw_lib.set_boss_hp(npc_ref->get_current_hp()); + } + if (npc_ref->is_dead() == false) { + npc_ref->show(); + } + npc_ref->show_projectiles(); + } + if (has_boss == false) { + draw_lib.set_boss_hp(-99); + } +} + void classMap::show_npcs_to_left(int x) { std::vector::iterator npc_it; for (npc_it = _npc_list.begin(); npc_it != _npc_list.end(); npc_it++) { classnpc* npc_ref = &(*npc_it); - //std::cout << "MAP::show_npcs_to_left[" << npc_ref->get_name() << "], x[" << x << "], npc.x[" << npc_ref->getPosition().x << "]" << std::endl; if (npc_ref->is_dead() == false && npc_ref->is_on_visible_screen() && npc_ref->getPosition().x <= x) { npc_ref->show(); } @@ -2325,9 +2298,11 @@ void classMap::move_objects(bool paused) std::vector::iterator object_it; for (object_it = object_list.begin(); object_it != object_list.end(); object_it++) { if ((*object_it).finished() == true) { - object_list.erase(object_it); + //std::cout << "### erased object[" << (*object_it).get_name() << "]" << std::endl; + object_list.erase(object_it); break; } else { + //std::cout << "### EXECUTE object[" << (*object_it).get_name() << "]" << std::endl; (*object_it).execute(paused); /// @TODO: must pass scroll map to npcs somwhow... } } @@ -2375,7 +2350,7 @@ void classMap::show_above_objects(int adjust_y, int adjust_x) { std::vector::iterator object_it; for (object_it = object_list.begin(); object_it != object_list.end(); object_it++) { - if ((*object_it).get_type() == OBJ_STAGE_BOSS_TELEPORTER || (*object_it).get_type() == OBJ_BOSS_TELEPORTER || (*object_it).get_type() == OBJ_FINAL_BOSS_TELEPORTER) { // teleporters are shown above + if ((*object_it).get_type() == OBJ_STAGE_BOSS_TELEPORTER || (*object_it).get_type() == OBJ_BOSS_TELEPORTER || (*object_it).get_type() == OBJ_FINAL_BOSS_TELEPORTER || (*object_it).get_type() == OBJ_BOSS_DOOR) { // teleporters are shown above (*object_it).show(adjust_y, adjust_x); // TODO: must pass scroll map to objects somwhow... } } @@ -2384,25 +2359,18 @@ void classMap::show_above_objects(int adjust_y, int adjust_x) bool classMap::boss_hit_ground(classnpc* npc_ref) { if (npc_ref->is_boss() == true && npc_ref->is_on_visible_screen() == true) { - //std::cout << "MAP::boss_hit_ground - move boss to ground - pos.y: " << npc_ref->getPosition().y << std::endl; - int limit_y = npc_ref->get_start_position().y - TILESIZE; - //std::cout << "#### limit_y [" << limit_y << "]" << ", start.y[" << npc_ref->get_start_position().y << "]" << std::endl; - - if (limit_y > RES_H/2) { limit_y = RES_H/2; } if (npc_ref->get_can_fly()) { limit_y = RES_H/2 - npc_ref->get_size().height/2; - //std::cout << "#### [FLY] y[" << npc_ref->getPosition().y << "], limit_y [" << limit_y << "]" << ", h/2[" << (npc_ref->get_size().height/2) << "]" << std::endl; } if (npc_ref->getPosition().y >= limit_y) { // flying boss can stop on middle of the screen if (npc_ref->get_can_fly() == true) { - //std::cout << "BOSS-HIT-GROUND <<<<<<<<<<<<<<<<<<<<" << std::endl; npc_ref->set_animation_type(ANIM_TYPE_WALK_AIR); return true; // non-flying bosses need to hit gound to stop @@ -2411,10 +2379,32 @@ bool classMap::boss_hit_ground(classnpc* npc_ref) return true; } } + //std::cout << "MAP::boss_hit_ground - boss.x[" << npc_ref->getPosition().x << "], boss.y[" << npc_ref->getPosition().y << "]" << std::endl; } return false; } +// return false when still playing and true when unable or done +bool classMap::boss_show_intro_sprites(classnpc *npc_ref) +{ + if (npc_ref->have_frame_graphic(npc_ref->get_direction(), ANIM_TYPE_INTRO, 0) == false) { + return true; + } + if (npc_ref->get_anim_type() != ANIM_TYPE_INTRO) { + npc_ref->set_animation_type(ANIM_TYPE_INTRO); + return false; + } + if (!npc_ref->is_on_last_animation_frame()) { + return false; + } + if (npc_ref->get_can_fly() == true) { + npc_ref->set_animation_type(ANIM_TYPE_WALK_AIR); + } else { + npc_ref->set_animation_type(ANIM_TYPE_STAND); + } + return true; +} + classnpc *classMap::get_near_boss() { std::vector::iterator npc_it; @@ -2427,6 +2417,18 @@ classnpc *classMap::get_near_boss() return NULL; } +bool classMap::is_boss_on_extended_screen() +{ + std::vector::iterator npc_it; + for (npc_it = _npc_list.begin(); npc_it != _npc_list.end(); npc_it++) { + classnpc* npc_ref = &(*npc_it); + if (npc_ref->is_boss() == true && npc_ref->is_on_screen() == true && !npc_ref->is_dead()) { + return true; + } + } + return false; +} + void classMap::reset_map_npcs() { load_map_npcs(); diff --git a/classmap.h b/classmap.h index c763eaad..f39f756c 100644 --- a/classmap.h +++ b/classmap.h @@ -163,11 +163,12 @@ class classMap classnpc *spawn_map_npc(short int npc_id, st_position npc_pos, short direction, bool player_friend, bool progressive_span); - int child_npc_count(int parent_id); + int child_npc_count(st_position parent_id); void move_npcs(); void show_npcs(); + void show_ghost_npcs(); void show_npcs_to_left(int x); void move_objects(bool paused); @@ -182,25 +183,31 @@ class classMap bool boss_hit_ground(classnpc *npc_ref); + bool boss_show_intro_sprites(classnpc *npc_ref); + classnpc* get_near_boss(); + bool is_boss_on_extended_screen(); + void reset_map_npcs(); void draw_dynamic_backgrounds_into_surface(graphicsLib_gSurface &surface); - void add_object(object obj); + void add_object(object &obj); st_position get_first_lock_in_direction(st_position pos, st_size max_dist, int direction); - int get_first_lock_on_left(int x_pos) const; + int get_first_lock_on_left(int x_tile_pos) const; - int get_first_lock_on_right(int x_pos) const; + int get_first_lock_on_right(int x_tile_pos) const; int get_first_lock_on_bottom(int x_pos, int y_pos); int get_first_lock_on_bottom(int x_pos, int y_pos, int w, int h); void drop_item(classnpc *npc_ref); + void drop_random_item(st_position position); + void drop_great_random_item(st_position position); void set_bg_scroll(int scrollx); @@ -213,12 +220,12 @@ class classMap void reset_objects(); // restore objects to their original position - void print_objects_number(); - void add_bubble_animation(st_position pos); bool have_player_object(); + void remove_player_objects(); + bool subboss_alive_on_left(short tileX); void finish_object_teleporter(int number); @@ -256,7 +263,6 @@ class classMap graphicsLib_gSurface* get_dynamic_bg(); graphicsLib_gSurface* get_dynamic_foreground(); - void set_map_enemy_static_background(std::string filename, st_position pos); @@ -290,6 +296,9 @@ class classMap int _show_map_pos_x; // this is used to compare the position that the map was drawn last time to the current scrolling to check if map needs to be redrawn graphicsLib_gSurface map_screen; // use to avoid having to draw the tilesets each time we update screen std::vector anim_tile_list; // list of animated tiles, so we don't need to loop through all tiles when drawing only the animated ones + int bg_anim_pos = 0; + unsigned long bg_anim_timer = 0; + std::map finished_friend_list; }; diff --git a/collision_detection.cpp b/collision_detection.cpp index 11d3aa02..c5d58152 100644 --- a/collision_detection.cpp +++ b/collision_detection.cpp @@ -13,7 +13,5 @@ bool collision_detection::rect_overlap(st_rectangle A, st_rectangle B) const { bool xOverlap = value_in_range(A.x, B.x, B.x + B.w) || value_in_range(B.x, A.x, A.x + A.w); bool yOverlap = value_in_range(A.y, B.y, B.y + B.h) || value_in_range(B.y, A.y, A.y + A.h); - //std::cout << "A.y: " << A.y << ", B.y: " << B.y << ", B.h: " << B.h << std::endl; - //std::cout << "collision_detection::rect_overlap - xOverlap: " << xOverlap << ", yOverlap: " << yOverlap << std::endl; return xOverlap && yOverlap; } diff --git a/data/datautil.cpp b/data/datautil.cpp new file mode 100644 index 00000000..7dd62f98 --- /dev/null +++ b/data/datautil.cpp @@ -0,0 +1,44 @@ +#include "datautil.h" +#include "defines.h" +#include "file/format/st_common.h" +#include "file/v4/file_save_v4.h" + +extern CURRENT_FILE_FORMAT::st_save game_save; + +dataUtil* dataUtil::_instance = NULL; + +dataUtil::dataUtil() +{ + +} + +dataUtil *dataUtil::get_instance() +{ + if (!_instance) { + _instance = new dataUtil(); + } + return _instance; +} + +bool dataUtil::has_weapon(int weapon_n) const +{ + if (weapon_n <= WEAPON_SEAHORSEBOT) { + if (game_save.stages[weapon_n] == 1) { + return true; + } + } else { + if (weapon_n == WEAPON_ITEM_COIL && game_save.stages[WEAPON_APEBOT] == 1) { + return true; + } else if (weapon_n == WEAPON_ITEM_JET && game_save.stages[WEAPON_TECHNOBOT] == 1) { + return true; + } else if (weapon_n == WEAPON_ITEM_ETANK && game_save.items.energy_tanks > 0) { + return true; + } else if (weapon_n == WEAPON_ITEM_WTANK && game_save.items.weapon_tanks > 0) { + return true; + } else if (weapon_n == WEAPON_ITEM_STANK && game_save.items.special_tanks > 0) { + return true; + } + } + return false; +} + diff --git a/data/datautil.h b/data/datautil.h new file mode 100644 index 00000000..cbfcae30 --- /dev/null +++ b/data/datautil.h @@ -0,0 +1,22 @@ +#ifndef DATAUTIL_H +#define DATAUTIL_H + + +class dataUtil +{ +public: + static dataUtil* get_instance(); + bool has_weapon(int weapon_n) const; + +private: + dataUtil(); + dataUtil(dataUtil const&){}; // copy constructor is private + dataUtil& operator=(dataUtil const&){ return *this; }; // assignment operator is private + +private: + static dataUtil* _instance; + + +}; + +#endif // DATAUTIL_H diff --git a/defines.h b/defines.h index 5f26843f..928c3b9c 100644 --- a/defines.h +++ b/defines.h @@ -16,6 +16,14 @@ enum e_PLAYERS { PLAYER_COUNT }; +/* +#if defined(PLAYSTATION2) || defined(DINGUX) +#define DEFAULT_FPS_MAX 30 +#else +#define DEFAULT_FPS_MAX 60 +#endif +*/ +#define DEFAULT_FPS_MAX 60 #define WALK_FRAME_DELAY 150 // ==================== PHYSICS ==================== // @@ -68,6 +76,7 @@ enum COLlISION_TYPES { BLOCK_WATER, BLOCK_MOVE_LEFT, BLOCK_MOVE_RIGHT, + BLOCK_QUICKSAND, BLOCK_INSIDE_OBJ }; @@ -105,6 +114,8 @@ enum E_PLATFORM { PLATFORM_PANDORA, PLATFORM_DREAMCAST, PLATFORM_RASPBERRY, + PLATFORM_POCKETGO, + PLATFORM_XBOX, PLATFORM_COUNT }; @@ -261,6 +272,8 @@ enum SFX_LIST { SFX_SHORYUKEN_GIRL, SFX_BEAM, SFX_GOT_ENERGY_BIG, + SFX_TIMED_BOMB_TICK, + SFX_OBJECT_BREAK, SFX_COUNT // not used as sfx, this is a way to measure size of the enum list }; @@ -278,12 +291,12 @@ enum TERRAIN_TYPES { TERRAIN_ICE, TERRAIN_MOVE_LEFT, TERRAIN_MOVE_RIGHT, - TERRAIN_SAND, + TERRAIN_QUICKSAND, TERRAIN_SCROLL_LOCK, TERRAIN_CHECKPOINT, TERRAIN_EASYMODEBLOCK, TERRAIN_HARDMODEBLOCK, - TERRAIN_TYPES_COUNT + TERRAIN_TYPES_COUNT }; @@ -317,9 +330,13 @@ enum WEAPON_ICONS_ENUM { WEAPON_SEAHORSEBOT, WEAPON_ITEM_COIL, WEAPON_ITEM_JET, - WEAPON_COUNT + WEAPON_ITEM_ETANK, + WEAPON_ITEM_WTANK, + WEAPON_ITEM_STANK, + WEAPON_COUNT }; + /** * @brief * @@ -332,25 +349,31 @@ enum transition_types { TRANSITION_RIGHT_TO_LEFT }; +enum enum_npc_behavior { + NPC_BEHAVIOR_NONE, + NPC_BEHAVIOR_PLAYER_FRIEND, + NPC_BEHAVIOR_COUNT +}; + /** * @brief * */ enum OBJECT_TYPE { - OBJ_MOVING_PLATFORM_UPDOWN, - OBJ_MOVING_PLATFORM_LEFTRIGHT, - OBJ_DISAPPEARING_BLOCK, - OBJ_ENERGY_TANK, - OBJ_WEAPON_TANK, - OBJ_ENERGY_PILL_BIG, - OBJ_WEAPON_PILL_BIG, - OBJ_ENERGY_PILL_SMALL, - OBJ_WEAPON_PILL_SMALL, - OBJ_LIFE, - OBJ_FALL_PLATFORM, - OBJ_FLY_PLATFORM, - OBJ_ITEM_FLY, - OBJ_ITEM_JUMP, + OBJ_MOVING_PLATFORM_UPDOWN, + OBJ_MOVING_PLATFORM_LEFTRIGHT, + OBJ_DISAPPEARING_BLOCK, + OBJ_ENERGY_TANK, + OBJ_WEAPON_TANK, + OBJ_ENERGY_PILL_BIG, + OBJ_WEAPON_PILL_BIG, + OBJ_ENERGY_PILL_SMALL, + OBJ_WEAPON_PILL_SMALL, + OBJ_LIFE, + OBJ_FALL_PLATFORM, + OBJ_FLY_PLATFORM, + OBJ_ITEM_FLY, + OBJ_ITEM_JUMP, OBJ_ACTIVE_DISAPPEARING_BLOCK, // disappear only after player activates it OBJ_ARMOR_ARMS, OBJ_ARMOR_BODY, @@ -370,7 +393,19 @@ enum OBJECT_TYPE { OBJ_BOSS_DOOR, OBJ_PLATFORM_TELEPORTER, OBJ_STAGE_BOSS_TELEPORTER, - OBJ_TYPE_COUNT + OBJ_CRUSHER, // goes down and can kill if player or enemy if pressed by it against the ground + OBJ_MOVING_PLATFORM_UP_LOOP, + OBJ_MOVING_PLATFORM_DOWN, + OBJ_DESTRUCTIBLE_NO_DROP, + OBJ_DESTRUCTIBLE_WITH_DROP, + OBJ_ACTIVE_PLATFORM_DIAGONAL_UP, + OBJ_ACTIVE_PLATFORM_DIAGONAL_DOWN, + OBJ_ACTIVE_PLATFORM_AHEAD, + OBJ_ACTIVE_PLATFORM_UP, + OBJ_JUMP_SHOOT_DESTRUCTIBLE_NO_DROP, + OBJ_TIMED_BOMB, + OBJ_EXPANDING_SPIKE, + OBJ_TYPE_COUNT }; /** @@ -400,9 +435,10 @@ enum LINK_TYPES { LINK_HORIZONTAL, LINK_VERTICAL, LINK_TELEPORTER, LINK_FADE_TEL #define BOSS_INITIAL_HP 36 // a bit more HP (8 pts) than player, so it will endure a bit more on the fight -#define HIT_BLINK_ANIMATION_LAPSE 100 +#define HIT_BLINK_ANIMATION_LAPSE 80 #define WATER_SPEED_MULT 0.7 +#define QUICKSAND_SPEED_MULT 0.4 #define ATTACK_DELAY 300 // how many milisseconds the attack frame must last before returning to stand/jump/walk @@ -411,19 +447,19 @@ enum LINK_TYPES { LINK_HORIZONTAL, LINK_VERTICAL, LINK_TELEPORTER, LINK_FADE_TEL * */ enum PROJECTILE_TRAJECTORIES { - TRAJECTORY_LINEAR, - TRAJECTORY_ARC, - TRAJECTORY_SIN, - TRAJECTORY_CHAIN, - TRAJECTORY_QUAKE, - TRAJECTORY_BOMB, + TRAJECTORY_LINEAR, + TRAJECTORY_ARC, + TRAJECTORY_SIN, + TRAJECTORY_CHAIN, + TRAJECTORY_QUAKE, + TRAJECTORY_BOMB, TRAJECTORY_FOLLOW, // follow enemy - TRAJECTORY_PROGRESSIVE, - TRAJECTORY_FREEZE, - TRAJECTORY_DIAGONAL_UP, - TRAJECTORY_DIAGONAL_DOWN, + TRAJECTORY_PROGRESSIVE, + TRAJECTORY_FREEZE, + TRAJECTORY_DIAGONAL_UP, + TRAJECTORY_DIAGONAL_DOWN, TRAJECTORY_CENTERED, // centered around character - TRAJECTORY_ZIGZAG, // linear until reach a wall, then return (repeat until reflection number = 3) + TRAJECTORY_ZIGZAG, // linear until reach a wall, then invert (repeat until reflection number = 3) TRAJECTORY_TARGET_DIRECTION, // adjust to linear, diagonal up or diagonal down depending on player position when shoot TRAJECTORY_ARC_TO_TARGET, // forms an arn that will end at player's position TRAJECTORY_TARGET_EXACT, // will go exactly to the point the target is in @@ -442,7 +478,12 @@ enum PROJECTILE_TRAJECTORIES { TRAJECTORY_LARGE_BEAM, TRAJECTORY_PULL, // pull player or enemies into shooter TRAJECTORY_SLASH, // stay in place, runs until animation finishes - PROJECTILE_TRAJECTORIES_COUNT }; + TRAJECTORY_UP, + TRAJECTORY_DOWN, + TRAJECTORY_FALL_AND_SEEK, // fall near to the ground, then moves to player direction + TRAJECTORY_AHEAD_AND_BACK, // linear until reach a wall or limit, then return to initial position + PROJECTILE_TRAJECTORIES_COUNT +}; /** @@ -545,7 +586,7 @@ enum AI_REACTIONS { AI_REACTION_DEAD, // npc was killed AI_REACTION_PLAYER_SAME_Y, // player on same y (tolerance=tilesize) AI_REACTION_PLAYER_CLOSE, // player on a close distance (1/4 range) - AI_REACTION_TBD, // to be later determined + AI_REACTION_PLAYER_SAME_X, // player in part in the same X MAX_AI_REACTIONS }; @@ -565,8 +606,16 @@ enum e_shield_types { SHIELD_DISGUISE, SHIELD_STAND_FRONT, SHIELD_STAND_AND_WALK, + SHIELD_BACK, + SHIELD_USING_SHIELD, SHIELD_COUNT }; +enum e_GAME_STYLE { + GAME_STYLE_MODERN, + GAME_STYLE_VINTAGE, + GAME_STYLE_COUNT +}; + /** * @brief * @@ -635,16 +684,16 @@ enum e_energy_types { ENERGY_TYPE_HP, ENERGY_TYPE_WEAPON }; * */ enum e_game_flags { - FLAG_QUICKLOAD, - FLAG_INVENCIBLE, - FLAG_INFINITE_JUMP, - FLAG_ALLWEAPONS, + FLAG_QUICKLOAD, + FLAG_INVENCIBLE, + FLAG_INFINITE_JUMP, + FLAG_ALLWEAPONS, FLAG_INFINITE_HP, FLAG_PLAYER1, FLAG_PLAYER2, FLAG_PLAYER3, FLAG_PLAYER4, - FLAG_COUNT + FLAG_COUNT }; @@ -672,9 +721,30 @@ enum AI_ACTION_LIST { AI_ACTION_WAIT_RANDOM_TIME, AI_ACTION_MORPH_INTO_NPC, // instead of a new enemy with full hp and such, just morph into a new one AI_ACTION_PLAY_SFX, // play a sound-effect + AI_ACTION_WALL_WALK, + AI_ACTION_WALL_WALK_SHOOT, + AI_ACTION_SHOT_MULTIPLE_PROJECTILE, + AI_ACTION_EXPLODE_ITSELF, + AI_ACTION_THROW_ITEM, AI_ACTION_LIST_SIZE }; +enum AI_ACTION_SHOT_MULTIPLE_PROJECTILE_OPTIONS { + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_5_UP, + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_5_DOWN, + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_5_AHEAD, + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_3_UP, + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_3_DOWN, + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_3_AHEAD, + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_8, + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_COUNT +}; + +enum AI_ACTION_SFX_OPTIONS { + AI_ACTION_SFX_DINO, + AI_ACTION_SFX_COUNT +}; + enum AI_ACTION_SHOT_OPTIONS { AI_ACTION_SHOT_FACEPLAYER, @@ -711,7 +781,7 @@ enum AI_ACTION_WALK_OPTION_LIST { AI_ACTION_WALK_OPTION_TURN_TO_PLAYER, AI_ACTION_WALK_OPTION_TO_RANDOM_DIRECTION, AI_ACTION_WALK_OPTION_TO_OPPOSITE_DIRECTION, - + AI_ACTION_WALK_OPTION_HORIZONTAL_AHEAD_FALLING, AI_ACTION_WALK_OPTION_COUNT }; @@ -741,6 +811,11 @@ enum AI_ACTION_FLY_OPTION_LIST { AI_ACTION_FLY_OPTION_RANDOM_Y, AI_ACTION_FLY_OPTION_SIN_AHEAD, // moves ahead making a sin on y-axis AI_ACTION_FLY_OPTION_DASH_TO_PLAYER, + AI_ACTION_FLY_OPTION_DOWN_RANDOM_DIAGONAL, + AI_ACTION_FLY_OPTION_UP_UNTIL_GROUND, + AI_ACTION_FLY_OPTION_DOWN_INTO_GROUND, + AI_ACTION_FLY_OPTION_DIAGONAL_UP, + AI_ACTION_FLY_OPTION_DIAGONAL_DOWN, AI_ACTION_FLY_OPTION_COUNT }; @@ -755,6 +830,10 @@ enum AI_ACTION_JUMP_OPTION_LIST { AI_ACTION_JUMP_OPTION_TO_PLAYER, AI_ACTION_JUMP_OPTION_TO_ROOF, AI_ACTION_JUMP_OPTION_TO_SAVED_POINT, + AI_ACTION_JUMP_OPTION_TO_PLAYER_DIRECTION, + AI_ACTION_JUMP_OPTION_TELEPORT_IN, + AI_ACTION_JUMP_OPTION_TELEPORT_OUT, + AI_ACTION_JUMP_OPTION_LONG_AHEAD, AI_ACTION_JUMP_OPTION_ONCE }; @@ -793,6 +872,7 @@ enum AI_ACTION_DASH_OPTION_LIST { AI_ACTION_DASH_OPTION_TO_PLAYER, AI_ACTION_DASH_OPTION_OPPOSITE_DIRECTION, AI_ACTION_DASH_OPTION_AHEAD, + AI_ACTION_DASH_OPTION_TO_NEAR_PLAYER, AI_ACTION_DASH_OPTION_COUNT }; @@ -806,17 +886,26 @@ enum AI_ACTION_GRAB_WALL_OPTION_LIST { AI_ACTION_GRAB_WALL_OPTION_RIGHT }; +enum AI_ACTION_WALL_WALK_OPTION_LIST { + AI_ACTION_WALL_WALK_OPTION_LEFT, + AI_ACTION_WALL_WALK_OPTION_RIGHT, + AI_ACTION_WALL_WALK_OPTION_UP, + AI_ACTION_WALL_WALK_OPTION_DOWN, + AI_ACTION_WALL_WALK_OPTION_COUNT +}; + /** * @brief * */ enum DROP_ITEMS_LIST { - DROP_ITEM_1UP, DROP_ITEM_ENERGY_SMALL, DROP_ITEM_ENERGY_BIG, DROP_ITEM_WEAPON_SMALL, DROP_ITEM_WEAPON_BIG, DROP_ITEM_COIN, + DROP_ITEM_ENERGY_TANK, + DROP_ITEM_1UP, DROP_ITEM_COUNT }; @@ -834,7 +923,8 @@ enum collision_modes { #define FONT_SIZE 8 -#define FONT_SIZE_SMALL 8 +#define FONT_SIZE_SMALL 12 +#define FONT_SIZE_ERROR 7 #define MENU_CHANGE_DELAY 100 @@ -864,7 +954,7 @@ enum e_VIDEO_FILTERS { VIDEO_FILTER_COUNT }; -#define BOSS_HIT_DURATION 800 +#define BOSS_HIT_DURATION 1500 #define COLORKEY_R 75 #define COLORKEY_G 125 @@ -1127,6 +1217,9 @@ enum E_STRINGS_INGAME { string_intro_engine6, string_intro_engine7, string_intro_engine8, + string_intro_engine9, + string_intro_engine10, + string_intro_engine11, string_intro_demo_warning_title, string_intro_demo_warning1, @@ -1145,6 +1238,72 @@ enum E_STRINGS_INGAME { STRING_ENDING_CONCEPT, STRING_ENDING_DESIGN, + strings_config_android_screencontrolsspacing, + strings_config_android_audiobuffersize, + strings_config_android_audiobuffersize_VERY_SMALL, + strings_config_android_audiobuffersize_SMALL, + strings_config_android_audiobuffersize_MEDIUM, + strings_config_android_audiobuffersize_BIG, + strings_config_android_audiobuffersize_DESCRIPTION, + + strings_menu_item_CHEATS, + + strings_menu_item_CHEATS_INVENCIBLE, + strings_menu_item_CHEATS_ALLBEATEN, + strings_menu_item_CHEATS_CHARACTER, + + strings_menu_pick_save_slot_PICK_OPTION, + strings_menu_pick_save_slot_NEW_GAME, + strings_menu_pick_save_slot_LOAD_GAME, + strings_menu_pick_save_slot_NO_SAVE, + + strings_ending_NEW_CHARACTERS_AVAILABLE, + strings_ending_NEW_CHARACTERS_PRESS_TO_CONTINUE, + + strings_weapon_name_COIL, + strings_weapon_name_JET, + strings_weapon_name_ETANK, + strings_weapon_name_WTANK, + strings_weapon_name_STANK, + + strings_weapon_menu_CHANGE_WEAPON, + strings_weapon_menu_TANKS, + strings_weapon_menu_BOOTS, + strings_weapon_menu_ARMOR, + strings_weapon_menu_WEAPON, + strings_weapon_menu_PART_NORMAL, + strings_weapon_menu_PART_ENHANCED, + + strings_ingame_config_audio_use_old_music, + strings_about_site, + strings_about_bugs, + strings_about_twitter, + strings_about_facebook, + + strings_stage_select_pick_mission, + strings_stage_select_boss, + strings_stage_select_select, + + strings_config_android_use_mod_music, + strings_config_android_use_mod_music_warning, + + strings_weapon_selected, + + strings_game_engine_credits_title, + strings_game_engine_credits_planning, + strings_game_engine_credits_design, + strings_game_engine_credits_dialogs, + strings_game_engine_credits_tests, + strings_game_engine_credits_illustration, + strings_game_engine_credits_music, + strings_game_engine_credits_translation, + strings_game_engine_credits_programming, + strings_game_engine_credits_ports, + strings_game_engine_credits_special_thanks, + strings_game_engine_credits_dev_tools, + strings_game_engine_credits_presented_by, + + strings_ingame_COUNT }; @@ -1174,7 +1333,9 @@ enum E_BG_SCROLL_MODE { BG_SCROLL_MODE_DOWN, BG_SCROLL_MODE_LEFT, BG_SCROLL_MODE_RIGHT, - BG_SCROLL_MODE_DIAGONAL + BG_SCROLL_MODE_DIAGONAL, + BG_SCROLL_MODE_ANIM_BG, + BG_SCROLL_MODE_COUNT }; @@ -1182,7 +1343,7 @@ enum e_SCREEN_GFX { SCREEN_GFX_NONE, SCREEN_GFX_RAIN, SCREEN_GFX_SNOW, - SCREEN_GFX_WATER, + SCREEN_GFX_WAVE, SCREEN_GFX_TRAIN, SCREEN_GFX_FLASH, SCREEN_GFX_LIGHTINGBOLT, @@ -1226,17 +1387,10 @@ enum e_LANGUAGES { LANGUAGE_SPANISH, LANGUAGE_ITALIAN, LANGUAGE_PORTUGUESE, + LANGUAGE_AUTODETECT, LANGUAGE_COUNT }; -//#define SHOW_HITBOXES 1 -#define SHOW_VULNERABLE_AREAS 1 - -#define DEMO_VERSION_STAGE1 4 -#define DEMO_VERSION_STAGE2 8 -#define DEMO_VERSION_STAGE3 1 -#define DEMO_VERSION_STAGE4 6 - enum e_PERFORMANCE_MODES { PERFORMANCE_MODE_LOW, PERFORMANCE_MODE_NORMAL, @@ -1262,9 +1416,9 @@ enum e_DIFFICULTY_MODES { #define SAVE_MAX_SLOT_NUMBER 4 -#define CONFIG_BGCOLOR_R 8 -#define CONFIG_BGCOLOR_G 25 -#define CONFIG_BGCOLOR_B 42 +#define CONFIG_BGCOLOR_R 5 // 04142e +#define CONFIG_BGCOLOR_G 29 +#define CONFIG_BGCOLOR_B 65 //OLD: 8, 25, 42 #define CONFIG_MENU_LEFT_SPACING 24 #define CONFIG_MENU_TOP_SPACING 40 @@ -1299,6 +1453,15 @@ enum e_INPUT_IMAGES { #define PREVIOUS_FRAMES_MAX 12 +#define WEAPON_MENU_COL_N 4 + +#define QUICKSAND_JUMP_LIMIT 4 +#define QUICKSAND_GRAVITY 0.2 + + +//#define SHOW_HITBOXES 1 +//#define SHOW_VULNERABLE_AREAS + #endif // DEFINES_H diff --git a/docs/Changelog.txt b/docs/Changelog.txt index df5b7f34..7118717f 100644 --- a/docs/Changelog.txt +++ b/docs/Changelog.txt @@ -1,787 +1,254 @@ -========================================================================================================================================= -VERSION 2.0.0 BETA 1 -========================================================================================================================================= -- revamp na UI da edição de inimigos -- hit-area dos inimigos deve ser determinada pelo tamanho do sprite to tipo atual atual (fazer um por tipo para simplificar) - # criar função get_hitbox em character - @ classMap::collision_player_npcs - % character::getPosition() - % character::get_size() - # modificar editor para que tamanho do hitbox seja 1 por tipo de animação -- criar novo tipo de link, igual ao teleporte, só que sem o jogador se teleprotar (como na fase charge de mm5) - * tela escurece - * jogador reaparece no ponto do teleporte, caindo -- chefe já derrotado está aparecendo quando se entra na sala (posição está na original, não ajustada para o chefe) - * idem para chefe normal, aparece antes de descer -- inércia está colocando o jogador dentro de paredes (só da esquerda para direita) -- separar dialog strings em arquivos próprios, um por estágio - * retirar IDs dos dialogos, já que pode ser direta a correspondência -- game strings estão bagunçadas, fora de ordem (duplo \n) -- colocar aviso de copyright e engine antes da tela de abertura independente de se tem intro -- quando trocar arma com L/R, mostrar ícone acima da cabeça do player por 1 segundo e meio -- corrigir FIO para salvar e carregar dados novos de game properties -- air thrower está movendo jogador para dentro de paredes ignorando colisão -- mudar default do attack_n de npcs para -1 (está sempre setando o primeiro frame) -- implementar attack_n no jogo -- olhar abelhas fly arc. elas batem na parede mas não muda IA para próximo estado -- abelhas zig-zag as vezes atravessam a parede -- chefe não está aparecendo no fim da fase -- objetos do mapa antigo ficam na mesma posição no mapa novo, na transição -- "tornar players e inimigos transparentes"piscar" personagens quando atingidos. -- is_ghost está ligado por padrão ao criar novo inimigo -- está saindo do ANIM_HIT as vezes (caindo e movendo para lados) -- ajustar melhor posição da imagem hit.png e usar a criada pelo boberatu -- manter scroll do fundo quando troca de tela -- remove intro/ending, as it will now be scenes -FILE-FORMAT-V4: - - both player and enemies must have aprojectile-position that determines his arm/cannon position, so we can fire attack from the position. - - each stage can have its own tileset (optional, otherwise, uses default) - - all char[] must be replaced by a seek_n that points to the strings file/table - - two strings file: - * one they key is a enum and are used in-game - * two is the ones that player can add such as dialogs - - string types: - * dialog, limit DIALOG_LINE_LIMIT (30) - - no not use short in file-format, to avoid endian issues (Wii) -- check if stage have the autoscroll flag -- slide não está funcionando com novo hitbox -- após cair em buraco, jogador morre novamente quando estágio reinicia (deve estar com Y sem mudar) -- usar fade-out quando morrer -- implementar checagem de colisao npcs x objetos -- fade-teleport link não estár setando scrollX do novo mapa -- se inverte direção logo após iniciar uma queda, dá para ficar preso na parede -- ao cair de escadas, estao ficando preso na parede -- projétil "ring" só dá dano no oponente se bater em cima ou em baixo, podendo passar pelo meio dele -- EDITOR: origem do projétil deve aparecer se x OU y for diferente de zero -- EDITOR: na origem do projétil, x deve ser espelhado na animation preview -- AI: adicionar ação EXECUTE ATTACK (pode escolher qualquer um dos ataques, não apenas os projéteis) -- AI: adicionar change anim type: aciona uma animação qualquer da lista de tipos -- em shot projectile/attack, não mudar para anim_type_attack se estiver já em outro tipo de ataque -- EDITOR: a cada 20 colunas, deve ter uma vermelha para indicar espaçamentos de tela -- EDITOR: seleção de anim-tile está errada (linha x coluna) -- se NPC estiver morto, continuar movendo projectiles - # remover no map as chamadas a clean_projectiles() - # no npc execute(), chamar só move_projectiles() se estiver morto -- criar opção de debug no jogo para mostrar hitboxes de player e inimigos -- ver como colocar app na amazon -- projétil do jogador deve usar hitbox dos inimigos para ver se atingiu -- quando tiver reaction de spawn npc ao morrer, inimigo deve explodir (colocar animações de explosão) -- quando estiver acima do raio horizontal, não pode levar dano -- projétil dos inimigos deve usar hitbox do player para ver se atingiu -- FREE VERSION: - # "define" no makefile - # "free version" na tela de intro - # só pode selecionar Rockbot - # apenas 4 estágios (alem da intro) podem ser selecionados (usar os 4 das pontas) - # não tem skullcastle - # não pode usar password -- hitbox debug do jogo está aparecendo errada quando tem scrolling -- máxima velocidade de gravity deve ser menor. para teleport continua a antiga. -- investigar se get_hit_area() está levando em conta esquerda/direita e já adiciona posição, como fazer get_hitbox() -- chefe e sub-chefe, ao morrer, deve remover projéteis -- melhorar posicionamento de drop-item (evitar dentro da paredes, fazer centro do item aparecer no centro no inimigo) -- corrigido knock-off (push-back) quando em pulo -- plataformas não podem considerar espinhos como sólidos na colisão -- se atingido nas escadas, está ficando preso e não cai - # deve ser por conta do ajuste da hitbox, tem que mover um pouco o player quando mudar para anim_type_jump ou stand -- EDITOR: combos de arquivos devem ser ordenadas alfabeticamente -- EDITOR/FILE: adicionar, por padrão, frame[0] de stand nos NPCs que não os tiverem -- EDITOR: sempre selecionar primeiro frame (se houver), caso contrário desabilitar botões correspondentes a edição do mesmo -- no final da fase do kurupira, objetos do mapa/local errado estão aparecendo na transição vertical de tela -- se tamanho de strings do arquivo common for menor que strings_ingame_COUNT, adidionar entradas faltando -- ANDROID: recriar build -- ANDROID: configurar botões L, R, START (topo da tela), A, B, X, Y -- adicionar opção disabled em option - # assim não precisa ficar examinando se item está ativo para determinar o que fazer - # se item desabilitado é selecionado, opção deve não retornar, mas continuar (e dar som de erro) -- adicionar QUIT dentro das configurações -- limpar input antes de mostrar seta em caixa de dialogo (para não poder remover o diálogo apertando o botão antes da hora) -- se fizer slide abaixo de um raio de fogo, toma dano -- opções de diálogos (nome, rosto, olhos na seleção de fase) estão hardcoded no jogo quando já tem opções para isto no editor -- último diálogo no início do estágioe stá mostrando face do inimigo ao invés da do jogador -- opção de turbo nas configurações -- correção de rostos (troca beta x candy) -- melhores rostos de diálogos para candy e kitty -- aumentar altura da tela de boss intro para caber chefes grandes como o Gear -- não deve poder passar com start as telas de presents e notice/engine -- implementar modo turbo no botão de ataque -- EDITOR: desenhar easy/hard tiles (usar cores com transparência para identificar) -- player está parando alguns pixels antes da plataforma -- blocos tipo fall/up não estão colidindo com o jogador via esquerda/direita -- se um único bloco trancar um jogador totalmente (X e Y), deve matá-lo -- AI deve ser 1x1 para NPC - # ao criar um NPC, criar um AI - # se não houver AI para um dado NPC, editor deve criá-la - # retirar seleção de AI no inimigo - # retirar edição de nome de AI (usar nome do inimigo) -- player está parando antes da hora quando estágio reinicia ao morrer antes de alcançar um checkpoint -- fazer a barra de vida/armas como porcentagem. - # usar tamanho 50, cada pixel equivale a 2% da vida - # assim dá para ter heart containers sem modificar o tamanho da barra, cada coração poderá dar 10% a mais de vida -- EDITOR: na ediçao de player, ao mudar arma, nao esta atualizando weapon menu bg color -- seleçao de arma via weapon_menu nao esta funcionando -- diminuir tamanho da tela de seleção de armas para encaixar melhor novo tamanho das barras de energia -- ao entrar no menu de armas, todas as barras estão azul, deviam estar cinza -- no menu de armas, não está mudando a cor do frame do player -- opção setar volume música e volume SFX -- mudar "ready" para ser desenhado com fonte/texto de jogo -- mapa não deve ser mover (autoscroll) enquanto a mensagem de ready não acabar -- trilhos estão se movendo no sentido errado -- scroll está mudando a posição dos ícones de armas -- nova tela de seleção de personagem, estilo mm10 -- candy está podendo andar enquanto atira na diagonal - # é porque ataque cima/baixo e ataque andando não estão durando o que deveriam -- se candy está caminhando e atira, deve resetar de anim_type_walk_attack para anim_type_attack, já que ela não pode caminhar atirando -- ataque caminhando continua não ficando por tempo o suficiente -- ataque caminhando chega no fim da animação e não reseta (fica no último frame para sempre) -- ao matar chefe da fase intro está teleportando de volta para a própria fase (está só como sub-boss) -- se player tiver duplo pulo, não deve ter dash nem slide -- só começar música do chefe quando acabar de encher a barra de energia dele (após diálogos) -- só remover dash/slide após passar pela porta -- easy blocks só estão funcionando para o primeiro mapa -- não deve fazer som de pulo ao finalizar um teleporte -- a flecha de diálogo só deve aparecer quando todas as frases forem escritas -- in-game manual -- colocar no manual características de cada personagem (pulo carregado, slide, etc) -- colocar no manual, dica que dash + pulo vai mais longe -- mudar audio enabled/disabled para uma única opção (on/off) -- mudar opções de escala para ser uma única opção (unscaled, scaled, scale2x) -- opções leave stage e quit game só devem aparecer quando as opções forem invodadas por dentro do menu de armas -- se deixa o estágio e retorna, não tem player nem sequer o menu de quit aparece (algum loop doido no meio) -- está aparecendo o jogador após a explosão quando morre e antes de sumir a tela (deve ser no fade out?) -- player está piscando como hit após morrer e estágio reiniciar (deve zerar no restart_stage) -- neve não está caindo -- olhos candy fora posição seleção -- remover bug de segurar cima/baixo nas escadas -- frames faltando na candy (attack up/down) -- mudar cores candy para sombra ser no vestido e não pés e mãos. -- podendo pular e acessar link na parte plataformas valkyrie. Tem que ser mais baixo no fim perto escada. -- teleporte após morrer está caindo na fase dragon com chão de 1 linha de tiles (multiplicando checkpoint por tilesize) -- dialogo boss ainda mostra último rosto errado -- colocar bg scroll speed no dragon -- no android, na fase do Phantom fica lento quando tem janelas - # convertidas todas as imagens de fundo e tileset para pelata optimizada de cores -- inimigo para ao cair/pular em cima de objetos tipo pílula (npcs deveriam ignorá-los como colisão) -- antes da porta do chefe, no intro-stage, tem uma série de pílulas de energia que estão sumindo (usar atalho) - # parece que as pílulas pequenas é que são o problema e somem - # estavam setadas como "player-item", então eram removidas ao trocar de mapa -- ao morrer na fase do phantom, no início, está voltando dentro do solo - # função que chega ponto de parada está com algum bug, se muda velocidade máxima do teleporte para 10 tb dá problema -- não está morrendo ao cair em precípicio -- ao morrer, inimigo deve remover todos os projéteis de efeito (quake, flash, wind-push) -- ao usar coil item não está podendo agarrar escadas -- ao chegar na direita máxima do scrolling, está indo um tile além da tela, mostrando lixo -- novo tipo de projétil: raio (lighting) -- projétil lighting ignora escudos de player e inimigos -- shot ahead está virando para o player. isso é ruim pq tem casos em que é bom o inimigo "errar" -- tirar código que faz chefes não se teleportarem até o chão se voam -- EDITOR: corrigir swap stages - # faces e diálogos - # paleta -- trocar estágios: - zodiac <-> phantom - dragon <-> snow -- não está tocando som custom de projéteis de armas para player usando-as -- lighting deve tocar som mais vezes, a cada novo raio -- tirar empurrador do início da parte de plataformas da fase da valkyrie -- AI: criar action REPLACE. O inimigo some deixando outro em seu lugar - # como spawn NPC, mas não precisa morrer nem duplicar -- AI: replace itself estava fazendo spawn de 2 inimigos -- não tocar o som de ataque padrão se for disparado por um inimigo -- place Armor Pieces: - # legs -> valkyrie - # body -> gear - # arms -> dragon -- importar alguns gráficos de inimigos do Rockbot1: - # milonga, gambit, bunny/tophat, metool tophat, spinner ball, tamanduá, wheels penguim, jet beetle -- adicionar sons para alguns projéteis inimgos como raio, laser, etc - # procurar algum pacote de sound effects free - # http://www.themotionmonkey.co.uk/free-resources/retro-arcade-sounds/?gclid=cjwkeajw_7y4brdykp3hjqyt_y0sjacome3t8xvex6blwqyn6b6fvnixsveqlga7j9xnaejbue_ilxoc2z3w_wcb - # https://www.freesound.org/search/?q=thunder -- AI: adicionar opção AHEAD para action TELEPORT -- AI: nova ACTION circular player: - # parâmetro distância (raio) - # anda linearmente até player.y e player.x - distancia - # dá 3 voltas circulares - # sorteia novo ponto para retornar, do lado oposto ao que veio - # vai para o novo ponto e volta ao descanso -- EDITOR: permitir adicionar frames de teleport (está desabilitado pq era usado para outra coisa) - -- AI: move_to_point deve respeitar screen-lock para não deixar a tela - # se naquele ponto só tem blocos, não deve atravessar mesmo sendo fantasma -- CRITICAL: garantir que teleport jamais passe reto. Se função que procura primeiro block falahar (>=RES_H) parar no meio da tela - # na fase do dragon, ao morrer nos espinhos logo no início já causa problema... - # no início do estágio usa: player1.set_teleport_minimal_y((min_y-3)*TILESIZE); - # ao morrer usar: min_y = loaded_stage.get_teleport_minimal_y_tile(85)*TILESIZE; // x = 70 + half a player width (30) - # e player1.set_teleport_minimal_y(min_y-3); -- inimigo ao retornar do teleporte (tipo mummy), não está mostrando animação (special attack) -- AI: criar jump-attack-up e jump-attack-ahead: no topo do pulo, dispara - # se já estiver no ar voando ou pulando, apenas atira (com animação jump_attack) -- AI: adicionar nova action set animation REVERSE (do último ao primeiro frame) -- correção de bug na animação reversa que ia para frame_n "-1" -- unify player eyes position in stage selection screen -- fix teleport after dying when reached checkpoint setting min_y to wrong value -- mesmo quando já tem save, está ficando com o cursor em new game -- inimigos estão caindo da plataforma (vide mede-mede) - # acontece quando a hitbox é menor the o frameSize.h -- fazer os ícones de armas e barras de energia dependentes do tamanho dos ícones que deve ser obtido pela imagem deles (h/2) -- trocar o som de recharge para items grandes por um que já existe na pasta de sfx -- diálogos de boss estão fora de ordem (mostrando frases de posição errada) -- projétil TRAJECTORY_TARGET_DIRECTION deve procurar só NPCs que estejam para o lado que estiver virado -- ao disparar TRAJECTORY_TARGET_DIRECTION ajustar sprite de ataque (diagonal) dependendo da direção que o target estiver - # este cálculo hoje está no próprio projétil, pode fazer uma função public que char acessa para saber -- inimigo tipo fall/jump não deve reaparecer na sua posição original logo que é dado respawn -- quando inimigo morrer por cair, não pode mostrar explosão nem dar item (porque estão aparecendo no meio ou topo da tela) -- lista de gráficos de personagens movida para graphlib -- lista de gráficos de personagens revertida de ponteiro - # se a versão do Wii tem problemas com isso, vamos achar outra forma de corrigir o problema no Wii -- AI move to player deve andar primeiro a distância maior (x oy y), para só quando estiverem iguais, começar a andar na diagonal -- inimigo em estado "disguise" não deve colidir com o jogador -- não está removendo charged shot ao terminar um estágio e começar um novo - # ao terminar um estágio com turbo mode ligado, fica atirando sozinho ao recomeçar - # as vezes, turbo mode fica atirando sozinho - # provável efeito colateral das mudanças feitas para suportar o auto-fire - # criar função que apenas determina se dee atirar - # usa o estado anterior do botão de ataque e só dispara se 0=>1 ou 1=>0 e carregado - # guarda tempo quando estado do botão passa de 1=>0 para verificar tiro carregado - # retorna 0 (sem tiro), 1 (tiro normal), 2 (carregado) -- ANDROID: trocar imagens controle touch -- ANDROID: desabilitar menu config da SDL -- ANDROID: desabilitar por padrão o filtro de vídeo -- pulo do rockbot está curto (video fase valkyrie) -- tucano na fase da valkyrie impede de passar plataformas -- ANDROID: inimigos ainda estão caindo através do cenário, vide estágio valkyrie - # só acontece no android -- acelerar texto dos dialogos -- AI: criar novo item AI, esperar tempo randomico - # sorteia um delay-to-next entre 0 e parâmetro (1 a 10) -- está trancando ao pular na escada para cair (hitbox) -- se mudar direção rápido, tranca no cenário - #deixar hitbox igual para duas direções -- fly to player deve mirar a parte de baixo (pés) do jogador -- configuração de botões não está funcionando -- configuração de botões deve mostrar tecla ou botão do joystick selecionado -- joe azul está com escudo pelas costas tb -- quando um inimigo/chefe tiver sprites de teleporte, ao chegar no chão deve mudar para stand -- add darkbot #1 to intro stage -- ao selecionar item na config, o cursor desce um nível - # efeito colateral de mudar a posição por causa do return - # quando entrar num item, deve resetar posição -- config buttons reset to default não está funcionando -- na configurações de botões, não pode mudar BACK, que é usado para sair para outra tecla -- não deixar sair da configuração de botões de pulo, tiro ou START estão como -1 -- crash na luta contra seahorse -- melhorar AI Seahorsebot (virar para player para atacar) -- peixe azul da fase seahorse está piscando -- transição em estágio com auto-scroll não está funcionando direito -- está podendo entrar no menu de armas antes de aparecer o diálogo do estágio -- duplicar pontos de vida dos chefes, assim ficará bem difícil matar eles só com tiro normal -- cursor está ficando em new game novamente, mesmo quando tem save -- quando houver screen_adjust, deve mover apenas o mapa, não o fundo da tela -- implementar efeito "trem" -- as vezes, ao atirar rápido, aparece um semi-charged shot sem que tenha sido carregado -- slide parando quando não tem espaço acima -- em estágio com autoscroll, ao voltar da morte, deve esperar um pouco sem scroll, como faz no diálogo de entrada da fase -- criar sub-menu para cada plataforma na config - # PC: fullscreen - # PSP: keep aspect ratio - # ANDROID: play services, touch controls hide, touch controls enabled - # WII: controller type (gamecube, classic, wiimote) - # PS2: resolution (poder escolher uma das que melhor se encaixam, mesmo que corte a tela um pouco) - 256x224 - good - 288x224 - good (strange colors?) - 256x256 - ? - 320x200 - distortion - 320x240 - distortion - 320x256 - distortion (small) - 400x256 - distortion - 512x448 - good but small - - -- fix spike immunity by adding new method only for spike-damage -- verificar se, ao sair de um estágio já completo, está salvando items (armor) -- checkpoint sala do ape no lugar errado -- esqueci de adicionar tiles de porta nas que aumentei altura -- adicionar função para converter save antigo (v1) para novo (v2) em save_exists - # somente se em "Rockbot1" - -###################### (release notes foi até aqui em cima) ###################### - -- separar leitura de input em uma thread -- EDITOR: permitir definir pontos do castelo -- fazer npcs não-voadores atingirem o chão ao carregar lista de npcs do mapa -- EDITOR::CENA: não pode adicionar a própria cena como sub-cena, pois cria loop infinito -- EDITOR::CENA: adicionar botão para recalcular w/h com base na imagem e recalcular ao mudar imagem - # animation - # viewpoint - #image -- criar efeito wave (sinoidal) para ser usados sobre surfaces -- melhorar timing do efeito de fade-out -- GFX lighting-storm para estágios como o mummy -- cancela a thread em game::exit_game() e espera ela sair -- aviso de que precisa reiniciar o jogo, nas configs, não está aparecendo -- não está limpando direito a tela após aviso de "need restart" na config -- substituir chamadas a input.waittime por timer.delay -- melhor leitura de input com uso de microssegundos no lugar de SDL_Delay no loop da thread -- leitura de input na tela de seleção de armas está ruim (deve ter algum delay) -- draw centered text está fora de posição no PSP -- jogo está quebrando ao inicializar sem quickload -- adicionar read_input em todos os loops while que usem input -- não está conseguindo pular cenas na intro com velho método de input sem thread -- reverter para sistema sem thread na leitura de input, já que várias plataformas deixam de funcionar com ela -- quando pulo alto for iniciado só por água usar aceleração próxima à normal se não estiver na água -- vida deve mostrar apenas o rosto do jogador selecionado -- está podendo pular em meio ao air-dash -- ajustar tolerância para achar as cores e substituir nos jogadores de 5 para 6 -- EDITOR: não está mais alterando as cores do personagem se ele usa um colorscape de 8-bits -- usar novamente SDL_DisplayFormat para imagens a fim de optimizar jogo -- jogo está travando nos diálogos -- editor está salvando diálogos com quebras a mais de linha -- se tem um muro acima, dash anda indefinidamente -- se dash (air) for bloqueado, deve encerrar imediatamente -- corrigir scroll do fundo quando vindo da esquerda para a direita -- EDITOR: remover BG2, deixar apenas um único fundo para performance. -- EDITOR: melhorar UI na groupBox de terrenos, npcs e objetos para ter scroll e mais área usada -- configuração de direções além dos botões -- resetar config se segurar dois botões quaisquer de joystick por 5 segundos na tela de game-start ou select-game -- config button não está mostrando tela de "pressione botão" e fica com enter ou sai direto -- correção memory leak em surfaces -- EDITOR: não está atualizando fundo ao mudar de mapa (rockbot1, daisie->seahorse) -- EDITOR: tornar color-key transparente nos fundos de tela -- ROCKBOT-1: ajuste dos pontos do castelo -- ROCKBOT-1: edição sala de chefe Searhorse tornando terro regular para evitar ficar trancado -- AI: adicionar fly to random x e fly to random y -- dash debaixo d'água parece estar mais lento que andar -- se tiver flag BETA_VERSION definida, mostra msg tipo "app contém erros" -- trocar #ifdef DEMO_VERSION por método em game que também verifica se o jogo escolhido é "Rockbot2" -- mover pasta games/rockbot2 para svn fechado -- DEMO deve ser intro + 2 fases apenas -- EDITOR: colocar diálogo de salvar ao sair no editor principal, assim como na janela de scenes e strings -- EDITOR::SCENES: está quebrando ao trocar seletor na tab de imagem (está apontando para anim_list e não img_list) -- EDITOR::SCENES: resetar campos quando janela for aberta (senão continua com anterior e dá crash) -- EDITOR: se muda de fase com fundo para uma sem fundo, não apaga -- não está desenhando dynamic-bg ao transicionar tela (usar mesma lógica do novo draw_dynamic no draw_in_surface) -- arquivo texto de créditos do jogo -- pode interromper créditos se estiver vendo pelo menu principal -- colisão ao inverter posição ainda está fazendo jogador "entrar" nas paredes - # principalmente em escadas - # quando mudar direção, só inverter flag, não mover -- diminuir pontos de vida dos chefes (x2 é muito, fazer x1.5) -- borda da barra de energia de chefes deve ser preta, não roxa -- EDITOR: não está recarregando cenas na aba game-scenes ao fechar janela de cenas nem trocar de aba -- EDITOR: botão de play-scene não está pegando a cena selecionada, mas a primeira da lista -- está ficando preso ao ser atingido (muda esquerda/direita sem parar) -- fases da demo: kurupira e snow -- criar chefe kurupira: 41x53 x 25 frames -- colocar inimigos na fase kurupira -- DEMO deve ter tela final agradecendo e pedindo comprar full-version - # pressionando qualquer botão, volta à seleção -- última linha do diálogo de início de fase parece estar errada -- dash não está funcionando quando teto é baixo (kurupira) -- as vezes slide é interrompido e jogador é empurrado rapidamente para trás -- in free version, in stage-selections creen, user can't pick snow, but rather zodiac -- slide/dash not working underwater -- teleport frame without transparency -- new kind of teleporter that set scroll to the first lock on left or right from the destination point -- Fixes for Rockbot1: - # Gamebit projectile too slow - # Bat has too many hit points - # missing tiles in Seahorse's boss room - # castle5 teleporters get scroll out of position -- warning on intro about the free version -- remove final-boss flag from air-pusher -- setar destrin como final boss no rockbot1 -- adicionar opção performance mode - OK # HIGH: habilita background2 (que vira foreground) - OK # HIGH: tiles de água ganham uma transparência azul por cima - OK # LOW: desabilita background com autoscroll - OK # LOW: target FPS setado para 30, velocidade de movimento x2 (criar global) -- fazer valkyrie ir no chão para soltar raio -- chefe trancando na porta - # tem que impedir que eles entrem parcialmente dentro de terreno door, nem que expandindo área de colisão neste caso - # parece que ao atirar projétil ele move para frente e depois para trás -- adicionar "to oposite wall" na IA de walk e dash (como de fly) -- dash de inimigos está muito lento -- criar diálogos para fases demo (intro, snow e kurupira) -- desabilitar opção do google play services por hora -- explosive flag in projectile -- button "R" not working on Abndroid build -- OPTIMIZATION - use a mix of tile-by-tile and screen saving - # draw visible map (-1, +1) into a surface and use it until scroll changes more than TILESIZE -- map should not set GFX effects unless config is set to high-end performance mode -- high-end performance mode should be the default one -- fix Rockbot 1 projectile that was not converted to new format -- fix crash on player reference when used from classNPC, add method into map class to get player hitbox instead -- not removing GFX effect when returning to a map that does not have it -- fix errors in editor for projectile v2 format -- reenable PSP's turbo CPU mode -- EDITOR: add fix to remove invalid level 3 tiles -- do not try to show invalid surface areas -- fix ice slash graphic -- fix joe set was sub-boss in snow stage -- reset anim-type if one is invalid, not only anim-n -- remove duplicated level3 tiles code -- fix animation trying to show invalid position -- not removing GFX effect when returning to a map that does not have it -- EDITOR: zoom in/out using mouse wheel on editor-area -- music restarting twice when dying -- inferno effect crashes due to incorrect check of surface existance -- firey snake missing walk frames -- holding left+right at same time makes player float in middle-air -- hide GFX when transitioning between maps -- small increase in player movement speed -- made snowbot water jumping part easier -- use player first color of normal weapon as HP color, and first for weapon color also. -- EDITOR: removed weapon color picker -- EDITOR: weapon color preview not working -- there is a piece of another sprite in Rockbot's walk-attack animation -- candy blinking sprite has a small difference from the stand one -- fix not entering stages if finished stages is greater than 8 and in demo-mode -- do not leave game if can't draw an animated-tile -- add SDL_Quit() before all exit() calls, to prevent causing an exception that hides the actual error -- increase show_debug_msg() time to 4 seconds -- criar objeto tipo plataforma que faz dano no player caso esteja pisando após X tempo (garras megaman 3) -- plataforma tipo a active-disappearing, mas que player pode pular de baixo para cima sem colisão -- objeto item-coil deve parar sobre espinhos para que player possa pular sobre eles o usando -- primeira animação de objeto funciona, na segunda vai direto para último frame -- se habilitar animation reverse, não reseta slim-platform para estado hidden false -- se estiver em teleport, player deve ignorar colisão com objetos -- add adjust-y of +1 for object collision, so player walking from a platform won't be blocked when there is an object in same y -- player must be able to jump-up when inside obj_item_coil or obj_item_jet -- while teleporting, object must not collide with player or enemies -- EDITOR: copy/paste must also copy the tile3 and lock properties -- item teleporting colors are not being correctly set -- coil item jump acceleration is too slow -- coil item must jump ~6 tiles only -- increase slide speed -- damage platform don't need to be set as player platform for damage, just check if he is above it -- slim platform must block player only if he is above it, not on its middle -- player should not collide with object that is teleporting itself up/down -- change coil item colors to red/white -- coil/jet item animation is not working -- collision with item-jump must add 6px of tolerance in y (hardcoded for now, in the future needs a flag in editor) -- decrease bosses hit points do adjust difficulty -- map drawing ignoring adjust x/y for things like quake effect -- player selection is showing in demo and not in full-game (rockbot 1) -- 3rd level not showing problem -- ROCKBOT 1 issues: - # charged projectile is slow - # graphic glitch in intro stage's moon - # intro stage's dialogs are broken in position - # tamanduá not walking - # giant fly graphic is blinking - # adjust bosses weak points due to the greater number of hit points in Rockbot2 engine - # shot crossing through mine cart without damaging it - # spike won't move: character::show_sprite_graphic(Spike Bot) #1 - no graphic for type (4):fra - # game weapon screen must be updated to the positions used on rockbot 2 - # coil item not working - # firing weapon when using coild/jet crashes the game - # weapon colors aren't set in editor -- teto ape (castle 5) -- gráficos spike (castle 5) -- colocar umas cápsulas de recarga (castle 5) -- horizontal screen transition (door) missing pause -- spawn NPC crashes on android due to map not being set on new npc - # use gameControl to handle loop-breaking instead of map - # set the map on map::spawn_npc -- jumping on water is in normal speed (due to changes for coil) -- after a screen-transition, games become to fast. missing puase call -- objects falling should stop on spikes -- enemy dropping items rate is bad, big weapon pill drops a lot -- hit area do destrin só funciona quando ele está virado para a esquerda -- vulnerable area not working -- game's credits - # editor (text-file) -- boss credits - # editor (3 lines for each stage) -- EDITOR: set final boss in the game's properties instead of in the map -- no ending at all -- npc replace-itself reaction not continuing the boss fight -- ending: show each enemy with its name, not only bosses -- take more damage in hard difficulty mode, and less on easy -- add easy blocks in Rockbot1 -- update player selection sprites -- fix player selection name position -- enemies should not be killed or damaged by death-ray -- effects, foreground and 3rd layer above HUD -- foreground stopped showing, use same alpha from first map if same image -- hit animation in bosses must be added into the middle of its hitarea -- use player face instead of skull in stage-select screen -- add map animation in stage-select screen -- add "press start" in stage-select screen -- disable language selection -- EDITOR: scenes clear-area color picker not getting RGB (gets a gray) -- when passing through a door, old hp-bar shows up -- chain projectile must not be reflected, must be interrupted instead -- lower SFX volume and change shot SFX -- add credits (stage-select): http://funky93.deviantart.com/art/Custom-Map-Tileset-86220256 -- for player char that have simultaneous shots, armor special attack must become default, not charged -- air dash not working for candy with armor -- new sounds for hadouken, shouryuken and super shot -- set weakness default to 0 instead of 1 to make it work again -- add to credits: - # http://modarchive.org/index.php?request=view_by_moduleid&query=76738 (sfx, stage select) - # http://modarchive.org/index.php?request=view_by_moduleid&query=127339 (skull castle intro) - # http://modarchive.org/index.php?request=view_by_moduleid&query=85147 (got weapon) -- remove increased damage taken by player in hard-mode difficulty as it makes impossible to play with candy -- save point godess status like mana or tiny dd - # computer terminal (CHKPNT) that activates - # https://opengameart.org/content/communication-terminal-32x32 -- set player default projectile -- add "kitty" shot that apperars in select screen for kitty charged shot (or armor) -- new projectile types: - # fibonacci spiral - # ball bouncing -- player projectiles are being reflected in some enemies - # it is testing hitbox first then hitartea, it should be the other way around -- add black border to hub ball points -- copy credits from v1 to Rockbot1/game_credits.txt -- ao trocar de mapa num estágio, deve limpar objetos temporários (dropped-items, for example) -- sub-boss not dropping item (must drop energy big always) -- EDITOR: map showing full-size (multiple frames) instead of just 1 -- projectile generate left/right flipping surface instead of have the image with both -- add up until castle2 stage5 into the enum -- stage selector must show if stage was beaten -- add new stage-selection style to Rockbot1 -- increase coil jump height back -- make train effect faster -- reset screen adjust when transitioning screens -- projectiles are still being reflected sometimes (beast walking on opposite direction) -- show HUD when transitioning screens (both door/horizontal as vertical) -- teleport-objects must be draw after player -- don't set player teleport when using link (not object) teleport link - # after killing boss in catle 5 (rockbot2) it won't return from teleporter - # this prevents player returning to the previous teleport-link after killing a boss - # as now only object teleporters are meant to have this functionality, it is uneeded in links -- when placing a teleporter object, cursor does not leave destiny mode -- fix object teleporter destiny point number on editorarea -- player is teleporting out after beating boss, not stage-boss -- beastbot AI was reset -- don't show dialogs if not stage_boss -- chain projectile is inverted in rockbot1 -- stage select shows all skull castle stages instead of just the first -- in free-version, stage select now won't allow you to enter stages that are not free -- new charged projectiles by kaithehedgefox10@deviantart -- new hadouken Bongwater-bandit@deviantart - -########################################################################################## - -- ending in android won't show player running -- flying bosses should not stop only in the ground, but middle-screen -- fix fly-to-random-point changing direction and always goind left -- set move-type to air-walk if boss presenting ends without reaching ground - -########################################## 2.00.083 ########################################## - -- new boss-intro style rokko chan's opening or X boss presentation -- improved HUD with 4 slices for each energy dot -- change to air-walk when flying -- add a check to avoid a button with zero size -- add multiple save file selection -- finish android's touch button size configuration - # apply right when changed option - # fix positions -- implement android's hide touch buttons -- add a flag in config called first_run. If is default (true), ask if want to enable play services and cloud save -- set android's touch buttons transparency to 40% -- finish cloud save load/write - # separate option from play services - # create warning when enabling the service - # when loading/writting a save, show connectiong dialog - # check all 5 slots if no save is present - # when enabling the cloud save service, load data for all slots - # when checking if enable load in main screen, try to get cloud data, if none -- fix teleport left/right/ahead leaving boss room -- add two more stages to the demo: - # snowbot not showing as enabled - # add Phantom and Gear stages - * must add phantom boss -- remove 30 fps mode, it won't work well anyway - # find other ways to improve speed -- fix spawn npc by adding to a temp list and only adding new enemies into npc_list at the end of loop -- flying enemies are missing shots: need to add walk/fly frames -- when enemy is teleporting, should not get hit while teleport animation isn't finished yet -- refactory teleport to avoid boss leaving room or teleporting inside walls -- android's touch controls always increasing when changing size - # backup original_size when initializing -- make buttons small size as medium - if stage runs too slow, automatically change to medium performance mode -- EDITOR: dialogs are being reset on editor -- EDITOR: when selecting cancel on leave dialog, must stay in app - -########################################## 2.00.087 ########################################## -- finish file selection bar (show icons for all stages, e-tanks, lifes) -- add a warning that play services can crash the game in some devices when enabling it -- add show fps option (useful for players complaining about speed) -- remove the play services configuration from first boot -- fix AI teleport for bosses that are out of screen due to initial position Y -- fix enemies collision for unused frames, use sprite_pos and frame_size instead -- add auto-charge option in input config -- fix vulnerable area once again after fix for unused frames, return empty when not used -- [Rockbot1] fix missile direction graphics -- new projectile trajectory: out of screen to the npc/player -- remove jump and other moves FROM kurupira bot that uses frames without the boar -- add option to projectile to make possible for it not to disappear after hitting an NPC -- AI: morph into - becomes another NPC without changing HP and some other flags - - -########################################## 2.00.089 ########################################## -- new stage select screen based fighting games -- new sprites for energy/weapon -- super-fast after passing through a boss door -- door should activate transition only if py > link.y -- after passing through a scroll-lock, autoscroll needs a bit of delay before restarting -- dash + shield makes player move backwards and enter inside walls -- input config is reading for a command when leaving -- missing shield button in input config -- when returning from a config item in menu, place cursor on it -- adjust chances of item dropping (http://tasvideos.org/RandomGenerators.html) -- EDITOR: remove text from armor-edit, as if comes from game strings -- EDITOR: remove castle points -- fix spawn-npc executing twice in AI -- limit spawn npc in AI to avoid tons of spawned npcs (3 is a good number) -- 1-up dropping ratio is too high, use timer as seed for random generator -- problem with collision when w is smaller than max - -########################################## 1.20.038 ########################################## -- convert save to new name -- add screens for bosses intros -- add fly sprites to enemies -- add teleport sprites to enemies that use teleport AI -- remove castle/path presentation -- not showing bosses names on credits -- returning to castle5 on new-game after beating the game -- na fase do mage, uma cartola faz span de coelhos que caem para dentro do cenário: https://drive.google.com/open?id=0B7z1XNbjQajDbFJaVXVGYndTNlRWbzdJMGU1eVEtTGIxLWxJ -- castle 5 - parafusos somem quando entram no chão e não voltam - - -###################################### 1.20.039/2.00.091 ###################################### -- change map objects and enemies to a self-contained list -- add difficulty to object and enemies placing,s o you can add enemies that will appear only in hard-mode -- missing d-pad and A buttons on rockbot1 stage select screen -- fix controller button configuration -- intro text leaving a bit uncleared on the right side -- create draw_centered_text function that uses white font -> put colors into defines.h -- must clear text on the stage-select screen, when changing stages -- add Andrew Przelucki to credits -- disable the cloud-services in Android - -########################################### 1.20.040 ########################################## -- increase castle stage number in pck_stage after beating one -- remove symbol conversion ins trings, as the issue with encoding seems to be fixed now -- disable languages other than english and portuguese in config -- in config, clear the whole area of text when creating a new config (full RES_W) -- ROCKBOT1: finish translation dialogs -- ROCKBOT1: adjust damage from weapons, make spike damage ape and lower damage ape takes from normal -- text about unlocked char appearing on credits on main menu -- credits on main mainu not working (not showing text) -- remove stars as it does not match the new visual identity -- save cursor position in main menu -- restore progressive text (use inputLib::waitScapeTime) -- EDITOR: fix problem with scenes text edit -- EDITOR: error changing weapon in armor edit -- if player has double-shot, special weapon (armor) must respect the number of projectiles as normal ones -- ready message is not centered -- in got armor dialogs, must use the weapon name, as we changed this from the old ability-type - -########################################### 2.00.092 ########################################### - -- translate "you got" text -- change "presents" image on intro -- add on intro text that game is homebrew -- ROCKBOT1: mispell ravok on intro, should be havok -- ROCKBOT1/2: change projectiles, weapons and enemies names to uppercase -- won't reset from walk-attack to stand-attack if keep firing even if not moving -- EDITOR: do now allow an enemy with player name -- AI: add fly-sin-y -- new type of shield walk + stand (is shielded in both cases) -- improve and translate for pt-BR the beta version warnings from intro -- dog boss gets locked on boss-intro/gravity due to water in castle1 stage -- can't attack if using shield -- increase speed in stairs -- after screen-transitioning, stairs animation (left/right) stops for a while due do pause -- fixes for enemy teleport animation and AI -- add check for android touch controls max-size value - -###################################### 1.20.041/2.00.094 ###################################### -- add reset timer to enemies and objects on game_unpause -- foreground layer get doubled and out of position when transitioning maps up/down -- objects and enemies must check for difficulty-ground terrain types -- EDITOR: show error in name when using one that already exists -- re-add spawn to gear bot's mecha AI -- coil frog respawning when you return to the map you used it -- new teleport animation for player without falling down on start-start -- new damage sprites for player -- new player death animation and fade-out effect -- press attack button to return from new/load game save selector -- sub-menus in config must remember picked option -- reload stage music if boss-music is playing, fixes #42 -- better text for the "weapon acquired" -Fix #45: Beta can dash past leftmost screen side -Fix #48: BlueShield enemy takes frontal damage -Fix #49: Robot goes behind the save computer -Fix #51: Infoway: turret/cannon is too high -Fix #52: Infoway: pop-up enemies on stairs are displaced - -###################################### 2.00.103 ###################################### -- new animation for coil and jet teleport -#54: Infoway: pop-up enemies on stairs are displaced -#74: Change metools to attack on player direction -#77: Hero displacement at checkpoint restart -#80: Power-ups disappear when going into inventory -#83: Correct variable names in fly-to-ran(x/y/point) -#84: Dark Mine: secret area blocks are badly synced, no way to get back -#85, #86: Ground turrets displaced -#87: fading blocks get hero stuck -#88: When stage starts, horizontal ray shows cut -#89: When stage starts, vertical ray won't show animation -#96: Fixes for gamepad controller -#93: New projectile types: missile rain and double shot - -###################################### 1.20.046 ###################################### -=> same from [2.00.103] -- useSDL_gfx rotate in target_exact missiles, fixes #76, #71 and #55 -- adjust proguard mapaing location in android's build script, fixes #98 -- reset timer to zero for disappearing blocks, fix #64, fix #44 -- add debug tools, fix #23 -- remove projectiles and npc_freeze_effect when player changes weapon, fix #79 -- remove old and deprecated get_hitbox from npc class, use the one from character instead, fix #99 -- missing game_save on parameter, fixes #46 -- set saved_point on first AI* execution -- implement solution for #70 -- remove debug in file-io forgotten by accident -- add missing image for beam projectile -- move player to above platform to prevent him getting stuck, fixes #87 -- finish bomb-rain projectile-type -- create large-beam (like a kamehameha) projectile-type -- fix object transition on stairs -- fixes for projectile spawning children -- add command-line parameter to select stage -- fixes for physical joystick config -- new graphics for Dr. Destrin from Boberatu -- make freeze effect stop objects, fixes #69 -- missing adjust_y in some object types show method. fixes #68 - -====================== -(2 only) -- set stage-bosses in rockbot2 -- charged shot not disappearing once hitting enemy - - -###################################### 1.20.063 ###################################### -make lighting effect transparent with alpha -make enemies projectiles appear above them -fall and up/down platforms must not stop on spikes -more items and checkpoints for easy difficulty -#105: reset jump when starting or restarting stage -#70: remove 3rd level showing on celebration -#95: reset charging sound and reset button state when changing weapons -#100: check direction for second projectiles -#106: do not call update screen when showing BG in boss_presentation -#108 implement crash report system for errors generated by the game-engine itself -#102: update save-slot selection images -#104: add RLE optimization in set_surface_alpha - -################ -Change drop ratio on enemies depending on picked difficulty. -Only clean confirm/jump button when starting stage. +#################################################################################################################################### +.061 +#################################################################################################################################### +Build with latest SDL from Pelya. +Fix crash in classmap::dropItem due to different array sizes and std::copy. + +#################################################################################################################################### +.050 +#################################################################################################################################### +Code cleanup. +Update Android SDK to latest version. +Fix #73 - change giant fly to UFO and improve it's AI. +Fix #120 set parabola when no target is defined. +Use actual player hitbox instead of hardcoded values for w/h. +Fix #119 - adjust so all projectiles from bomb rain fall into the screen width and do not change new bombs dropping position if scroll changes. +Fix #128 - boss music keeps playing after defeating sub-boss. +Fix #130 - Pick Option menu to use BG image instead of solid colors. +Fix #127 - Player falls from jet when using down to move it. + +EDITOR: + fix layer number in parallax tab in movie editor to be filled again with 0-10 values. Improve UI for scenes editor. + Add mousewheel zoom adjust in tileset selector and projectile preview areas. + fix issue with tileset selection when using zoom and save/load selected theme. + Fix #126 - swap stages missing changing enemies and objects. + Fix run game on Windows platform. + +MISC: + Add license details in docs, fixes #124 + +#################################################################################################################################### +.0.44 +#################################################################################################################################### +#60 - não dá para usar coil em save-point +#117 - EDITOR: fill_files_combo tem que criar diretório se não existe +#62 - enemies get locked into stairs instead of turning back +#75 - improve h-star position in mine + + +#################################################################################################################################### +.0.43 +#################################################################################################################################### +- EDITOR: fix animated tiles-area to be scrolleable +- fix collision on water when there is a single block ahead +- fixed animation-timer for when shooting on stair +- changed 1up style and animation +- do not change to default weapon after calling coil or jet +- correct jet/coil colors on teleport +- remove jet/coil once player dies +- jet item should only start moving once player set foot on it +- do not show boss HP is he is dead or out of extended-screen + + + +- fix collision on water when there is a single block ahead +- fixed animation-timer for when shooting on stair +- changed 1up style and animation (even if this item is deprecated) +- do not change to default weapon after calling coil or jet +- correct jet/coil colors on teleport +- remove jet/coil once player dies +- jet item should only start moving once player set foot on it +- do not show boss HP is he is dead or out of extended-screen + + +Correções: +- colisão em água com apenas 1 tile à frente +- tempo da animação ao atirar quando em escada +- não mudar arma para nromal ao ativar jato/mola +- cores de jato/mola no teleporte +- jet e mola devem sumir quando o jogador morre +- jet só deve começar a mover quando o jogador estiver efetivamente em cima dele +- não mostrar vida do chefe se ele morreu +MELHORIAS: +- mudada aparência do item vida (ainda que ele não seja mais necessário) + + +#################################################################################################################################### +.0.42 +#################################################################################################################################### +- #2: improve lighting attack, show where it will land before, fix vertical position +- #2: new boss order in castle stages +- improved backgrounds and tilesets in stages +- (partial) spanish translation from DOUBLE JAY GREEN +- remove debug in input for Android port, could improve performance + + +#################################################################################################################################### +.0.41 +#################################################################################################################################### +Fix crash in music and sound effects player. +Different icons for 1 and 2 in Dingux/PocketGo +Octopus Tenctacles should not fall due to boss intro +Changed boss explosion + +#################################################################################################################################### +.0.40 +#################################################################################################################################### +Thanks to Yama Droid for the bug reporting. +Fix destrin rain of bombs exploding on the ceiling. +Fix invalid AI state that made enemies to stop moving. +Fly-to-Player was not changing directions to face him. +Dash effect was not updating when changing directions. +Removed teleport left by mistake on Spike's stage. +Fix error in map-collision old-point using wrong Y. +-------------------------------------------------------------- +Obrigado ao Yama Droid pelos relatos de bugs. +Chuva de bombas não deve explodir no teto. +Correção de estado de IA inválido que fazia inimigos pararem. +IA Voar-até-jogador não estava virando em direção a ele. +Efeito de dash não estava resetando ao mudar a direção. +Removido teleporte esquecido na fase do Spike. +Correção na colisão de mapa em que o ponto anterior usava um Y errado. + +#################################################################################################################################### +.0.38 +#################################################################################################################################### +Default language - en-US +Show selected character and difficulty on save picker +Added back boss dialogs +New level selection screen +Convert music from ogg to mp3 at a low bitrate to keep size small +Added option to use MOD music instead of mp3 +New "about" screen +Adjust for button A/X position +Show boss intro even if stage is already completed +Bosses will appear again even if the stage is complete +Option to leave stage directly from in-game menu +New sprites for Milonga based on Arismeire's design +-------------------------------------------------------------------------------------- +Mostrar personageme dificuldade na seleção de save +Retorno de diálogos de chefes +Nova tela de seleção de fase +Música convertida para mp3 em baixa resolução para tamanho menor +Opção para tocar música MOD no lugar de mp3 +Nova tela de "sobre" +Ajuste para posição dos botoes de tela A/X +Mostra intro e chefe mesmo para fases já completadas +Opção para sair da fase direto no menu de jogo +Novos sprites para Milonga baseados no design de Arismeire +-------------------------------------------------------------------------------------- + + +- EDITOR: show option for language in scene player +- PC-only: fullscreen scales resolution to adjust to screen +- PC-only: can now resize window for integer scale +=================================================================== +- fix for vertical moving along wall enemy +- show selected character and difficulty on save picker +- was not able to leave in-game menu if crystal was selected +- checkpoint not falling into ground when player returns from death +- added back boss dialogs +- new level selection screen +- convert music from ogg to mp3 at a low bitrate to keep size small +- added option to force playing the MOD music instead of mp3, for higher quality +- new "about" screen +- adjust for button A/X position +- fix shouryuken animation sprite missing and being able to air-dash afterwards +- try to fix crash in artificial_inteligence::get_ai_type and menu pick +- show boss intro even if stage is already completed +- bosses will appear again even if the stage is complete +- log class to better handle android/cout +- new sprites for Milonga based on Arismeire's design +- deprecate and remove all tiles with terrain type checkpoint +- option to leave stage directly from in-game menu + +#################################################################################################################################### +.0.32 +#################################################################################################################################### +- Coil item teleporting before reaching player position +- Allow enemy to move when half of it is out of the water +- Do not stop slide when under a solid brick +- Add option to play old-style music for Rockbot1 +- If a ogg file is not found, play the mod instead + +#################################################################################################################################### +.0.31 +#################################################################################################################################### +Fix setting player to Rockbot when loading game +Fix ending being incomplete + +#################################################################################################################################### +.0.30 +#################################################################################################################################### +Common: + Add initial delay for bossses start moving + Fix boss music not playing. + Show "new characters available" message on ending credits + PocketGo port + Added back enemy background with fixes in positon + +Rockbot1: + Fix some issues in stage and enemy placing. + Fix ending stopping stars animation while waits for keypress + +Rockbot2: + Kurupira: remove armor-piece from stage, as we already have it on Gear stage + Gear: add teleport after armor piece in stage to return to regular path. Gear should not walk/dash, but jump, as he is too big to jump over. + Valkyrie: remove debug items and adjust tank position so you can reach it with coil + Castle5: Destrin should change frame to indicate if is pushing or pulling. + + + +#################################################################################################################################### +- título +- capa +- tamanho identação parágrafo + + + + + +#################################################################################################################################### +- added frameskip for Dingux and PS2 +- add back PS2 build (still not working) +- add 30 fps max mode (still under construction) +- fix crash in number pick (for real this time) +- added option to set on-screen buttons spacing +- added option to set audio buffer size (should fix issue with choppy sound, but adds delay) +#################################################################################################################################### + + +005 - 44Khz +006 - exit(-1) nos erros de música +007 - mais buffer +008 - disable music +009 - disable volume + +#################################################################################################################################### + +- value picker fix for volumes setting +- ANDROID: increase spacing for buttons +- increase audio buffer size +- removido backgrund de NPC, já que não era usado +- update 1up icon in RockBot2 +- change prision graphics (it is original, but too close, people might mistake) +- remove background graphics in NPC that is not used anymore +- corrigido problema que fazia setar sempre o player 1 ao carregar save +- mostra nome do chefe na tela de seleção de fase +- fix crash in npc reset_timers due to access to non-existing graphic entry (Filiberto Castrodad) +- update copyright notice to 2020 +- include JDM in Intro + +#################################################################################################################################### + +- fix getting stuck in invalid place after dying and returning to checkpoint (thanks to Pix-el 64) +- try to fix crash that happens sometimes when you open leave game outside the game (like save selection) and pick no +- update the SDL version to check if it will fix the audio issue some users reported +- change weapon menu to use directional icon to show how to change weapons +- add music for walking player in the ending +- bosses/sub-bosses need a greater invulnerability time after being hit +- change android app icons +- finished tileset change in Kurupira stage + + +- [PC] change window icon diff --git a/docs/LICENSE.TXT b/docs/LICENSE.TXT new file mode 100644 index 00000000..466e225f --- /dev/null +++ b/docs/LICENSE.TXT @@ -0,0 +1,12 @@ +Code is licensed under gpl v2, as seen in LICENSE_SOURCECODE.txt +https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html + +Art and sound files are licensed under Creative Commons Share-Alike. +https://creativecommons.org/licenses/by-sa/4.0/ + +Music from Jmd are licensed under under Creative Commons Share-Alike. +https://creativecommons.org/licenses/by-sa/4.0/ + +Old Music (folder music/old) are licensed under their respective creators licenses from modarchive.net. We used only free to use, but please refrain from redistributing it unless you check specific license. + +Rockbot, Betabot, Kittybot, Candybod, Dr. Kanotus, Dr. Destrin and all bosses are copyright Iuri Fiedoruk & Arismeire Kümmer Silva Fiedoruk and respective collaborators, all rights reserved. diff --git a/docs/Releases.txt b/docs/Releases.txt index 72d7e965..ae55b01e 100644 --- a/docs/Releases.txt +++ b/docs/Releases.txt @@ -1,57 +1,35 @@ -==================================================================================== -2.0.0 Beta 19: -==================================================================================== -- several fixes for Rockbot 1 -- improved Coil item animation and hitarea -- new object type that damages player if he is above it when animation finishes -- new object type that allows player to jump under it to above it -- fixes for object animation and reverse-animation -- increase movement and slide/dash speed a bit -- fix jump for coild to be smaller -- both player and objects should not collide with each other when teleporting -- lowered bosses hit points to lower difficulty -- fix quake effect animation -- fix 3rd level of tiles not showing sometimes -- player selection must be shown only in full-game, not demo - - - - - - -==================================================================================== -1.20.068: -==================================================================================== -- In memorian to Ivan Fiedoruk -- New stage select screen -- Added Translation for cutscenes -- Use teleporter-platform for entering boss' rooms -- Fixes: - # unicode text with progressive draw - # better teleporter y-position handling - - - -==================================================================================== -1.20.074: -==================================================================================== -- new soundtrack by Simone Bernacchia! -- enemy projectile not moving if he is not on-screen -- bring back to classic stage selection -- bring back castle stages intro -- dash shadow effect -- AI: fly+dash to player -- ANDROID: fix crash in boss credits -- font outline -- new door object for middle-stage bosses -- new graphic for stage-boss teleporter -- show commands (< > ENTER, etc) on manual' bottom -- separate manual parts between game-specific and general -- "got weapon" music playing two times, should not play on colors celebration - - -==================================================================================== -2.0.0 Beta 20: -==================================================================================== -- shield must stop any movement (left, right, up, down) -- na tela de seleção de fase, tá escrito pra apertar A, mas só entra com start +####################################################################################################################### +2020-XX-XX +####################################################################################################################### +- fix boss music not playing +- increase default button spacing in Android + + +####################################################################################################################### +2020-05-24 +####################################################################################################################### +- use ogg files instead of mod ones in Android to fix audio music issues +- fix ghost flag not working due to being unset +- ghost enemies will show under the tileset + +####################################################################################################################### +2020-03-11 +####################################################################################################################### +- jogo volta a ser chamado RockBot +- correção para tooltip de arma aparecendo abaixo de tiles +- correçãod e inimigos se teleportando para fora de sala com objeto porta +- removida animação de teleporte para o jogador +- refeitos os sprites do RockBot +- readicionada seleção de personagem +- readicionada seleção de armas no menu de jogo + +======================================================================================================================= +- game is now called RockBot again +- fix weapon tooltip showing under tiles +- fix enemies teleporting out of room with door object +- remove player's teleporting animation +- new sprites for RockBot +- readded character selection +- readded weapon selection on in-game menu + +####################################################################################################################### diff --git a/docs/RoadMap.txt b/docs/RoadMap.txt index cb363cf7..0f48263e 100644 --- a/docs/RoadMap.txt +++ b/docs/RoadMap.txt @@ -1,39 +1,270 @@ -========================================================================================================================================= -VERSION 2.0.0 RELEASE #2 -========================================================================================================================================= -- para achar a linha de um crash: - # http://stackoverflow.com/questions/5314036/how-to-use-addr2line-in-android - # ~/Programas/android-studio/sdk/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-addr2line -C -f -e /home/iuri/Desenvolvimento/rockbot/build/packages/libapplication.so 0003a587 - # tem que copiar o libapplication.so antes de limpar os símbolos de debug - -################################################################################################################### -STAGES: -################################################################################################################### -- Zodiac: - # inimigos -- Castle1: - #importar minecart rockbot1 - # adicionar animações (máquinas, parafusos, etc) - # criar efeito luz piscando (tipo shovel knight) - # inimigos -- Castle3: repensar gráficos/estilo -- Castle4: - # refazer gráficos da parte de cidade - # inimigos -- Castle5: - # editar mapa - # inimigos - # chefe-final - - - - -- MUSICA BOA: http://modarchive.org/index.php?request=view_by_moduleid&query=159890 - -- tileset stage select map (add credits to ROCKBOT2): - # http://opengameart.org/content/js-saga-style-tileset-2-ascent - # http://opengameart.org/content/16x16-overworld-tiles# http://opengameart.org/content/overworld-tiles-0 - +########################################################################################################################## +FIREFLY +########################################################################################################################### +1. tornar externs em singletons +2. externalizar tudo que usa a SDL em classes do tipo interface + # estas classes devem ter apenas o que chama a SDL mesmo (abstraction layer) +3. reorganização de classes +4. importar coisas novas do firefly atual +5. usar json como formato de arquivo para guardar dados + # vantagem é flexibilidade, pois não usa número limitado de dados (array) + # por exemplo, número de foregrounds e backgrounds de tela não precisa ser fixo + +- no firefly, cada anim-type deve ter sua vulnerable-area (opcional) + # poder setar "is-jump-frame", "is-turn-frame" (daí não precisa a imagem ter o mirror), etc. Pode chamar de key-frame. + +- não armazenar imagem dos sprites, só a posição lógica deles, assim não duplica se repetir frames + +########################################################################################################################## +MEGAMIX +########################################################################################################################### +- rockmix: colocar checkpoints nas fases +- problema do restart da música ao morrer voltou (pelo menos no modo classic) +- teleport-out do Eddie esta travado no mesmo lugar (parece q gravity esta agindo) + # eddie não pode voltar ao resetar a sala ou fase +- pulo longo dos inimigos fica muito lento (Stone Man) + +- automatizar conversão de mod para mp3 no build Android + +- terminar estagios em RockMix + # Pharaoh Man + # Tomahawk Man + # Wood Man + - implementar chefes em RockMix - só os gráficos, projeteis e uma IA básica, sem implementar coisas novas (chega né?) + +- ver como fazer um appImage e um snap (colocar na store) + +40 x 53 + +=========================================================================================================================== +- always reload stage music on stage-restart, fixed music playing a part from the middle before restarting. +- fix friend npc teleport-out. +- friend npc that teleports out should not come back when changing map or dying. +- added sprites for Dragon Bot's teleporting. +- fix projectile of type spiral, avoid inc of zero to the radius, fix Dragon Bot's weapon. +- do not reused a RW for error font, causes problems in Windows. +- EDITOR: use opened game in the window title. + + +--------------------------------------------------------------------------------------------------------------------------- +- convert boss hp to classic style also. +- adjust object execution timer to make them faster +- show beaten faces as darkned in stage select screen +- show player celebrating victory after defeating boss even if is one that do not give you a weapon +- AI: fix turn confition for zig-zag-ahead +- pause game wqhen entering door to prevent rapid movement after it closes +- improve Rockbot 1 castle 3 tileset with a anim-tile for magnets. +- created new projectile trajectory, ahead-and-back, so that zig-zag won't stop when reaching initial-x. +- ground-damage block player jump for a second +- walk-on-roof should update direction to given destination +- improved blinking animation when player or enemies are invulnerabvle after being hit +- fixed chain projectile position for player and npcs +- increase star-shield speed a bit +- fixed auto-respawn for the second time (was not resetting the dead flag on revive method) +- improved hit_ground method to theck not only center, but left and right of the character's hitbox also + # prevents jump not being finished if center is still on air +--- +- classic in-game menu +- fix classic hud weapon value +- do not restart auto charging shot if dead +- music do not stop after dying +- more fixes for hitarea and vulnerable-area when npc has background +- added option in cheats menu to change between modern and classic styles +- adicionar efeito sonoro em plataformas ativas quando acionar elas +- adicionar som ao entrar em cápsula de teleporte +- fixes for object platform: + # if player is inside object, adjust position when moving him + # update map scrolling when moving player +- projectile appearing in position 0x0 for one frame (missing update-real-pos) +- improved error display and add log message into file +- EDITOR: fix vulnerable-area with bg in preview +- fix hitting enemy outside hit-area if it has background +- fix for npcs with background not showing when partially outside screen (use bg pos adjust and width) +- add option for door animation if it has frames in image +- fix jump interruption when hitting the head on solid +- fix stairs transitioning back when moving from bottom to top +- game-style option in editor can use used to bring back some mm-like presentation + # stage select + # player and boss death explosions + # got-weapon screen + # skull castle intro + # boss intro +- implement timed-bombs +- add sfx for shoot+jump destructible object +- fix entering stairs pos x adjust for different player sprites sizes +- player showing above overlay in teleport-in animation +- decrease enemies intangible time after hit to 200ms +- block that can be broken by shooting or jumping on it +- fix projectile trajectories up and down +- fix replace itself position +# EDDIE: + - npc amigável via behavior flag + - nova IA: throw item + - nova IA: teleport out +- EDITOR: should not be able to pick empty tile in anim selector +- map gfx animated bg: splits image into half for frames +- fix jump limits when inside quicksand +- new IA para walk ou fly: up to ground, down to inside ground +- fix projectile of type TARGET_EXACT +- add support for setting goto-next into reactions +- when changing between maps, keep scroll x position only if same image +- EDITOR: ask if user wants to same data before loading another game +- EDITOR: make easier to see the grid lines +- active platform and no-drop destructible item, when out of screen must reset state and position +- do not change to STAND from SLIDE when going through transition unless it has a door +- use hitbox area defined in editor for players instead of hardcoded one +- getting locked out if using frog in the top of the screen +- new shield type: using shield (animation type) and back (as in opposite of front). +- limit the max of spawned npcs from the origin point of the map-npc instead of the number of the main-npc data. +- two new object types, destructible (with regular weapons) and same that drops item. +- try to use ANIM_TYPE_STAND for hitbox if current anim-type is not used, avoiding falling to default frameSize. + # fix collision against npcs with background. +- NPC death explosion being shown at start point when falling in hold/ground (should have no explision at all) +- fly/to-player leaving shadow like dash +- HIGH: reflected projectiles were not being consumed/finished. +- AI: use move-speed to determine the range of the jump. +- new AI: walk ahead even if falls from platform. +- new AI: shoot projectile in several directions at same time. +- new AI: fall down in diagonal. +- new projectile types that fire multiple, 5 way up, 5 way down and 8 way. +- moving platform up and down. +- EDITOR: option "draw areas" that show objects and enemies rectangles, used when image has problems. +- EDITOR: add option for FG auto-scroll. +- EDITOR: npc with background was not being correctly shown when facing right direction. +- EDITOR: show the movie preview in other languages +- EDITOR: add option view->tileset. +- EDITOR: map reset must include links, enemies and objects. +- wave GFX in map background. + +########################################################################################################################### +0.7.0 +########################################################################################################################### +- EDITOR: não estava atualizando propriedades dos ncs ao mudar de npc + +########################################################################################################################### +0.62 +########################################################################################################################### + +==================== +- #2: Zodiac e Dragon estão com arte antiga (pixel) na seleção de fases +- Defect #138 - Projetil tipo circular (MageBot) não pode ser refletido pelo escudo do Rockbot +- melhor ajuste na posição de Glue.H para grudar na parede +- Fix hitboxes/vulçnerable-area when facing left. +- #2: Adjust hitbox for Kurupira so player can jump over him. +- Alguns efeitos sonoros tocavam mesmo com o audio desabilitado. +- Vidas e continue/game-over de volta. +- Menu de armas aprimorado com lista de armas, itens, vidas e partes de armadura. +- Novo tipo de item, crusher (tipo uma marreta que esmaga o player). +- #2: Ajustes estagio Circo. +- Adicionada reação de IA faltando, perto do jogador (1/4 distancia-movimento). +- #2: Correção IA do beast Bot, faz dash até a frente do player antes de usar o dash. +- #2: Correção nomes chefes final. +- Editor: update frames when changing between enemies. +- multiplicador zero para dano estava sendo ignorado. +- projetil não deve ser consumido se inimigo esta no tempo de intangibilidade. +- #2: adicionada Destrin Ship ao derrotar Machine. +- Improve sfx delay by lowering buffer size. +- #2: Novas músicas de Simone Bernacchia +- Continuar mostrando "presented by upperland studios" when new characters message is shown. +- Aviso de novos personagens só aparece a primeira vez que terminar o jogo. +- Quando interromper a boss intro por timeout, precisa setar o anim_type para FLY/STAND senão o chefe fica congelado. +- Fix HUD'1s boss text position. +- Tanque de recarga de armas e especial não recarregam armas. +- Pode armazenar até 9 tanques tipo arma e especial. +- Limpar input antes de mostrar diálogos de chefes. +- Melhorias sprites Daisie. + + +==================== +#1 +==================== + +- Several bug fixes, please check site for details. +- Lifes and continue/game-over are back. +- Improved weapons menu with weapon list, lifes and armor pieces. +- Improve sfx delay by lowering buffer size. +- Show new characters warning only on first game completion. +- Store up to 9 weapon and special tanks now. +- Daisie sprites improvements. + + +- Diversas correções de defeitos, veja mais informações no site para detalhes. +- Vidas e continue/game-over de volta. +- Menu de armas aprimorado com lista de armas, itens, vidas e partes de armadura. +- Improve sfx delay by lowering buffer size. +- Aviso de novos personagens só aparece a primeira vez que terminar o jogo. +- Pode armazenar até 9 tanques tipo arma e especial. +- Melhorias sprites Daisie. + + +########################################################################################################################### +TODO: +########################################################################################################################### + +- vulnerable-area do player esta não batendo com inimigos, dá para "entrar" em parte neles e não toma dano +(TESTAR) - tentar trocar nome da app android + + +- lag de audio: https://discourse.libsdl.org/t/sdl-mixer-sound-is-delayed/25609/5 + +- finalizar Rockbot 2: + # kurupira: melhorar IA + # ao recuperar porco ele deve sumir ao encostar no Kurupira + # atirar o porco troca sprites por um instante + + +- adicionar cutscene fim + # personagems olhando para o cidade ao longe (estilo ninja gaiden) + # so much effort, even building this whole castle + # using a parent grief + # I will make sure you won't leave prision, ever again, Dr. Destrin + +- gráfico do laser não esta certo (invertido) dependendo a direção que reflete + +########################################################################################################################### + + +Fix crash with old-style energy bar. +Fixes for drill-down AI. +Improved clear of text selection in picker. +Fix falling from jet when pressing down. +Fix music stopping after killing sub-boss. +Add license file. +Fix projectile being stuck due to screen scrolling. +Fix Lullaby projectile when enemy is away. +Allow coil and jet to work over another object like savepoints. + +#1: Change giant fly to UFO and fix its behavior. +#1: Fix for zig-zag in mines that are short of movement. + + +########################################################################################################################### +v3 +########################################################################################################################### +- refatorar o código como eu fiz com a engine do project firefly, +ou fazer um tipo de "rebase" do código dele para ter as últimas alterações e correções +- rockbot sera um personagem jogavel no project firefly com fases em HD inspiradas no original +- adicionar "centelhas" ao redor do personagem no tiro carregado - https://www.youtube.com/watch?v=z-bwxtXMnLM +########################################################################################################################### + + +########################################################################################################################### +v 0.44 +########################################################################################################################### +(ver issues do github e log) + +- EDITOR: bug no seletor de layer de parallax (duplicou os números de 0 a 10) + +=========================================================================================================================== + +=========================================================================================================================== + +- EDITOR: + # usar opção de game-type para ter Rockbot e Megaman (modern/vintage) + # em modo 8 bit vintage as barras de energia e seleção de armas ficam tipo mm + # salvar a seleção de theme dark/default + +=========================================================================================================================== - idéias: # http://opengameart.org/content/opp2017-sprites-characters-objects-effects # https://opengameart.org/content/opp2017-village-and-room @@ -74,6 +305,19 @@ beast, valkyrie, gear, snow, dragon, kurupira, phanton, zodiac - inspiration for enemies behavior: https://www.youtube.com/watch?v=Zm7qkZsGNqM +################################################################################################################### +PLAYSTATION 2: +################################################################################################################### +ERROR: Could not open read file 'mass:/PS2/Rockbot//games/Rockbot2/images/icon.sys' +show_debug_msg - msg: ERROR #1 +show_debug_msg - msg: mass:/PS2/Rockbot//games/Rockbot2/images/icon.sys +open name mass:/PS2/Rockbot/games/Rockbot2/images/rockbot_ps2_icon.icn flag 1 data 45d78 +open fd = -2 +ERROR: Could not open read file 'mass:/PS2/Rockbot//games/Rockbot2/images/rockbot_ps2_icon.icn' +show_debug_msg - msg: ERROR #1 +show_debug_msg - msg: mass:/PS2/Rockbot//games/Rockbot2/images/rockbot_ps2_icon.icn + + ------------------------------------------- VAPPEBOY: ------------------------------------------- @@ -463,5 +707,3 @@ VERSION 2.0.9 VERSION 2.0.10 ========================================================================================================================================= - megaman 10 features (TBD) - - diff --git a/docs/crashes.txt b/docs/crashes.txt index ce497693..e69de29b 100644 --- a/docs/crashes.txt +++ b/docs/crashes.txt @@ -1,154 +0,0 @@ -05-22 22:41:12.070 10437 10462 I ###ROCKBOT2###: character::gravity #6 -05-22 22:41:12.087 10437 10462 I ###ROCKBOT2###: MAP::move_npcs - execute #[0] -05-22 22:41:12.087 10437 10462 I ###ROCKBOT2###: character::gravity #0, id[12] -05-22 22:41:12.087 10437 10462 I ###ROCKBOT2###: character::gravity #0.1, name[SEAHORSE BOT] -05-22 22:41:12.087 10437 10462 I ###ROCKBOT2###: character::gravity #1 -05-22 22:41:12.087 10437 10462 I ###ROCKBOT2###: character::gravity #2 -05-22 22:41:12.087 10437 10462 I ###ROCKBOT2###: character::gravity #3 -05-22 22:41:12.087 10437 10462 I ###ROCKBOT2###: character::gravity #4 -05-22 22:41:12.087 10437 10462 I ###ROCKBOT2###: character::gravity #5 -05-22 22:41:12.087 10437 10462 I ###ROCKBOT2###: character::gravity #5.1 -05-22 22:41:12.087 10437 10462 I ###ROCKBOT2###: character::gravity #6 -05-22 22:41:12.104 10437 10462 I ###ROCKBOT2###: MAP::move_npcs - execute #[0] -05-22 22:41:12.104 10437 10462 I ###ROCKBOT2###: character::gravity #0, id[12] -05-22 22:41:12.104 10437 10462 I ###ROCKBOT2###: character::gravity #0.1, name[SEAHORSE BOT] -05-22 22:41:12.104 10437 10462 I ###ROCKBOT2###: character::gravity #1 -05-22 22:41:12.104 10437 10462 I ###ROCKBOT2###: character::gravity #2 -05-22 22:41:12.104 10437 10462 I ###ROCKBOT2###: character::gravity #3 -05-22 22:41:12.104 10437 10462 I ###ROCKBOT2###: character::gravity #4 -05-22 22:41:12.104 10437 10462 I ###ROCKBOT2###: character::gravity #5 -05-22 22:41:12.104 10437 10462 I ###ROCKBOT2###: character::gravity #5.1 -05-22 22:41:12.104 10437 10462 I ###ROCKBOT2###: character::gravity #6 -05-22 22:41:12.120 10437 10462 I ###ROCKBOT2###: MAP::move_npcs - execute #[0] -05-22 22:41:12.120 10437 10462 I ###ROCKBOT2###: character::gravity #0, id[12] -05-22 22:41:12.120 10437 10462 I ###ROCKBOT2###: character::gravity #0.1, name[SEAHORSE BOT] -05-22 22:41:12.120 10437 10462 I ###ROCKBOT2###: character::gravity #1 -05-22 22:41:12.120 10437 10462 I ###ROCKBOT2###: character::gravity #2 -05-22 22:41:12.120 10437 10462 I ###ROCKBOT2###: character::gravity #3 -05-22 22:41:12.120 10437 10462 I ###ROCKBOT2###: character::gravity #4 -05-22 22:41:12.120 10437 10462 I ###ROCKBOT2###: character::gravity #5 -05-22 22:41:12.120 10437 10462 I ###ROCKBOT2###: character::gravity #5.1 -05-22 22:41:12.120 10437 10462 I ###ROCKBOT2###: character::gravity #6 -05-22 22:41:12.137 10437 10462 I ###ROCKBOT2###: MAP::move_npcs - execute #[0] -05-22 22:41:12.137 10437 10462 I ###ROCKBOT2###: character::gravity #0, id[12] -05-22 22:41:12.137 10437 10462 I ###ROCKBOT2###: character::gravity #0.1, name[SEAHORSE BOT] -05-22 22:41:12.137 10437 10462 I ###ROCKBOT2###: character::gravity #1 -05-22 22:41:12.137 10437 10462 I ###ROCKBOT2###: character::gravity #2 -05-22 22:41:12.137 10437 10462 I ###ROCKBOT2###: character::gravity #3 -05-22 22:41:12.137 10437 10462 I ###ROCKBOT2###: character::gravity #4 -05-22 22:41:12.137 10437 10462 I ###ROCKBOT2###: character::gravity #5 -05-22 22:41:12.137 10437 10462 I ###ROCKBOT2###: character::gravity #5.1 -05-22 22:41:12.137 10437 10462 I ###ROCKBOT2###: character::gravity #6 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: MAP::move_npcs - execute #[0] -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: NPC::boss_move::EXECUTE_AI -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: NPC::boss_move::GRAVITY #2, must_break_loop[0] -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #0, id[12] -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #0.1, name[SEAHORSE BOT] -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #1 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #2 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #3 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #4 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #5 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #5.1 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #6 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #0, id[12] -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #0.1, name[SEAHORSE BOT] -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #1 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #2 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #3 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #4 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #5 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #5.1 -05-22 22:41:12.154 10437 10462 I ###ROCKBOT2###: character::gravity #6 -05-22 22:41:12.170 10437 10462 I ###ROCKBOT2###: MAP::move_npcs - execute #[0] -05-22 22:41:12.170 10437 10462 I ###ROCKBOT2###: character::gravity #0, id[12] -05-22 22:41:12.171 10437 10462 I ###ROCKBOT2###: character::gravity #0.1, name[SEAHORSE BOT] -05-22 22:41:12.171 10437 10462 I ###ROCKBOT2###: character::gravity #1 -05-22 22:41:12.171 10437 10462 I ###ROCKBOT2###: character::gravity #2 -05-22 22:41:12.171 10437 10462 I ###ROCKBOT2###: character::gravity #3 -05-22 22:41:12.171 10437 10462 I ###ROCKBOT2###: character::gravity #4 -05-22 22:41:12.171 10437 10462 I ###ROCKBOT2###: character::gravity #5 -05-22 22:41:12.171 10437 10462 I ###ROCKBOT2###: character::gravity #5.1 -05-22 22:41:12.171 10437 10462 I ###ROCKBOT2###: character::gravity #6 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: MAP::move_npcs - execute #[0] -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: NPC::boss_move::EXECUTE_AI -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: CHAR::test_change_position - name[SEAHORSE BOT] -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: CHAR::test_change_position - name[SEAHORSE BOT] -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: NPC::boss_move::GRAVITY #2, must_break_loop[0] -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #0, id[12] -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #0.1, name[SEAHORSE BOT] -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #1 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #2 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #3 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #4 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #5 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #5.1 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #6 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #0, id[12] -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #0.1, name[SEAHORSE BOT] -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #1 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #2 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #3 -05-22 22:41:12.187 10437 10462 I ###ROCKBOT2###: character::gravity #4 -05-22 22:41:12.188 10437 10462 I ###ROCKBOT2###: character::gravity #5 -05-22 22:41:12.188 10437 10462 I ###ROCKBOT2###: character::gravity #5.1 -05-22 22:41:12.188 10437 10462 I ###ROCKBOT2###: character::gravity #6 -05-22 22:41:12.205 10437 10462 I ###ROCKBOT2###: MAP::move_npcs - execute #[0] -05-22 22:41:12.206 10437 10462 F libc : Fatal signal 6 (SIGABRT), code -6 in tid 10462 (GLThread) -05-22 22:41:12.215 436 436 W : debuggerd: handling request: pid=10437 uid=10161 gid=10161 tid=10462 -05-22 22:41:12.365 548 548 I SFPerfTracer: triggers: (rate: 3588:720233) (compose: 1:209) (post: 208:5530) (render: 220:4351) (3816:2875731 frames) (3817:3102998) -05-22 22:41:12.365 548 548 D SFPerfTracer: layers: (1:8) (StatusBar (0xb1ac5800): 8:405518)* (com.android.systemui.ImageWallpaper (0xb1ac4400): 0:216861)* (DimLayerController/Stack=0 (0xb1ac3000): 0:11270)* (Sprite (0xb0894800): 11:927)* (animation background stackId=1 (0xb0893400): 0:237)* (net.upperland.rockbot/net.upperland.rockbot.MainActivity (0xb0892000): 0:14)* (SurfaceView - net.upperland.rockbot/net.upperland.rockbot.MainActivity (0xb0895c00): 3816:19348) (SurfaceView - net.upperland.rockbot/net.upperland.rockbot.MainActivity (0xb1ac6c00): 0:12)* -05-22 22:41:12.386 11120 11120 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** -05-22 22:41:12.387 11120 11120 F DEBUG : Build fingerprint: 'motorola/cedric/cedric:7.0/NPP25.137-33/31:user/release-keys' -05-22 22:41:12.387 11120 11120 F DEBUG : Revision: 'p500' -05-22 22:41:12.387 11120 11120 F DEBUG : ABI: 'arm' -05-22 22:41:12.387 11120 11120 F DEBUG : pid: 10437, tid: 10462, name: GLThread >>> net.upperland.rockbot <<< -05-22 22:41:12.387 11120 11120 F DEBUG : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr -------- -05-22 22:41:12.387 11120 11120 F DEBUG : r0 00000000 r1 000028de r2 00000006 r3 00000008 -05-22 22:41:12.387 11120 11120 F DEBUG : r4 9a2d1978 r5 00000006 r6 9a2d1920 r7 0000010c -05-22 22:41:12.387 11120 11120 F DEBUG : r8 9a2d0ce0 r9 9a1a7cf8 sl 9a1bbfbc fp 9a2d09fc -05-22 22:41:12.387 11120 11120 F DEBUG : ip 00000000 sp 9a2d0990 lr b5efd357 pc b5effbb4 cpsr 200f0010 -05-22 22:41:12.401 11120 11120 F DEBUG : -05-22 22:41:12.401 11120 11120 F DEBUG : backtrace: -05-22 22:41:12.401 11120 11120 F DEBUG : #00 pc 00049bb4 /system/lib/libc.so (tgkill+12) -05-22 22:41:12.401 11120 11120 F DEBUG : #01 pc 00047353 /system/lib/libc.so (pthread_kill+34) -05-22 22:41:12.401 11120 11120 F DEBUG : #02 pc 0001d525 /system/lib/libc.so (raise+10) -05-22 22:41:12.401 11120 11120 F DEBUG : #03 pc 00019071 /system/lib/libc.so (__libc_android_abort+34) -05-22 22:41:12.401 11120 11120 F DEBUG : #04 pc 000170d4 /system/lib/libc.so (abort+4) -05-22 22:41:12.401 11120 11120 F DEBUG : #05 pc 000ebedc /data/app/net.upperland.rockbot-1/lib/arm/libapplication.so (_ZN9__gnu_cxx27__verbose_terminate_handlerEv+348) -05-22 22:41:12.401 11120 11120 F DEBUG : #06 pc 0009ad3c /data/app/net.upperland.rockbot-1/lib/arm/libapplication.so (_ZN10__cxxabiv111__terminateEPFvvE+8) -05-22 22:41:12.401 11120 11120 F DEBUG : #07 pc 0009aebc /data/app/net.upperland.rockbot-1/lib/arm/libapplication.so (_ZSt9terminatev+12) -05-22 22:41:12.401 11120 11120 F DEBUG : #08 pc 0009b100 /data/app/net.upperland.rockbot-1/lib/arm/libapplication.so (__cxa_throw+156) -05-22 22:41:12.401 11120 11120 F DEBUG : #09 pc 000e27b4 /data/app/net.upperland.rockbot-1/lib/arm/libapplication.so -05-22 22:41:12.401 11120 11120 F DEBUG : #10 pc 00041b37 /data/app/net.upperland.rockbot-1/lib/arm/libapplication.so (_ZN8classMap9move_npcsEv+3046) -05-22 22:41:12.401 11120 11120 F DEBUG : #11 pc 0003af63 /data/app/net.upperland.rockbot-1/lib/arm/libapplication.so (_ZN5stage9move_npcsEv+6) -05-22 22:41:12.401 11120 11120 F DEBUG : #12 pc 00036503 /data/app/net.upperland.rockbot-1/lib/arm/libapplication.so (_ZN4game8showGameEbb+366) -05-22 22:41:12.402 11120 11120 F DEBUG : #13 pc 0001e12d /data/app/net.upperland.rockbot-1/lib/arm/libapplication.so (SDL_main+1636) -05-22 22:41:12.402 11120 11120 F DEBUG : #14 pc 0001e6ff /data/app/net.upperland.rockbot-1/lib/arm/libapplication.so (Java_net_upperland_rockbot_DemoRenderer_nativeInit+22) -05-22 22:41:12.402 11120 11120 F DEBUG : #15 pc 0039b913 /data/app/net.upperland.rockbot-1/oat/arm/base.odex (offset 0x357000) -05-22 22:41:12.405 857 857 I MSM-irqbalance: Decided to move IRQ18 from CPU1 [P:0] to CPU5 [P:1] (banned) -05-22 22:41:12.405 857 857 I MSM-irqbalance: Decided to move IRQ18 from CPU2 [P:0] to CPU7 [P:1] (banned) -05-22 22:41:12.406 857 857 I MSM-irqbalance: Decided to move IRQ18 from CPU3 [P:0] to CPU6 [P:1] (banned) -05-22 22:41:12.406 857 857 I MSM-irqbalance: Decided to move IRQ18 from CPU0 [P:0] to CPU4 [P:1] (banned) -05-22 22:41:12.827 737 737 I cnss-daemon: RTM_NEWNEIGH message received: 28 -05-22 22:41:12.827 737 737 E cnss-daemon: Stale or unreachable neighbors, ndm state: 16 -05-22 22:41:12.837 737 737 I cnss-daemon: RTM_NEWNEIGH message received: 28 -05-22 22:41:12.837 737 737 E cnss-daemon: Stale or unreachable neighbors, ndm state: 4 -05-22 22:41:12.838 737 737 I cnss-daemon: RTM_NEWNEIGH message received: 28 -05-22 22:41:12.838 737 737 I cnss-daemon: NDA_DST received: 192.168.1.1 ul: 16885952 -05-22 22:41:12.838 737 737 I cnss-daemon: NDA_LLADDR received -05-22 22:41:13.350 725 1034 I AudioFlinger: BUFFER TIMEOUT: remove(4096) from active list on thread 0xa5b03800 -05-22 22:41:13.380 725 991 D APM_AudioPolicyManager: stopOutput() output 21, stream 3, session 17465 -05-22 22:41:13.938 11120 11120 E : debuggerd: failed to kill process 10437: No such process -05-22 22:41:13.939 1573 11123 W ActivityManager: Force finishing activity net.upperland.rockbot/.MainActivity -05-22 22:41:13.945 1573 11123 W ActivityManager: Force finishing activity net.upperland.rockbot/.MainActivity -05-22 22:41:13.945 1573 11123 W ActivityManager: Duplicate finish request for ActivityRecord{4819a71 u0 net.upperland.rockbot/.MainActivity t953 f} -05-22 22:41:13.948 436 436 W : debuggerd: resuming target 10437 -05-22 22:41:13.963 1573 2792 I WindowManager: WIN DEATH: Window{779c1b6 u0 net.upperland.rockbot/net.upperland.rockbot.MainActivity} -05-22 22:41:13.966 1573 23230 I ActivityManager: Process net.upperland.rockbot (pid 10437) has died -05-22 22:41:13.966 1573 23230 D ActivityManager: cleanUpApplicationRecord -- 10437 -05-22 22:41:13.975 1573 1761 W InputDispatcher: channel '779c1b6 net.upperland.rockbot/net.upperland.rockbot.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0xd -05-22 22:41:13.975 1573 1761 E InputDispatcher: channel '779c1b6 net.upperland.rockbot/net.upperland.rockbot.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed! -05-22 22:41:13.975 1573 2792 W InputDispatcher: Attempted to unregister already unregistered input channel '779c1b6 net.upperland.rockbot/net.upperland.rockbot.MainActivity (server)' -05-22 22:41:13.975 1573 2792 W WindowManager: Force-removing child win Window{f7573ad u0 SurfaceView - net.upperland.rockbot/net.upperland.rockbot.MainActivity} from container Window{779c1b6 u0 net.upperland.rockbot/net.upperland.rockbot.MainActivity} -05-22 22:41:13.976 1573 2792 I WindowManager: Destroying surface Surface(name=SurfaceView - net.upperland.rockbot/net.upperland.rockbot.MainActivity) called by com.android.server.wm.WindowStateAnimator.destroySurface:2067 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:896 com.android.server.wm.WindowState.removeLocked:1457 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2546 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2525 com.android.server.wm.WindowManagerService.removeWindowLocked:2504 com.android.server.wm.WindowState$DeathRecipient.binderDied:1801 android.os.BinderProxy.sendDeathNotice:688 diff --git a/docs/game_manual.cpp b/docs/game_manual.cpp deleted file mode 100644 index d2697644..00000000 --- a/docs/game_manual.cpp +++ /dev/null @@ -1,564 +0,0 @@ -#include "game_manual.h" - -#include "graphicslib.h" -extern graphicsLib graphLib; - -#include "inputlib.h" -extern inputLib input; - -#include "soundlib.h" -extern soundLib soundManager; - -#include "timerlib.h" -extern timerLib timer; - -#include "graphic/draw.h" -extern draw draw_lib; - -#include "soundlib.h" -extern soundLib soundManager; - -extern std::string GAMENAME; - -#include "strings_map.h" - -game_manual::game_manual() -{ - generate_pages(); -} - -void game_manual::execute() -{ - int page = 0; - input.clean(); - timer.delay(10); - - draw_page(page); - - while (true) { - input.read_input(); - - if (input.p1_input[BTN_LEFT] == 1 || input.p1_input[BTN_RIGHT] == 1) { - soundManager.play_sfx(SFX_CURSOR); - if (input.p1_input[BTN_LEFT] == 1) { - page--; - } else if (input.p1_input[BTN_RIGHT] == 1) { - page++; - } - - //std::cout << "PAGE[BEFORE]: " << page << ", list.size: " << page_list.size() << std::endl; - - if (page > 0 && page >= page_list.size()) { - //std::cout << "RESET #1" << std::endl; - page = 0; - } else if (page < 0) { - //std::cout << "RESET #2" << std::endl; - page = page_list.size()-1; - } - - //std::cout << "PAGE[AFTER]: " << page << std::endl; - - draw_page(page); - draw_lib.update_screen(); - } - - if (input.p1_input[BTN_ATTACK] == 1 || input.p1_input[BTN_JUMP] == 1 || input.p1_input[BTN_START] == 1) { - break; - } - - input.clean(); - timer.delay(10); - - } -} - - -void game_manual::draw_page(int page_n) -{ - //std::cout << "### game_manual::draw_page - page_n[" << page_n << "], page_list.size[" << page_list.size() << "]" << std::endl; - if (page_n < 0 || page_n >= page_list.size()) { - return; - } - st_manual_page temp = page_list.at(page_n); - graphLib.clear_area(0, 0, RES_W, RES_H, 0, 0, 0); - - int initial_y = 8; - st_color title_color(95, 151, 255); - - for (int i=0; i"); - - graphLib.draw_centered_text(RES_H-12, page_line); - - draw_bottom(); - graphLib.updateScreen(); - -} - -void game_manual::draw_bottom() -{ - graphicsLib_gSurface *surface_dpad = draw_lib.get_input_surface(INPUT_IMAGES_DPAD_LEFTRIGHT); - graphLib.showSurfaceAt(surface_dpad, st_position(4, RES_H-surface_dpad->height-4), false); - graphLib.draw_text(6+surface_dpad->width, RES_H-surface_dpad->height-1, std::string("CHANGE")); - - graphicsLib_gSurface *surface_b = draw_lib.get_input_surface(INPUT_IMAGES_B); - graphLib.showSurfaceAt(surface_b, st_position(RES_W-54-surface_b->width, RES_H-surface_b->height-4), false); - graphLib.draw_text(RES_W-50, RES_H-surface_dpad->height-1, std::string("RETURN")); -} - -void game_manual::generate_pages() -{ - struct st_manual_page temp; - - std::string game_name_upper = strings_map::get_instance()->toupper(GAMENAME); - - temp.add_line_text("== CONTROLING CHARACTER [1] =="); - temp.add_line_text("MOVE LEFT OR RIGHT:"); - temp.add_line_text("PRESS CONTROL PAD LEFT/RIGHT."); - temp.add_line_text(""); - temp.add_line_text("CLIMB UP OR DOWN:"); - temp.add_line_text("PRESS CONTROL PAD UP/DOWN."); - temp.add_line_text(""); - temp.add_line_text("JUMP: PRESS (A) BUTTON. THE LONGER"); - temp.add_line_text("YOU HOLD DOWN BUTTON, THE HIGHER"); - temp.add_line_text("YOU WILL JUMP."); - temp.add_line_text(""); - temp.add_line_text("FIRE WEAPONS:"); - temp.add_line_text("PRESS (B) BUTTON. PRESS (A) AND (B)"); - temp.add_line_text("TOGETHER TO FIRE WHILE JUMPING."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== CONTROLING CHARACTER [2] =="); - temp.add_line_text("SHIELD: PRESS AND HOLD (Y) BUTTON"); - temp.add_line_text("TO DEFLECT PROJECTILES. [*]"); - temp.add_line_text(""); - temp.add_line_text("SLIDE/DASH: PRESS (X) BUTTON."); - temp.add_line_text("HOLD BUTTON TO MOVE LONGER. [*]"); - temp.add_line_text(""); - temp.add_line_text("[*] SOME CHARACTERS MAY NOT"); - temp.add_line_text("HAVE THIS ABILITY, SO THE BUTTON"); - temp.add_line_text("WILL NOT EXECUTE ANY ACTION."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== GETTING STARTED =="); - /// @TODO: game-name // - temp.add_line_text("INSERT " + game_name_upper + " MEGA PACK INTO YOUR"); - temp.add_line_text("ENTERTAINMENT SYSTEM."); - temp.add_line_text(""); - temp.add_line_text("AT THE TITLE SCREEN, PRESS UP/DOWN"); - temp.add_line_text("TO CHOOSE MODE, THEN PRESS START."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== MODES =="); - temp.add_line_text("NEW GAME:"); - temp.add_line_text("START A GAME FROM BEGGINING,"); - temp.add_line_text("WILL ERASE PREVIOUS SAVED GAME."); - temp.add_line_text(""); - temp.add_line_text("LOAD GAME:"); - temp.add_line_text("RESUMES A GAME THAT WAS SAVED."); - temp.add_line_text("GAME IS SAVED EACH TIME YOU BEAT"); - temp.add_line_text("A BOSS OR LEAVE GAME OR STAGE."); - temp.add_line_text(""); - temp.add_line_text("CONFIG:"); - temp.add_line_text("CHANGE GAME AND DEVICE SETTINGS."); - temp.add_line_text(""); - temp.add_line_text("ABOUT:"); - temp.add_line_text("SHOW GAME CREDITS AND INFORMATION."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== CONFIG =="); - temp.add_line_text("IN CONFIG YOU CAN CHANGE SEVERAL"); - temp.add_line_text("SETTINGS FOR THE GAME, SUCH AS"); - temp.add_line_text("AUDIO, INPUT AND VIDEO."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== AUDIO OPTIONS =="); - temp.add_line_text("YOU CAN SELECT ENABLE/DISABLE TO"); - temp.add_line_text("TURN ON OR OFF THE MUSIC AND"); - temp.add_line_text("SOUND EFFECTS ON THE GAME."); - temp.add_line_text(""); - temp.add_line_text("YOU CAN ALSO SET VOLUME LEVELS"); - temp.add_line_text("FOR BOTH MUSIC AND SOUND EFFECTS."); - temp.add_line_text("FOR THAT, ENTER OPTION AND USE"); - temp.add_line_text("LEFT AND RIGHT CONTROLS TO INCREASE"); - temp.add_line_text("OR DECREASE THE VOLUME VALUE."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== INPUT OPTIONS [1] =="); - temp.add_line_text("CONFIG BUTTONS:"); - temp.add_line_text("IN THIS OPTION YOU CAN SET THE"); - temp.add_line_text("KEY OR BUTTON IN YOUR KEYBOARD,"); - temp.add_line_text("JOYSTICK OR GAME CONTROLLER FOR"); - temp.add_line_text("THE GIVEN GAME ACTION."); - temp.add_line_text("YOU CAN ALSO RESET THE CONTROLS"); - temp.add_line_text("TO DEFAULT KEYS/BUTTONS HERE."); - temp.add_line_text(""); - temp.add_line_text("DIRECTIONAL MODE:"); - temp.add_line_text("YOU CAN CHOOSE BETWEEN USING"); - temp.add_line_text("THE DIGITAL KEYPAD OR THE"); - temp.add_line_text("ANALOG STICK FOR CONTROLLERS"); - temp.add_line_text("THAT HAVE BOTH."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== INPUT OPTIONS [2] =="); - temp.add_line_text("SELECTED JOYSTICK:"); - temp.add_line_text("IF YOUR GAME DEVICE HAS MORE THAN"); - temp.add_line_text("ONE GAMER CONTROLLER CONNECTED,"); - temp.add_line_text("YOU CAN CHOOSE WITCH ONE WILL BE"); - temp.add_line_text("USED TO CONTROL YOUR CHARACTER."); - temp.add_line_text(""); - temp.add_line_text("TURBO MODE:"); - temp.add_line_text("IF ENABLED, YOU CAN HOLD THE"); - temp.add_line_text("ATTACK BUTTON AND THE CHARACTER"); - temp.add_line_text("WILL KEEP FIRING SHOTS."); - temp.add_line_text("NOTE: IN THIS MODE YOU CAN'T USE"); - temp.add_line_text("CHARGED WEAPONS."); - page_list.push_back(temp); - temp.clear_text(); - - - temp.add_line_text("== VIDEO OPTIONS =="); - temp.add_line_text("VIDEO MODE: ON PC PLATFORMS,"); - temp.add_line_text("YOU CAN SELECT BETWEEN MODES"); - temp.add_line_text("UNSCALED, DOUBLE SIZE AND SCALE2X,"); - temp.add_line_text("THAT IS UPSCALED WITH"); - temp.add_line_text("SMOOTHENING FILTER. [*]"); - temp.add_line_text(""); - temp.add_line_text("[*] FOR THIS CHANGE TO TAKE EFFECT,"); - temp.add_line_text("YOU NEED TO RESTART THE GAME."); - temp.add_line_text(""); - temp.add_line_text("FULLSCREEN:"); - temp.add_line_text("IN DEVICES THAT SUPPORT THIS OPTION,"); - temp.add_line_text("THE VIDEO WILL SWITCH TO USE"); - temp.add_line_text("ENTIRE SCREEN."); - temp.add_line_text("IN PSP, IT WILL CHANGED BETWEEN"); - temp.add_line_text("KEEP ASPECT RATIO ON OR OFF."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== CONFIG [ANDROID] =="); - temp.add_line_text("WHEN PLAYING ON AN ANDROID"); - temp.add_line_text("GAME DEVICE, YOU CAN USE THE"); - temp.add_line_text("GAME CONFIG TO SET OPTIONS"); - temp.add_line_text("SUCH AS TOUCH CONTROLS"); - temp.add_line_text("SIZE AND POSITION."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== PLAYING THE GAME [1] =="); - temp.add_line_text("FIGHT YOUR WAY IN A MAZE FULL OF"); - temp.add_line_text("MAD ROBOTS AND CRAZY MACHINES."); - temp.add_line_text("YOU WILL HAVE TO DEFEAT EIGHT"); - temp.add_line_text("ROBOT MASTERS THAT USE INCREDIBLE"); - temp.add_line_text("WEAPONS THAT YOU ACQUIRE ONCE"); - temp.add_line_text("THEY ARE DESTROYED."); - temp.add_line_text(""); - temp.add_line_text("TO ACHIEVE VICTORY YOU CAN"); - temp.add_line_text("RUN, SLIDE, JUMP AND SHOOT"); - temp.add_line_text("IN ORDER TO SAFELY REACH THE"); - temp.add_line_text("END OF EACH STAGE"); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== PLAYING THE GAME [2] =="); - temp.add_line_text("IN THE LEFT SIDE OF THE SCREEN"); - temp.add_line_text("THERE IS HEALTH METER. WHEN IT"); - temp.add_line_text("REACHES ZERO, YOU LOOSE A CHANCE."); - temp.add_line_text(""); - temp.add_line_text("EVERY TIME YOU ARE HIT BY"); - temp.add_line_text("A PROJECTILE OR TOUCH AN ENEMY,"); - temp.add_line_text("YOUR HELTH DECREASES A BIT."); - temp.add_line_text("WHEN YOU HIT SPIKES, ALL YOUR"); - temp.add_line_text("HEALTH IS GONE AT ONCE. TAKE CARE!"); - temp.add_line_text(""); - temp.add_line_text("PICK ENERGY OR WEAPON PELLETS"); - temp.add_line_text("AND ENERGY TANKS TO INCREASE"); - temp.add_line_text("YOUR CHANCES TO FINISH STAGE."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== PLAYING THE GAME [3] =="); - temp.add_line_text("WHEN YOU LOSE A CHANCE, YOU START"); - temp.add_line_text("STAGE AGAIN FROM LAST CHECKPOINT"); - temp.add_line_text("OR STAGE START POINT."); - temp.add_line_text(""); - temp.add_line_text("IF YOU LOSE ALL YOUR CHANCES,"); - temp.add_line_text("THE GAME ENDS AND YOU HAVE TO"); - temp.add_line_text("PICK AGAIN A STAGE TO START OVER."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== POWER UP [1] =="); - temp.add_line_text(""); - temp.add_line_text("DURING STAGE OR WHEN DEFEATING"); - temp.add_line_text("AND ENEMY, YOU CAN GET ITEMS THAT"); - temp.add_line_text("HELP YOU TO FINISH THE LEVEL."); - temp.add_line_text(""); - - temp.add_line_text("ENERGY BALL OR PELLET:"); - temp.add_line_text("REFILL PART OF YOUR HEALTH METTER."); - - temp.add_line_text(""); - temp.add_line_text("WEAPON BALL OR PELLET:"); - temp.add_line_text("REFILL A WEAPON ENERGY. YOU NEED"); - temp.add_line_text("TO SELECT A WEAPON BEFORE GETTING"); - temp.add_line_text("THE ITEM FOR IT TO WORK."); - - temp.add_line_text(""); - temp.add_line_text("LIFE (1UP):"); - temp.add_line_text("GIVES YOU AND EXTRA CHANCE TO"); - temp.add_line_text("AVOID GAME OVER."); - temp.add_line_text(""); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== POWER UP [2] =="); - temp.add_line_text(""); - temp.add_line_text("RED TANK:"); - temp.add_line_text("STORES HEALTH ENERY AND CAN BE"); - temp.add_line_text("USED AT ANY TIME BY ACCESSING"); - temp.add_line_text("THE WEAPONS MENU. FILL COMPLETLY"); - temp.add_line_text("YOUR HEALTH METTER."); - - temp.add_line_text(""); - temp.add_line_text("GREEN TANK:"); - temp.add_line_text("FILL ALL YOUR WEAPONS ENERGY,"); - temp.add_line_text("CAN BE USED IN THE WEAPONS"); - temp.add_line_text("MENU AT ANY TIME."); - - temp.add_line_text(""); - temp.add_line_text("YELLOW TANK:"); - temp.add_line_text("THIS SUPER TANK WILL"); - temp.add_line_text("REFILL BOTH YOUR HEALTH"); - temp.add_line_text("AS ALL YOUR WEAPONS"); - temp.add_line_text("ENERGY!"); - - page_list.push_back(temp); - temp.clear_text(); - - - temp.add_line_text("== SPECIAL ITEMS =="); - temp.add_line_text(""); - temp.add_line_text("THERE ARE A FEW SECRET SPOTS"); - temp.add_line_text("WHERE YOU CAN GET SPECIAL ITEMS."); - temp.add_line_text(""); - temp.add_line_text("THERE ARE THREE ARMOR PIECES,"); - temp.add_line_text("EACH ONE WILL GIVE YOU A NEW"); - temp.add_line_text("ABILITY, LIKE DASHING ON MIDAIR,"); - temp.add_line_text("FIRING SPECIAL WEAPONS OR"); - temp.add_line_text("TAKING HALF DAMAGE."); - temp.add_line_text(""); - temp.add_line_text("EACH CHARACTER YOU CAN PLAY"); - temp.add_line_text("HAVE DIFFERENT ABILITIES FOR"); - temp.add_line_text("EACH ARMOR PIECE HE GETS."); - page_list.push_back(temp); - temp.clear_text(); - - - temp.add_line_text("== TIPS FOR WINNING =="); - temp.add_line_text(""); - temp.add_line_text("IF YOUR CHARACTER CAN SLIDE,"); - temp.add_line_text("YOU CAN PASS UNDER OBSTACLES."); - temp.add_line_text(""); - temp.add_line_text("WHEN DASHING, PRESS JUMP"); - temp.add_line_text("TO MAKE A REALLY LONG CROSS."); - temp.add_line_text(""); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== CHARACTERS [ROCK] =="); - temp.add_line_text(""); - temp.add_line_text("THE HERO OF THE CITY AFTER"); - temp.add_line_text("SAVING IT FROM DR. DESTRIN,"); - temp.add_line_text("ROCKBOT AS GOOD AS IT GETS,"); - temp.add_line_text("ALWAYS FOLLOWING THE LAWS"); - temp.add_line_text("AND ORDERS FROM GOOD DOCTOR"); - temp.add_line_text("KANOTUS, HIS CREATOR."); - temp.add_line_text(""); - temp.add_line_text("WITH ROCKBOT YOU CAN FIRE"); - temp.add_line_text("CHARGED SHOTS, SLIDE UNDER"); - temp.add_line_text("OBSTACLES AND USE A SHIELD."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== CHARACTERS [CANDY] =="); - temp.add_line_text(""); - temp.add_line_text("CREATED TO BE AN MERE LAB"); - temp.add_line_text("ASSISTANT FOR DR. KANOTUS,"); - temp.add_line_text("CANDYBOT SAW NO OPTION BUT"); - temp.add_line_text("TO START FIGHTING TOGETHER"); - temp.add_line_text("WITH HER BROTHER, ROCK, WHEN"); - temp.add_line_text("HER OTHER BROTHER, BETA, LEFT."); - temp.add_line_text(""); - temp.add_line_text("CANDY CAN FIRE SHOTS IN"); - temp.add_line_text("MULTIPLE DIRECTIONS AND"); - temp.add_line_text("JUMP ONE MORE TIME IN MIDAIR."); - temp.add_line_text("AS NOT BEING MADE FOR FIGHTING,"); - temp.add_line_text("SHE TAKES MORE DAMAGE,"); - temp.add_line_text("CAN'T WALK WHILE SHOOTING"); - temp.add_line_text("NOR DASH OR USE SHIELD."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== CHARACTERS [BETA] =="); - temp.add_line_text(""); - temp.add_line_text("DR. KANOTUS FIRST CREATION,"); - temp.add_line_text("BETA NEVER WANTED TO BE A HERO"); - temp.add_line_text("OR SAVE THE CITY. HIS ONLY WILL"); - temp.add_line_text("IS TO FIGHT STRONG OPPONENTS."); - temp.add_line_text("HE LEFT ROCK BEHIND WHEN"); - temp.add_line_text("REALIZING HE WOULD NEVER HAD"); - temp.add_line_text("TRUE FREEDOM WHILE LOCKED."); - temp.add_line_text("IN A SCIENCE LAB."); - temp.add_line_text(""); - temp.add_line_text("BETA CAN'T CHARGE, BUT HE FIRES"); - temp.add_line_text("TWO PROJECTILES AT ONCE, MAKING"); - temp.add_line_text("EASIER TO HIT ENEMIES."); - temp.add_line_text("ALSO, HE TAKE LESS DAMAGE"); - temp.add_line_text("THAN OTHER ROBOTS AND CAN"); - temp.add_line_text("DASH TO MAKE LONGER JUMPS."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== CHARACTERS [KITTY] =="); - temp.add_line_text(""); - temp.add_line_text("A FREE SPIRIT THAT FOUND BETA"); - temp.add_line_text("IN A MOMENT OF NEED, SHE DECIDED"); - temp.add_line_text("TO HELP HIM TO FIND HIS PLACE"); - temp.add_line_text("IN THE WORLD."); - temp.add_line_text("LITTLE IS KNOWN ABOUT THIS"); - temp.add_line_text("CAT-ROBOT, NOT EVEN WHO WAS"); - temp.add_line_text("THE ONE THAT BUILT HER."); - temp.add_line_text(""); - temp.add_line_text("AS A CAT, KITTY IS VERY FAST"); - temp.add_line_text("AND CAN DASH WHILE IN MIDAIR,"); - temp.add_line_text("MAKING CROSS OVER STEEPS"); - temp.add_line_text("VERY EASY. SHE CAN ALSO"); - temp.add_line_text("FIRE CHARGED SHOTS OF CUTE"); - temp.add_line_text("ENERGY CATS."); - page_list.push_back(temp); - temp.clear_text(); - - if (game_name_upper == "ROCKBOT1") { - temp.add_line_text("== ROBOT MASTERS [1] =="); - temp.add_line_text("APE BOT"); - temp.add_line_text("THE JUNGLE HIDES DANGERS"); - temp.add_line_text("UNDER THE TREETOPS."); - - temp.add_line_text(""); - temp.add_line_text("DAISIE BOT"); - temp.add_line_text("SHE LIKES CUTE THINGS"); - temp.add_line_text("LIKE FLOWERS. PROTECTS"); - temp.add_line_text("PLANTS FROM POLLUTION."); - - temp.add_line_text(""); - temp.add_line_text("SEAHORSE BOT"); - temp.add_line_text("PROTECTOR OF THE SEAS AND"); - temp.add_line_text("SWIMS LIKE A TORPEDO."); - - temp.add_line_text(""); - temp.add_line_text("MAGE BOT"); - temp.add_line_text("ARE YOU UP FOR A TRICK?"); - temp.add_line_text("HIS LAIR IS A MAZE DISGUIZED"); - temp.add_line_text("AS AN MIDDLE AGES CASTLE."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== ROBOT MASTERS [2] =="); - temp.add_line_text("TECHNO BOT:"); - temp.add_line_text("GET INTO THE INFORMATION"); - temp.add_line_text("HIGHWAY. BUT CAN YOU KEEP."); - temp.add_line_text("UP WITH THE SPEED?."); - - temp.add_line_text(""); - temp.add_line_text("SPIKE BOT"); - temp.add_line_text("DON'T TOUCH THE SPIKES!"); - - temp.add_line_text(""); - temp.add_line_text("DYNABOT BOT"); - temp.add_line_text("HE IS STRONG AND FAST,"); - temp.add_line_text("LIKES TO EXPLODE ROCKS,"); - temp.add_line_text("BUT CAN'T JUMP."); - - temp.add_line_text(""); - temp.add_line_text("MUMMY BOT"); - temp.add_line_text("FROM THE ANCIENT REAL"); - temp.add_line_text("OF THE IMMORTALS RAISE"); - temp.add_line_text("THE SCARAB MASTER."); - page_list.push_back(temp); - temp.clear_text(); - } else if (game_name_upper == "ROCKBOT2") { - temp.add_line_text("== ROBOT MASTERS [1] =="); - temp.add_line_text("SNOW BOT"); - temp.add_line_text("A COLD BODY AND DISTANT ATTITUDE"); - temp.add_line_text("HIDES A WARM HEART."); - - temp.add_line_text(""); - temp.add_line_text("VALKYRIE BOT"); - temp.add_line_text("FROM NORDIC ORIGINS, THIS GIRL"); - temp.add_line_text("ROBOT CONTROLS THE WEATHER"); - temp.add_line_text("LIKE THE GOD THOR."); - - temp.add_line_text(""); - temp.add_line_text("KURUPIRA BOT"); - temp.add_line_text("PROTECTOR OF THE JUNGLE AND"); - temp.add_line_text("ANIMALS, LOVES THE GOOD LIFE."); - - temp.add_line_text(""); - temp.add_line_text("GEAR BOT"); - temp.add_line_text("MILITARY ROBOT MADE FOR"); - temp.add_line_text("ONLY ONE PURPOSE, TO BRING"); - temp.add_line_text("WAR TO HIS ENEMIES."); - page_list.push_back(temp); - temp.clear_text(); - - temp.add_line_text("== ROBOT MASTERS [2] =="); - temp.add_line_text("BEAST BOT:"); - temp.add_line_text("TRAVELLING WITH A CIRCUS, HE IS"); - temp.add_line_text("VERY AGRESSIVE AND ANGRY."); - - temp.add_line_text(""); - temp.add_line_text("PHANTOM BOT"); - temp.add_line_text("A LOVER OF THE NIGHT AND OPERA."); - - temp.add_line_text(""); - temp.add_line_text("DRAGON BOT"); - temp.add_line_text("FROM FAR EAST, THIS MASTER"); - temp.add_line_text("HAVE UNKNOWN MYSTICAL POWERS."); - - temp.add_line_text(""); - temp.add_line_text("ZODIAC BOT"); - temp.add_line_text("POWERED BY THE STARS, THIS"); - temp.add_line_text("ROBOT IS PROTECTED BY THE"); - temp.add_line_text("LEGENDARY GOLDEN ARMOR."); - page_list.push_back(temp); - temp.clear_text(); - } - - /* - temp.add_line("== XX =="); - temp.add_line(""); - temp.add_line(""); - page_list.push_back(temp); - temp.clear(); - */ -} diff --git a/docs/game_manual.h b/docs/game_manual.h deleted file mode 100644 index 62ff018c..00000000 --- a/docs/game_manual.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef GAME_MANUAL_H -#define GAME_MANUAL_H - -#include -#include -#include -#include -#include - - -#define PAGE_LINES 22 - -struct st_manual_page { - char line[PAGE_LINES][50]; - int line_number; - - st_manual_page() { - clear_text(); - } - - void set_line_text(int n, std::string text) { - sprintf(line[n], "%s", text.c_str()); - } - - void add_line_text(std::string text) { - if (line_number < PAGE_LINES-1) { - sprintf(line[line_number], "%s", text.c_str()); - line_number++; - } - } - - void clear_text() { - for (int i=0; i page_list; -}; - -#endif // GAME_MANUAL_H diff --git a/docs/notes.txt b/docs/notes.txt index f636bf30..f0a17b43 100644 --- a/docs/notes.txt +++ b/docs/notes.txt @@ -1,3 +1,11 @@ +Globals.VideoLinearFilter - config SDL/Pelya para video VideoLinearFilter +Globals.AudioBufferConfig - audio buffer size (large if choppy) + +12 - buffer 3 +13 - buffer 2 +14 - buffer 1 + + http://www.hardcoregaming101.net/megaman/megaman.htm diff --git a/docs/translation_lines.txt b/docs/translation_lines.txt index 569628ed..0f67ac03 100644 --- a/docs/translation_lines.txt +++ b/docs/translation_lines.txt @@ -16,7 +16,7 @@ SELECT GAME ERROR WHILE SAVING GAME PLEASE CHECK THAT THE DEVICE OR FILE IS NOT WRITE-PROTECTED. -\xA9 2009-2017 UPPERLAND STUDIOS {*\xA9 is the copyright symbol} +\xA9 2009-2020 UPPERLAND STUDIOS {*\xA9 is the copyright symbol} // configuration - limit 30 // @@ -154,10 +154,10 @@ PRESENTS GAME BUILT USING A GAME ENGINE FROM UPPERLAND STUDIOS, CREATED AS HOMEBREW AND UNPROFESSIONAL. -SOURCE-CODE LICENSED UNDER -GPL AND FREELY DISTRIBUTABLE. -GAME CONTENT IS UNDER DIFFERENT -LICENCES BY ITS RESPECTIVE CREATORS. +ALL ART ASSETS ARE ORIGINAL AND +ANY RESSEMBLANCE TO OTHER GAMES +IS MEANT TO BE A TRIBUTE TO THOSE. +ALL . -- FREE VERSION WARNING -- YOU ARE PLAYING THE FREE VERSION. diff --git a/editor/Rockbot_Editor.pro b/editor/Rockbot_Editor.pro index 0b5a9f4a..7a3269e7 100644 --- a/editor/Rockbot_Editor.pro +++ b/editor/Rockbot_Editor.pro @@ -3,7 +3,7 @@ # ------------------------------------------------- #CONFIG += win32 -#CONFIG += linux +CONFIG += linux #CONFIG += macosx QT += widgets @@ -35,8 +35,8 @@ macosx { } linux { - QMAKE_CCFLAGS += -std=c++0x -g - QMAKE_CXXFLAGS += -std=c++0x -g + QMAKE_CCFLAGS += -std=c++0x -g -fPIC + QMAKE_CXXFLAGS += -std=c++0x -g -fPIC CONFIG += console } @@ -44,7 +44,7 @@ win32 { QMAKE_CCFLAGS += -std=c++0x -fpermissive QMAKE_CXXFLAGS += -std=c++0x -fpermissive CXXFLAGS += -std=c++0x - LIBS = -lmingw32 -mwindows -lqtmaind + LIBS = -lmingw32 -mwindows QT += core gui QMAKE_CCFLAGS += -DWIN32 QMAKE_CXXFLAGS += -DWIN32 @@ -56,6 +56,8 @@ win32 { TARGET = ../build/editor TEMPLATE = app SOURCES += main.cpp \ + ../shareddata.cpp \ + ../strings_map.cpp \ mainwindow.cpp \ editorarea.cpp \ editortilepallete.cpp \ @@ -72,6 +74,7 @@ SOURCES += main.cpp \ mainwindow_tab/object_tab.cpp \ mainwindow_tab/weapon_edit.cpp \ mainwindow_tab/stage_edit.cpp \ + scenes/tab_parallax.cpp \ sprite_preview_area.cpp \ mainwindow_tab/artificial_inteligence_tab.cpp \ mainwindow_tab/projectile_edit.cpp \ @@ -117,10 +120,11 @@ SOURCES += main.cpp \ dialog_pick_color.cpp \ files_editor/gametextcreditstab.cpp \ ../aux_tools/exception_manager.cpp \ - mainwindow_tab/castlepointsdialog.cpp \ - mainwindow_tab/castle_points_editorarea.cpp + widgets/parallaxpreviewarea.cpp HEADERS += mainwindow.h \ + ../shareddata.h \ + ../strings_map.h \ editorarea.h \ editortilepallete.h \ mediator.h \ @@ -138,6 +142,7 @@ HEADERS += mainwindow.h \ mainwindow_tab/object_tab.h \ mainwindow_tab/weapon_edit.h \ mainwindow_tab/stage_edit.h \ + scenes/tab_parallax.h \ sprite_preview_area.h \ mainwindow_tab/artificial_inteligence_tab.h \ mainwindow_tab/projectile_edit.h \ @@ -198,8 +203,7 @@ HEADERS += mainwindow.h \ dialog_pick_color.h \ files_editor/gametextcreditstab.h \ ../aux_tools/exception_manager.h \ - mainwindow_tab/castlepointsdialog.h \ - mainwindow_tab/castle_points_editorarea.h + widgets/parallaxpreviewarea.h FORMS += mainwindow.ui \ addwizard.ui \ @@ -214,6 +218,7 @@ FORMS += mainwindow.ui \ mainwindow_tab/projectile_edit.ui \ mainwindow_tab/game_properties_tab.ui \ mainwindow_tab/map_tab.ui \ + scenes/tab_parallax.ui \ stage_swap_dialog.ui \ mainwindow_tab/player_edit.ui \ scenes/sceneeditorwindow.ui \ @@ -234,8 +239,7 @@ FORMS += mainwindow.ui \ mainwindow_tab/anim_tiles_edit.ui \ mainwindow_tab/anim/animpackimport.ui \ dialog_pick_color.ui \ - files_editor/gametextcreditstab.ui \ - mainwindow_tab/castlepointsdialog.ui + files_editor/gametextcreditstab.ui RESOURCES += resources/icons/icons.qrc INCLUDEPATH += ../common diff --git a/editor/addwizard.cpp b/editor/addwizard.cpp index b0699497..2389f30a 100644 --- a/editor/addwizard.cpp +++ b/editor/addwizard.cpp @@ -15,17 +15,10 @@ addWizard::addWizard(QWidget *parent) : QWizard(parent) { } void addWizard::pageChanged(int id) { - printf("Current page: %d\n", id); if (id == 3) { if (done == 0) { - printf("Finishing, must add map or npc\n"); - if (type == 0) { - printf("ADD MAP\n"); - //Mediator::get_instance()->addMap(); - } done = 1; emit finishedWizard(); - printf("DEBUG - emit signal finishedWizard\n"); } } } @@ -47,18 +40,14 @@ int addWizard::nextId() const { void addWizard::on_comboBox_currentIndexChanged(int value) { type = value; - printf("DEBUG.addWizard::on_comboBox_currentIndexChanged - value: %d\n", value); if (value == 0) { - printf("MAP\n"); nextPageCount=2; } else { - printf("NOT-MAP\n"); nextPageCount=1; } } void addWizard::fillNPCGraphicsList() { - printf("DEBUG - fillNPCGraphicsList - START\n"); std::string file_dir = FILEPATH+std::string("/images/sprites/enemies/"); QDir dir = QDir(file_dir.c_str()); dir.setFilter(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot); @@ -69,7 +58,6 @@ void addWizard::fillNPCGraphicsList() { //printf("addWizard::fillNPCGraphicsList - fileName: %s\n", qPrintable(fileInfo.fileName())); if (i == 0) { sprintf(Mediator::get_instance()->addNpcFilename, "images/sprites/enemies/%s", qPrintable(fileInfo.fileName())); - printf(">> SET > dataExchanger::fillNPCGraphicsList->addNpcFilename: '%s'\n", Mediator::get_instance()->addNpcFilename); } //Mediator::get_instance()->NpcPreviewFile = new QString(fileInfo.fileName()); //sprintf(Mediator::get_instance()->addNpcFilename, "%s", qPrintable(fileInfo.fileName())); diff --git a/editor/common.cpp b/editor/common.cpp index 23f62273..c784ffd9 100644 --- a/editor/common.cpp +++ b/editor/common.cpp @@ -6,12 +6,19 @@ extern std::vector AI_ACTION_WALK_OPTIONS; extern std::vector AI_ACTION_SHOT_OPTIONS; extern std::vector AI_ACTION_FLY_OPTIONS; extern std::vector AI_ACTION_JUMP_OPTIONS; +extern std::vector AI_ACTION_WALL_WALK_OPTIONS; extern std::vector AI_ACTION_AIR_WALK_OPTIONS; extern std::vector AI_ACTION_TELEPORT_OPTIONS; extern std::vector AI_ACTION_DASH_OPTIONS; extern std::vector AI_ACTION_GRAB_WALL_OPTIONS; extern std::vector ANIMATION_TYPE_LIST; +extern std::vector AI_ACTION_SFX_OPTION_NAMES; +extern std::vector AI_ACTION_SHOT_MULTIPLE_PROJECTILE_NAMES; +#include +#include + +#include "aux_tools/stringutils.h" #include "mediator.h" common::common() @@ -34,12 +41,12 @@ void common::fill_files_combo(std::string directory, QComboBox* combo, bool show combo->addItem(QString("")); // for "empty" std::string str_filepath(FILEPATH+directory); + str_filepath = StringUtils::clean_filename(str_filepath); QString filepath(str_filepath.c_str()); QDir dir = QDir(filepath); if (!dir.exists()) { - std::cout << ">> MainWindow::fill_files_combo ERROR: Directory '" << str_filepath << " does not exist. <<" << std::endl; - exit(-1); + show_directory_error_message(str_filepath); } dir.setFilter(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot); @@ -50,7 +57,10 @@ void common::fill_files_combo(std::string directory, QComboBox* combo, bool show foreach (const QFileInfo &fileInfo, dir.entryInfoList()) { if (fileInfo.fileName().length() > 30) { - std::cout << "ERROR: file '" << fileInfo.fileName().toStdString() << "' surpasses the maximum number of file-characters (" << FS_CHAR_NAME_SIZE << ")" << std::endl; + QMessageBox msgBox; + QString error_msg = QString("ERROR: file '") + QString(fileInfo.fileName()) + QString("' surpasses the maximum number of file-characters (") + QString::number(FS_CHAR_NAME_SIZE) + QString(")"); + msgBox.setText(error_msg); + msgBox.exec(); } else { QString filename(fileInfo.fileName()); if (filename.length() > 0) { @@ -68,25 +78,27 @@ void common::fill_graphicfiles_listwidget(std::string directory, QListWidget* li QListWidgetItem* item; std::string str_filepath(FILEPATH+directory); + str_filepath = StringUtils::clean_filename(str_filepath); QString filepath(str_filepath.c_str()); QDir dir = QDir(filepath); if (!dir.exists()) { - std::cout << ">> MainWindow::fill_graphicfiles_listwidget ERROR: Directory '" << str_filepath << " does not exist. <<" << std::endl; - exit(-1); + show_directory_error_message(str_filepath); } dir.setFilter(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot); dir.setSorting(QDir::Size | QDir::Reversed); QFileInfoList list = dir.entryInfoList(); - for (int i = 0; i < list.size(); ++i) { + for (unsigned int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); if (fileInfo.fileName().length() > 30) { - std::cout << "ERROR: file '" << fileInfo.fileName().toStdString() << "' surpasses the maximum number of file-characters (" << FS_CHAR_NAME_SIZE << ")" << std::endl; + QMessageBox msgBox; + QString error_msg = QString("ERROR: file '") + QString(fileInfo.fileName()) + QString("' surpasses the maximum number of file-characters (") + QString::number(FS_CHAR_NAME_SIZE) + QString(")"); + msgBox.setText(error_msg); + msgBox.exec(); } else { item = new QListWidgetItem; item->setText(fileInfo.fileName()); std::string filename = FILEPATH + directory + "/" + fileInfo.fileName().toStdString(); - //std::cout << ">> MainWindow::fill_graphicfiles_listwidget DEBUG: filename: '" << filename << std::endl; QPixmap image(filename.c_str()); if (image.isNull() == false && image.width() > 0) { image = image.copy(0, 0, image.width(), image.height()); @@ -104,20 +116,23 @@ void common::fill_graphicfiles_combobox(std::string directory, QComboBox *comboW comboWidget->clear(); // delete all previous entries std::string str_filepath(FILEPATH+directory); + str_filepath = StringUtils::clean_filename(str_filepath); QString filepath(str_filepath.c_str()); QDir dir = QDir(filepath); if (!dir.exists()) { - std::cout << ">> MainWindow::fill_graphicfiles_combobox ERROR: Directory '" << str_filepath << " does not exist. <<" << std::endl; - exit(-1); + show_directory_error_message(str_filepath); } dir.setFilter(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot); dir.setSorting(QDir::Size | QDir::Reversed); QFileInfoList list = dir.entryInfoList(); - for (int i = 0; i < list.size(); ++i) { + for (unsigned int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); if (fileInfo.fileName().length() > 30) { - std::cout << "ERROR: file '" << fileInfo.fileName().toStdString() << "' surpasses the maximum number of file-characters (" << FS_CHAR_NAME_SIZE << ")" << std::endl; + QMessageBox msgBox; + QString error_msg = QString("ERROR: file '") + QString(fileInfo.fileName()) + QString("' surpasses the maximum number of file-characters (") + QString::number(FS_CHAR_NAME_SIZE) + QString(")"); + msgBox.setText(error_msg); + msgBox.exec(); } else { std::string filename = FILEPATH + directory + "/" + fileInfo.fileName().toStdString(); QIcon icon(filename.c_str()); @@ -132,7 +147,7 @@ void common::fill_npc_combo(QComboBox* combo) { combo->clear(); // delete all previous entries - for (int i=0; ienemy_list.size(); i++) { + for (unsigned int i=0; ienemy_list.size(); i++) { QString temp_str = QString("["); if (i < 10) { temp_str += "0"; @@ -146,7 +161,7 @@ void common::fill_object_combo(QComboBox* combo) { combo->clear(); // delete all previous entries - for (int i=0; iobject_list.size(); i++) { + for (unsigned int i=0; iobject_list.size(); i++) { QString temp_str = QString("[") + QString::number(i) + QString("] - ") + QString(Mediator::get_instance()->object_list.at(i).name); combo->addItem(temp_str); } @@ -159,7 +174,7 @@ void common::fill_weapons_combo(QComboBox *combo) QString temp_str = QString("[0] - Normal Weapon"); combo->addItem(temp_str); - for (int i=1; i<9; i++) { + for (unsigned int i=1; i<9; i++) { temp_str = QString("[") + QString::number(i) + QString("] - ") + QString(Mediator::get_instance()->stage_data.stages[i].name + QString(" (") + QString(Mediator::get_instance()->stage_data.stages[i].boss.name) + QString (")")); combo->addItem(temp_str); } @@ -168,7 +183,7 @@ void common::fill_weapons_combo(QComboBox *combo) void common::fill_weapons_names_combo(QComboBox *combo) { combo->clear(); // delete all previous entries - for (int i=0; igame_data.weapons[i].name); combo->addItem(temp_str); } @@ -191,7 +206,7 @@ void common::fill_projectiles_combo(QComboBox *combo, bool add_empty_slot) if (add_empty_slot) { combo->addItem(QString("")); } - for (int i=0; iprojectile_list_v3.size(); i++) { + for (unsigned int i=0; iprojectile_list_v3.size(); i++) { QString temp_str = QString("[") + QString::number(i) + QString("] - ") + QString(Mediator::get_instance()->projectile_list_v3.at(i).name); combo->addItem(temp_str); } @@ -202,7 +217,7 @@ void common::fill_trajectories_combo(QComboBox *combo) { combo->clear(); // delete all previous entries - for (int i=0; iaddItem(temp_str); @@ -217,7 +232,7 @@ void common::fill_ai_actions_combo(QComboBox *combo, bool include_null) combo->addItem(temp_null_str); } - for (int i=0; iaddItem(temp_str); @@ -230,13 +245,13 @@ void common::fill_ai_options_combo(int action, QComboBox *combo) combo->clear(); // delete all previous entries - //std::cout << "########## common::fill_ai_options_combo action[" << action << "]" << std::endl; - std::vector list; if (action == AI_ACTION_WALK) { list = AI_ACTION_WALK_OPTIONS; } else if (action == AI_ACTION_FLY) { list = AI_ACTION_FLY_OPTIONS; + } else if (action == AI_ACTION_WALL_WALK || action == AI_ACTION_WALL_WALK_SHOOT) { + list = AI_ACTION_WALL_WALK_OPTIONS; } else if (action == AI_ACTION_JUMP) { list = AI_ACTION_JUMP_OPTIONS; } else if (action == AI_ACTION_AIR_WALK) { @@ -250,7 +265,6 @@ void common::fill_ai_options_combo(int action, QComboBox *combo) } else if (action == AI_ACTION_SPAWN_NPC || action == AI_ACTION_REPLACE_NPC || action == AI_ACTION_MORPH_INTO_NPC) { list = common::get_npc_names_list(); } else if (action == AI_ACTION_SHOT_PROJECTILE_AHEAD || action == AI_ACTION_SHOT_PROJECTILE_PLAYER_DIRECTION || action == AI_ACTION_SHOT_PROJECTILE_INVERT_DIRECTION || action == AI_ACTION_JUMP_ATTACK_UP || action == AI_ACTION_JUMP_ATTACK_AHEAD_ONCE) { - //list = AI_ACTION_SHOT_OPTIONS; list = common::get_weapon_names_list(); } else if (action == AI_ACTION_CHANGE_MOVE_TYPE || action == AI_ACTION_CHANGE_MOVE_TYPE_REVERSE) { list = ANIMATION_TYPE_LIST; @@ -271,13 +285,19 @@ void common::fill_ai_options_combo(int action, QComboBox *combo) dist_list.push_back("10"); dist_list.push_back("20"); list = dist_list; + } else if (action == AI_ACTION_PLAY_SFX) { + list = AI_ACTION_SFX_OPTION_NAMES; + } else if (action == AI_ACTION_SHOT_MULTIPLE_PROJECTILE) { + list = AI_ACTION_SHOT_MULTIPLE_PROJECTILE_NAMES; + } else if (action == AI_ACTION_THROW_ITEM) { + list = get_throw_object_options(); } else { return; } // add options combo->clear(); // delete all previous entries - for (int i=0; iaddItem(temp_str); @@ -287,7 +307,7 @@ void common::fill_ai_options_combo(int action, QComboBox *combo) void common::fill_ai_list(QComboBox *combo) { combo->clear(); // delete all previous entries - for (int i=0; iai_list.size(); i++) { + for (unsigned int i=0; iai_list.size(); i++) { QString temp_str = QString("[") + QString::number(i) + QString("] - ") + QString(Mediator::get_instance()->ai_list.at(i).name); combo->addItem(temp_str); } @@ -296,7 +316,7 @@ void common::fill_ai_list(QComboBox *combo) void common::fill_stages_combo(QComboBox *combo) { combo->clear(); // delete all previous entries - for (int i=0; iaddItem(QString("[") + QString::number(i) + QString("]: ") + QString(Mediator::get_instance()->stage_data.stages[i].name)); } } @@ -304,7 +324,7 @@ void common::fill_stages_combo(QComboBox *combo) void common::fill_players_combo(QComboBox* combo) { combo->clear(); // delete all previous entries - for (int i=0; iaddItem(QString::number(i+1)+QString(" [")+QString(Mediator::get_instance()->player_list_v3_1[i].name)+QString("]")); } } @@ -328,7 +348,7 @@ void common::fill_npc_listwidget(QListWidget *listWidget) listWidget->clear(); - for (int i=0; ienemy_list.size(); i++) { + for (unsigned int i=0; ienemy_list.size(); i++) { item = new QListWidgetItem; QString temp_str = QString("["); if (i < 10) { @@ -355,7 +375,7 @@ void common::fill_object_listWidget(QListWidget *listWidget) listWidget->clear(); - for (int i=0; iobject_list.size(); i++) { + for (unsigned int i=0; iobject_list.size(); i++) { item = new QListWidgetItem; QString temp_str = QString("["); if (i < 10) { @@ -383,7 +403,7 @@ void common::fill_scenes_combo(QComboBox *combo) combo->clear(); // add empty item to be used to unset scene combo->addItem(QString("")); - for (int i=0; iscene_list.size(); i++) { + for (unsigned int i=0; iscene_list.size(); i++) { QString temp_str = QString("[") + QString::number(i) + QString("] - ") + QString(Mediator::get_instance()->scene_list.at(i).name); combo->addItem(temp_str); } @@ -402,15 +422,25 @@ void common::fill_languages_combo(QComboBox *combo) void common::fill_numbered_combo(QComboBox *combo, int start, int end) { + combo->clear(); for (int i=start; i<=end; i++) { combo->addItem(QString::number(i)); } } +void common::fill_direction_combo(QComboBox *combo) +{ + combo->clear(); + combo->addItem(QString("LEFT")); + combo->addItem(QString("RIGHT")); + combo->addItem(QString("UP")); + combo->addItem(QString("DOWN")); +} + std::vector common::get_npc_names_list() { std::vector res; - for (int i=0; ienemy_list.size(); i++) { + for (unsigned int i=0; ienemy_list.size(); i++) { res.push_back(std::string(Mediator::get_instance()->enemy_list.at(i).name)); } return res; @@ -419,7 +449,7 @@ std::vector common::get_npc_names_list() std::vector common::get_weapon_names_list() { std::vector res; - for (int i=0; iprojectile_list_v3.size(); i++) { + for (unsigned int i=0; iprojectile_list_v3.size(); i++) { res.push_back(std::string(Mediator::get_instance()->projectile_list_v3.at(i).name)); } return res; @@ -439,12 +469,32 @@ st_size common::calc_image_size(std::string file) void common::fill_anim_block_combo(QComboBox *combo) { combo->clear(); - for (int i=0; ianim_block_list.size(); i++) { + for (unsigned int i=0; ianim_block_list.size(); i++) { QString name = QString::number(i); combo->addItem(name); } } +void common::show_directory_error_message(std::string directory) +{ + QString error_msg = QString("WARNING: Directory '") + QString(directory.c_str()) + QString("' does not exist and will be created empty."); + QMessageBox msgBox; + msgBox.setText(error_msg); + msgBox.exec(); + // create directory now + QDir().mkdir(directory.c_str()); +} + +std::vector common::get_throw_object_options() +{ + std::vector res; + res.push_back("RANROM"); + for (unsigned int i=0; iobject_list.size(); i++) { + res.push_back(Mediator::get_instance()->object_list.at(i).name); + } + return res; +} + diff --git a/editor/common.h b/editor/common.h index c26b9dd4..91bfe9f1 100644 --- a/editor/common.h +++ b/editor/common.h @@ -36,11 +36,13 @@ class common static void fill_languages_combo(QComboBox *combo); static void fill_sfx_combo(QComboBox *combo); static void fill_numbered_combo(QComboBox *combo, int start, int end); + static void fill_direction_combo(QComboBox *combo); static std::vector get_npc_names_list(); static std::vector get_weapon_names_list(); static st_size calc_image_size(std::string file); - static void fill_anim_block_combo(QComboBox *combo); + static void show_directory_error_message(std::string directory); + static std::vector get_throw_object_options(); private: diff --git a/editor/dialog_pick_color.cpp b/editor/dialog_pick_color.cpp index 5ec1751b..ac66dd4b 100644 --- a/editor/dialog_pick_color.cpp +++ b/editor/dialog_pick_color.cpp @@ -53,7 +53,6 @@ dialog_pick_color::~dialog_pick_color() void dialog_pick_color::clicked(const int &color_n) { - std::cout << "dialog_pick_color::clicked - color_n: " << color_n << std::endl; Mediator::get_instance()->picked_color_n = color_n; } diff --git a/editor/dialognpcedit.cpp b/editor/dialognpcedit.cpp index 59354945..66ddbf71 100644 --- a/editor/dialognpcedit.cpp +++ b/editor/dialognpcedit.cpp @@ -13,8 +13,6 @@ DialogNPCEdit::DialogNPCEdit(QWidget *parent) : QDialog(parent), ui(new Ui::DialogNPCEdit) { - std::cout << "DialogNPCEdit::DialogNPCEdit::START" << std::endl; - ui->setupUi(this); for (int i=0; iselectedNPC: %d, editMode: %d\n", Mediator::get_instance()->selectedNPC, Mediator::get_instance()->editModeNPC); if (Mediator::get_instance()->editModeNPC == 1) { loadNPCData(Mediator::get_instance()->selectedNPC); - std::cout << "DialogObjectEdit::DialogObjectEdit - editing npc, id: " << Mediator::get_instance()->selectedNPC << std::endl; - } else { - std::cout << "DialogObjectEdit::DialogObjectEdit - adding new npc, id: " << Mediator::get_instance()->selectedNPC << std::endl; } QObject::connect(ui->npcPreviewAreaWidget, SIGNAL(clickedIn()), this, SLOT(setNPCFrame())); - std::cout << "DialogNPCEdit::DialogNPCEdit::END" << std::endl; } void DialogNPCEdit::loadNPCData(int npc_n) { - std::cout << "DialogNPCEdit::loadNPCData::START" << std::endl; ui->NpcName->setText(Mediator::get_instance()->enemy_list.at(npc_n).name); ui->NpcHP->setValue(Mediator::get_instance()->enemy_list.at(npc_n).hp.total); ui->npcGraphicSizeSpin_w->setValue(Mediator::get_instance()->enemy_list.at(npc_n).frame_size.width); @@ -67,7 +60,6 @@ void DialogNPCEdit::loadNPCData(int npc_n) { ui->speed_spin->setValue(Mediator::get_instance()->enemy_list.at(npc_n).speed); ui->range_spin->setValue(Mediator::get_instance()->enemy_list.at(npc_n).walk_range); - std::cout << "DialogNPCEdit::loadNPCData::END" << std::endl; } @@ -125,13 +117,6 @@ void DialogNPCEdit::fillNPCGraphicsList() { QFileInfoList list = dir.entryInfoList(); for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); - //printf("DialogNPCEdit::fillNPCGraphicsList - fileName: %s\n", qPrintable(fileInfo.fileName())); - if (i == 0) { - sprintf(Mediator::get_instance()->addNpcFilename, "%s/images/sprites/enemies/%s", FILEPATH.c_str(), qPrintable(fileInfo.fileName())); - printf(">> SET > dataExchanger::fillNPCGraphicsList->addNpcFilename: '%s'\n", Mediator::get_instance()->addNpcFilename); - } - //Mediator::get_instance()->NpcPreviewFile = new QString(fileInfo.fileName()); - //sprintf(Mediator::get_instance()->addNpcFilename, "%s", qPrintable(fileInfo.fileName())); ui->npcListCombobox->addItem(fileInfo.fileName()); } //printf(">> dataExchanger::fillNPCGraphicsList->addNpcFilename: '%s'\n", Mediator::get_instance()->addNpcFilename); diff --git a/editor/dialogobjectedit.cpp b/editor/dialogobjectedit.cpp index 0eaed5fc..5ee82d7f 100644 --- a/editor/dialogobjectedit.cpp +++ b/editor/dialogobjectedit.cpp @@ -11,10 +11,7 @@ DialogObjectEdit::DialogObjectEdit(QWidget *parent) : ui->setupUi(this); fillObjectGraphicsList(); if (Mediator::get_instance()->editModeNPC == 1) { - std::cout << "DialogObjectEdit::DialogObjectEdit - editing existing Obj, id: " << Mediator::get_instance()->selectedNPC << std::endl; loadObjectData(Mediator::get_instance()->selectedNPC); - } else { - std::cout << "DialogObjectEdit::DialogObjectEdit - adding new Obj, id: " << Mediator::get_instance()->selectedNPC << std::endl; } QObject::connect(ui->npcPreviewAreaWidget, SIGNAL(clickedIn()), this, SLOT(setObjectFrame())); } diff --git a/editor/editorarea.cpp b/editor/editorarea.cpp index cc9b605c..88e4a2eb 100644 --- a/editor/editorarea.cpp +++ b/editor/editorarea.cpp @@ -38,7 +38,6 @@ EditorArea::EditorArea(QWidget *parent) : QWidget(parent) { } void EditorArea::changeTile() { - printf("DEBUG.changeTile in editor area\n"); update_files(); temp = 1; repaint(); @@ -58,7 +57,6 @@ void EditorArea::update_files() if (filename_str.length() <= 0) { return; } - //std::cout << "EditorArea::paintEvent - filename: " << filename.toStdString() << std::endl; tileset_image = QPixmap(filename_str.c_str()); if (tileset_image.isNull() == false) { QBitmap mask = tileset_image.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); @@ -78,7 +76,6 @@ void EditorArea::update_files() bg1_image = QPixmap(); } } else { - std::cout << "RESET BG1" << std::endl; bg1_image = QPixmap(); } @@ -93,7 +90,6 @@ void EditorArea::update_files() fg_layer__image = QPixmap(); } } else { - std::cout << "RESET BG1" << std::endl; fg_layer__image = QPixmap(); } fg_opacity = (float)Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[1].gfx/100; @@ -109,7 +105,6 @@ void EditorArea::paintEvent(QPaintEvent *) { } if (tileset_image.isNull()) { - std::cout << "ERROR: EditorArea::paintEvent - Could not load palette image file." << std::endl; return; } @@ -129,9 +124,7 @@ void EditorArea::paintEvent(QPaintEvent *) { std::string bg1_filename(Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[0].filename); if (Mediator::get_instance()->show_bg1 == true) { if (!bg1_image.isNull()) { - //std::cout << "DRAW BG1" << std::endl; int max_repeat = ((MAP_W*16)/bg1_image.width())*Mediator::get_instance()->zoom+1; - //std::cout << "bg1_image.width(): " << bg1_image.width() << ", max_repeat: " << max_repeat << std::endl; for (int k=0; kzoom, Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[0].adjust_y*Mediator::get_instance()->zoom), QSize(bg1_image.width()*Mediator::get_instance()->zoom, bg1_image.height()*Mediator::get_instance()->zoom)); @@ -141,270 +134,192 @@ void EditorArea::paintEvent(QPaintEvent *) { } - // DRAW ENEMIES BACKGROUNDS // - if (Mediator::get_instance()->show_npcs_flag == true) { - /// draw NPCs - for (int i=0; imaps_data_npc_list.size(); i++) { - if (Mediator::get_instance()->maps_data_npc_list[i].stage_id != Mediator::get_instance()->currentStage || Mediator::get_instance()->maps_data_npc_list[i].map_id != Mediator::get_instance()->currentMap) { - continue; // only show enemies from current stage/map - } - if (Mediator::get_instance()->maps_data_npc_list[i].difficulty_mode == DIFFICULTY_MODE_GREATER && Mediator::get_instance()->maps_data_npc_list[i].difficulty_level > Mediator::get_instance()->currentDifficulty) { - continue; // only show enemies with equal or lower difficulty - } else if (Mediator::get_instance()->maps_data_npc_list[i].difficulty_mode == DIFFICULTY_MODE_EQUAL && Mediator::get_instance()->maps_data_npc_list[i].difficulty_level != Mediator::get_instance()->currentDifficulty) { - continue; - } - - //std::cout << "EditorArea::paintEvent #5.0.A [" << i << "]" << std::endl; - int npc_id = Mediator::get_instance()->maps_data_npc_list[i].id_npc; - if (npc_id >= Mediator::get_instance()->enemy_list.size() || npc_id < 0) { - Mediator::get_instance()->maps_data_npc_list[i].id_npc = -1; - continue; - } - - - std::string npc_bg_file(Mediator::get_instance()->enemy_list.at(npc_id).bg_graphic_filename); - if (npc_bg_file.length() > 0) { - std::string _bg_graphic_filename = FILEPATH + "/images/sprites/enemies/backgrounds/" + npc_bg_file; - QPixmap bg_image(_bg_graphic_filename.c_str()); - // calculate total image size of background exists - if (!bg_image.isNull()) { - int total_w = bg_image.width(); - int total_h = bg_image.height(); - QBitmap enemy_bg_mask = bg_image.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); - bg_image.setMask(enemy_bg_mask); - QRectF bg_target(QPoint(Mediator::get_instance()->maps_data_npc_list[i].start_point.x*16*Mediator::get_instance()->zoom, Mediator::get_instance()->maps_data_npc_list[i].start_point.y*16*Mediator::get_instance()->zoom), QSize(total_w*Mediator::get_instance()->zoom, total_h*Mediator::get_instance()->zoom)); - QRectF bg_source(QRectF(QPoint(0, 0), QSize(bg_image.width(), bg_image.height()))); - painter.drawPixmap(bg_target, bg_image, bg_source); - } - } - } - } // DRAW TILES // for (i=0; imaps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == TERRAIN_EASYMODEBLOCK) { - //std::cout << "lock: " << (int)Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked << ", easy: " << TERRAIN_EASYMODEBLOCK << std::endl; - } - + if (Mediator::get_instance()->show_tileset_flag == true) { + // level one + if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x >= 0 && Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.y >= 0) { + QRectF target(QPoint(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom), QSize(16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom)); + QRectF source(QPoint((Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x*16), (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.y*16)), QSize(16, 16)); + painter.drawPixmap(target, tileset_image, source); + // animated tiles + } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x < -1 && Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.y == 0) { + int anim_tile_id = (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x*-1) - 2; - // level one - if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x >= 0 && Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.y >= 0) { - QRectF target(QPoint(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom), QSize(16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom)); - QRectF source(QPoint((Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x*16), (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.y*16)), QSize(16, 16)); - painter.drawPixmap(target, tileset_image, source); - // animated tiles - } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x < -1 && Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.y == 0) { - int anim_tile_id = (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x*-1) - 2; + // check that the vector contains this + if (Mediator::get_instance()->anim_block_list.size() > 0 && anim_tile_id < Mediator::get_instance()->anim_block_list.size()) { + CURRENT_FILE_FORMAT::file_anim_block anim_tile = Mediator::get_instance()->anim_block_list.at(anim_tile_id); + QString anim_tile_filename = QString(FILEPATH.c_str()) + QString("/images/tilesets/anim/") + QString(anim_tile.filename); - //std::cout << "********** (READ) anim-tile-id: " << anim_tile_id << std::endl; + QPixmap anim_image(anim_tile_filename); - // check that the vector contains this - if (Mediator::get_instance()->anim_block_list.size() > 0 && anim_tile_id < Mediator::get_instance()->anim_block_list.size()) { - CURRENT_FILE_FORMAT::file_anim_block anim_tile = Mediator::get_instance()->anim_block_list.at(anim_tile_id); - QString anim_tile_filename = QString(FILEPATH.c_str()) + QString("/images/tilesets/anim/") + QString(anim_tile.filename); + if (anim_image.isNull() == false) { - QPixmap anim_image(anim_tile_filename); + QBitmap anim_image_mask = anim_image.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); + anim_image.setMask(anim_image_mask); - if (anim_image.isNull() == false) { - QBitmap anim_image_mask = anim_image.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); - anim_image.setMask(anim_image_mask); + QRectF target(QPoint(i*TILESIZE*Mediator::get_instance()->zoom, j*TILESIZE*Mediator::get_instance()->zoom), QSize(TILESIZE*Mediator::get_instance()->zoom, TILESIZE*Mediator::get_instance()->zoom)); + QRectF source(QPoint(0, 0), QSize(TILESIZE, TILESIZE)); + painter.drawPixmap(target, anim_image, source); + // draw an green border border to indicate anim tile + QPen pen(QColor(0, 200, 0), 1, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); + painter.setPen(pen); - QRectF target(QPoint(i*TILESIZE*Mediator::get_instance()->zoom, j*TILESIZE*Mediator::get_instance()->zoom), QSize(TILESIZE*Mediator::get_instance()->zoom, TILESIZE*Mediator::get_instance()->zoom)); - QRectF source(QPoint(0, 0), QSize(TILESIZE, TILESIZE)); - - painter.drawPixmap(target, anim_image, source); - // draw an green border border to indicate anim tile - QPen pen(QColor(0, 200, 0), 1, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); - painter.setPen(pen); - - if (Mediator::get_instance()->show_grid) { - int anim_tile_x = i * TILESIZE * Mediator::get_instance()->zoom; // minus tilesize is because width starts in 1, not zero - int anim_tile_y = j * TILESIZE *Mediator::get_instance()->zoom; - painter.drawLine(anim_tile_x, anim_tile_y, anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y); - painter.drawLine(anim_tile_x, anim_tile_y, anim_tile_x, anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); - painter.drawLine(anim_tile_x, anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); - painter.drawLine(anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y, anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); + if (Mediator::get_instance()->show_grid) { + int anim_tile_x = i * TILESIZE * Mediator::get_instance()->zoom; // minus tilesize is because width starts in 1, not zero + int anim_tile_y = j * TILESIZE *Mediator::get_instance()->zoom; + painter.drawLine(anim_tile_x, anim_tile_y, anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y); + painter.drawLine(anim_tile_x, anim_tile_y, anim_tile_x, anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); + painter.drawLine(anim_tile_x, anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); + painter.drawLine(anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y, anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); + } } - } else { - std::cout << ">>>>>>>> anim-file '" << anim_tile_filename.toStdString() << "' not found." << std::endl; } - } else { - std::cout << "Invalid anim-tile-id: " << anim_tile_id << std::endl; } - } - // level 3 - if (Mediator::get_instance()->layerLevel == 3) { - int tile3x = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.x; - int tile3y = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.y; + // level 3 + painter.setOpacity(0.5); + if (Mediator::get_instance()->layerLevel > 1) { + painter.setOpacity(1.0); + } - if (tile3x < -1) { - std::cout << "tile3x: " << tile3x << std::endl; - } + int tile3x = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.x; + int tile3y = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.y; - if (tile3x > -1 && tile3y != -1) { - QRectF target(QPoint(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom), QSize(16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom)); - QRectF source(QPoint((Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.x*16), (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.y*16)), QSize(16, 16)); - painter.drawPixmap(target, tileset_image, source); - // animated tiles - } else if (tile3x < -1 && tile3y == 0) { - int anim_tile_id = (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.x*-1) - 2; + if (Mediator::get_instance()->currentStage == 7 && Mediator::get_instance()->currentMap == 0 && tile3x != -1 && tile3y != -1) { + std::cout << ">> tile3[" << tile3x << "][" << tile3y << "]" << std::endl; + } - std::cout << "********** (READ) anim-tile-id: " << anim_tile_id << std::endl; + if (tile3x > -1 && tile3y != -1) { + QRectF target(QPoint(i*TILESIZE*Mediator::get_instance()->zoom, j*TILESIZE*Mediator::get_instance()->zoom), QSize(TILESIZE*Mediator::get_instance()->zoom, TILESIZE*Mediator::get_instance()->zoom)); + QRectF source(QPoint((Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.x*TILESIZE), (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.y*16)), QSize(16, 16)); + painter.drawPixmap(target, tileset_image, source); + // animated tiles + } else if (tile3x < -1 && tile3y == 0) { + int anim_tile_id = (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.x*-1) - 2; - // check that the vector contains this - if (Mediator::get_instance()->anim_block_list.size() > 0 && anim_tile_id < Mediator::get_instance()->anim_block_list.size()) { - CURRENT_FILE_FORMAT::file_anim_block anim_tile = Mediator::get_instance()->anim_block_list.at(anim_tile_id); - QString anim_tile_filename = QString(FILEPATH.c_str()) + QString("/images/tilesets/anim/") + QString(anim_tile.filename); + // check that the vector contains this + if (Mediator::get_instance()->anim_block_list.size() > 0 && anim_tile_id < Mediator::get_instance()->anim_block_list.size()) { + CURRENT_FILE_FORMAT::file_anim_block anim_tile = Mediator::get_instance()->anim_block_list.at(anim_tile_id); + QString anim_tile_filename = QString(FILEPATH.c_str()) + QString("/images/tilesets/anim/") + QString(anim_tile.filename); - QPixmap anim_image(anim_tile_filename); + QPixmap anim_image(anim_tile_filename); - if (anim_image.isNull() == false) { + if (anim_image.isNull() == false) { - QBitmap anim_image_mask = anim_image.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); - anim_image.setMask(anim_image_mask); + QBitmap anim_image_mask = anim_image.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); + anim_image.setMask(anim_image_mask); - QRectF target(QPoint(i*TILESIZE*Mediator::get_instance()->zoom, j*TILESIZE*Mediator::get_instance()->zoom), QSize(TILESIZE*Mediator::get_instance()->zoom, TILESIZE*Mediator::get_instance()->zoom)); - QRectF source(QPoint(0, 0), QSize(TILESIZE, TILESIZE)); + QRectF target(QPoint(i*TILESIZE*Mediator::get_instance()->zoom, j*TILESIZE*Mediator::get_instance()->zoom), QSize(TILESIZE*Mediator::get_instance()->zoom, TILESIZE*Mediator::get_instance()->zoom)); + QRectF source(QPoint(0, 0), QSize(TILESIZE, TILESIZE)); - painter.drawPixmap(target, anim_image, source); + painter.drawPixmap(target, anim_image, source); - // draw an green border border to indicate anim tile - if (Mediator::get_instance()->show_grid) { - QPen pen(QColor(0, 200, 0), 1, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); - painter.setPen(pen); + // draw an green border border to indicate anim tile + if (Mediator::get_instance()->show_grid) { + QPen pen(QColor(0, 200, 0), 1, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); + painter.setPen(pen); - int anim_tile_x = i * TILESIZE * Mediator::get_instance()->zoom; // minus tilesize is because width starts in 1, not zero - int anim_tile_y = j * TILESIZE *Mediator::get_instance()->zoom; - painter.drawLine(anim_tile_x, anim_tile_y, anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y); - painter.drawLine(anim_tile_x, anim_tile_y, anim_tile_x, anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); - painter.drawLine(anim_tile_x, anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); - painter.drawLine(anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y, anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); - } - } else { - std::cout << ">>>>>>>> anim-file '" << anim_tile_filename.toStdString() << "' not found." << std::endl; + int anim_tile_x = i * TILESIZE * Mediator::get_instance()->zoom; // minus tilesize is because width starts in 1, not zero + int anim_tile_y = j * TILESIZE *Mediator::get_instance()->zoom; + painter.drawLine(anim_tile_x, anim_tile_y, anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y); + painter.drawLine(anim_tile_x, anim_tile_y, anim_tile_x, anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); + painter.drawLine(anim_tile_x, anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); + painter.drawLine(anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y, anim_tile_x+(TILESIZE*Mediator::get_instance()->zoom), anim_tile_y+(TILESIZE*Mediator::get_instance()->zoom)); } - } else { - std::cout << "Invalid anim-tile-id: " << anim_tile_id << std::endl; } } - } + } + painter.setOpacity(1.0); - // EASY-mode tiles - if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == TERRAIN_EASYMODEBLOCK) { - //std::cout << "TERRAIN_EASYMODEBLOCK" << std::endl; + // EASY-mode tiles + if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == TERRAIN_EASYMODEBLOCK) { - QRectF target(QPoint(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom), QSize(16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom)); - QRectF source(QPoint(0, 0), QSize(16, 16)); - painter.drawPixmap(target, easy_mode_tile, source); + QRectF target(QPoint(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom), QSize(16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom)); + QRectF source(QPoint(0, 0), QSize(16, 16)); + painter.drawPixmap(target, easy_mode_tile, source); - painter.setBrush(QColor(220, 210, 50, 100)); - painter.drawRect(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom); + painter.setBrush(QColor(220, 210, 50, 100)); + painter.drawRect(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom); - // HARD-mode tiles - } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == TERRAIN_HARDMODEBLOCK) { - QRectF target(QPoint(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom), QSize(16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom)); - QRectF source(QPoint(0, 0), QSize(16, 16)); - painter.drawPixmap(target, hard_mode_tile, source); + // HARD-mode tiles + } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == TERRAIN_HARDMODEBLOCK) { + QRectF target(QPoint(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom), QSize(16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom)); + QRectF source(QPoint(0, 0), QSize(16, 16)); + painter.drawPixmap(target, hard_mode_tile, source); - painter.setBrush(QColor(190, 36, 230, 100)); - painter.drawRect(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom); + painter.setBrush(QColor(190, 36, 230, 100)); + painter.drawRect(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom); + } } - // locked areas, stairs, doors, etc + // locked areas, stairs, doors, etc if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked != 0 && Mediator::get_instance()->editTool == EDITMODE_LOCK) { // translucid rectangle - //painter.setBrush(QColor(255, 0, 0, 30)); - //painter.drawRect(i*16, j*16, 16, 16); + //painter.setBrush(QColor(255, 0, 0, 30)); + //painter.drawRect(i*16, j*16, 16, 16); // red border painter.setBrush(Qt::NoBrush); painter.setPen(QColor(255, 0, 0, 255)); painter.drawRect(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom); - // terrain type icon - QString terrainIcon; - QResource::registerResource("resources/icons/icons.qrc"); + // terrain type icon + QString terrainIcon; + QResource::registerResource("resources/icons/icons.qrc"); if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 1) { - terrainIcon = QString::fromUtf8(":/toolbar_icons/Lock"); // solid + terrainIcon = QString::fromUtf8(":/toolbar_icons/Lock"); // solid } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 2) { - terrainIcon = QString(":/toolbar_icons/stairs.png"); // stairs + terrainIcon = QString(":/toolbar_icons/stairs.png"); // stairs } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 3) { - terrainIcon = QString(":/toolbar_icons/object-order-lower.png"); // door + terrainIcon = QString(":/toolbar_icons/object-order-lower.png"); // door } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 4) { - terrainIcon = QString(":/toolbar_icons/edit-delete.png"); // spikes + terrainIcon = QString(":/toolbar_icons/edit-delete.png"); // spikes } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 5) { - terrainIcon = QString(":/toolbar_icons/flag-blue.png"); // water + terrainIcon = QString(":/toolbar_icons/flag-blue.png"); // water } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 6) { - terrainIcon = QString(":/toolbar_icons/flag-green.png"); // ice + terrainIcon = QString(":/toolbar_icons/flag-green.png"); // ice } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 7) { - terrainIcon = QString(":/toolbar_icons/arrow-left.png"); // move left + terrainIcon = QString(":/toolbar_icons/arrow-left.png"); // move left } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 8) { - terrainIcon = QString(":/toolbar_icons/arrow-right.png"); // move right + terrainIcon = QString(":/toolbar_icons/arrow-right.png"); // move right } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 9) { - terrainIcon = QString(":/toolbar_icons/arrow-down.png"); // move right + terrainIcon = QString(":/toolbar_icons/arrow-down.png"); // move right } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 10) { - terrainIcon = QString(":/toolbar_icons/system-switch-user.png"); // move right + terrainIcon = QString(":/toolbar_icons/system-switch-user.png"); // move right } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 11) { - terrainIcon = QString(":/toolbar_icons/Save"); // move right + terrainIcon = QString(":/toolbar_icons/Save"); // move right } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 12) { terrainIcon = QString(":/toolbar_icons/draw-polygon.png"); // easy block } else if (Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].locked == 13) { terrainIcon = QString(":/toolbar_icons/draw-square-inverted-corners.png"); // hard block } - QPixmap terrainImage(terrainIcon); - if (terrainImage.isNull()) { - printf("ERROR: EditorArea::paintEvent - terrainType - Could not load image file '%s'\n", qPrintable(terrainIcon)); - } else { - terrainIcon.resize(16); - painter.setOpacity(0.7); + QPixmap terrainImage(terrainIcon); + if (terrainImage.isNull()) { + printf("ERROR: EditorArea::paintEvent - terrainType - Could not load image file '%s'\n", qPrintable(terrainIcon)); + } else { + terrainIcon.resize(16); + painter.setOpacity(0.7); QRectF target(QPoint(i*16*Mediator::get_instance()->zoom, j*16*Mediator::get_instance()->zoom), QSize(16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom)); - QRectF source(QPoint(0, 0), QSize(terrainImage.width (), terrainImage.height ())); - painter.drawPixmap(target, terrainImage, source); - } - painter.setOpacity(1.0); - } + QRectF source(QPoint(0, 0), QSize(terrainImage.width (), terrainImage.height ())); + painter.drawPixmap(target, terrainImage, source); + } + painter.setOpacity(1.0); + } } } - //std::cout << "=============" << std::endl; - if (Mediator::get_instance()->show_grid) { - // DRAW GRID // - QPen pen(QColor(160, 160, 160), 1, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); - QPen pen_red(QColor(180, 50, 50), 2, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); - painter.setPen(pen); - for (i=1; izoom-1; - //QLineF line(0, 800, 16, 800); - // linhas horizontais - line = QLineF(pos, 0, pos, MAP_H*16*Mediator::get_instance()->zoom-1); - if (i % 20 == 0) { - painter.setPen(pen_red); - } else { - painter.setPen(pen); - } - painter.drawLine(line); - } - painter.setPen(pen); - for (i=1; izoom-1; - //QLineF line(0, 800, 16, 800); - // linhas verticais - line = QLineF(0, pos, MAP_W*16*Mediator::get_instance()->zoom-1, pos); - painter.drawLine(line); - } - } - // DRAW LINKS // if (Mediator::get_instance()->show_teleporters_flag == true) { @@ -459,7 +374,8 @@ void EditorArea::paintEvent(QPaintEvent *) { } - // DRAW ENEMIES // + // DRAW ENEMIES BACKGROUNDS // + std::map npc_bg_width_map; if (Mediator::get_instance()->show_npcs_flag == true) { /// draw NPCs for (int i=0; imaps_data_npc_list.size(); i++) { @@ -472,7 +388,60 @@ void EditorArea::paintEvent(QPaintEvent *) { continue; } - //std::cout << "EditorArea::paintEvent #5.0.A [" << i << "]" << std::endl; + int npc_id = Mediator::get_instance()->maps_data_npc_list[i].id_npc; + if (npc_id >= Mediator::get_instance()->enemy_list.size() || npc_id < 0) { + Mediator::get_instance()->maps_data_npc_list[i].id_npc = -1; + continue; + } + + + std::string npc_bg_file(Mediator::get_instance()->enemy_list.at(npc_id).bg_graphic_filename); + if (npc_bg_file.length() > 0) { + std::string _bg_graphic_filename = FILEPATH + "/images/sprites/enemies/backgrounds/" + npc_bg_file; + QPixmap bg_image(_bg_graphic_filename.c_str()); + + // calculate total image size of background exists + if (!bg_image.isNull()) { + int total_w = bg_image.width(); + npc_bg_width_map.insert(std::pair(npc_id, bg_image.width())); + int total_h = bg_image.height(); + QBitmap enemy_bg_mask = bg_image.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); + bg_image.setMask(enemy_bg_mask); + QRectF bg_target(QPoint(Mediator::get_instance()->maps_data_npc_list[i].start_point.x*16*Mediator::get_instance()->zoom, Mediator::get_instance()->maps_data_npc_list[i].start_point.y*16*Mediator::get_instance()->zoom), QSize(total_w*Mediator::get_instance()->zoom, total_h*Mediator::get_instance()->zoom)); + QRectF bg_source(QRectF(QPoint(0, 0), QSize(bg_image.width(), bg_image.height()))); + + int direction = Mediator::get_instance()->maps_data_npc_list[i].direction; + // TODO: store this background to optimize things + if (direction == ANIM_DIRECTION_LEFT) { + QImage temp_img(_bg_graphic_filename.c_str()); + QImage mirror_image = temp_img.copy(0, 0, total_w, total_h); + mirror_image = mirror_image.mirrored(true, false); + QPixmap mirror_image_pixmap = QPixmap().fromImage(mirror_image); + + QBitmap mirror_enemy_bg_mask = mirror_image_pixmap.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); + mirror_image_pixmap.setMask(mirror_enemy_bg_mask); + painter.drawPixmap(bg_target, mirror_image_pixmap, bg_source); + } else { + painter.drawPixmap(bg_target, bg_image, bg_source); + } + } + } + } + } + + // DRAW ENEMIES // + if (Mediator::get_instance()->show_npcs_flag == true) { + /// draw NPCs + for (unsigned int i=0; imaps_data_npc_list.size(); i++) { + if (Mediator::get_instance()->maps_data_npc_list[i].stage_id != Mediator::get_instance()->currentStage || Mediator::get_instance()->maps_data_npc_list[i].map_id != Mediator::get_instance()->currentMap) { + continue; // only show enemies from current stage/map + } + if (Mediator::get_instance()->maps_data_npc_list[i].difficulty_mode == DIFFICULTY_MODE_GREATER && Mediator::get_instance()->maps_data_npc_list[i].difficulty_level > Mediator::get_instance()->currentDifficulty) { + continue; // only show enemies with equal or lower difficulty + } else if (Mediator::get_instance()->maps_data_npc_list[i].difficulty_mode == DIFFICULTY_MODE_EQUAL && Mediator::get_instance()->maps_data_npc_list[i].difficulty_level != Mediator::get_instance()->currentDifficulty) { + continue; + } + int npc_id = Mediator::get_instance()->maps_data_npc_list[i].id_npc; if (npc_id >= Mediator::get_instance()->enemy_list.size() || npc_id < 0) { Mediator::get_instance()->maps_data_npc_list[i].id_npc = -1; @@ -495,8 +464,6 @@ void EditorArea::paintEvent(QPaintEvent *) { int sprite_adjust_x = Mediator::get_instance()->enemy_list.at(npc_id).sprites_pos_bg.x; int sprite_adjust_y = Mediator::get_instance()->enemy_list.at(npc_id).sprites_pos_bg.y; - - QRectF target(QPoint((Mediator::get_instance()->maps_data_npc_list[i].start_point.x*16+sprite_adjust_x)*Mediator::get_instance()->zoom, (Mediator::get_instance()->maps_data_npc_list[i].start_point.y*16+sprite_adjust_y)*Mediator::get_instance()->zoom), QSize(total_w, total_h)); QRectF source; if (Mediator::get_instance()->maps_data_npc_list[i].direction != ANIM_DIRECTION_RIGHT || temp_image.height() <= Mediator::get_instance()->enemy_list.at(npc_id).frame_size.height) { @@ -524,9 +491,7 @@ void EditorArea::paintEvent(QPaintEvent *) { painter.drawRect(target); } - int direction = Mediator::get_instance()->maps_data_npc_list[i].direction; - //std::cout << "direction: " << direction << ", ANIM_DIRECTION_LEFT: " << std::endl; if (direction == ANIM_DIRECTION_LEFT) { QImage temp_img(filename.c_str()); QImage mirror_image = temp_img.copy(source.x(), source.y(), source.width(), source.height()); @@ -536,28 +501,43 @@ void EditorArea::paintEvent(QPaintEvent *) { QBitmap mirror_enemy_bg_mask = mirror_image_pixmap.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); mirror_image_pixmap.setMask(mirror_enemy_bg_mask); - + if (npc_bg_width_map.find(npc_id) != npc_bg_width_map.end()) { + int original_pos_x = Mediator::get_instance()->maps_data_npc_list[i].start_point.x*TILESIZE; + int bg_image_width = npc_bg_width_map.find(npc_id)->second; + int graph_diff_x = bg_image_width - Mediator::get_instance()->enemy_list.at(npc_id).sprites_pos_bg.x - Mediator::get_instance()->enemy_list.at(npc_id).frame_size.width; + //std::cout << "char[" << name << "], original_pos_x[" << original_pos_x << "], pos.x[" << pos.x << "], background_pos.x[" << background_pos.x << "], graph_diff_x[" << graph_diff_x << "]" << std::endl; + int new_pos_x = original_pos_x + graph_diff_x; + //std::cout << "NPC[" << Mediator::get_instance()->enemy_list.at(npc_id).name << "], bg_image_width[" << bg_image_width << "], new_pos_x[" << new_pos_x << "], graph_diff_x[" << graph_diff_x << "], bg_img.w[" << bg_image_width << "], bg_pos.x[" << Mediator::get_instance()->enemy_list.at(npc_id).sprites_pos_bg.x << "]" << std::endl; + target = QRectF(QPoint((new_pos_x)*Mediator::get_instance()->zoom, (Mediator::get_instance()->maps_data_npc_list[i].start_point.y*16+sprite_adjust_y)*Mediator::get_instance()->zoom), QSize(total_w, total_h)); + } painter.drawPixmap(target, mirror_image_pixmap, source); + if (Mediator::get_instance()->show_rects_flag == true) { + painter.setBrush(QColor(255, 255, 255, 180)); + painter.drawRect(target.left(), target.top(), target.width(), target.height()); + } } else { painter.drawPixmap(target, temp_image, source); + if (Mediator::get_instance()->show_rects_flag == true) { + painter.setBrush(QColor(255, 255, 255, 180)); + painter.drawRect(target.left(), target.top(), target.width(), target.height()); + } } } } } - + // DRAW OBJECTS // if (Mediator::get_instance()->show_objects_flag == true) { /// draw objects - //std::cout << "################### START LOOP" << std::endl; - for (int i=0; imaps_data_object_list.size(); i++) { + for (unsigned int i=0; imaps_data_object_list.size(); i++) { int obj_stage_id = (int)Mediator::get_instance()->maps_data_object_list[i].stage_id; int obj_map_id = (int)Mediator::get_instance()->maps_data_object_list[i].map_id; + if (obj_stage_id != Mediator::get_instance()->currentStage || obj_map_id != Mediator::get_instance()->currentMap) { continue; } - if (Mediator::get_instance()->maps_data_object_list[i].difficulty_mode == DIFFICULTY_MODE_GREATER && Mediator::get_instance()->maps_data_object_list[i].difficulty_level > Mediator::get_instance()->currentDifficulty) { continue; // only show enemies with equal or lower difficulty } else if (Mediator::get_instance()->maps_data_object_list[i].difficulty_mode == DIFFICULTY_MODE_EQUAL && Mediator::get_instance()->maps_data_object_list[i].difficulty_level != Mediator::get_instance()->currentDifficulty) { @@ -566,15 +546,11 @@ void EditorArea::paintEvent(QPaintEvent *) { int obj_id = (int)Mediator::get_instance()->maps_data_object_list[i].id_object; - //std::cout << "OBJ[" << i << "][" << Mediator::get_instance()->object_list.at(obj_id).name << "].stage[" << (int)Mediator::get_instance()->maps_data_object_list[i].stage_id << "].map[" << (int)Mediator::get_instance()->maps_data_object_list[i].map_id << "], currentStage[" << Mediator::get_instance()->currentStage << "], currentMap[" << Mediator::get_instance()->currentMap << "]" << std::endl; - if (obj_id != -1) { - //if (obj_id == 20) { std::cout << "************************** paintEvent - draw_objects[" << i << "].id: " << obj_id << std::endl; } std::string filename = FILEPATH + "/images/sprites/objects/" + Mediator::get_instance()->object_list.at(obj_id).graphic_filename; QPixmap temp_image(filename.c_str()); if (temp_image.isNull()) { - std::cout << "****************** Could not load file '" << filename.c_str() << "'" << std::endl; painter.setBrush(QColor(255, 255, 255, 180)); painter.drawRect(Mediator::get_instance()->maps_data_object_list[i].start_point.x*16*Mediator::get_instance()->zoom, Mediator::get_instance()->maps_data_object_list[i].start_point.y*16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom); } else { @@ -582,7 +558,6 @@ void EditorArea::paintEvent(QPaintEvent *) { QBitmap mask = temp_image.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); temp_image.setMask(mask); - int obj_type = Mediator::get_instance()->object_list.at(obj_id).type; int obj_direction = Mediator::get_instance()->maps_data_object_list[i].direction; if (obj_type == OBJ_RAY_HORIZONTAL) { @@ -592,13 +567,11 @@ void EditorArea::paintEvent(QPaintEvent *) { graphic_pos_x = Mediator::get_instance()->object_list.at(obj_id).size.width - TILESIZE; graphic_pos_y = 0; } - //std::cout << "OBJ_RAY_HORIZONTAL - obj_direction: " << obj_direction << ", graphic_pos_x: " << graphic_pos_x << ", graphic_pos_y: " << graphic_pos_y << std::endl; QRectF target(QPoint(Mediator::get_instance()->maps_data_object_list[i].start_point.x*TILESIZE*Mediator::get_instance()->zoom, Mediator::get_instance()->maps_data_object_list[i].start_point.y*TILESIZE*Mediator::get_instance()->zoom), QSize(TILESIZE*Mediator::get_instance()->zoom, Mediator::get_instance()->object_list.at(obj_id).size.height*Mediator::get_instance()->zoom)); QRectF source(QPoint(graphic_pos_x, graphic_pos_y), QSize(TILESIZE, Mediator::get_instance()->object_list.at(obj_id).size.height)); painter.drawPixmap(target, temp_image, source); } else if (obj_type == OBJ_RAY_VERTICAL) { int graphic_pos_y = Mediator::get_instance()->object_list.at(obj_id).size.height - TILESIZE; - //std::cout << "OBJ_RAY_HORIZONTAL - graphic_pos_y: " << graphic_pos_y << std::endl; QRectF target(QPoint(Mediator::get_instance()->maps_data_object_list[i].start_point.x*16*Mediator::get_instance()->zoom, Mediator::get_instance()->maps_data_object_list[i].start_point.y*16*Mediator::get_instance()->zoom), QSize(Mediator::get_instance()->object_list.at(obj_id).size.width*Mediator::get_instance()->zoom, Mediator::get_instance()->object_list.at(obj_id).size.height*Mediator::get_instance()->zoom)); QRectF source(QPoint(0, graphic_pos_y), QSize(Mediator::get_instance()->object_list.at(obj_id).size.width, Mediator::get_instance()->object_list.at(obj_id).size.height)); painter.drawPixmap(target, temp_image, source); @@ -606,13 +579,24 @@ void EditorArea::paintEvent(QPaintEvent *) { QRectF target(QPoint(Mediator::get_instance()->maps_data_object_list[i].start_point.x*TILESIZE*Mediator::get_instance()->zoom - (Mediator::get_instance()->object_list.at(obj_id).size.width-TILESIZE)*Mediator::get_instance()->zoom, Mediator::get_instance()->maps_data_object_list[i].start_point.y*16*Mediator::get_instance()->zoom), QSize(Mediator::get_instance()->object_list.at(obj_id).size.width*Mediator::get_instance()->zoom, Mediator::get_instance()->object_list.at(obj_id).size.height*Mediator::get_instance()->zoom)); QRectF source(QPoint(0, 0), QSize(Mediator::get_instance()->object_list.at(obj_id).size.width, Mediator::get_instance()->object_list.at(obj_id).size.height)); painter.drawPixmap(target, temp_image, source); + } else if (obj_type == OBJ_TIMED_BOMB) { + int bomb_direction =Mediator::get_instance()->maps_data_object_list[i].direction; + int y_graph_adjust = (bomb_direction * Mediator::get_instance()->object_list.at(obj_id).size.height)*2; + std::cout << "BOMB[" << i << "].direction[" << bomb_direction << "], y_graph_adjust[" << y_graph_adjust << "]" << std::endl; + QRectF target(QPoint(Mediator::get_instance()->maps_data_object_list[i].start_point.x*TILESIZE*Mediator::get_instance()->zoom - (Mediator::get_instance()->object_list.at(obj_id).size.width-TILESIZE)*Mediator::get_instance()->zoom, Mediator::get_instance()->maps_data_object_list[i].start_point.y*16*Mediator::get_instance()->zoom), QSize(Mediator::get_instance()->object_list.at(obj_id).size.width*Mediator::get_instance()->zoom, Mediator::get_instance()->object_list.at(obj_id).size.height*Mediator::get_instance()->zoom)); + QRectF source(QPoint(0, y_graph_adjust), QSize(Mediator::get_instance()->object_list.at(obj_id).size.width, Mediator::get_instance()->object_list.at(obj_id).size.height)); + painter.drawPixmap(target, temp_image, source); } else { QRectF target(QPoint(Mediator::get_instance()->maps_data_object_list[i].start_point.x*16*Mediator::get_instance()->zoom, Mediator::get_instance()->maps_data_object_list[i].start_point.y*16*Mediator::get_instance()->zoom), QSize(Mediator::get_instance()->object_list.at(obj_id).size.width*Mediator::get_instance()->zoom, Mediator::get_instance()->object_list.at(obj_id).size.height*Mediator::get_instance()->zoom)); - QRectF source; - if (obj_direction == ANIM_DIRECTION_RIGHT && temp_image.height() >= Mediator::get_instance()->object_list.at(obj_id).size.height) { + QRectF source = QRectF(QPoint(0, 0), QSize(Mediator::get_instance()->object_list.at(obj_id).size.width, Mediator::get_instance()->object_list.at(obj_id).size.height)); + if (obj_direction == ANIM_DIRECTION_RIGHT && temp_image.height() >= Mediator::get_instance()->object_list.at(obj_id).size.height*2) { source = QRectF(QPoint(0, Mediator::get_instance()->object_list.at(obj_id).size.height), QSize(Mediator::get_instance()->object_list.at(obj_id).size.width, Mediator::get_instance()->object_list.at(obj_id).size.height)); - } else { - source = QRectF(QPoint(0, 0), QSize(Mediator::get_instance()->object_list.at(obj_id).size.width, Mediator::get_instance()->object_list.at(obj_id).size.height)); + } + //std::cout << "OBJECT[" << i << "], ID[" << (int)Mediator::get_instance()->maps_data_object_list.at(i).id_object << "] target[" << target.left() << "][" << target.top() << "], source.w[" << source.width() << "], source.h[" << source.height() << "]" << std::endl; + //painter.setBrush(QColor(255, 255, 255, 180)); + if (Mediator::get_instance()->show_rects_flag == true) { + painter.setBrush(QColor(255, 255, 255, 180)); + painter.drawRect(Mediator::get_instance()->maps_data_object_list[i].start_point.x*TILESIZE*Mediator::get_instance()->zoom, Mediator::get_instance()->maps_data_object_list[i].start_point.y*TILESIZE*Mediator::get_instance()->zoom, Mediator::get_instance()->object_list.at(obj_id).size.width*Mediator::get_instance()->zoom, Mediator::get_instance()->object_list.at(obj_id).size.height*Mediator::get_instance()->zoom); } painter.drawPixmap(target, temp_image, source); } @@ -621,10 +605,8 @@ void EditorArea::paintEvent(QPaintEvent *) { if (Mediator::get_instance()->maps_data_object_list[i].map_dest != -1) { int obj_w = Mediator::get_instance()->object_list.at(obj_id).size.width; int obj_h = Mediator::get_instance()->object_list.at(obj_id).size.height; - //std::cout << "OBJ.w: " << obj_w << ", obj_h: " << obj_h << std::endl; int dest_x = Mediator::get_instance()->maps_data_object_list[i].start_point.x*TILESIZE*Mediator::get_instance()->zoom + (obj_w/2)*Mediator::get_instance()->zoom - TILESIZE/2; int dest_y = Mediator::get_instance()->maps_data_object_list[i].start_point.y*TILESIZE*Mediator::get_instance()->zoom + (obj_h/2)*Mediator::get_instance()->zoom - TILESIZE/2; - //std::cout << "DRAW OBJECT TELEPORTER ORIGIN[" << i << "] - map: " << (int)Mediator::get_instance()->maps_data_object_list[i].map_dest << ", x: " << Mediator::get_instance()->maps_data_object_list[i].start_point.x << ", y: " << Mediator::get_instance()->maps_data_object_list[i].start_point.y << std::endl; if (Mediator::get_instance()->object_list.at(obj_id).type == OBJ_FINAL_BOSS_TELEPORTER) { painter.setBrush(QColor(160, 60, 60, 180)); } else { @@ -655,11 +637,8 @@ void EditorArea::paintEvent(QPaintEvent *) { } // draw teleport destiny links - //std::cout << "OBJ[" << i << "].map_dest: " << (int)map_obj.map_dest << ", currentMap: " << k << std::endl; if (map_obj.map_dest == Mediator::get_instance()->currentMap) { - //std::cout << "## EDITORAREA::paintEvent - teleporter_obj - x: " << (int)map_obj.link_dest.x << ", y: " << (int)map_obj.link_dest.y << std::endl; - if (Mediator::get_instance()->object_list.at(obj_id).type == OBJ_FINAL_BOSS_TELEPORTER) { painter.setBrush(QColor(160, 60, 60, 180)); } else { @@ -680,12 +659,41 @@ void EditorArea::paintEvent(QPaintEvent *) { } } + if (Mediator::get_instance()->show_grid) { + // DRAW GRID // + QPen pen(QColor(160, 160, 160), 1, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); + QPen pen_red(QColor(255, 0, 255), 2, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); + QPen pen_white(QColor(250, 250, 250), 2, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); + painter.setPen(pen); + for (i=1; izoom-1; + //QLineF line(0, 800, 16, 800); + // linhas horizontais + line = QLineF(pos, 0, pos, MAP_H*16*Mediator::get_instance()->zoom-1); + if (i % 20 == 0) { + painter.setPen(pen_white); + QLineF lineWhite = QLineF(pos+4, 0, pos+4, MAP_H*16*Mediator::get_instance()->zoom-1); + painter.drawLine(lineWhite); + painter.setPen(pen_red); + } else { + painter.setPen(pen); + } + painter.drawLine(line); + } + painter.setPen(pen); + for (i=1; izoom-1; + //QLineF line(0, 800, 16, 800); + // linhas verticais + line = QLineF(0, pos, MAP_W*16*Mediator::get_instance()->zoom-1, pos); + painter.drawLine(line); + } + } + // === FOREGROUND LAYER IMAGE == // if (Mediator::get_instance()->show_fg_layer == true) { if (!fg_layer__image.isNull()) { - //std::cout << "DRAW BG1" << std::endl; int max_repeat = ((MAP_W*16)/fg_layer__image.width())*Mediator::get_instance()->zoom+1; - //std::cout << "fg_layer__image.width(): " << fg_layer__image.width() << ", max_repeat: " << max_repeat << std::endl; for (int k=0; kzoom, Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[1].adjust_y*Mediator::get_instance()->zoom), QSize(fg_layer__image.width()*Mediator::get_instance()->zoom, fg_layer__image.height()*Mediator::get_instance()->zoom)); @@ -699,7 +707,6 @@ void EditorArea::paintEvent(QPaintEvent *) { // === draw selection === // if (Mediator::get_instance()->editMode == EDITMODE_SELECT) { - std::cout << "PAINT::EDITMODE_SELECT" << std::endl; painter.setBrush(QColor(0, 0, 255, 180)); painter.drawRect(selection_start_x*TILESIZE*Mediator::get_instance()->zoom, selection_start_y*TILESIZE*Mediator::get_instance()->zoom, abs(selection_current_x-selection_start_x)*TILESIZE*Mediator::get_instance()->zoom, abs(selection_current_y-selection_start_y)*TILESIZE*Mediator::get_instance()->zoom); } @@ -734,13 +741,11 @@ void EditorArea::wheelEvent(QWheelEvent *event) if (numSteps > 0) { if (Mediator::get_instance()->zoom < 3) { Mediator::get_instance()->zoom++; - std::cout << "### INC-SET ZOOM TO[" << Mediator::get_instance()->zoom << "]" << std::endl; repaint(); } } else if (numSteps < 0) { if (Mediator::get_instance()->zoom > 1) { Mediator::get_instance()->zoom--; - std::cout << "### DEC-SET ZOOM TO[" << Mediator::get_instance()->zoom << "]" << std::endl; repaint(); } } @@ -748,7 +753,6 @@ void EditorArea::wheelEvent(QWheelEvent *event) void EditorArea::mousePressEvent(QMouseEvent *event) { if (mouse_released == false && (Mediator::get_instance()->editTool == EDITMODE_LINK || Mediator::get_instance()->editTool == EDITMODE_LINK_DEST || Mediator::get_instance()->editMode == EDITMODE_NPC || Mediator::get_instance()->editMode == EDITMODE_OBJECT || Mediator::get_instance()->editMode == EDITMODE_SET_BOSS || Mediator::get_instance()->editMode == EDITMODE_SET_SUBBOSS || Mediator::get_instance()->editMode == EDITMODE_ANIM_TILE)) { - std::cout << "EDITORAREA::mousePressEvent - IGNORED" << std::endl; return; } @@ -761,8 +765,7 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { if (Mediator::get_instance()->layerLevel == 1) { Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile1.x = Mediator::get_instance()->getPalleteX(); Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile1.y = Mediator::get_instance()->getPalleteY(); - } else if (Mediator::get_instance()->layerLevel == 3) { - printf(">> EditorArea::mousePressEvent - placing tile 3\n"); + } else if (Mediator::get_instance()->layerLevel > 1) { Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile3.x = Mediator::get_instance()->getPalleteX(); Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile3.y = Mediator::get_instance()->getPalleteY(); } @@ -770,7 +773,7 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { if (Mediator::get_instance()->layerLevel == 1) { Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile1.x = -1; Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile1.y = -1; - } else if (Mediator::get_instance()->layerLevel == 3) { + } else if (Mediator::get_instance()->layerLevel > 1) { Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile3.x = -1; Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile3.y = -1; } @@ -793,21 +796,20 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { // we set x as anim_tile.id -2 and y as zero int anim_tile_id = (Mediator::get_instance()->selectedAnimTileset*-1) - 2; - std::cout << "Mediator::get_instance()->selectedAnimTileset: " << Mediator::get_instance()->selectedAnimTileset << ", anim_tile_id: " << anim_tile_id << std::endl; - if (anim_tile_id >= 0) { return; } + int abs_anim_tile_id = abs(anim_tile_id) - 2; + if (abs_anim_tile_id >= Mediator::get_instance()->anim_block_list.size()) { + return; + } tilex = anim_tile_id; tiley = 0; } if (Mediator::get_instance()->layerLevel == 1) { Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile1.x = tilex; Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile1.y = tiley; - } else if (Mediator::get_instance()->layerLevel == 3) { - - std::cout << ">>>>>>>> SET ANIM-TILE IN OVERLAY, x: " << tilex << ", y: " << tiley << std::endl; - + } else if (Mediator::get_instance()->layerLevel > 1) { Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile3.x = tilex; Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile3.y = tiley; } @@ -824,7 +826,6 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { if (Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].pos_origin.x == editor_selectedTileX && Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].pos_origin.y == editor_selectedTileY) { Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].id_map_destiny = -1; Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].id_map_origin = -1; - std::cout << "######## -> editorArea::mousePress - removed link 1" << std::endl; removed_link = true; break; } @@ -832,7 +833,6 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { if (Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].pos_destiny.x == editor_selectedTileX && Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].pos_destiny.y == editor_selectedTileY) { Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].id_map_destiny = -1; Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].id_map_origin = -1; - std::cout << "######## -> editorArea::mousePress - removed link 2" << std::endl; removed_link = true; break; } @@ -842,7 +842,6 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { // check if there is a slot free int link_n = -1; for (int i=0; i> DEBUG - links[" << i << "].id_map_destiny: " << Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].id_map_destiny << ", id_map_origin: " << Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].id_map_origin << std::endl; if (Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].id_map_destiny == -1 && Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].id_map_origin == -1) { link_n = i; break; @@ -855,12 +854,10 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { return; } // last boss room doesen't need destination - std::cout << "########### -> editorArea::mousePress - adding link ORIGIN at slot[" << link_n << "] - PART 1" << std::endl; tempX = editor_selectedTileX; tempY = editor_selectedTileY; } } else if (Mediator::get_instance()->editTool == EDITMODE_LINK_DEST) { - std::cout << "########### -> editorArea::mousePress - adding link - PART 3" << std::endl; int link_n = -1; for (int i=0; istage_data.stages[Mediator::get_instance()->currentStage].links[i].id_map_destiny == -1 && Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[i].id_map_origin == -1) { @@ -874,7 +871,6 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { msgBox.exec(); return; } - std::cout << "########### -> editorArea::mousePress - adding link DESTINY at slot[" << link_n << "] - PART 3" << std::endl; Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[link_n].id_map_origin = link_map_origin; Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[link_n].pos_origin.x = link_pos_x; Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].links[link_n].pos_origin.y = link_pos_y; @@ -896,7 +892,6 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { } else if (Mediator::get_instance()->editMode == EDITMODE_SET_BOSS) { - std::cout << ">> EditorArea::mousePressEvent - EDITMODE_SET_BOSS" << std::endl; // search if there is an existing NPC in ths position, and if yes, set as boss for (int i=0; imaps_data_npc_list.size(); i++) { // only show enemies from current stage/map @@ -913,14 +908,12 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { } else if (Mediator::get_instance()->editMode == EDITMODE_SET_SUBBOSS) { - std::cout << ">> EditorArea::mousePressEvent - EDITMODE_SET_SUBBOSS" << std::endl; // search if there is an existing NPC in ths position, and if yes, set as sub-boss for (int i=0; imaps_data_npc_list.size(); i++) { if (Mediator::get_instance()->maps_data_npc_list[i].stage_id != Mediator::get_instance()->currentStage || Mediator::get_instance()->maps_data_npc_list[i].map_id != Mediator::get_instance()->currentMap) { continue; // only show enemies from current stage/map } if (Mediator::get_instance()->maps_data_npc_list[i].id_npc != -1 && Mediator::get_instance()->maps_data_npc_list[i].start_point.x == editor_selectedTileX && Mediator::get_instance()->maps_data_npc_list[i].start_point.y == editor_selectedTileY) { - std::cout << ">> EditorArea::mousePressEvent - EDITMODE_SET_SUBBOSS - FOUND NPC" << std::endl; Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->maps_data_npc_list[i].id_npc).is_sub_boss = !Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->maps_data_npc_list[i].id_npc).is_sub_boss; break; } @@ -928,8 +921,6 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { } else if (Mediator::get_instance()->editMode == EDITMODE_NPC) { - printf(">> EditorArea::mousePressEvent - EDITMODE_NPC\n"); - int found_npc = -1; // search if there is an existing NPC in ths position, and if yes, remove it for (int i=0; imaps_data_npc_list.size(); i++) { @@ -944,16 +935,15 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { // clean old-format trash for (int i=0; imaps_data_npc_list.size(); i++) { if (Mediator::get_instance()->maps_data_npc_list[i].start_point.x == -1 && Mediator::get_instance()->maps_data_npc_list[i].start_point.y == -1) { - std::cout << "[OBJECT] reseting free-slot - i: " << i << ", id: " << Mediator::get_instance()->maps_data_npc_list[i].id_npc << ", x: " << Mediator::get_instance()->maps_data_npc_list[i].start_point.x << ", y: " << Mediator::get_instance()->maps_data_npc_list[i].start_point.y << std::endl; Mediator::get_instance()->maps_data_npc_list[i].id_npc = -1; } } if (Mediator::get_instance()->editTool == EDITMODE_ERASER && found_npc != -1) { - std::cout << "remove npc - slot: " << found_npc << std::endl; Mediator::get_instance()->maps_data_npc_list[found_npc].id_npc = -1; } else if (Mediator::get_instance()->editTool == EDITMODE_NORMAL && found_npc == -1 && Mediator::get_instance()->selectedNPC != -1) { + std::cout << ">>>>>>>>>>>> add-npc" << std::endl; CURRENT_FILE_FORMAT::file_map_npc_v2 new_npc; new_npc.id_npc = Mediator::get_instance()->selectedNPC; new_npc.start_point.x = editor_selectedTileX; @@ -972,7 +962,6 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { } else if (Mediator::get_instance()->editMode == EDITMODE_OBJECT) { - std::cout << ">> EditorArea::mousePressEvent - EDITMODE_OBJECT" << std::endl; int found_object = -1; // search if there is an existing object in ths position, and if yes, remove it @@ -993,13 +982,11 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { } if (Mediator::get_instance()->maps_data_object_list[m].start_point.x == -1 && Mediator::get_instance()->maps_data_object_list[m].start_point.y == -1) { - std::cout << "reseting free-slot - m: " << m << ", id: " << Mediator::get_instance()->maps_data_object_list[m].id_object << ", x: " << Mediator::get_instance()->maps_data_object_list[m].start_point.x << ", y: " << Mediator::get_instance()->maps_data_object_list[m].start_point.y << std::endl; Mediator::get_instance()->maps_data_object_list[m].id_object = -1; } } if (Mediator::get_instance()->editTool == EDITMODE_ERASER && found_object != -1) { - std::cout << "remove object - slot: " << found_object << std::endl; Mediator::get_instance()->maps_data_object_list.erase(Mediator::get_instance()->maps_data_object_list.begin()+found_object); } else if (Mediator::get_instance()->editTool == EDITMODE_NORMAL && found_object == -1 && Mediator::get_instance()->selectedNPC != -1) { CURRENT_FILE_FORMAT::file_map_object_v2 new_obj; @@ -1016,7 +1003,6 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { int obj_type = Mediator::get_instance()->object_list.at(Mediator::get_instance()->selectedNPC).type; if (obj_type == OBJ_BOSS_TELEPORTER || obj_type == OBJ_FINAL_BOSS_TELEPORTER || obj_type == OBJ_PLATFORM_TELEPORTER || obj_type == OBJ_STAGE_BOSS_TELEPORTER) { editor_selected_object_pos = Mediator::get_instance()->maps_data_object_list.size(); - std::cout << "SET editor_selected_object_pos: " << editor_selected_object_pos << std::endl; Mediator::get_instance()->editTool = EDITMODE_OBJECT_LINK_PLACING; QApplication::setOverrideCursor(Qt::CrossCursor); // @TODO - desabilita todos os modos, não pode sair no meio de object-link-placing @@ -1026,42 +1012,26 @@ void EditorArea::mousePressEvent(QMouseEvent *event) { } Mediator::get_instance()->maps_data_object_list.push_back(new_obj); repaint(); - } else if (Mediator::get_instance()->editTool == EDITMODE_NORMAL && found_object != -1 && Mediator::get_instance()->selectedNPC != -1) { - printf(">> EditorArea::mousePressEvent - Adding object - place already taken\n"); } else if (Mediator::get_instance()->editTool == EDITMODE_OBJECT_LINK_PLACING) { - std::cout << ">> EditorArea::mousePressEvent - EDITMODE_OBJECT_LINK_PLACING" << std::endl; - std::cout << "USE editor_selected_object_pos_map: " << editor_selected_object_pos_map << ", editor_selected_object_pos: " << editor_selected_object_pos << ", editor_selectedTileX: " << editor_selectedTileX << ", editor_selectedTileY: " << editor_selectedTileY << std::endl; Mediator::get_instance()->maps_data_object_list[editor_selected_object_pos].link_dest.x = editor_selectedTileX; Mediator::get_instance()->maps_data_object_list[editor_selected_object_pos].link_dest.y = editor_selectedTileY; Mediator::get_instance()->maps_data_object_list[editor_selected_object_pos].map_dest = Mediator::get_instance()->currentMap; Mediator::get_instance()->editTool = EDITMODE_NORMAL; - std::cout << "[TELEPORTER] SET map: " << (int)Mediator::get_instance()->maps_data_object_list[editor_selected_object_pos].map_dest << ", x: " << (int)Mediator::get_instance()->maps_data_object_list[editor_selected_object_pos].link_dest.x << ", y: " << (int)Mediator::get_instance()->maps_data_object_list[editor_selected_object_pos].link_dest.y << std::endl; QApplication::setOverrideCursor(Qt::ArrowCursor); - } else { - std::cout << ">> EditorArea::mousePressEvent - EDITMODE UNKNOWN!!!!" << std::endl; } - - - } else if (Mediator::get_instance()->editMode == EDITMODE_SELECT) { - std::cout << "EDITMODE_SELECT - selection_started: " << selection_started << std::endl; if (selection_started == false) { - std::cout << "Start Selection." << std::endl; selection_started = true; selection_start_x = editor_selectedTileX; selection_start_y = editor_selectedTileY; - } else { - std::cout << "selection already started, ignore mousePress..." << std::endl; } } else if (Mediator::get_instance()->editMode == EDITMODE_PASTE) { - std::cout << "EDITMODE_PASTE, matrix size: " << selection_matrix.size() << std::endl; if (selection_matrix.size() > 0) { for (int i=0; i temp; for (int j=start_y; jeditTool == EDITMODE_LINK && tempX != -1) {// && Mediator::get_instance()->link_type != LINK_FINAL_BOSS_ROOM) { - std::cout << "########### -> editorArea::mouseReleaseEvent - adding link - PART 2" << std::endl; // TODO: add link Mediator::get_instance()->editTool = EDITMODE_LINK_DEST; QApplication::setOverrideCursor(Qt::CrossCursor); @@ -1161,7 +1128,7 @@ void EditorArea::fill_area() { if (Mediator::get_instance()->layerLevel == 1) { originalX = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile1.x; originalY = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile1.y; - } else if (Mediator::get_instance()->layerLevel == 3) { + } else if (Mediator::get_instance()->layerLevel > 1) { originalX = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile3.x; originalY = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[editor_selectedTileX][editor_selectedTileY].tile3.y; } @@ -1174,7 +1141,7 @@ void EditorArea::fill_area() { if (Mediator::get_instance()->layerLevel == 1) { searchX = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x; searchY = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.y; - } else if (Mediator::get_instance()->layerLevel == 3) { + } else if (Mediator::get_instance()->layerLevel > 1) { searchX = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.x; searchY = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.y; } @@ -1193,7 +1160,7 @@ void EditorArea::fill_area() { if (Mediator::get_instance()->layerLevel == 1) { searchX = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x; searchY = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.y; - } else if (Mediator::get_instance()->layerLevel == 3) { + } else if (Mediator::get_instance()->layerLevel > 1) { searchX = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.x; searchY = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.y; } @@ -1220,7 +1187,7 @@ void EditorArea::fill_area() { if (Mediator::get_instance()->layerLevel == 1) { searchX = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x; searchY = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.y; - } else if (Mediator::get_instance()->layerLevel == 3) { + } else if (Mediator::get_instance()->layerLevel > 1) { searchX = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.x; searchY = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.y; } @@ -1238,7 +1205,7 @@ void EditorArea::fill_area() { if (Mediator::get_instance()->layerLevel == 1) { searchX = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.x; searchY = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile1.y; - } else if (Mediator::get_instance()->layerLevel == 3) { + } else if (Mediator::get_instance()->layerLevel > 1) { searchX = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.x; searchY = Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].tiles[i][j].tile3.y; } diff --git a/editor/editortilepallete.cpp b/editor/editortilepallete.cpp index 2bb1fdba..97480585 100644 --- a/editor/editortilepallete.cpp +++ b/editor/editortilepallete.cpp @@ -2,7 +2,6 @@ #include EditorTilePallete::EditorTilePallete(QWidget *parent) : QWidget(parent) { - printf("DEBUG.EditorTilePallete - constructor\n"); selectedTileX=0; selectedTileY=0; myParent = parent; @@ -23,41 +22,77 @@ void EditorTilePallete::paintEvent(QPaintEvent *) { QPainter painter(this); image = new QPixmap(filename); if (image->isNull()) { - printf("DEBUG.Tile - Could not load image file '%s'\n", qPrintable(filename)); + return; } - QRectF target(QPoint(0, 0), image->size()); + QRectF target(QPoint(0, 0), QSize(image->size().width()*zoom, image->size().height()*zoom)); QRectF source(QPoint(0, 0), image->size()); painter.drawPixmap(target, *image, source); - this->resize(image->size()); + this->resize(image->size().width()*zoom, image->size().height()*zoom); myParent->adjustSize(); + // draw the selection marker + painter.setBrush(QColor(40, 240, 40, 120)); painter.setPen(QColor(255, 0, 0)); - QRectF select(QPoint((selectedTileX*16), (selectedTileY*16)), QSize(16, 16)); + QRectF select(QPoint((selectedTileX*TILESIZE*zoom), (selectedTileY*TILESIZE*zoom)), QSize(TILESIZE*zoom, TILESIZE*zoom)); painter.drawRect(select); + painter.setBrush(Qt::NoBrush); + + // GRID + QPen pen(QColor(160, 160, 160), 1, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin); + painter.setPen(pen); + for (int i=0; isize().height()/TILESIZE; i++) { + int pos = i*TILESIZE*zoom-1; + // linhas horizontais + QLineF line = QLineF(0, pos, image->size().width()*zoom-1, pos); + painter.drawLine(line); + } + for (int j=0; jsize().width()/TILESIZE; j++) { + int pos = j*TILESIZE*zoom-1; + // linhas verticais + QLineF line = QLineF(pos, 0, pos, image->size().height()*zoom-1); + painter.drawLine(line); + } + } void EditorTilePallete::changeTileSet(const QString &tileset) { - printf("mudando paleta para %s\n", qPrintable(tileset)); signalPalleteChanged(); repaint(); } void EditorTilePallete::mousePressEvent(QMouseEvent *event) { QPoint pnt = event->pos(); - selectedTileX = pnt.x()/16; - selectedTileY = pnt.y()/16; + selectedTileX = pnt.x()/(TILESIZE*zoom); + selectedTileY = pnt.y()/(TILESIZE*zoom); + Mediator::get_instance()->setPalleteX(selectedTileX); Mediator::get_instance()->setPalleteY(selectedTileY); - printf("DEBUG.EditorTilePallete::mousePressEvent - PalleteX: %d, palleteY: %d\n", selectedTileX, selectedTileY); repaint(); } +void EditorTilePallete::wheelEvent(QWheelEvent *event) +{ + int numDegrees = event->delta() / 8; + int numSteps = numDegrees / 15; + + if (numSteps > 0) { + if (zoom < 4) { + zoom++; + repaint(); + } + } else if (numSteps < 0) { + if (zoom > 1) { + zoom--; + repaint(); + } + } +} + QString EditorTilePallete::getPallete() { QString res(Mediator::get_instance()->getPallete().c_str()); - std::cout << "EditorTilePallete::getPallete - res: " << res.toStdString() << std::endl; return res; } diff --git a/editor/editortilepallete.h b/editor/editortilepallete.h index 81d64aed..7a98ba91 100644 --- a/editor/editortilepallete.h +++ b/editor/editortilepallete.h @@ -30,6 +30,11 @@ class EditorTilePallete : public QWidget protected: void paintEvent(QPaintEvent *event); void mousePressEvent(QMouseEvent * event); + void wheelEvent(QWheelEvent *event); + + +private: + int zoom = 2; signals: void signalPalleteChanged(); diff --git a/editor/enum_names.h b/editor/enum_names.h index 3b032ac8..53c17ba9 100644 --- a/editor/enum_names.h +++ b/editor/enum_names.h @@ -2,18 +2,22 @@ #define ENUM_NAMES_H #include +#include std::vector PROJECTILE_TRAJECTORIES_NAMES; std::vector AI_ACTION_NAMES; std::vector AI_ACTION_SHOT_OPTIONS; std::vector AI_ACTION_WALK_OPTIONS; std::vector AI_ACTION_FLY_OPTIONS; +std::vector AI_ACTION_WALL_WALK_OPTIONS; std::vector AI_ACTION_JUMP_OPTIONS; std::vector AI_ACTION_AIR_WALK_OPTIONS; std::vector AI_ACTION_TELEPORT_OPTIONS; std::vector AI_ACTION_DASH_OPTIONS; std::vector AI_ACTION_GRAB_WALL_OPTIONS; std::vector ANIMATION_TYPE_LIST; +std::vector AI_ACTION_SFX_OPTION_NAMES; +std::vector AI_ACTION_SHOT_MULTIPLE_PROJECTILE_NAMES; void init_enum_names() { PROJECTILE_TRAJECTORIES_NAMES.push_back("LINEAR"); @@ -47,6 +51,10 @@ void init_enum_names() { PROJECTILE_TRAJECTORIES_NAMES.push_back("LARGE BEAM"); PROJECTILE_TRAJECTORIES_NAMES.push_back("PULL"); PROJECTILE_TRAJECTORIES_NAMES.push_back("SLASH"); + PROJECTILE_TRAJECTORIES_NAMES.push_back("UP"); + PROJECTILE_TRAJECTORIES_NAMES.push_back("DOWN"); + PROJECTILE_TRAJECTORIES_NAMES.push_back("FALL AND SEEK"); + PROJECTILE_TRAJECTORIES_NAMES.push_back("TRAJECTORY AHEAD AND BACK"); // -------------------------------------------------------------- // @@ -73,6 +81,11 @@ void init_enum_names() { AI_ACTION_NAMES.push_back("WAIT TIME [RANDOM]"); AI_ACTION_NAMES.push_back("MORPH INTO"); AI_ACTION_NAMES.push_back("PLAY SOUND EFFECT"); + AI_ACTION_NAMES.push_back("WALL-WALK"); + AI_ACTION_NAMES.push_back("WALL-WALK-SHOOT"); + AI_ACTION_NAMES.push_back("MULTIPLE ATTACK"); + AI_ACTION_NAMES.push_back("EXPLODE ITSELF"); + AI_ACTION_NAMES.push_back("THROW ITEM"); // -------------------------------------------------------------- // AI_ACTION_SHOT_OPTIONS.push_back("FACE PLAYER"); @@ -86,6 +99,7 @@ void init_enum_names() { AI_ACTION_WALK_OPTIONS.push_back("TURN TO PLAYER"); AI_ACTION_WALK_OPTIONS.push_back("RANDOM DIRECTION"); AI_ACTION_WALK_OPTIONS.push_back("TO OPPOSITE WALL"); + AI_ACTION_WALK_OPTIONS.push_back("AHEAD FALLING"); // -------------------------------------------------------------- // AI_ACTION_FLY_OPTIONS.push_back("AHEAD"); @@ -108,15 +122,31 @@ void init_enum_names() { AI_ACTION_FLY_OPTIONS.push_back("RANDOM Y"); AI_ACTION_FLY_OPTIONS.push_back("AHEAD [SIN-Y]"); AI_ACTION_FLY_OPTIONS.push_back("AIR-DASH TO PLAYER"); + AI_ACTION_FLY_OPTIONS.push_back("DOWN RANDOM DIAGONAL"); + AI_ACTION_FLY_OPTIONS.push_back("UP UNTIL GROUND"); + AI_ACTION_FLY_OPTIONS.push_back("DOWN INTO GROUND"); + AI_ACTION_FLY_OPTIONS.push_back("DIAGONMAL UP"); + AI_ACTION_FLY_OPTIONS.push_back("DIAGONMAL DOWN"); // -------------------------------------------------------------- // + + AI_ACTION_WALL_WALK_OPTIONS.push_back("LEFT"); + AI_ACTION_WALL_WALK_OPTIONS.push_back("RIGHT"); + AI_ACTION_WALL_WALK_OPTIONS.push_back("UP"); + AI_ACTION_WALL_WALK_OPTIONS.push_back("DOWN"); + + // -------------------------------------------------------------- // + AI_ACTION_JUMP_OPTIONS.push_back("AHEAD"); AI_ACTION_JUMP_OPTIONS.push_back("TO RANDOM POINT"); AI_ACTION_JUMP_OPTIONS.push_back("UP"); AI_ACTION_JUMP_OPTIONS.push_back("TO PLAYER"); AI_ACTION_JUMP_OPTIONS.push_back("TO ROOT"); AI_ACTION_JUMP_OPTIONS.push_back("TO SAVED POINT"); - AI_ACTION_JUMP_OPTIONS.push_back("JUMP ONCE AHEAD"); + AI_ACTION_JUMP_OPTIONS.push_back("TO PLAYER DIRECTION"); + AI_ACTION_JUMP_OPTIONS.push_back("TELEPORT IN"); + AI_ACTION_JUMP_OPTIONS.push_back("TELEPORT OUT"); + AI_ACTION_JUMP_OPTIONS.push_back("LONG AHEAD"); // -------------------------------------------------------------- // AI_ACTION_AIR_WALK_OPTIONS.push_back("LEFT"); AI_ACTION_AIR_WALK_OPTIONS.push_back("RIGHT"); @@ -135,6 +165,7 @@ void init_enum_names() { AI_ACTION_DASH_OPTIONS.push_back("TO PLAYER"); AI_ACTION_DASH_OPTIONS.push_back("TO OPPOSITE WALL"); AI_ACTION_DASH_OPTIONS.push_back("AHEAD"); + AI_ACTION_DASH_OPTIONS.push_back("TO NEAR PLAYER"); // -------------------------------------------------------------- // AI_ACTION_GRAB_WALL_OPTIONS.push_back("LEFT"); AI_ACTION_GRAB_WALL_OPTIONS.push_back("RIGHT"); @@ -170,6 +201,19 @@ void init_enum_names() { ANIMATION_TYPE_LIST.push_back("LOOK UP"); ANIMATION_TYPE_LIST.push_back("GRAB WALL"); ANIMATION_TYPE_LIST.push_back("FLY"); + + // -------------------------------------------------------------- // + AI_ACTION_SFX_OPTION_NAMES.push_back("DINOSSAUR GROWL"); + + // -------------------------------------------------------------- // + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_NAMES.push_back("5 UP"); + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_NAMES.push_back("5 DOWN"); + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_NAMES.push_back("5 AHEAD"); + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_NAMES.push_back("3 UP"); + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_NAMES.push_back("3 DOWN"); + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_NAMES.push_back("3 AHEAD"); + AI_ACTION_SHOT_MULTIPLE_PROJECTILE_NAMES.push_back("8"); + } diff --git a/editor/files_editor/fileseditor.cpp b/editor/files_editor/fileseditor.cpp index 10450285..9ce70a6d 100644 --- a/editor/files_editor/fileseditor.cpp +++ b/editor/files_editor/fileseditor.cpp @@ -53,7 +53,6 @@ std::map > FilesEditor::get_dir_files_matrix(std:: QString filepath = QString(FILEPATH.c_str()) + QString(dir_list.at(k).c_str()); QDir dir = QDir(filepath); if (!dir.exists()) { - std::cout << ">> FilesEditor::get_dir_files_matrix( ERROR: Directory '" << filepath.toStdString() << " does not exist. <<" << std::endl; exit(-1); } dir.setFilter(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot); @@ -63,9 +62,7 @@ std::map > FilesEditor::get_dir_files_matrix(std:: std::vector file_list; for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); - if (fileInfo.fileName().length() > 50) { - std::cout << "ERROR: file '" << fileInfo.fileName().toStdString() << "' surpasses the maximum number of file-characters (50)" << std::endl; - } else { + if (fileInfo.fileName().length() <= 50) { file_list.push_back(fileInfo.fileName().toStdString()); } } diff --git a/editor/files_editor/gametextcreditstab.cpp b/editor/files_editor/gametextcreditstab.cpp index f348a959..afff33d8 100644 --- a/editor/files_editor/gametextcreditstab.cpp +++ b/editor/files_editor/gametextcreditstab.cpp @@ -50,7 +50,6 @@ void GameTextCreditsTab::load_data() void GameTextCreditsTab::set_stage_data(int stage_n) { - std::cout << "change-stage, old[" << current_stage << "], new[" << stage_n << "]" << std::endl; current_stage = stage_n; ui->bossCredits_lineEdit1->setText(boss_credits_data.at(current_stage*3).c_str()); ui->bossCredits_lineEdit2->setText(boss_credits_data.at(current_stage*3+1).c_str()); diff --git a/editor/files_editor/gametextcreditstab.ui b/editor/files_editor/gametextcreditstab.ui index cffb5197..0526d03b 100644 --- a/editor/files_editor/gametextcreditstab.ui +++ b/editor/files_editor/gametextcreditstab.ui @@ -35,6 +35,20 @@ + + + + Concept/Idea: + + + + + + + Design: + + + diff --git a/editor/files_editor/stringseditor.cpp b/editor/files_editor/stringseditor.cpp index 3ca9b601..66ba5554 100644 --- a/editor/files_editor/stringseditor.cpp +++ b/editor/files_editor/stringseditor.cpp @@ -222,9 +222,7 @@ void StringsEditor::on_addLanguage_pushButton_clicked() void StringsEditor::on_languageName_lineEdit_textChanged(const QString &arg1) { - std::cout << ">>> #1 StringsEditor::on_languageName_lineEdit_textChanged, len: " << arg1.length() << std::endl; if (data_loading) { return; } - std::cout << ">>> #2 StringsEditor::on_languageName_lineEdit_textChanged, len: " << arg1.length() << std::endl; if (arg1.length() == 2) { ui->addLanguage_pushButton->setEnabled(true); } else { diff --git a/editor/framespreviewarea.cpp b/editor/framespreviewarea.cpp index ae765397..05de94a6 100644 --- a/editor/framespreviewarea.cpp +++ b/editor/framespreviewarea.cpp @@ -83,7 +83,6 @@ void framesPreviewArea::paintEvent(QPaintEvent *) { if (image.isNull() == true || image.width() <= 0) { - std::cout << "IMG IS NULL" << std::endl; return; } @@ -94,8 +93,6 @@ void framesPreviewArea::paintEvent(QPaintEvent *) { image_w = image.width(); image_h = image.height(); - std::cout << "image_w[" << image_w << "], image_h[" << image_h << "], img_grid_w[" << img_grid_w << "], img_grid_h[" << img_grid_h << "]" << std::endl; - image = image.scaled(image.width()*2, image.height()*2); if (_bg_graphic_filename.length() > 0) { this->resize(QSize(std::max(image.width(), bg_image.width())+1, std::max(image.height(), bg_image.height())+1)); diff --git a/editor/loadgamepicker.cpp b/editor/loadgamepicker.cpp index f80f8a6c..98be80cb 100644 --- a/editor/loadgamepicker.cpp +++ b/editor/loadgamepicker.cpp @@ -47,8 +47,6 @@ void loadGamePicker::changeEvent(QEvent *e) void loadGamePicker::on_buttonBox_accepted() { - std::cout << ">>>>>>>>>> ui->gameList->currentRow(): " << ui->gameList->currentRow() << std::endl; - FILEPATH = GAMEPATH + std::string("/games/") + ui->gameList->currentItem()->text().toStdString() + std::string("/"); GAMENAME = ui->gameList->currentItem()->text().toStdString(); Mediator::get_instance()->load_game(); diff --git a/editor/main.cpp b/editor/main.cpp index 1c57444d..82c9082f 100644 --- a/editor/main.cpp +++ b/editor/main.cpp @@ -29,41 +29,11 @@ bool GAME_FLAGS[FLAG_COUNT]; void remove_duplicated() { - /* - for (int i=0; imaps_data[i][j].map_npcs[l].id_npc != -1 && k != l && Mediator::get_instance()->maps_data[i][j].map_npcs[k].start_point == Mediator::get_instance()->maps_data[i][j].map_npcs[l].start_point) { - std::cout << ">>> removing duplicated NPC[" << l << "].id[" << Mediator::get_instance()->maps_data[i][j].map_npcs[l].id_npc << "] in stage[" << i << "].map[" << j << "] <<<" << std::endl; - Mediator::get_instance()->maps_data[i][j].map_npcs[l].id_npc = -1; - Mediator::get_instance()->maps_data[i][j].map_npcs[l].start_point.x = -1; - Mediator::get_instance()->maps_data[i][j].map_npcs[l].start_point.y = -1; - } - } - } - // remove duplicated OBJECTS - for (int k=0; kmaps_data[i][j].map_objects[k].id_object != -1 && Mediator::get_instance()->maps_data[i][j].map_objects[l].id_object != -1 && k != l && Mediator::get_instance()->maps_data[i][j].map_objects[k].start_point == Mediator::get_instance()->maps_data[i][j].map_objects[l].start_point) { - std::cout << "# id1: " << (int)Mediator::get_instance()->maps_data[i][j].map_objects[k].id_object << ", id2: " << (int)Mediator::get_instance()->maps_data[i][j].map_objects[l].id_object; - std::cout << ", pos#1[" << k << "], pos2[" << l << "]"; - std::cout << ", x1: " << Mediator::get_instance()->maps_data[i][j].map_objects[k].start_point.x << ", x2: " << Mediator::get_instance()->maps_data[i][j].map_objects[l].start_point.x << ", y1: " << Mediator::get_instance()->maps_data[i][j].map_objects[k].start_point.y << ", y2: " << Mediator::get_instance()->maps_data[i][j].map_objects[l].start_point.y << std::endl; - Mediator::get_instance()->maps_data[i][j].map_objects[l].id_object = -1; - Mediator::get_instance()->maps_data[i][j].map_objects[l].start_point.x = -1; - Mediator::get_instance()->maps_data[i][j].map_objects[l].start_point.y = -1; - } - } - } - } - } - */ + } void adjust_sprites_size() { - for (int k=0; kenemy_list.size(); k++) { + for (unsigned int k=0; kenemy_list.size(); k++) { for (int l=0; lenemy_list.at(k).sprites[l][m].collision_rect.x = 0; @@ -96,7 +66,6 @@ int main(int argc, char *argv[]) GAMEPATH = argvString.substr(0, argvString.size()-EXEC_NAME.size()); - std::cout << " *** EXEC_NAME: " << EXEC_NAME << ", FILEPATH: " << FILEPATH << ", SAVEPATH: " << SAVEPATH << " ***" << std::endl; FILEPATH = ""; diff --git a/editor/mainwindow.cpp b/editor/mainwindow.cpp index 3795cfaa..d921cb88 100644 --- a/editor/mainwindow.cpp +++ b/editor/mainwindow.cpp @@ -12,6 +12,8 @@ #include #include #include +#include +#include #include "../defines.h" #include "../file/version.h" @@ -24,12 +26,15 @@ extern std::string GAMEPATH; extern std::string FILEPATH; extern std::string GAMENAME; +#define CONFIG_THEME_KEY "theme" +#define CONFIG_FILE "configs/config.ini" + bool background_filled = false; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), _npcedit_tab_selectednpc(0), _data_loading(false) { ui->setupUi(this); - QString window_title = QString("Rockbot Editor ") + QString(VERSION_NUMBER); + QString window_title = QString("Rockbot Editor ") + QString(VERSION_NUMBER) + QString(" [") + QString(GAMENAME.c_str()) + QString("]"); setWindowTitle(window_title); // insert NPC tab form @@ -83,6 +88,16 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi QObject::connect(scenes_window, SIGNAL(scenes_editor_window_closed()), this, SLOT(on_scenes_editor_window_closed())); scenes_window->hide(); + QSettings settings(QDir::currentPath() + CONFIG_FILE, QSettings::IniFormat); + settings.sync(); + int theme = settings.value(CONFIG_THEME_KEY, 0).toInt(); + Mediator::get_instance()->app_theme = theme; + scenes_window->update_app_theme(); + std::cout << "LOAD #1 - Mediator::get_instance()->app_theme[" << Mediator::get_instance()->app_theme << "]" << std::endl; + if (theme == 1) { + std::cout << "LOAD #1 - Mediator::get_instance() - DARK" << std::endl; + on_actionDark_triggered(); + } } MainWindow::~MainWindow() @@ -139,8 +154,6 @@ void MainWindow::copy_path(QString src, QString dst) { src = src.replace(QString("//"), QString("/")); dst = dst.replace(QString("//"), QString("/")); - //std::cout << "MainWindow::copy_path::src: " << src.toStdString() << ", dst: " << dst.toStdString() << std::endl; - //exit(-1); QDir dir(src); if (! dir.exists()) return; @@ -159,6 +172,9 @@ void MainWindow::copy_path(QString src, QString dst) void MainWindow::reload() { + QString window_title = QString("Rockbot Editor ") + QString(VERSION_NUMBER) + QString(" [") + QString(GAMENAME.c_str()) + QString("]"); + setWindowTitle(window_title); + Mediator::get_instance()->selectedNPC = 0; Mediator::get_instance()->currentMap = 0; Mediator::get_instance()->currentGame = 0; @@ -196,6 +212,12 @@ void MainWindow::on_actionSave_triggered() void MainWindow::on_actionOpen_triggered() { + QMessageBox::StandardButton resBtn = QMessageBox::question( this, "Rockbot Editor :: Game Editor", tr("Save data before loading other game?\n"), QMessageBox::Cancel | QMessageBox::No | QMessageBox::Yes, QMessageBox::Yes); + if (resBtn == QMessageBox::Yes) { + Mediator::get_instance()->save_game(); + } else if (resBtn == QMessageBox::Cancel) { + return; + } this->hide(); QDialog *open = new loadGamePicker; QObject::connect(open, SIGNAL(game_picked()), this, SLOT(reload())); @@ -219,30 +241,12 @@ void MainWindow::on_actionNew_triggered() // ------------------- EDIT BUTTONS --------------------- // - - - - - void MainWindow::on_MainWindow_iconSizeChanged(QSize iconSize) { Q_UNUSED (iconSize); saveGeometry(); } - - - - - - -void MainWindow::on_comboBox_currentIndexChanged(int index) -{ - Mediator::get_instance()->layerLevel = index+1; - map_edit_tab->update_edit_area(); -} - - void MainWindow::on_listWidget_currentRowChanged(int currentRow) { printf(">>>> MainWindow::on_listWidget_currentRowChanged, row: %d\n", currentRow); @@ -258,27 +262,6 @@ void MainWindow::on_editNPCButton_clicked() } -void MainWindow::on_actionOne_triggered() -{ - Mediator::get_instance()->layerLevel = 1; - map_edit_tab->update_edit_area(); -} - -void MainWindow::on_actionTwo_triggered() -{ - Mediator::get_instance()->layerLevel = 2; - map_edit_tab->update_edit_area(); -} - -void MainWindow::on_actionThree_triggered() -{ - Mediator::get_instance()->layerLevel = 3; - map_edit_tab->update_edit_area(); -} - - - - void MainWindow::on_toolBox_currentChanged(int index) { Q_UNUSED (index); @@ -350,7 +333,6 @@ void MainWindow::on_bg1_y_pos_valueChanged(int arg1) void MainWindow::on_bg1_speed_valueChanged(int arg1) { Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[0].speed = arg1*10; - std::cout << "#1 *** on_bg1_speed_valueChanged - setvalue: " << arg1 << ", bg1.speed: " << Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[0].speed << std::endl; map_edit_tab->update_edit_area(); } @@ -401,7 +383,6 @@ void MainWindow::on_bg1_speed_valueChanged(double arg1) return; } Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[0].speed = arg1*10; - std::cout << "#2 *** on_bg1_speed_valueChanged - setvalue: " << arg1 << ", bg1.speed: " << Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[0].speed << std::endl; map_edit_tab->update_edit_area(); } @@ -427,6 +408,29 @@ void MainWindow::on_actionReset_Map_triggered() Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[1].filename[0] = '\0'; } } + // reset map objects + std::vector new_maps_data_object_list; + for (unsigned int m=0; mmaps_data_object_list.size(); m++) { + if (Mediator::get_instance()->maps_data_object_list[m].stage_id != Mediator::get_instance()->currentStage || Mediator::get_instance()->maps_data_object_list[m].map_id != Mediator::get_instance()->currentMap) { + new_maps_data_object_list.push_back(Mediator::get_instance()->maps_data_object_list.at(m)); + } + } + Mediator::get_instance()->maps_data_object_list = new_maps_data_object_list; + + // reset map npcs + std::vector new_maps_data_npc_list; + for (unsigned int i=0; imaps_data_npc_list.size(); i++) { + if (Mediator::get_instance()->maps_data_npc_list.at(i).stage_id != Mediator::get_instance()->currentStage || Mediator::get_instance()->maps_data_npc_list.at(i).map_id != Mediator::get_instance()->currentMap) { + new_maps_data_npc_list.push_back(Mediator::get_instance()->maps_data_npc_list.at(i)); + } + } + Mediator::get_instance()->maps_data_npc_list = new_maps_data_npc_list; + + // reset map links + on_actionReset_Stage_Links_triggered(); + map_edit_tab->update_edit_area(); + + } void MainWindow::on_players_tab_maxshots_valueChanged(int arg1) @@ -434,9 +438,7 @@ void MainWindow::on_players_tab_maxshots_valueChanged(int arg1) if (_data_loading == true) { return; } - std::cout << "Mediator::get_instance()->current_player: " << Mediator::get_instance()->current_player << ", max_shots: " << Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].max_shots << std::endl; Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].max_shots = arg1; - std::cout << "max_shots: " << Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].max_shots << std::endl; } void MainWindow::on_can_slide_checkbox_toggled(bool checked) @@ -463,14 +465,6 @@ void MainWindow::on_players_tab_hasshield_toggled(bool checked) Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].have_shield = checked; } -void MainWindow::on_players_tab_hp_valueChanged(int arg1) -{ - if (_data_loading == true) { - return; - } - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].HP = arg1; -} - void MainWindow::on_players_tab_name_textChanged(const QString &arg1) { if (_data_loading == true) { @@ -490,20 +484,16 @@ void MainWindow::on_chargedshot_combo_currentIndexChanged(int index) void MainWindow::on_players_tab_list_combo_2_currentIndexChanged(int index) { Mediator::get_instance()->current_player = index; - std::cout << "MainWindow::on_players_tab_list_combo_2_currentIndexChanged - index: " << index << ", max_shots: " << Mediator::get_instance()->player_list_v3_1[index].max_shots << std::endl; } void MainWindow::on_actionSwap_Maps_triggered() { // open swap maps dialog QDialog *stage_swap = new stage_swap_dialog; + QObject::connect(stage_swap, SIGNAL(finished_swap_stages()), this, SLOT(on_swap_stages_window_closed())); stage_swap->show(); } - - - - void MainWindow::on_actionScenes_Editor_triggered() { scenes_window->reload(); @@ -650,8 +640,95 @@ void MainWindow::on_scenes_editor_window_closed() game_scenes_tab->reload(); } +void MainWindow::on_swap_stages_window_closed() +{ + std::cout << ">>>>>> on_swap_stages_window_closed" << std::endl; + map_edit_tab->update_edit_area(); +} + void MainWindow::on_actionGRID_toggled(bool arg1) { Mediator::get_instance()->show_grid = !Mediator::get_instance()->show_grid; map_edit_tab->update_edit_area(); } + +void MainWindow::on_actionRun_Stage_2_triggered() +{ + QString file = QString("rockbot"); +#ifdef WIN32 + file += QString(".exe"); +#endif + file += QString(" --quickload --allweapons --gamename \"") + QString(GAMENAME.c_str()) + QString("\"") + QString(" --stage ") + QString::number(Mediator::get_instance()->currentStage); + std::cout << "file[" << file.toStdString() << "]" << std::endl; + process.start(file); +} + +void MainWindow::on_actionDark_triggered() +{ + // set style + qApp->setStyle(QStyleFactory::create("Fusion")); + // increase font size for better reading + //QFont defaultFont = QApplication::font(); + //defaultFont.setPointSize(defaultFont.pointSize()+1); + //qApp->setFont(defaultFont); + // modify palette to dark + QPalette darkPalette; + darkPalette.setColor(QPalette::Window,QColor(53,53,53)); + darkPalette.setColor(QPalette::WindowText,Qt::white); + darkPalette.setColor(QPalette::Disabled,QPalette::WindowText,QColor(127,127,127)); + darkPalette.setColor(QPalette::Base,QColor(42,42,42)); + darkPalette.setColor(QPalette::AlternateBase,QColor(66,66,66)); + darkPalette.setColor(QPalette::ToolTipBase,Qt::white); + darkPalette.setColor(QPalette::ToolTipText,Qt::white); + darkPalette.setColor(QPalette::Text,Qt::white); + darkPalette.setColor(QPalette::Disabled,QPalette::Text,QColor(127,127,127)); + darkPalette.setColor(QPalette::Dark,QColor(35,35,35)); + darkPalette.setColor(QPalette::Shadow,QColor(20,20,20)); + darkPalette.setColor(QPalette::Button,QColor(53,53,53)); + darkPalette.setColor(QPalette::ButtonText,Qt::white); + darkPalette.setColor(QPalette::Disabled,QPalette::ButtonText,QColor(127,127,127)); + darkPalette.setColor(QPalette::BrightText,Qt::red); + darkPalette.setColor(QPalette::Link,QColor(42,130,218)); + darkPalette.setColor(QPalette::Highlight,QColor(42,130,218)); + darkPalette.setColor(QPalette::Disabled,QPalette::Highlight,QColor(80,80,80)); + darkPalette.setColor(QPalette::HighlightedText,Qt::white); + darkPalette.setColor(QPalette::Disabled,QPalette::HighlightedText,QColor(127,127,127)); + qApp->setPalette(darkPalette); + + QSettings settings(QDir::currentPath() + CONFIG_FILE, QSettings::IniFormat); + settings.setValue(CONFIG_THEME_KEY, 1); + settings.sync(); + + Mediator::get_instance()->app_theme = 1; + scenes_window->update_app_theme(); + +} + +void MainWindow::on_actionDefault_triggered() +{ + qApp->setPalette(this->style()->standardPalette()); + qApp->setStyle(QStyleFactory::create("WindowsVista")); + qApp->setStyleSheet(""); + + QSettings settings(QDir::currentPath() + CONFIG_FILE, QSettings::IniFormat); + settings.setValue(CONFIG_THEME_KEY, 0); + settings.sync(); + + Mediator::get_instance()->app_theme = 0; + scenes_window->update_app_theme(); + +} + +void MainWindow::on_actionShowTileset_toggled(bool arg1) +{ + Mediator::get_instance()->show_tileset_flag = arg1; + map_edit_tab->update_edit_area(); +} + + +void MainWindow::on_actionShow_Rects_toggled(bool arg1) +{ + Mediator::get_instance()->show_rects_flag = arg1; + map_edit_tab->update_edit_area(); +} + diff --git a/editor/mainwindow.h b/editor/mainwindow.h index 74778535..17363e25 100644 --- a/editor/mainwindow.h +++ b/editor/mainwindow.h @@ -46,22 +46,14 @@ class MainWindow : public QMainWindow void fillNpcList(); void fillObjList(); void fillStageList(); - void show_critial_error(QString error); - - - private: void fill_NPC_edit_tab(); void fill_background_list(); void copy_path(QString src, QString dst); - - - - public slots: void reload(); void on_new_game_accepted(QString); @@ -73,12 +65,8 @@ public slots: void on_spinBox_valueChanged(int ); void on_listWidget_2_currentRowChanged(int currentRow); void on_toolBox_currentChanged(int index); - void on_actionThree_triggered(); - void on_actionTwo_triggered(); - void on_actionOne_triggered(); void on_editNPCButton_clicked(); void on_listWidget_currentRowChanged(int currentRow); - void on_comboBox_currentIndexChanged(int index); void on_MainWindow_iconSizeChanged(QSize iconSize); void on_actionNew_triggered(); void on_pallete_signalPalleteChanged(); @@ -124,8 +112,6 @@ public slots: void on_players_tab_hasshield_toggled(bool checked); - void on_players_tab_hp_valueChanged(int arg1); - void on_players_tab_name_textChanged(const QString &arg1); void on_chargedshot_combo_currentIndexChanged(int index); @@ -149,6 +135,7 @@ public slots: void on_scenes_editor_window_closed(); + private slots: void on_actionMovie_Editor_triggered(); @@ -166,6 +153,19 @@ private slots: void on_actionGRID_toggled(bool arg1); + void on_actionRun_Stage_2_triggered(); + + void on_actionDark_triggered(); + + void on_actionDefault_triggered(); + + void on_swap_stages_window_closed(); + + + void on_actionShowTileset_toggled(bool arg1); + + void on_actionShow_Rects_toggled(bool arg1); + private: Ui::MainWindow *ui; npc_edit *npc_edit_tab; @@ -190,6 +190,8 @@ private slots: AboutWindow* about_window; FilesEditor* files_editor_window; StringsEditor* strings_editor_window; + + QProcess process; }; diff --git a/editor/mainwindow.ui b/editor/mainwindow.ui index 0ceb2096..60555337 100644 --- a/editor/mainwindow.ui +++ b/editor/mainwindow.ui @@ -60,7 +60,7 @@ 0 0 828 - 297 + 273 @@ -84,7 +84,7 @@ 0 0 828 - 297 + 273 @@ -108,7 +108,7 @@ 0 0 828 - 297 + 273 @@ -132,7 +132,7 @@ 0 0 828 - 297 + 273 @@ -156,7 +156,7 @@ 0 0 828 - 297 + 273 @@ -180,7 +180,7 @@ 0 0 828 - 297 + 273 @@ -204,7 +204,7 @@ 0 0 828 - 297 + 273 @@ -228,7 +228,7 @@ 0 0 828 - 297 + 273 @@ -252,7 +252,7 @@ 0 0 828 - 297 + 273 @@ -276,7 +276,7 @@ 0 0 828 - 297 + 273 @@ -300,7 +300,7 @@ 0 0 828 - 297 + 273 @@ -324,7 +324,7 @@ 0 0 828 - 297 + 273 @@ -357,7 +357,7 @@ 0 0 870 - 19 + 28 @@ -367,6 +367,7 @@ + @@ -393,14 +394,6 @@ View - - - Level - - - - - Zoom @@ -409,12 +402,21 @@ - + + + Theme + + + + + + + @@ -503,21 +505,6 @@ Layer Level - - - one - - - - - two - - - - - three - - @@ -631,13 +618,56 @@ true - gRID + Grid + + + + + + :/toolbar_icons/arrow-right.png:/toolbar_icons/arrow-right.png + + + Run Stage + + + Ctrl+R + + + + + Dark + + + + + Default + + + + + true + + + true + + + Tileset + + + + + true + + + Show Rects + + diff --git a/editor/mainwindow_tab/anim/animpackimport.cpp b/editor/mainwindow_tab/anim/animpackimport.cpp index fc9a43d7..cf210ca5 100644 --- a/editor/mainwindow_tab/anim/animpackimport.cpp +++ b/editor/mainwindow_tab/anim/animpackimport.cpp @@ -53,7 +53,7 @@ void AnimPackImport::on_imageFilename_toolButton_clicked() void AnimPackImport::on_frameDelay_spinBox_valueChanged(int arg1) { if (delay_list.size() <= ui->frameN_comboBox->currentIndex()) { - std::cout << "ERROR: delay vector size is invalid." << std::endl; + // TODO: show error return; } delay_list.at(ui->frameN_comboBox->currentIndex()) = arg1; diff --git a/editor/mainwindow_tab/anim_tiles_edit.cpp b/editor/mainwindow_tab/anim_tiles_edit.cpp index d0e35760..16f3575c 100644 --- a/editor/mainwindow_tab/anim_tiles_edit.cpp +++ b/editor/mainwindow_tab/anim_tiles_edit.cpp @@ -42,7 +42,6 @@ void anim_tiles_edit::set_data(int index) } ui->graphic_combo->setCurrentIndex(ui->graphic_combo->findText(QString(Mediator::get_instance()->anim_block_list.at(index).filename))); std::string filename = FILEPATH + std::string("images/tilesets/anim/") + std::string(Mediator::get_instance()->anim_block_list.at(index).filename); - std::cout << "FILENAME: " << filename << std::endl; ui->animTileFrames_widget->set_graphicfile(filename); ui->animTileFrames_widget->set_sprite_pos(st_position(0, 0)); ui->animTileFrames_widget->repaint(); diff --git a/editor/mainwindow_tab/anim_tiles_edit.ui b/editor/mainwindow_tab/anim_tiles_edit.ui index 12b0c195..60388c7c 100644 --- a/editor/mainwindow_tab/anim_tiles_edit.ui +++ b/editor/mainwindow_tab/anim_tiles_edit.ui @@ -83,6 +83,9 @@ + + false + Import Pack diff --git a/editor/mainwindow_tab/animtitle.cpp b/editor/mainwindow_tab/animtitle.cpp index 2a84b381..738f559b 100644 --- a/editor/mainwindow_tab/animtitle.cpp +++ b/editor/mainwindow_tab/animtitle.cpp @@ -8,7 +8,6 @@ animTitle::animTitle(QWidget *parent) : QWidget(parent) { - std::cout << "animTitle::CONSTRUCTOR" << std::endl; myParent = parent; _timer = new QTimer(this); _sprite_n = 0; @@ -32,8 +31,6 @@ void animTitle::update_properties() } QString filename = QString(FILEPATH.c_str()) + QString("images/tilesets/anim/") + QString(Mediator::get_instance()->anim_block_list.at(Mediator::get_instance()->selectedAnimTileset).filename); - //std::cout << "animTitle::update_properties::filename: " << filename.toStdString() << ", selectedAnimTileset: " << Mediator::get_instance()->selectedAnimTileset << std::endl; - image = QImage(filename); if (image.isNull()) { _timer->stop(); @@ -45,7 +42,6 @@ void animTitle::update_properties() this->resize(TILESIZE*2, TILESIZE*2); myParent->adjustSize(); max_frames = image.width()/(TILESIZE*2); - //std::cout << "animTitle::update_properties::max_frames: " << max_frames << std::endl; _sprite_n = 0; _timer->stop(); diff --git a/editor/mainwindow_tab/armor_edit.cpp b/editor/mainwindow_tab/armor_edit.cpp index 66f004c0..dd502487 100644 --- a/editor/mainwindow_tab/armor_edit.cpp +++ b/editor/mainwindow_tab/armor_edit.cpp @@ -31,7 +31,6 @@ void armor_edit::reload() ui->body_comboBox->setCurrentIndex(Mediator::get_instance()->game_data.armor_pieces[ARMOR_TYPE_BODY].special_ability[ui->playerSelect_comboBox->currentIndex()]); int arms_n = Mediator::get_instance()->game_data.armor_pieces[ARMOR_TYPE_ARMS].special_ability[ui->playerSelect_comboBox->currentIndex()]; - //std::cout << "ARMS[" << arms_n << "]" << std::endl; ui->arm_comboBox->setCurrentIndex(Mediator::get_instance()->game_data.armor_pieces[ARMOR_TYPE_ARMS].special_ability[ui->playerSelect_comboBox->currentIndex()]+1); diff --git a/editor/mainwindow_tab/artificial_inteligence_tab.cpp b/editor/mainwindow_tab/artificial_inteligence_tab.cpp index 34d86d00..9e61d1d2 100644 --- a/editor/mainwindow_tab/artificial_inteligence_tab.cpp +++ b/editor/mainwindow_tab/artificial_inteligence_tab.cpp @@ -10,7 +10,7 @@ artificial_inteligence_tab::artificial_inteligence_tab(QWidget *parent) : { ui->setupUi(this); fill_next_combos(); - fill_data(0); + fill_data(Mediator::get_instance()->current_ai); } @@ -24,7 +24,7 @@ void artificial_inteligence_tab::reload() { _filling_data = true; fill_next_combos(); - fill_data(0); + fill_data(Mediator::get_instance()->current_ai); _filling_data = false; } @@ -39,7 +39,7 @@ void artificial_inteligence_tab::on_ai_selector_currentIndexChanged(int index) // if no such AI exists in list yet, create it if (Mediator::get_instance()->enemy_list.size() > Mediator::get_instance()->ai_list.size()) { - for (int i=Mediator::get_instance()->ai_list.size(); ienemy_list.size(); i++) { + for (unsigned int i=Mediator::get_instance()->ai_list.size(); ienemy_list.size(); i++) { Mediator::get_instance()->ai_list.push_back(CURRENT_FILE_FORMAT::file_artificial_inteligence()); } } @@ -68,11 +68,13 @@ void artificial_inteligence_tab::on_ai_selector_currentIndexChanged(int index) // REACTIONS // + ui->aiReactionType_comboBox->setCurrentIndex(0); int action_n = Mediator::get_instance()->ai_list.at(index).reactions[0].action; ui->aiReactionAction_comboBox->setCurrentIndex(action_n+1); // plus 1 because of "none" - std::cout << ">> #1 action_n[" << action_n << "]" << std::endl; common::fill_ai_options_combo(action_n, ui->aiReactionParam_comboBox); // plus one because of "none" option ui->aiReactionParam_comboBox->setCurrentIndex(Mediator::get_instance()->ai_list.at(index).reactions[0].extra_parameter); + ui->reactionGotoNextComboBox->setCurrentIndex(Mediator::get_instance()->ai_list.at(index).reactions[0].go_to); + ui->reactionGotoDelaySpinBox->setValue(Mediator::get_instance()->ai_list.at(index).reactions[0].go_to_delay); // OPTIONS common::fill_ai_options_combo(Mediator::get_instance()->ai_list.at(index).states[0].action, ui->parameter1); @@ -85,7 +87,6 @@ void artificial_inteligence_tab::on_ai_selector_currentIndexChanged(int index) common::fill_ai_options_combo(Mediator::get_instance()->ai_list.at(index).states[7].action, ui->parameter8); ui->parameter1->setCurrentIndex(Mediator::get_instance()->ai_list.at(index).states[0].extra_parameter); - //std::cout << "#0 - AI[" << index << "].states[1].extra_parameter: " << Mediator::get_instance()->ai_list.at(Mediator::get_instance()->current_ai).states[1].extra_parameter << std::endl; ui->parameter2->setCurrentIndex(Mediator::get_instance()->ai_list.at(index).states[1].extra_parameter); ui->parameter3->setCurrentIndex(Mediator::get_instance()->ai_list.at(index).states[2].extra_parameter); ui->parameter4->setCurrentIndex(Mediator::get_instance()->ai_list.at(index).states[3].extra_parameter); @@ -120,7 +121,10 @@ void artificial_inteligence_tab::on_ai_selector_currentIndexChanged(int index) void artificial_inteligence_tab::fill_data(int index) { // ai selector + common::fill_npc_combo(ui->ai_selector); + ui->ai_selector->setCurrentIndex(index); + ui->aiReactionType_comboBox->setCurrentIndex(0); // actions common::fill_ai_actions_combo(ui->action1); @@ -139,9 +143,6 @@ void artificial_inteligence_tab::fill_data(int index) void artificial_inteligence_tab::change_action(int index, int action_n) { - - std::cout << "AI::change_action - index: " << index << ", action_n: " << action_n << std::endl; - _filling_data = true; if (index >= 0) { @@ -150,8 +151,6 @@ void artificial_inteligence_tab::change_action(int index, int action_n) // -1: near-player, -2: hit, -3: dead } - std::cout << "### AI::change_action #2 ###" << std::endl; - if (index == 0) { common::fill_ai_options_combo(action_n, ui->parameter1); } else if (index == 1) { @@ -172,7 +171,6 @@ void artificial_inteligence_tab::change_action(int index, int action_n) _filling_data = false; - std::cout << "### AI::change_action #3 ###" << std::endl; } @@ -316,13 +314,10 @@ void artificial_inteligence_tab::on_parameter1_currentIndexChanged(int index) void artificial_inteligence_tab::on_parameter2_currentIndexChanged(int index) { - //std::cout << "AI::on_parameter2_currentIndexChanged - _filling_data: " << _filling_data << std::endl; if (_filling_data == true) { return; } - //std::cout << "#1 - AI[" << Mediator::get_instance()->current_ai << "].states[1].extra_parameter: " << Mediator::get_instance()->ai_list.at(Mediator::get_instance()->current_ai).states[1].extra_parameter << std::endl; Mediator::get_instance()->ai_list.at(Mediator::get_instance()->current_ai).states[1].extra_parameter = index; - //std::cout << "#2 - AI[" << Mediator::get_instance()->current_ai << "].states[1].extra_parameter: " << Mediator::get_instance()->ai_list.at(Mediator::get_instance()->current_ai).states[1].extra_parameter << std::endl; } @@ -527,6 +522,7 @@ void artificial_inteligence_tab::fill_next_combos() fill_next_combo(ui->next6); fill_next_combo(ui->next7); fill_next_combo(ui->next8); + fill_next_combo(ui->reactionGotoNextComboBox); } void artificial_inteligence_tab::fill_next_combo(QComboBox *combo) @@ -542,7 +538,7 @@ void artificial_inteligence_tab::fill_next_combo(QComboBox *combo) list.push_back("#6"); list.push_back("#7"); list.push_back("#8"); - for (int i=0; iaddItem(temp_str); @@ -559,6 +555,7 @@ void artificial_inteligence_tab::on_aiReactionAction_comboBox_currentIndexChange } _filling_data = true; + std::cout << "reaction current index #1 [" << ui->aiReactionType_comboBox->currentIndex() << "]" << std::endl; Mediator::get_instance()->ai_list.at(ui->ai_selector->currentIndex()).reactions[ui->aiReactionType_comboBox->currentIndex()].action = index-1; // less one because of "none" common::fill_ai_options_combo(index-1, ui->aiReactionParam_comboBox); @@ -570,6 +567,7 @@ void artificial_inteligence_tab::on_aiReactionParam_comboBox_currentIndexChanged if (_filling_data == true) { return; } + std::cout << "reaction current index #2 [" << ui->aiReactionType_comboBox->currentIndex() << "]" << std::endl; Mediator::get_instance()->ai_list.at(ui->ai_selector->currentIndex()).reactions[ui->aiReactionType_comboBox->currentIndex()].extra_parameter = index; } @@ -578,12 +576,33 @@ void artificial_inteligence_tab::on_aiReactionType_comboBox_currentIndexChanged( if (_filling_data == true) { return; } + std::cout << "reaction current index #3 [" << ui->aiReactionType_comboBox->currentIndex() << "]" << std::endl; _filling_data = true; int action_n = Mediator::get_instance()->ai_list.at(ui->ai_selector->currentIndex()).reactions[index].action; ui->aiReactionAction_comboBox->setCurrentIndex(action_n+1); // plus 1 because of "none" - std::cout << ">> #2 action_n[" << action_n << "]" << std::endl; common::fill_ai_options_combo(action_n, ui->aiReactionParam_comboBox); // plus one because of "none" option ui->aiReactionParam_comboBox->setCurrentIndex(Mediator::get_instance()->ai_list.at(ui->ai_selector->currentIndex()).reactions[index].extra_parameter); + ui->reactionGotoNextComboBox->setCurrentIndex(Mediator::get_instance()->ai_list.at(ui->ai_selector->currentIndex()).reactions[index].go_to); + ui->reactionGotoDelaySpinBox->setValue(Mediator::get_instance()->ai_list.at(ui->ai_selector->currentIndex()).reactions[index].go_to_delay); + _filling_data = false; } + +void artificial_inteligence_tab::on_reactionGotoNextComboBox_currentIndexChanged(int index) +{ + if (_filling_data == true) { + return; + } + Mediator::get_instance()->ai_list.at(ui->ai_selector->currentIndex()).reactions[ui->aiReactionType_comboBox->currentIndex()].go_to = index; +} + + +void artificial_inteligence_tab::on_reactionGotoDelaySpinBox_valueChanged(int arg1) +{ + if (_filling_data == true) { + return; + } + Mediator::get_instance()->ai_list.at(ui->ai_selector->currentIndex()).reactions[ui->aiReactionType_comboBox->currentIndex()].go_to_delay = arg1; +} + diff --git a/editor/mainwindow_tab/artificial_inteligence_tab.h b/editor/mainwindow_tab/artificial_inteligence_tab.h index 5a916edf..fd5c52d4 100644 --- a/editor/mainwindow_tab/artificial_inteligence_tab.h +++ b/editor/mainwindow_tab/artificial_inteligence_tab.h @@ -108,6 +108,10 @@ private slots: void on_aiReactionType_comboBox_currentIndexChanged(int index); + void on_reactionGotoNextComboBox_currentIndexChanged(int index); + + void on_reactionGotoDelaySpinBox_valueChanged(int arg1); + private: void fill_next_combos(); void fill_next_combo(QComboBox *combo); diff --git a/editor/mainwindow_tab/artificial_inteligence_tab.ui b/editor/mainwindow_tab/artificial_inteligence_tab.ui index 9d97c66f..c2a749e3 100644 --- a/editor/mainwindow_tab/artificial_inteligence_tab.ui +++ b/editor/mainwindow_tab/artificial_inteligence_tab.ui @@ -361,6 +361,13 @@ 10 + + + + Action + + + @@ -368,9 +375,6 @@ - - - @@ -378,12 +382,14 @@ - - - - Action - - + + + + + + + + @@ -414,13 +420,31 @@ - TBD + Player is on same X coord - - + + + + Next Action + + + + + + + 9999 + + + + + + + Next Action Delay + + diff --git a/editor/mainwindow_tab/castle_points_editorarea.cpp b/editor/mainwindow_tab/castle_points_editorarea.cpp deleted file mode 100644 index 019fb917..00000000 --- a/editor/mainwindow_tab/castle_points_editorarea.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "castle_points_editorarea.h" - -castle_points_editorarea::castle_points_editorarea(QWidget *parent) -{ - myParent = parent; - image = nullptr; -} - -castle_points_editorarea::~castle_points_editorarea() -{ - -} - -void castle_points_editorarea::set_current_point(int current) -{ - currentPoint = current; -} - -void castle_points_editorarea::load_image() -{ - QString filename; - filename = QString(FILEPATH.c_str()) + QString("/images/backgrounds/castle.png"); - - image = new QPixmap(filename); - if (image->isNull()) { - printf("castle_points_editorarea::paintEvent::ERROR - Could not load image file '%s'\n", qPrintable(filename)); - } else { - std::cout << "+++++++++++ LOADED IMAGE, w[" << image->size().width() << "][" << image->size().height() << "]" << std::endl; - this->resize(image->size()); - myParent->adjustSize(); - } -} - -void castle_points_editorarea::paintEvent(QPaintEvent *event) -{ - if (image == nullptr) { - load_image(); - return; - } - QPainter painter(this); - QRectF target(QPoint(0, 0), image->size()); - QRectF source(QPoint(0, 0), image->size()); - painter.drawPixmap(target, *image, source); - painter.setOpacity(1); - - for (int i=0; ipoints_castle1.points[i]; - if (i == currentPoint) { - painter.setBrush(Qt::red); - } else { - painter.setBrush(Qt::yellow); - } - painter.drawEllipse(point.x, point.y, 8, 8); - } - - //painter.drawEllipse(dest_x, dest_y, 16*Mediator::get_instance()->zoom, 16*Mediator::get_instance()->zoom); - -} - - diff --git a/editor/mainwindow_tab/castle_points_editorarea.h b/editor/mainwindow_tab/castle_points_editorarea.h deleted file mode 100644 index 6b896565..00000000 --- a/editor/mainwindow_tab/castle_points_editorarea.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef CASTLE_POINTS_EDITORAREA_H -#define CASTLE_POINTS_EDITORAREA_H - -#include -#include -#include "mediator.h" - -class castle_points_editorarea : public QWidget -{ - Q_OBJECT -public: - castle_points_editorarea(QWidget *parent = nullptr); - ~castle_points_editorarea(); - void set_current_point(int current); - - QWidget *myParent; - QPixmap *image; - - -private: - void load_image(); - - int currentPoint; - -protected: - void paintEvent(QPaintEvent *event); - -}; - -#endif // CASTLE_POINTS_EDITORAREA_H diff --git a/editor/mainwindow_tab/castlepointsdialog.cpp b/editor/mainwindow_tab/castlepointsdialog.cpp deleted file mode 100644 index fc774cde..00000000 --- a/editor/mainwindow_tab/castlepointsdialog.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "castlepointsdialog.h" -#include "ui_castlepointsdialog.h" - -CastlePointsDialog::CastlePointsDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::CastlePointsDialog) -{ - data_loading = true; - ui->setupUi(this); - common::fill_numbered_combo(ui->point_comboBox, 0, 5); - load_data(); - data_loading = false; -} - -CastlePointsDialog::~CastlePointsDialog() -{ - delete ui; -} - -void CastlePointsDialog::load_data() -{ - data_loading = true; - currentPoint = 0; - ui->point_comboBox->setCurrentIndex(currentPoint); - std::cout << "Mediator::get_instance()->points_castle1.points[currentPoint].x[" << Mediator::get_instance()->points_castle1.points[currentPoint].x << "]" << std::endl; - ui->x_spinBox->setValue(Mediator::get_instance()->points_castle1.points[currentPoint].x); - ui->y_spinBox->setValue(Mediator::get_instance()->points_castle1.points[currentPoint].y); - data_loading = false; - -} - -void CastlePointsDialog::on_point_comboBox_currentIndexChanged(int index) -{ - if (data_loading) { - return; - } - data_loading = true; - currentPoint = index; - ui->x_spinBox->setValue(Mediator::get_instance()->points_castle1.points[currentPoint].x); - ui->y_spinBox->setValue(Mediator::get_instance()->points_castle1.points[currentPoint].y); - ui->drawArea_widget->set_current_point(currentPoint); - ui->drawArea_widget->repaint(); - data_loading = false; -} - -void CastlePointsDialog::on_x_spinBox_valueChanged(int arg1) -{ - if (data_loading) { - return; - } - Mediator::get_instance()->points_castle1.points[currentPoint].x = arg1; - ui->drawArea_widget->repaint(); -} - -void CastlePointsDialog::on_y_spinBox_valueChanged(int arg1) -{ - if (data_loading) { - return; - } - Mediator::get_instance()->points_castle1.points[currentPoint].y = arg1; - ui->drawArea_widget->repaint(); -} - diff --git a/editor/mainwindow_tab/castlepointsdialog.h b/editor/mainwindow_tab/castlepointsdialog.h deleted file mode 100644 index 0f093bf1..00000000 --- a/editor/mainwindow_tab/castlepointsdialog.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef CASTLEPOINTSDIALOG_H -#define CASTLEPOINTSDIALOG_H - -#include - -#include "common.h" -#include "mediator.h" - -namespace Ui { -class CastlePointsDialog; -} - -class CastlePointsDialog : public QDialog -{ - Q_OBJECT - -public: - explicit CastlePointsDialog(QWidget *parent = nullptr); - ~CastlePointsDialog(); - void load_data(); - -private slots: - void on_point_comboBox_currentIndexChanged(int index); - - void on_x_spinBox_valueChanged(int arg1); - - void on_y_spinBox_valueChanged(int arg1); - -private: - Ui::CastlePointsDialog *ui; - int currentPoint; - bool data_loading; - -}; - -#endif // CASTLEPOINTSDIALOG_H diff --git a/editor/mainwindow_tab/castlepointsdialog.ui b/editor/mainwindow_tab/castlepointsdialog.ui deleted file mode 100644 index 62074ea4..00000000 --- a/editor/mainwindow_tab/castlepointsdialog.ui +++ /dev/null @@ -1,128 +0,0 @@ - - - CastlePointsDialog - - - - 0 - 0 - 707 - 427 - - - - Dialog - - - - - - - - - 320 - 240 - - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - 320 - - - - - - - - - - 240 - - - - - - - Point: - - - - - - - X: - - - - - - - Y: - - - - - - - - - - castle_points_editorarea - QWidget -
castle_points_editorarea.h
- 1 -
-
- - - - buttonBox - accepted() - CastlePointsDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - CastlePointsDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - -
diff --git a/editor/mainwindow_tab/game_properties_tab.cpp b/editor/mainwindow_tab/game_properties_tab.cpp index 4033c6cd..fdf669b6 100644 --- a/editor/mainwindow_tab/game_properties_tab.cpp +++ b/editor/mainwindow_tab/game_properties_tab.cpp @@ -7,7 +7,6 @@ game_properties_tab::game_properties_tab(QWidget *parent) : QWidget(parent), ui(new Ui::game_properties_tab), _data_loading(false), _current_stage(0) { ui->setupUi(this); - castlePointsDialog = new CastlePointsDialog(this); fill_data(); } @@ -109,7 +108,6 @@ void game_properties_tab::on_stagefaces_stage_combo_currentIndexChanged(int inde _data_loading = true; - std::cout << "face-name #2: " << Mediator::get_instance()->game_data.stages_face_name[_current_stage] << std::endl; ui->bossName_lineEdit->setText(Mediator::get_instance()->game_data.stages_face_name[_current_stage]); _data_loading = false; ui->stagefaces_face_combo->setCurrentIndex(combo_n); @@ -121,7 +119,6 @@ void game_properties_tab::on_stagefaces_face_combo_currentIndexChanged(const QSt { if (_data_loading == true) return; sprintf(Mediator::get_instance()->game_data.stage_face_filename[_current_stage], "%s", arg1.toStdString().c_str()); - std::cout << "SET stage_filename[" << _current_stage << "]: " << Mediator::get_instance()->game_data.stage_face_filename[_current_stage] << std::endl; } void game_properties_tab::on_lineEdit_textChanged(const QString &arg1) @@ -189,8 +186,6 @@ void game_properties_tab::on_bossName_lineEdit_textChanged(const QString &arg1) { if (_data_loading == true) return; sprintf(Mediator::get_instance()->game_data.stages_face_name[_current_stage], "%s", arg1.toStdString().c_str()); - - std::cout << "face-name #3: " << Mediator::get_instance()->game_data.stages_face_name[_current_stage] << std::endl; } @@ -207,10 +202,3 @@ void game_properties_tab::on_finalBoss_comboBox_currentIndexChanged(int index) if (_data_loading == true) return; Mediator::get_instance()->game_data.final_boss_id = index; } - - -void game_properties_tab::on_editMap_pushButton_clicked() -{ - castlePointsDialog->show(); - castlePointsDialog->load_data(); -} diff --git a/editor/mainwindow_tab/game_properties_tab.h b/editor/mainwindow_tab/game_properties_tab.h index b9a55ba3..360a6b9f 100644 --- a/editor/mainwindow_tab/game_properties_tab.h +++ b/editor/mainwindow_tab/game_properties_tab.h @@ -2,7 +2,6 @@ #define GAME_PROPERTIES_TAB_H #include -#include "castlepointsdialog.h" namespace Ui { class game_properties_tab; @@ -53,8 +52,6 @@ private slots: void on_finalBoss_comboBox_currentIndexChanged(int index); - void on_editMap_pushButton_clicked(); - private: void fill_data(); @@ -62,7 +59,6 @@ private slots: Ui::game_properties_tab *ui; bool _data_loading; int _current_stage; - CastlePointsDialog* castlePointsDialog; }; #endif // GAME_PROPERTIES_TAB_H diff --git a/editor/mainwindow_tab/game_properties_tab.ui b/editor/mainwindow_tab/game_properties_tab.ui index 994d1c5c..87752647 100644 --- a/editor/mainwindow_tab/game_properties_tab.ui +++ b/editor/mainwindow_tab/game_properties_tab.ui @@ -7,7 +7,7 @@ 0 0 801 - 487 + 577 @@ -16,36 +16,39 @@ - - - - 30 + + + + + + + Qt::Vertical - + + + 20 + 40 + + + - - + + - Game Over Music: + Semi-Charged Projectile: - - - - - + + - Start Screen Music: + Game Style: - - - @@ -63,23 +66,13 @@ - - - - Game Style: - - - - - + + - Stage-Select Names/Faces: + Got Weapon Music: - - - @@ -87,56 +80,76 @@ - - - - Number of Stages: - - - - - - - - + + - - + + - Final Boss Music: + Final Boss: - - + + + + + + + + + 8 + + + + + + + + 32 + 32 + + + + + - - + + + + + - Special Item #2: + Start Screen Music: - - - - Special Item #1: + + + + 30 + + + + + true + - Mega Man / Rockman + Rockbot Modern - Castlevania / Ghould & Ghosts + 8 bits MM @@ -148,88 +161,64 @@ - - - - Final Boss: - - - - - + + - Boss Music: + Stage-Select Names/Faces: - - + + - Got Weapon Music: + Final Boss Music: - - - - Qt::Vertical + + + + Special Item #2: - - - 20 - 40 - + + + + + + Game Over Music: - + - - + + - - + + - Semi-Charged Projectile: + Boss Music: - - - - - - - - - 8 - - - - - - - - 32 - 32 - - - - - + + + + + - - + + - Edit + Number of Stages: - - + + - Castle Map Points: + Special Item #1: diff --git a/editor/mainwindow_tab/map_tab.cpp b/editor/mainwindow_tab/map_tab.cpp index dd15f837..d35db0f6 100644 --- a/editor/mainwindow_tab/map_tab.cpp +++ b/editor/mainwindow_tab/map_tab.cpp @@ -187,7 +187,7 @@ void map_tab::on_mapListCombo_currentIndexChanged(int index) void map_tab::on_comboBox_currentIndexChanged(int index) { int value = 1; - if (index == 1) { + if (index > 0) { value = 3; } Mediator::get_instance()->layerLevel = value; @@ -253,7 +253,6 @@ void map_tab::on_bg1_speed_valueChanged(double arg1) { if (_data_loading == true) { return; } Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[0].speed = arg1*10; - std::cout << "#3 *** on_bg1_speed_valueChanged - setvalue: " << arg1 << ", bg1.speed: " << (int)Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[0].speed << std::endl; update_edit_area(); } @@ -563,7 +562,6 @@ void map_tab::on_fg_speed_doubleSpinBox_valueChanged(double arg1) { if (_data_loading == true) { return; } Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[1].speed = arg1*10; - std::cout << ">> on_FG_speed_valueChanged - setvalue: " << arg1 << ", FG.speed: " << (int)Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[1].speed << std::endl; update_edit_area(); } @@ -616,3 +614,10 @@ void map_tab::on_difficultyMode_pushButton_clicked() // ui->difficultyMode_pushButton->setText("<="); } } + +void map_tab::on_FGScrollModeComboBox_currentIndexChanged(int index) +{ + if (_data_loading == true) { return; } + Mediator::get_instance()->maps_data_v2[Mediator::get_instance()->currentStage][Mediator::get_instance()->currentMap].backgrounds[1].auto_scroll = index; +} + diff --git a/editor/mainwindow_tab/map_tab.h b/editor/mainwindow_tab/map_tab.h index e91ed3f7..7a16e83b 100644 --- a/editor/mainwindow_tab/map_tab.h +++ b/editor/mainwindow_tab/map_tab.h @@ -81,6 +81,8 @@ private slots: void on_difficultyMode_pushButton_clicked(); + void on_FGScrollModeComboBox_currentIndexChanged(int index); + private: void fill_data(); void fill_background_list(); diff --git a/editor/mainwindow_tab/map_tab.ui b/editor/mainwindow_tab/map_tab.ui index 799d170c..ec56a00f 100644 --- a/editor/mainwindow_tab/map_tab.ui +++ b/editor/mainwindow_tab/map_tab.ui @@ -13,10 +13,7 @@ Form - - - 4 - + 0 @@ -29,7 +26,7 @@ 0 - + @@ -193,7 +190,7 @@ QFrame::NoFrame - 0 + 1 0 @@ -203,8 +200,8 @@ 0 0 - 361 - 514 + 362 + 623 @@ -213,11 +210,45 @@ - - - - 0.000000000000000 + + + + 999 + + + + + + + Qt::Vertical + + + 20 + 40 + + + + + + + + FG Speed: + + + + + + + show background color + + + true + + + + + 4.000000000000000 @@ -226,25 +257,35 @@ - - + + - + View Options: - - + + - show background color + show background image true - - + + + + Map GFX Mode: + + + + + + + 0.000000000000000 + 4.000000000000000 @@ -253,8 +294,29 @@ - - + + + + 320 + + + + + + + FG Y Position: + + + + + + + FG Image: + + + + + None @@ -262,82 +324,135 @@ - Rain + Up - Snow + Down - Underwater + Left - Train + Right - Flash Stopper + Diagonal TBD - Lighting Bolt + Anim Map (1/2 w) + + + + + + + + + + + BG Speed: + + + + + + + show foreground image + + + true + + + + + + + Qt::Horizontal + + + + + + + 0 + + + + Full - Shadow Top + Background - Inferno + Overlay - - + + - BG Image: + BG Color: - - + + - View Options: + BG Y Position: - - + + - BG Color: + Map GFX Effect: - - + + - BG Auto-Scroll: + Pick - - - - 999 + + + + - + + + + BG Image: + + + + + + + BG Auto-Scroll: + + + + @@ -350,23 +465,17 @@ - - - - Qt::Vertical - - - - 20 - 40 - + + + + FG Opacity: - + - - - - FG Y Position: + + + + 100 @@ -383,69 +492,8 @@ - - - - Qt::Horizontal - - - - - - - - - - FG Image: - - - - - - - FG Speed: - - - - - - - show foreground image - - - true - - - - - - - 320 - - - - - - - - - - show background image - - - true - - - - - - - BG Speed: - - - - - + + None @@ -453,91 +501,86 @@ - Up + Rain - Down + Snow - Left + Waving - Right + Train - Diagonal TBD + Flash Stopper + + + + + Lighting Bolt + + + + + Shadow Top + + + + + Inferno - - - - BG Y Position: - - - - - - - Map GFX Effect: - - - - - - - Pick - - + + - + - FG Opacity: + FG Auto-Scroll: - - - 100 - - - - - - - Map GFX Mode: - - - - - - - 0 - + - Full + Nome - Background + Up - Overlay + Down + + + + + Left + + + + + Right + + + + + Diagonal (TBD) @@ -551,8 +594,8 @@ 0 0 - 374 - 304 + 376 + 281 @@ -587,6 +630,12 @@ + + + 0 + 0 + + 0 @@ -610,7 +659,14 @@ - + + + + 0 + 0 + + + @@ -676,8 +732,8 @@ 0 0 - 374 - 304 + 376 + 281 @@ -821,8 +877,8 @@ 0 0 - 374 - 304 + 376 + 281 @@ -904,8 +960,8 @@ 0 0 - 374 - 304 + 376 + 281 @@ -1014,8 +1070,8 @@ 0 0 - 374 - 304 + 376 + 281 @@ -1056,6 +1112,16 @@ Right + + + Up + + + + + Down + + @@ -1067,8 +1133,8 @@ 0 0 - 374 - 304 + 376 + 281 @@ -1077,27 +1143,45 @@ + + Qt::ScrollBarAsNeeded + + + Qt::ScrollBarAsNeeded + - true + false 0 0 - 354 - 138 + 356 + 261 + + + 0 + 0 + + 10 10 - 291 - 101 + 341 + 241 + + + 0 + 0 + + 16 @@ -1123,19 +1207,6 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -1146,7 +1217,7 @@ - + 0 @@ -1321,7 +1392,7 @@ - + 0 @@ -1438,7 +1509,7 @@ - + @@ -1516,6 +1587,8 @@ + + diff --git a/editor/mainwindow_tab/npc_edit.cpp b/editor/mainwindow_tab/npc_edit.cpp index ea89b0fe..45607821 100644 --- a/editor/mainwindow_tab/npc_edit.cpp +++ b/editor/mainwindow_tab/npc_edit.cpp @@ -5,7 +5,7 @@ #include -npc_edit::npc_edit(QWidget *parent) : _data_loading(false), QWidget(parent), _npcedit_tab_selectednpc(0), ui(new Ui::npc_edit) +npc_edit::npc_edit(QWidget *parent) : _data_loading(false), QWidget(parent), ui(new Ui::npc_edit) { _data_loading = true; _ignore_spritelist_row_changed = false; @@ -13,6 +13,7 @@ npc_edit::npc_edit(QWidget *parent) : _data_loading(false), QWidget(parent), _np QObject::connect(ui->npc_edit_tab_previewarea, SIGNAL(clickedIn()), this, SLOT(set_npc_frame())); _npcedit_tab_selected_weakness_weapon = 0; + init_form(); fill_data(); on_npc_edit_tab_selectnpccombo_currentIndexChanged(0); _data_loading = false; @@ -27,8 +28,8 @@ npc_edit::~npc_edit() void npc_edit::reload() { _data_loading = true; + init_form(); fill_data(); - on_npc_edit_tab_selectnpccombo_currentIndexChanged(0); _data_loading = false; reload_frame_list(ui->frame_list_selector->currentIndex()); } @@ -41,24 +42,94 @@ void npc_edit::fill_data() return; } _data_loading = true; - common::fill_files_combo("images/sprites/enemies", ui->npc_edit_tab_graphiccombo); - common::fill_files_combo("images/sprites/enemies/backgrounds", ui->backgroundFileComboBox); - - common::fill_npc_combo(ui->npc_edit_tab_selectnpccombo); - common::fill_weapons_names_combo(ui->npc_edit_tab_weakness_list); if (Mediator::get_instance()->enemy_list.size() > 0) { + int current_npc_debug = Mediator::get_instance()->current_npc_n; + ui->npc_edit_tab_selectnpccombo->setCurrentIndex(Mediator::get_instance()->current_npc_n); + + // PROPERTIES // + ui->npcBehaviorComboBox->setCurrentIndex(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).behavior); + ui->npc_edit_tab_NpcName->setText(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).name); + ui->npc_edit_tab_NpcHP->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).hp.total); + ui->projectileOriginX_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_arm_pos.x); + ui->projectileOriginY_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_arm_pos.y); + ui->npc_edit_tab_canshoot->setChecked(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).is_ghost); + ui->isBoss_checkBox->setChecked(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).is_boss); + if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).fly_flag == 0) { + ui->checkBox->setChecked(false); + } else { + ui->checkBox->setChecked(true); + } + ui->isSubBoss_checkbox->setChecked(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).is_sub_boss); + ui->npc_edit_tab_shieldtype->setCurrentIndex(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).shield_type); + ui->npc_edit_tab_movespeed->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).speed); + ui->npc_edit_tab_range->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).walk_range); + ui->npc_edit_tab_weakness_list->setCurrentIndex(0); + ui->npc_edit_tab_weakness_points->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).weakness[0].damage_multiplier); + ui->respawn_time_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).respawn_delay); + + /* // GRAPHIC FILE // - ui->npc_edit_tab_graphiccombo->setCurrentIndex(ui->npc_edit_tab_graphiccombo->findText(QString(Mediator::get_instance()->enemy_list.at(0).graphic_filename))); - ui->npc_edit_tab_previewarea->set_graphicfile(FILEPATH+std::string("/images/sprites/enemies/")+std::string(Mediator::get_instance()->enemy_list.at(0).graphic_filename)); + std::string image_filename(Mediator::get_instance()->enemy_list.at(index).graphic_filename); + if (image_filename.length() > 0) { + ui->npc_edit_tab_graphiccombo->setCurrentIndex(ui->npc_edit_tab_graphiccombo->findText(QString(image_filename.c_str()))); + } + + // BACKGROUND FILE // + std::string bg_graphic_filename(Mediator::get_instance()->enemy_list.at(index).bg_graphic_filename); + if (bg_graphic_filename.length() > 0) { + ui->backgroundFileComboBox->setCurrentIndex(ui->backgroundFileComboBox->findText(QString(bg_graphic_filename.c_str()))); + } + + ui->sprite_pos_x->setValue(Mediator::get_instance()->enemy_list.at(index).sprites_pos_bg.x); + ui->sprite_pos_y->setValue(Mediator::get_instance()->enemy_list.at(index).sprites_pos_bg.y); + + + ui->npc_edit_tab_graphicheight->setValue(Mediator::get_instance()->enemy_list.at(index).frame_size.height); + ui->npc_edit_tab_graphicwidth->setValue(Mediator::get_instance()->enemy_list.at(index).frame_size.width); + + ui->npc_edit_tab_previewarea->set_grid_w(Mediator::get_instance()->enemy_list.at(index).frame_size.width); + ui->npc_edit_tab_previewarea->set_grid_h(Mediator::get_instance()->enemy_list.at(index).frame_size.height); + + Mediator::get_instance()->npcGraphicSize_h = Mediator::get_instance()->enemy_list.at(index).frame_size.height; + Mediator::get_instance()->npcGraphicSize_w = Mediator::get_instance()->enemy_list.at(index).frame_size.width; + + ui->npc_edit_tab_previewarea->set_graphicfile(FILEPATH+std::string("/images/sprites/enemies/")+std::string(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).graphic_filename)); + + ui->npc_edit_tab_previewarea->set_bg_graphicfile(FILEPATH+std::string("/images/sprites/enemies/backgrounds/")+std::string(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).bg_graphic_filename)); + ui->npc_edit_tab_previewarea->set_sprite_pos(Mediator::get_instance()->enemy_list.at(index).sprites_pos_bg); + ui->npc_edit_tab_previewarea->repaint(); + reload_frame_list(ui->frame_list_selector->currentIndex()); + ui->sprites_preview_widget->repaint(); + + + ui->hitarea_x_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.x); + ui->hitarea_y_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.y); + + if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w != 0) { + ui->hitarea_w_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w); + } else { + ui->hitarea_w_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width); + } + if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.h != 0) { + ui->hitarea_h_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.h); + } else { + ui->hitarea_h_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height); + } + + +*/ + + // GRAPHIC FILE // + ui->npc_edit_tab_graphiccombo->setCurrentIndex(ui->npc_edit_tab_graphiccombo->findText(QString(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).graphic_filename))); + ui->npc_edit_tab_previewarea->set_graphicfile(FILEPATH+std::string("/images/sprites/enemies/")+std::string(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).graphic_filename)); // BACKGROUND // - std::cout << ">>>>> BACKGROUND[" << Mediator::get_instance()->enemy_list.at(0).bg_graphic_filename << "]" << std::endl; - ui->backgroundFileComboBox->setCurrentIndex(ui->backgroundFileComboBox->findText(QString(Mediator::get_instance()->enemy_list.at(0).bg_graphic_filename))); - ui->npc_edit_tab_previewarea->set_bg_graphicfile(FILEPATH+std::string("/images/sprites/enemies/backgrounds/")+std::string(Mediator::get_instance()->enemy_list.at(0).bg_graphic_filename)); - ui->sprite_pos_x->setValue(Mediator::get_instance()->enemy_list.at(0).sprites_pos_bg.x); - ui->sprite_pos_y->setValue(Mediator::get_instance()->enemy_list.at(0).sprites_pos_bg.y); + ui->backgroundFileComboBox->setCurrentIndex(ui->backgroundFileComboBox->findText(QString(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).bg_graphic_filename))); + ui->npc_edit_tab_previewarea->set_bg_graphicfile(FILEPATH+std::string("/images/sprites/enemies/backgrounds/")+std::string(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).bg_graphic_filename)); + ui->sprite_pos_x->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites_pos_bg.x); + ui->sprite_pos_y->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites_pos_bg.y); - ui->npc_edit_tab_previewarea->set_sprite_pos(Mediator::get_instance()->enemy_list.at(0).sprites_pos_bg); + ui->npc_edit_tab_previewarea->set_sprite_pos(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites_pos_bg); ui->npc_edit_tab_previewarea->repaint(); _data_loading = true; @@ -90,12 +161,21 @@ void npc_edit::fill_data() Mediator::get_instance()->npcGraphicSize_h = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height; Mediator::get_instance()->npcGraphicSize_w = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width; - ui->projectileOriginX_spinBox->setValue(Mediator::get_instance()->enemy_list.at(0).attack_arm_pos.x); - ui->projectileOriginY_spinBox->setValue(Mediator::get_instance()->enemy_list.at(0).attack_arm_pos.y); + ui->projectileOriginX_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_arm_pos.x); + ui->projectileOriginY_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_arm_pos.y); } } +void npc_edit::init_form() +{ + common::fill_files_combo("images/sprites/enemies", ui->npc_edit_tab_graphiccombo); + common::fill_files_combo("images/sprites/enemies/backgrounds", ui->backgroundFileComboBox); + + common::fill_npc_combo(ui->npc_edit_tab_selectnpccombo); + common::fill_weapons_names_combo(ui->npc_edit_tab_weakness_list); +} + void npc_edit::add_frame_one() { CURRENT_FILE_FORMAT::file_npc_v3_1_2* new_npc_ref = &Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n); @@ -112,86 +192,23 @@ void npc_edit::add_frame_one() void npc_edit::on_npc_edit_tab_selectnpccombo_currentIndexChanged(int index) { - if (index == -1) { + if (index == -1 || _data_loading == true) { return; } _data_loading = true; Mediator::get_instance()->current_npc_n = index; - _npcedit_tab_selectednpc = index; - if (Mediator::get_instance()->enemy_list.size() == 0) { return; } - ui->npc_edit_tab_canshoot->setChecked(Mediator::get_instance()->enemy_list.at(index).is_ghost); - // GRAPHIC FILE // - std::string image_filename(Mediator::get_instance()->enemy_list.at(index).graphic_filename); - if (image_filename.length() > 0) { - ui->npc_edit_tab_graphiccombo->setCurrentIndex(ui->npc_edit_tab_graphiccombo->findText(QString(image_filename.c_str()))); - } - - // BACKGROUND FILE // - std::string bg_graphic_filename(Mediator::get_instance()->enemy_list.at(index).bg_graphic_filename); - if (bg_graphic_filename.length() > 0) { - ui->backgroundFileComboBox->setCurrentIndex(ui->backgroundFileComboBox->findText(QString(bg_graphic_filename.c_str()))); - } - ui->sprite_pos_x->setValue(Mediator::get_instance()->enemy_list.at(index).sprites_pos_bg.x); - ui->sprite_pos_y->setValue(Mediator::get_instance()->enemy_list.at(index).sprites_pos_bg.y); - - - ui->npc_edit_tab_graphicheight->setValue(Mediator::get_instance()->enemy_list.at(index).frame_size.height); - ui->npc_edit_tab_graphicwidth->setValue(Mediator::get_instance()->enemy_list.at(index).frame_size.width); - - ui->npc_edit_tab_previewarea->set_grid_w(Mediator::get_instance()->enemy_list.at(index).frame_size.width); - ui->npc_edit_tab_previewarea->set_grid_h(Mediator::get_instance()->enemy_list.at(index).frame_size.height); - - Mediator::get_instance()->npcGraphicSize_h = Mediator::get_instance()->enemy_list.at(index).frame_size.height; - Mediator::get_instance()->npcGraphicSize_w = Mediator::get_instance()->enemy_list.at(index).frame_size.width; - ui->npc_edit_tab_movespeed->setValue(Mediator::get_instance()->enemy_list.at(index).speed); - ui->npc_edit_tab_NpcHP->setValue(Mediator::get_instance()->enemy_list.at(index).hp.total); - ui->npc_edit_tab_NpcName->setText(Mediator::get_instance()->enemy_list.at(index).name); - ui->npc_edit_tab_range->setValue(Mediator::get_instance()->enemy_list.at(index).walk_range); - ui->npc_edit_tab_shieldtype->setCurrentIndex(Mediator::get_instance()->enemy_list.at(index).shield_type); - ui->npc_edit_tab_weakness_list->setCurrentIndex(0); - ui->npc_edit_tab_weakness_points->setValue(Mediator::get_instance()->enemy_list.at(index).weakness[0].damage_multiplier); - - ui->npc_edit_tab_previewarea->set_graphicfile(FILEPATH+std::string("/images/sprites/enemies/")+std::string(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).graphic_filename)); - - ui->npc_edit_tab_previewarea->set_bg_graphicfile(FILEPATH+std::string("/images/sprites/enemies/backgrounds/")+std::string(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).bg_graphic_filename)); - ui->npc_edit_tab_previewarea->set_sprite_pos(Mediator::get_instance()->enemy_list.at(index).sprites_pos_bg); - ui->npc_edit_tab_previewarea->repaint(); - reload_frame_list(ui->frame_list_selector->currentIndex()); - ui->sprites_preview_widget->repaint(); - - ui->isBoss_checkBox->setChecked(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).is_boss); - ui->isSubBoss_checkbox->setChecked(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).is_sub_boss); - - if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).fly_flag == 0) { - ui->checkBox->setChecked(false); - } else { - ui->checkBox->setChecked(true); - } - - ui->hitarea_x_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.x); - ui->hitarea_y_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.y); - - if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w != 0) { - ui->hitarea_w_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w); - } else { - ui->hitarea_w_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width); - } - if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.h != 0) { - ui->hitarea_h_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.h); - } else { - ui->hitarea_h_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height); - } - - ui->respawn_time_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).respawn_delay); + fill_data(); - ui->projectileOriginX_spinBox->setValue(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).attack_arm_pos.x); - ui->projectileOriginY_spinBox->setValue(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).attack_arm_pos.y); + ui->npc_edit_tab_previewarea->set_grid_w(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width); + ui->npc_edit_tab_previewarea->set_grid_h(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height); + ui->npc_edit_tab_previewarea->update(); + reload_frame_list(Mediator::get_instance()->current_sprite_type); _data_loading = false; } @@ -200,7 +217,7 @@ void npc_edit::on_npc_edit_tab_graphiccombo_currentIndexChanged(const QString &a if (_data_loading || Mediator::get_instance()->enemy_list.size() == 0) { return; } - sprintf(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).graphic_filename, "%s", arg1.toStdString().c_str()); + sprintf(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).graphic_filename, "%s", arg1.toStdString().c_str()); ui->npc_edit_tab_previewarea->set_graphicfile(FILEPATH+std::string("/images/sprites/enemies/")+arg1.toStdString()); add_frame_one(); ui->npc_edit_tab_previewarea->repaint(); @@ -214,16 +231,16 @@ void npc_edit::on_npc_edit_tab_graphicwidth_valueChanged(int arg1) ui->npc_edit_tab_previewarea->set_grid_w(arg1); // if hitarea is zero or old value, update to new one _data_loading = true; - if (ui->hitarea_w_spinBox->value() == 0 || ui->hitarea_w_spinBox->value() == Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.width) { + if (ui->hitarea_w_spinBox->value() == 0 || ui->hitarea_w_spinBox->value() == Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width) { ui->hitarea_w_spinBox->setValue(arg1); - if (Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.width == Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w) { + if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width == Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w) { Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w = arg1; } ui->npc_edit_tab_previewarea->update(); reload_frame_list(ui->frame_list_selector->currentIndex()); } _data_loading = false; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.width = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width = arg1; } void npc_edit::on_npc_edit_tab_graphicheight_valueChanged(int arg1) @@ -237,18 +254,17 @@ void npc_edit::on_npc_edit_tab_graphicheight_valueChanged(int arg1) ui->npc_edit_tab_previewarea->set_grid_h(arg1); // if hitarea is zero or old value, update to new one _data_loading = true; - if (ui->hitarea_h_spinBox->value() == 0 || ui->hitarea_h_spinBox->value() == Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.height) { + if (ui->hitarea_h_spinBox->value() == 0 || ui->hitarea_h_spinBox->value() == Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height) { ui->hitarea_h_spinBox->setValue(arg1); - if (Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.height == Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.h) { - std::cout << "### SET collistion H" << std::endl; + if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height == Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.h) { Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.h = arg1; } ui->npc_edit_tab_previewarea->update(); reload_frame_list(ui->frame_list_selector->currentIndex()); } - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.height = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height = arg1; _data_loading = false; } @@ -265,7 +281,7 @@ void npc_edit::on_npc_edit_tab_NpcName_textChanged(const QString &arg1) msgBox.setInformativeText("Invalid name conflicts with player names."); int ret = msgBox.exec(); char reset_name[50]; - sprintf(reset_name, "NPC[%d]", _npcedit_tab_selectednpc); + sprintf(reset_name, "NPC[%d]", Mediator::get_instance()->current_npc_n); ui->npc_edit_tab_NpcName->setText(reset_name); return; } @@ -284,13 +300,13 @@ void npc_edit::on_npc_edit_tab_NpcName_textChanged(const QString &arg1) } - sprintf(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).name, "%s", arg1.toStdString().c_str()); + sprintf(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).name, "%s", arg1.toStdString().c_str()); QString temp_str = QString("["); - if (_npcedit_tab_selectednpc < 10) { + if (Mediator::get_instance()->current_npc_n < 10) { temp_str += QString("0"); } - temp_str += QString::number(_npcedit_tab_selectednpc) + QString("] - ") + QString(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).name); - ui->npc_edit_tab_selectnpccombo->setItemText(_npcedit_tab_selectednpc, temp_str); + temp_str += QString::number(Mediator::get_instance()->current_npc_n) + QString("] - ") + QString(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).name); + ui->npc_edit_tab_selectnpccombo->setItemText(Mediator::get_instance()->current_npc_n, temp_str); } void npc_edit::on_npc_edit_tab_NpcHP_valueChanged(int arg1) @@ -298,12 +314,12 @@ void npc_edit::on_npc_edit_tab_NpcHP_valueChanged(int arg1) if (_data_loading || Mediator::get_instance()->enemy_list.size() == 0) { return; } - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).hp.total = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).hp.total = arg1; } void npc_edit::on_npc_edit_tab_canshoot_toggled(bool checked) { - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).is_ghost = checked; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).is_ghost = checked; } void npc_edit::on_npc_edit_tab_shieldtype_currentIndexChanged(int index) @@ -311,7 +327,7 @@ void npc_edit::on_npc_edit_tab_shieldtype_currentIndexChanged(int index) if (_data_loading || Mediator::get_instance()->enemy_list.size() == 0) { return; } - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).shield_type = index; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).shield_type = index; } void npc_edit::on_npc_edit_tab_movespeed_valueChanged(int arg1) @@ -319,7 +335,7 @@ void npc_edit::on_npc_edit_tab_movespeed_valueChanged(int arg1) if (_data_loading || Mediator::get_instance()->enemy_list.size() == 0) { return; } - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).speed = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).speed = arg1; } void npc_edit::on_npc_edit_tab_range_valueChanged(int arg1) @@ -327,7 +343,7 @@ void npc_edit::on_npc_edit_tab_range_valueChanged(int arg1) if (_data_loading || Mediator::get_instance()->enemy_list.size() == 0) { return; } - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).walk_range = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).walk_range = arg1; } void npc_edit::on_npc_edit_tab_frametype_currentIndexChanged(int index) @@ -336,15 +352,15 @@ void npc_edit::on_npc_edit_tab_frametype_currentIndexChanged(int index) return; } // @204 - //Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frames[Mediator::get_instance()->getPalleteX()].state = index-1; + //Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frames[Mediator::get_instance()->getPalleteX()].state = index-1; } void npc_edit::set_npc_frame() { printf(">> DialogNPCEdit::setNPCFrame - CALLED\n"); // @204 - //ui->npc_edit_tab_frameduration->setValue(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frames[Mediator::get_instance()->getPalleteX()].duration); - //ui->npc_edit_tab_frametype->setCurrentIndex(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frames[Mediator::get_instance()->getPalleteX()].state+1); + //ui->npc_edit_tab_frameduration->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frames[Mediator::get_instance()->getPalleteX()].duration); + //ui->npc_edit_tab_frametype->setCurrentIndex(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frames[Mediator::get_instance()->getPalleteX()].state+1); } @@ -354,13 +370,11 @@ void npc_edit::on_bg_graphic_combo_currentIndexChanged(const QString &arg1) return; } if (arg1.length() == 0) { - //std::cout << "*************** on_bg_graphic_combo_currentIndexChanged - ZERO" << std::endl; - sprintf(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).bg_graphic_filename, "%s", ""); + sprintf(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).bg_graphic_filename, "%s", ""); ui->npc_edit_tab_previewarea->set_bg_graphicfile(""); } else { - //std::cout << "*************** on_bg_graphic_combo_currentIndexChanged - SET to '" << arg1.toStdString() << "'" << std::endl; - sprintf(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).bg_graphic_filename, "%s", arg1.toStdString().c_str()); - ui->npc_edit_tab_previewarea->set_bg_graphicfile(FILEPATH+std::string("/images/sprites/enemies/backgrounds/")+std::string(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).bg_graphic_filename)); + sprintf(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).bg_graphic_filename, "%s", arg1.toStdString().c_str()); + ui->npc_edit_tab_previewarea->set_bg_graphicfile(FILEPATH+std::string("/images/sprites/enemies/backgrounds/")+std::string(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).bg_graphic_filename)); } } @@ -370,7 +384,7 @@ void npc_edit::on_npc_edit_tab_weakness_list_currentIndexChanged(int index) return; } _npcedit_tab_selected_weakness_weapon = index; - ui->npc_edit_tab_weakness_points->setValue(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).weakness[_npcedit_tab_selected_weakness_weapon].damage_multiplier); + ui->npc_edit_tab_weakness_points->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).weakness[_npcedit_tab_selected_weakness_weapon].damage_multiplier); } void npc_edit::on_npc_edit_tab_weakness_points_valueChanged(int arg1) @@ -378,7 +392,7 @@ void npc_edit::on_npc_edit_tab_weakness_points_valueChanged(int arg1) if (_data_loading || Mediator::get_instance()->enemy_list.size() == 0) { return; } - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).weakness[_npcedit_tab_selected_weakness_weapon].damage_multiplier = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).weakness[_npcedit_tab_selected_weakness_weapon].damage_multiplier = arg1; } @@ -412,28 +426,26 @@ void npc_edit::reload_frame_list(int index) // insert all sprites for the given type into the combo - //std::cout << ">> Adding frames for NPC[" << Mediator::get_instance()->game_data.game_npcs[i].name << "] - type: " << index << std::endl; - std::string filename = FILEPATH + "/images/sprites/enemies/" + Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).graphic_filename; + std::string filename = FILEPATH + "/images/sprites/enemies/" + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).graphic_filename; // @204 for (int j=0; jenemy_list.at(_npcedit_tab_selectednpc).sprites[index][j].used == true) { - int calc_pos_x = Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[index][j].sprite_graphic_pos_x * Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.width; - //std::cout << "NPC[" << Mediator::get_instance()->game_data.game_npcs[i].name << "] - frame.pos_x: " << Mediator::get_instance()->game_data.game_npcs[i].sprites[index][j].sprite_graphic_pos_x << ", cal_pos_x: " << calc_pos_x << std::endl; + if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[index][j].used == true) { + int calc_pos_x = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[index][j].sprite_graphic_pos_x * Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width; QListWidgetItem* item = new QListWidgetItem; - QString temp_str(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).name + QString(" (") + QString::number(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[index][j].duration) + QString(")")); + QString temp_str(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).name + QString(" (") + QString::number(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[index][j].duration) + QString(")")); item->setText(temp_str); //Mediator::get_instance()->game_data.game_npcs[i].name + " (" + QString::number(Mediator::get_instance()->game_data.game_npcs[i].sprites[index][j].duration).c_ + ")"); QPixmap image(filename.c_str()); if (image.isNull() == false && image.width() > 0) { - image = image.copy(calc_pos_x, 0, Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.width, Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.height); - image = image.scaled(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.width*2, Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.height*2); + image = image.copy(calc_pos_x, 0, Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width, Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height); + image = image.scaled(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width*2, Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height*2); item->setIcon(image); } - int h = Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.height*2+4; + int h = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height*2+4; if (h < 24) { h = 24; } - item->setSizeHint(QSize(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.width*2, h)); + item->setSizeHint(QSize(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width*2, h)); ui->frameList_listWidget->addItem(item); } } @@ -459,10 +471,10 @@ void npc_edit::on_pushButton_clicked() } //copy next sprite to current position for (int j=ui->frameList_listWidget->currentRow(); jenemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][j] = Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][j+1]; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][j] = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][j+1]; } // clear last sprite - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][ANIM_FRAMES_COUNT-1].used = false; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][ANIM_FRAMES_COUNT-1].used = false; reload_frame_list(ui->frame_list_selector->currentIndex()); } @@ -474,9 +486,9 @@ void npc_edit::on_frameUp_clicked() if (ui->frameList_listWidget->selectedItems().size() == 0) { return; } - CURRENT_FILE_FORMAT::st_sprite_data temp = Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()-1]; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()-1] = Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()]; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()] = temp; + CURRENT_FILE_FORMAT::st_sprite_data temp = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()-1]; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()-1] = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()]; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()] = temp; reload_frame_list(ui->frame_list_selector->currentIndex()); } @@ -488,27 +500,26 @@ void npc_edit::on_frameDown_clicked() if (ui->frameList_listWidget->currentRow() >= ANIM_FRAMES_COUNT-1) { return; } - if (Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()+1].used == false) { + if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()+1].used == false) { return; } - CURRENT_FILE_FORMAT::st_sprite_data temp = Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()+1]; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()+1] = Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()]; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()] = temp; + CURRENT_FILE_FORMAT::st_sprite_data temp = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()+1]; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()+1] = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()]; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][ui->frameList_listWidget->currentRow()] = temp; reload_frame_list(ui->frame_list_selector->currentIndex()); } void npc_edit::on_frameList_listWidget_currentRowChanged(int currentRow) { - ui->sprite_duration_spinBox->setValue(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][currentRow].duration); - ui->sprite_collision_x->setValue(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][currentRow].collision_rect.x); - ui->sprite_collision_y->setValue(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][currentRow].collision_rect.y); - ui->sprite_collision_w->setValue(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][currentRow].collision_rect.w); - ui->sprite_collision_h->setValue(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[ui->frame_list_selector->currentIndex()][currentRow].collision_rect.h); + ui->sprite_duration_spinBox->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][currentRow].duration); + ui->sprite_collision_x->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][currentRow].collision_rect.x); + ui->sprite_collision_y->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][currentRow].collision_rect.y); + ui->sprite_collision_w->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][currentRow].collision_rect.w); + ui->sprite_collision_h->setValue(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[ui->frame_list_selector->currentIndex()][currentRow].collision_rect.h); if (ui->frame_list_selector->currentText() == "ATTACK") { - std::cout << "attack_frame: " << (int)Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).attack_frame << ", currentRow: " << currentRow << std::endl; _data_loading = true; - if (Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).attack_frame == currentRow) { + if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_frame == currentRow) { ui->isAttackFrame_checkBox->setChecked(true); } else { ui->isAttackFrame_checkBox->setChecked(false); @@ -521,7 +532,7 @@ void npc_edit::on_frameList_listWidget_currentRowChanged(int currentRow) void npc_edit::on_sprite_duration_spinBox_valueChanged(int arg1) { if (ui->frameList_listWidget->selectedItems().size() > 0) { - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].duration = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].duration = arg1; if (_ignore_spritelist_row_changed == false) { reload_frame_list(ui->frame_list_selector->currentIndex()); } else { @@ -534,7 +545,7 @@ void npc_edit::on_sprite_collision_x_valueChanged(int arg1) { if (_data_loading == true) { return; } if (ui->frameList_listWidget->selectedItems().size() > 0) { - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].collision_rect.x = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].collision_rect.x = arg1; } ui->sprites_preview_widget->repaint(); } @@ -543,7 +554,7 @@ void npc_edit::on_sprite_collision_y_valueChanged(int arg1) { if (_data_loading == true) { return; } if (ui->frameList_listWidget->selectedItems().size() > 0) { - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].collision_rect.y = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].collision_rect.y = arg1; } ui->sprites_preview_widget->repaint(); } @@ -552,7 +563,7 @@ void npc_edit::on_sprite_collision_w_valueChanged(int arg1) { if (_data_loading == true) { return; } if (ui->frameList_listWidget->selectedItems().size() > 0) { - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].collision_rect.w = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].collision_rect.w = arg1; } ui->sprites_preview_widget->repaint(); @@ -562,7 +573,7 @@ void npc_edit::on_sprite_collision_h_valueChanged(int arg1) { if (_data_loading == true) { return; } if (ui->frameList_listWidget->selectedItems().size() > 0) { - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].collision_rect.h = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].collision_rect.h = arg1; } ui->sprites_preview_widget->repaint(); @@ -635,8 +646,6 @@ void npc_edit::on_hitarea_x_spinBox_valueChanged(int arg1) { if (_data_loading == true) { return; } - std::cout << "hi_area::change(x): " << arg1 << std::endl; - Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.x = arg1; ui->npc_edit_tab_previewarea->update(); } @@ -645,8 +654,6 @@ void npc_edit::on_hitarea_y_spinBox_valueChanged(int arg1) { if (_data_loading == true) { return; } - std::cout << "hi_area::change(y): " << arg1 << std::endl; - Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.y = arg1; ui->npc_edit_tab_previewarea->update(); } @@ -655,8 +662,6 @@ void npc_edit::on_hitarea_w_spinBox_valueChanged(int arg1) { if (_data_loading == true) { return; } - std::cout << "hi_area::change(w): " << arg1 << std::endl; - Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w = arg1; ui->npc_edit_tab_previewarea->update(); } @@ -665,8 +670,6 @@ void npc_edit::on_hitarea_h_spinBox_valueChanged(int arg1) { if (_data_loading == true) { return; } - std::cout << "hi_area::change(h): " << arg1 << std::endl; - Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.h = arg1; ui->npc_edit_tab_previewarea->update(); } @@ -684,18 +687,16 @@ void npc_edit::on_AddFrame_Button_clicked() //frame_list_selector // go to the first free slot // @204 - std::cout << "## FOUND NPC!!!!" << std::endl; for (int j=0; jframe_list_selector->currentIndex(); - if (Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[frame_type][j].used == false) { - std::cout << "ADD-SPRITE-FRAME: FOUND EMPTY SLOT AT [" << j << "]" << std::endl; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[frame_type][j].used = true; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[frame_type][j].duration = 100; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[frame_type][j].sprite_graphic_pos_x = Mediator::get_instance()->getPalleteX(); - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[frame_type][j].collision_rect.w = Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.width; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[frame_type][j].collision_rect.h = Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).frame_size.height; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[frame_type][j].collision_rect.x = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites_pos_bg.x; - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[frame_type][j].collision_rect.y = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites_pos_bg.y; + if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[frame_type][j].used == false) { + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[frame_type][j].used = true; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[frame_type][j].duration = 100; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[frame_type][j].sprite_graphic_pos_x = Mediator::get_instance()->getPalleteX(); + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[frame_type][j].collision_rect.w = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[frame_type][j].collision_rect.h = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[frame_type][j].collision_rect.x = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites_pos_bg.x; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[frame_type][j].collision_rect.y = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites_pos_bg.y; reload_frame_list(ui->frame_list_selector->currentIndex()); return; } @@ -704,6 +705,14 @@ void npc_edit::on_AddFrame_Button_clicked() void npc_edit::on_addEnemy_pushButton_clicked() { + // TODO: remove in the future when we change file_map_npc_v2.id_npc from Sint8 + if (Mediator::get_instance()->enemy_list.size() >= 128) { + QMessageBox msgBox; + msgBox.setText("ERROR"); + msgBox.setInformativeText("Number of enemies reached limit."); + msgBox.exec(); + return; + } _data_loading = true; Mediator::get_instance()->enemy_list.push_back(CURRENT_FILE_FORMAT::file_npc_v3_1_2()); // add equivalent AI for enemy @@ -719,9 +728,9 @@ void npc_edit::on_isAttackFrame_checkBox_toggled(bool checked) if (_data_loading == true) { return; } if (ui->frame_list_selector->currentText() == "ATTACK") { if (checked == true) { - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).attack_frame = ui->frameList_listWidget->currentRow(); + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_frame = ui->frameList_listWidget->currentRow(); } else { - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).attack_frame = 0; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_frame = 0; } } } @@ -729,13 +738,13 @@ void npc_edit::on_isAttackFrame_checkBox_toggled(bool checked) void npc_edit::on_projectileOriginX_spinBox_valueChanged(int arg1) { if (_data_loading == true) { return; } - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).attack_arm_pos.x = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_arm_pos.x = arg1; } void npc_edit::on_projectileOriginY_spinBox_valueChanged(int arg1) { if (_data_loading == true) { return; } - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).attack_arm_pos.y = arg1; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_arm_pos.y = arg1; } void npc_edit::on_pushButton_2_clicked() @@ -744,7 +753,7 @@ void npc_edit::on_pushButton_2_clicked() if (ui->frameList_listWidget->selectedItems().size() > 0) { for (int i=0; iframeList_listWidget->currentRow()) { - Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[Mediator::get_instance()->current_sprite_type][i].collision_rect = Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].collision_rect; + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[Mediator::get_instance()->current_sprite_type][i].collision_rect = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[Mediator::get_instance()->current_sprite_type][ui->frameList_listWidget->currentRow()].collision_rect; } } ui->sprites_preview_widget->repaint(); @@ -756,8 +765,18 @@ void npc_edit::on_backgroundFileComboBox_currentIndexChanged(const QString &arg1 if (_data_loading || Mediator::get_instance()->enemy_list.size() == 0) { return; } - sprintf(Mediator::get_instance()->enemy_list.at(_npcedit_tab_selectednpc).bg_graphic_filename, "%s", arg1.toStdString().c_str()); + sprintf(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).bg_graphic_filename, "%s", arg1.toStdString().c_str()); ui->npc_edit_tab_previewarea->set_bg_graphicfile(FILEPATH+std::string("/images/sprites/enemies/backgrounds/")+arg1.toStdString()); add_frame_one(); ui->npc_edit_tab_previewarea->repaint(); } + + +void npc_edit::on_npcBehaviorComboBox_currentIndexChanged(int index) +{ + if (_data_loading || Mediator::get_instance()->enemy_list.size() == 0) { + return; + } + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).behavior = index; +} + diff --git a/editor/mainwindow_tab/npc_edit.h b/editor/mainwindow_tab/npc_edit.h index a2a95d6c..72365e68 100644 --- a/editor/mainwindow_tab/npc_edit.h +++ b/editor/mainwindow_tab/npc_edit.h @@ -17,7 +17,7 @@ class npc_edit : public QWidget void reload(); private slots: - void on_npc_edit_tab_selectnpccombo_currentIndexChanged(int index); + void on_npc_edit_tab_selectnpccombo_currentIndexChanged(int index); void on_npc_edit_tab_graphiccombo_currentIndexChanged(const QString &arg1); @@ -101,8 +101,11 @@ private slots: void on_backgroundFileComboBox_currentIndexChanged(const QString &arg1); + void on_npcBehaviorComboBox_currentIndexChanged(int index); + private: void fill_data(); + void init_form(); // used to prevent creating an enemy with no STAND frame void add_frame_one(); @@ -113,7 +116,6 @@ public slots: private: Ui::npc_edit *ui; - int _npcedit_tab_selectednpc; int _npcedit_tab_selected_weakness_weapon; bool _data_loading; // prevents "on_change" happening while data is being filled in bool _ignore_spritelist_row_changed; diff --git a/editor/mainwindow_tab/npc_edit.ui b/editor/mainwindow_tab/npc_edit.ui index f51cfa87..e5335cb1 100644 --- a/editor/mainwindow_tab/npc_edit.ui +++ b/editor/mainwindow_tab/npc_edit.ui @@ -6,7 +6,7 @@ 0 0 - 1203 + 1222 723 @@ -88,7 +88,7 @@ 0 0 380 - 573 + 553 @@ -122,23 +122,6 @@ - - - - If can cross walls - - - Is Ghost - - - - - - - Hit Points: - - - @@ -149,7 +132,7 @@ - + Maximum movement range and vision reach @@ -165,6 +148,37 @@ + + + + + + Weapon that hits enemy + + + + + + + How many hit points the selected weapon makes of damage in the enemy + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -175,40 +189,13 @@ - - - - Name: - - - - - - - Range: - - - - - + + - Pixels moved by cycle - - - 0 - - - 20 - - - 2 + If can cross walls - - - - - Weaknesses: + Is Ghost @@ -222,76 +209,14 @@ - - - - My Enemy - - - 30 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Is Boss - - - - + Shield Type: - - - - Move Speed: - - - - - - - - - Weapon that hits enemy - - - - - - - How many hit points the selected weapon makes of damage in the enemy - - - - - - - - - Auto-Respawn Delay: - - - - + If uses shield, how it behaves @@ -331,15 +256,55 @@ Stand and Walk + + + Back + + + + + Using Shield + + - - + + + + Range: + + + + + - If different than zero, NPC will respawn even if is on-screen + Pixels moved by cycle + + + 0 - 99999 + 20 + + + 2 + + + + + + + My Enemy + + + 30 + + + + + + + Is Boss @@ -350,13 +315,72 @@ + + + + Name: + + + + + + + Hit Points: + + + + + + + Move Speed: + + + + + + + If different than zero, NPC will respawn even if is on-screen + + + 99999 + + + + + + + Weaknesses: + + + + + + + Auto-Respawn Delay: + + + - + + + -999 + + + 999 + + - + + + -999 + + + 999 + + @@ -387,6 +411,27 @@ + + + + + None + + + + + Player Friend + + + + + + + + Behavior + + + @@ -398,7 +443,7 @@ 0 0 380 - 573 + 553 @@ -627,6 +672,12 @@ If you want to set are that misses the shots, use hitarea instead.
+ + + 0 + 0 + + The are that is not vulnerable will reflect projectiles. If you want to set are that misses the shots, use hitarea instead. @@ -1428,6 +1479,8 @@ If you want to set are that misses the shots, use hitarea instead.
+ + diff --git a/editor/mainwindow_tab/object_tab.ui b/editor/mainwindow_tab/object_tab.ui index 00f90471..c867fb34 100644 --- a/editor/mainwindow_tab/object_tab.ui +++ b/editor/mainwindow_tab/object_tab.ui @@ -7,7 +7,7 @@ 0 0 815 - 471 + 519 @@ -249,6 +249,66 @@ Stage Boss teleporter + + + Crusher + + + + + Moving Platform Up + + + + + Moving Platform Down + + + + + Destructible + + + + + Destructible with Item Drop + + + + + Active Platform Diagonal Up + + + + + Active Platform Diagonal Down + + + + + Active Platform Ahead + + + + + Active Platform Up + + + + + Double (Jump and Shoot) Destructible + + + + + Timed Bomb + + + + + Expanding Spike + + diff --git a/editor/mainwindow_tab/player_edit.cpp b/editor/mainwindow_tab/player_edit.cpp index ef33cc05..f65c8a2b 100644 --- a/editor/mainwindow_tab/player_edit.cpp +++ b/editor/mainwindow_tab/player_edit.cpp @@ -37,13 +37,11 @@ void player_edit::fill_players_data() common::fill_graphicfiles_combobox("/images/sprites/", ui->player_graphics_combo); ui->players_tab_name->setText(QString(Mediator::get_instance()->player_list_v3_1[index].name)); - ui->players_tab_hp->setValue(Mediator::get_instance()->player_list_v3_1[index].HP); ui->players_tab_hasshield->setChecked(Mediator::get_instance()->player_list_v3_1[index].have_shield); ui->players_tab_maxshots->setValue(Mediator::get_instance()->player_list_v3_1[index].max_shots); ui->damageModSpinBox->setValue(Mediator::get_instance()->player_list_v3_1[index].damage_modifier); double move_speed = Mediator::get_instance()->player_list_v3_1[index].move_speed; move_speed = move_speed / 10; - //std::cout << "move_speed: " << move_speed << std::endl; QString graphic_qstring = QString(Mediator::get_instance()->player_list_v3_1[index].graphic_filename); ui->player_graphics_combo->setCurrentIndex(ui->player_graphics_combo->findText(graphic_qstring)); @@ -110,7 +108,6 @@ void player_edit::on_color_selected2(const QColor &color) ui->ColorValueIndicator2->setStyleSheet(QString("background-color: rgb(") + QString::number(color.red()) + QString(", ") + QString::number(color.green()) + QString(", ") + QString::number(color.blue()) + QString("); border-style: outset; border-width: 1px; border-color: black;")); ui->player_preview_widget->update_sprites(); - ui->player_preview_widget->update_sprites(); } void player_edit::on_color_selected3(const QColor &color) @@ -121,38 +118,35 @@ void player_edit::on_color_selected3(const QColor &color) ui->ColorValueIndicator3->setStyleSheet(QString("background-color: rgb(") + QString::number(color.red()) + QString(", ") + QString::number(color.green()) + QString(", ") + QString::number(color.blue()) + QString("); border-style: outset; border-width: 1px; border-color: black;")); ui->player_preview_widget->update_sprites(); - ui->player_preview_widget->update_sprites(); } -void player_edit::pick_player_color1() +void player_edit::pick_player_color1(QColor color) { - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.r = Mediator::get_instance()->colormap[Mediator::get_instance()->picked_color_n].r; - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.g = Mediator::get_instance()->colormap[Mediator::get_instance()->picked_color_n].g; - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.b = Mediator::get_instance()->colormap[Mediator::get_instance()->picked_color_n].b; + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.r = color.red(); + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.g = color.green(); + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.b = color.blue(); ui->ColorValueIndicator1->setStyleSheet(QString("background-color: rgb(") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.r) + QString(", ") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.g) + QString(", ") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.b) + QString("); border-style: outset; border-width: 1px; border-color: black;")); ui->player_preview_widget->update_sprites(); - ui->player_preview_widget->update_sprites(); } -void player_edit::pick_player_color2() +void player_edit::pick_player_color2(QColor color) { - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.r = Mediator::get_instance()->colormap[Mediator::get_instance()->picked_color_n].r; - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.g = Mediator::get_instance()->colormap[Mediator::get_instance()->picked_color_n].g; - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.b = Mediator::get_instance()->colormap[Mediator::get_instance()->picked_color_n].b; + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.r = color.red(); + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.g = color.green(); + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.b = color.blue(); ui->ColorValueIndicator2->setStyleSheet(QString("background-color: rgb(") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.r) + QString(", ") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.g) + QString(", ") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.b) + QString("); border-style: outset; border-width: 1px; border-color: black;")); ui->player_preview_widget->update_sprites(); - ui->player_preview_widget->update_sprites(); } -void player_edit::pick_player_color3() +void player_edit::pick_player_color3(QColor color) { - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.r = Mediator::get_instance()->colormap[Mediator::get_instance()->picked_color_n].r; - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.g = Mediator::get_instance()->colormap[Mediator::get_instance()->picked_color_n].g; - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.b = Mediator::get_instance()->colormap[Mediator::get_instance()->picked_color_n].b; + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.r = color.red(); + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.g = color.green(); + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.b = color.blue(); ui->ColorValueIndicator3->setStyleSheet(QString("background-color: rgb(") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.r) + QString(", ") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.g) + QString(", ") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.b) + QString("); border-style: outset; border-width: 1px; border-color: black;")); @@ -173,12 +167,6 @@ void player_edit::on_players_tab_name_textChanged(const QString &arg1) sprintf(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].name, "%s", arg1.toStdString().c_str()); } -void player_edit::on_players_tab_hp_valueChanged(int arg1) -{ - if (_loading == true) { return; } - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].HP = arg1; -} - void player_edit::on_players_tab_hasshield_toggled(bool checked) { if (_loading == true) { return; } @@ -235,36 +223,36 @@ void player_edit::on_player_sprite_h_valueChanged(int arg1) void player_edit::on_player_hitarea_x_valueChanged(int arg1) { - Mediator::get_instance()->player_graphics_data.hit_area.x = arg1; if (_loading == false) { - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.x; + Mediator::get_instance()->player_graphics_data.hit_area.x = arg1; + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.x = arg1; ui->player_preview_widget->update_sprites(); } } void player_edit::on_player_hitarea_y_valueChanged(int arg1) { - Mediator::get_instance()->player_graphics_data.hit_area.y = arg1; if (_loading == false) { - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.y; + Mediator::get_instance()->player_graphics_data.hit_area.y = arg1; + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.y = arg1; ui->player_preview_widget->update_sprites(); } } void player_edit::on_player_hitarea_w_valueChanged(int arg1) { - Mediator::get_instance()->player_graphics_data.hit_area.w = arg1; if (_loading == false) { - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.w; + Mediator::get_instance()->player_graphics_data.hit_area.w = arg1; + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.w = arg1; ui->player_preview_widget->update_sprites(); } } void player_edit::on_player_hitarea_h_valueChanged(int arg1) { - Mediator::get_instance()->player_graphics_data.hit_area.h = arg1; if (_loading == false) { - Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.h; + Mediator::get_instance()->player_graphics_data.hit_area.h = arg1; + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.h = arg1; ui->player_preview_widget->update_sprites(); } } @@ -272,23 +260,23 @@ void player_edit::on_player_hitarea_h_valueChanged(int arg1) void player_edit::on_color1_picker_clicked() { - QDialog *color_pick = new dialog_pick_color; - color_pick->show(); - QObject::connect(color_pick, SIGNAL(accepted()), this, SLOT(pick_player_color1())); + QColorDialog *colorDialog = new QColorDialog(this); + QObject::connect(colorDialog, SIGNAL(colorSelected(QColor)), this, SLOT(pick_player_color1(QColor))); + colorDialog->show(); } void player_edit::on_color2_picker_clicked() { - QDialog *color_pick = new dialog_pick_color; - color_pick->show(); - QObject::connect(color_pick, SIGNAL(accepted()), this, SLOT(pick_player_color2())); + QColorDialog *colorDialog = new QColorDialog(this); + QObject::connect(colorDialog, SIGNAL(colorSelected(QColor)), this, SLOT(pick_player_color2(QColor))); + colorDialog->show(); } void player_edit::on_color3_picker_clicked() { - QDialog *color_pick = new dialog_pick_color; - color_pick->show(); - QObject::connect(color_pick, SIGNAL(accepted()), this, SLOT(pick_player_color3())); + QColorDialog *colorDialog = new QColorDialog(this); + QObject::connect(colorDialog, SIGNAL(colorSelected(QColor)), this, SLOT(pick_player_color3(QColor))); + colorDialog->show(); } void player_edit::on_chargedshot_combo_currentIndexChanged(int index) @@ -311,6 +299,7 @@ void player_edit::on_weaponlist_combo_currentIndexChanged(int index) ui->ColorValueIndicator2->setStyleSheet(QString("background-color: rgb(") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.r) + QString(", ") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.g) + QString(", ") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.b) + QString("); border-style: outset; border-width: 1px; border-color: black;")); ui->ColorValueIndicator3->setStyleSheet(QString("background-color: rgb(") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.r) + QString(", ") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.g) + QString(", ") + QString::number(Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.b) + QString("); border-style: outset; border-width: 1px; border-color: black;")); ui->player_preview_widget->update_sprites(); + ui->player_preview_widget->repaint(); } void player_edit::on_players_tab_movespeed_valueChanged(double arg1) diff --git a/editor/mainwindow_tab/player_edit.h b/editor/mainwindow_tab/player_edit.h index 29b3f6db..ec57ac7c 100644 --- a/editor/mainwindow_tab/player_edit.h +++ b/editor/mainwindow_tab/player_edit.h @@ -25,17 +25,15 @@ public slots: void on_color_selected1(const QColor & color); void on_color_selected2(const QColor & color); void on_color_selected3(const QColor & color); - void pick_player_color1(); - void pick_player_color2(); - void pick_player_color3(); + void pick_player_color1(QColor color); + void pick_player_color2(QColor color); + void pick_player_color3(QColor color); private slots: void on_players_tab_list_combo_currentIndexChanged(int index); void on_players_tab_name_textChanged(const QString &arg1); - void on_players_tab_hp_valueChanged(int arg1); - void on_players_tab_hasshield_toggled(bool checked); void on_players_tab_maxshots_valueChanged(int arg1); diff --git a/editor/mainwindow_tab/player_edit.ui b/editor/mainwindow_tab/player_edit.ui index 29f3cca5..e254197f 100644 --- a/editor/mainwindow_tab/player_edit.ui +++ b/editor/mainwindow_tab/player_edit.ui @@ -17,7 +17,7 @@ - 0 + 1 @@ -25,7 +25,7 @@ 0 0 752 - 395 + 377 @@ -37,20 +37,6 @@ 10 - - - - Max Shots: - - - - - - - Damage Modifier:: - - - @@ -64,13 +50,6 @@ - - - - Hit Points: - - - @@ -118,16 +97,6 @@ - - - - - - - Charged Shot: - - - @@ -135,16 +104,6 @@ - - - - 1 - - - 32 - - - @@ -152,13 +111,6 @@ - - - - Has Shield: - - - @@ -231,67 +183,98 @@ - - - - Maximum number of projectiles on screen if player keeps pressing the attack button - - - 1 + + + + - - 3 + + + + + + Has Shield: - + - - + + - + Max Shots: - - - - -3 - - - 3 + + + + Simultaneous Shots: - + - Simultaneous Shots: + Damage Modifier:: - + + + + Normal Shot: + + + + + + + Charged Shot: + + + + + + + Maximum number of projectiles on screen if player keeps pressing the attack button + + + 1 + + + 3 + + + + Number of projectiles fired each time player hits the attack button - - - - Normal Shot: + + + + -3 + + + 3 - + + + + @@ -301,8 +284,8 @@ 0 0 - 752 - 395 + 738 + 448 @@ -319,13 +302,6 @@ - - - - Hit Area Size: - - - @@ -687,6 +663,31 @@ + + + + + + Sprite Size: + + + + + + + Hit Area Pos: + + + + + + + Hit Area Size: + + + + + diff --git a/editor/mainwindow_tab/projectile_edit.ui b/editor/mainwindow_tab/projectile_edit.ui index 2f7a933a..cf6a3052 100644 --- a/editor/mainwindow_tab/projectile_edit.ui +++ b/editor/mainwindow_tab/projectile_edit.ui @@ -270,6 +270,13 @@ + + + + Selected: + + + diff --git a/editor/mainwindow_tab/stage_edit.cpp b/editor/mainwindow_tab/stage_edit.cpp index 520cd0ca..fb110f66 100644 --- a/editor/mainwindow_tab/stage_edit.cpp +++ b/editor/mainwindow_tab/stage_edit.cpp @@ -112,9 +112,7 @@ void stage_edit::update_stage_data(int language_n) ui->stages_tab_stage_name_lineedit->setText(Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].name); ui->stages_tab_bossname_lineedit->setText(Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].boss.name); int combo_n = ui->stages_tab_bgmusic_combo->findText(QString(Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].bgmusic_filename)); - //std::cout << "&&&&& currentStage: " << Mediator::get_instance()->currentStage << ", music-file: '" << Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].bgmusic_filename << "'', combo_n: " << combo_n << std::endl; ui->stages_tab_bgmusic_combo->setCurrentIndex(combo_n); - //ui->dialogs_line1_face->setCurrentIndex(ui->dialogs_line1_face->findText(QString(Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].intro_dialog.face_graphics_filename))); // search for the item that matches the text to select row std::string search_text = std::string(Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].dialog_face_graphics_filename); @@ -124,7 +122,6 @@ void stage_edit::update_stage_data(int language_n) break; } - //std::cout << "stage: " << Mediator::get_instance()->currentStage << ", boss.id_weapon: " << Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].boss.id_weapon << std::endl; int stage_id = Mediator::get_instance()->currentStage; if (language_n < 0 || language_n >= LANGUAGE_COUNT) { language_n = LANGUAGE_ENGLISH; @@ -135,7 +132,6 @@ void stage_edit::update_stage_data(int language_n) Mediator::get_instance()->stage_dialog_list[language_n].insert(std::pair >(stage_id, fio_str.get_stage_dialogs(Mediator::get_instance()->currentStage, language_n, false))); ui->dialogs_line1_text1->setText(QString(Mediator::get_instance()->stage_dialog_list[language_n].at(stage_id).at(0).c_str())); - std::cout << "SET ===> stage[" << stage_id << "], IN[" << Mediator::get_instance()->stage_dialog_list[language_n].at(stage_id).at(1) << "]" << std::endl; ui->dialogs_line1_text2->setText(QString(Mediator::get_instance()->stage_dialog_list[language_n].at(stage_id).at(1).c_str())); ui->dialogs_line1_text3->setText(QString(Mediator::get_instance()->stage_dialog_list[language_n].at(stage_id).at(2).c_str())); ui->dialogs_line1_text1->setPlaceholderText(QString(stage_dialog_default_language_list.at(stage_id).at(0).c_str())); @@ -203,11 +199,6 @@ void stage_edit::update_stage_data(int language_n) ui->stages_tab_bossname_lineedit->setText(Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].boss.name); - if (Mediator::get_instance()->stage_extra_data.extra_data[stage_id].active == true) { - ui->checkBox->setCheckState(Qt::Checked); - } else { - ui->checkBox->setCheckState(Qt::Unchecked); - } } @@ -303,9 +294,7 @@ void stage_edit::on_dialogs_line1_text2_textChanged(const QString &arg1) { if (_data_loading) { return; } int stage_n = ui->stages_tab_stage_combo->currentIndex(); - std::cout << "stage[" << stage_n << "], IN[" << arg1.toStdString() << "]" << std::endl; Mediator::get_instance()->stage_dialog_list[ui->language_comboBox->currentIndex()].at(stage_n).at(1) = arg1.toStdString(); - std::cout << "OUT[" << Mediator::get_instance()->stage_dialog_list[ui->language_comboBox->currentIndex()].at(stage_n).at(1) << "]" << std::endl; } void stage_edit::on_dialogs_line1_text3_textChanged(const QString &arg1) diff --git a/editor/mainwindow_tab/stage_edit.ui b/editor/mainwindow_tab/stage_edit.ui index 8aa586a0..8aa22ab6 100644 --- a/editor/mainwindow_tab/stage_edit.ui +++ b/editor/mainwindow_tab/stage_edit.ui @@ -37,32 +37,19 @@ 0 - + - - - - Qt::Horizontal - - - - 40 - 20 - - - + + - - + + - Stage Music: + Stage Name: - - - @@ -70,27 +57,33 @@ - - + + - Stage Name: + Stage Music: - + + + + Qt::Horizontal + + + + 40 + 20 + + + + + 30 - - - - Enabled - - - diff --git a/editor/mainwindow_tab/weapon_edit.cpp b/editor/mainwindow_tab/weapon_edit.cpp index 698dfe09..d988cf5f 100644 --- a/editor/mainwindow_tab/weapon_edit.cpp +++ b/editor/mainwindow_tab/weapon_edit.cpp @@ -41,7 +41,6 @@ void weapon_edit::on_weapon_select_combo_currentIndexChanged(int index) _selected_weapon = index; ui->weapon_name->setText(QString(Mediator::get_instance()->game_data.weapons[_selected_weapon].name)); ui->weapon_damage->setValue(Mediator::get_instance()->game_data.weapons[_selected_weapon].damage); - //std::cout << "weapon.projectile_id: " << (int)Mediator::get_instance()->game_data.weapons[_selected_weapon].id_projectile << std::endl; ui->weapon_projectile_type->setCurrentIndex(Mediator::get_instance()->game_data.weapons[_selected_weapon].id_projectile); // +1 because of the -1 default projectile ui->weapon_charged_projectile_type->setCurrentIndex(Mediator::get_instance()->game_data.weapons[_selected_weapon].id_projectile_charged); // +1 because of the -1 default projectile _loaded = true; @@ -52,7 +51,6 @@ void weapon_edit::on_weapon_name_textChanged(const QString &arg1) if (_loaded == false) { return; } - std::cout << "on_weapon_name_textChanged - _selected_weapon: " << _selected_weapon << ", new name: " << arg1.toStdString() << std::endl; sprintf(Mediator::get_instance()->game_data.weapons[_selected_weapon].name, "%s", arg1.toStdString().c_str()); } @@ -61,7 +59,6 @@ void weapon_edit::on_weapon_projectile_type_currentIndexChanged(int index) if (_loaded == false) { return; } - //std::cout << ">> on_weapon_projectile_type_currentIndexChanged - _selected_weapon: " << _selected_weapon << ", index: " << index << std::endl; Mediator::get_instance()->game_data.weapons[_selected_weapon].id_projectile = index; } diff --git a/editor/mediator.cpp b/editor/mediator.cpp index ed48ca83..aadcbc13 100644 --- a/editor/mediator.cpp +++ b/editor/mediator.cpp @@ -15,7 +15,7 @@ #define PROJECTILE_FILE_V3 "data/game_projectile_list_v3.dat" // Global static pointer used to ensure a single instance of the class. -Mediator* Mediator::_instance = nullptr; +Mediator* Mediator::_instance = NULL; Mediator::Mediator() : stage_data(), stage_extra_data() { palleteX=0; @@ -41,7 +41,7 @@ Mediator::Mediator() : stage_data(), stage_extra_data() { npc_direction = 0; object_direction = 0; - zoom = 1; + zoom = 2; currentStage = 1; currentDifficulty = DIFFICULTY_EASY; currentDifficultyMode = DIFFICULTY_MODE_GREATER; @@ -319,15 +319,12 @@ void Mediator::save_dialogs() std::map >::iterator it; for (int i=0; i list_copy = it->second; if (list_copy.size() > STAGE_DIALOG_NUMBER) { - std::cout << "ERROR: Invalid dialogs size" << std::endl; return; } - std::cout << "list_copy.size[" << list_copy.size() << "]" << std::endl; for (int i=0; i 1) { + enemy_list.at(i).is_ghost = 0; + } + } + object_list = fio_cmm.load_from_disk("game_object_list.dat"); if (object_list.size() == 0) { // add one first item to avoid errors object_list.push_back(CURRENT_FILE_FORMAT::file_object()); } ai_list = fio_cmm.load_from_disk("game_ai_list.dat"); - //std::cout << "MEDIATOR::load_game::ai_list.size(): " << ai_list.size() << std::endl; if (ai_list.size() == 0) { // add one first item to avoid errors for (int i=0; ifio.read_all_maps(maps_data); - convert_map_data_to_v2(); - } else { - Mediator::get_instance()->fio.read_all_maps_v2(maps_data_v2); - maps_data_npc_list = fio_cmm.load_from_disk(std::string("/map_npc_data.dat")); - - for (int i=0; i(std::string("/map_object_data.dat")); - - points_castle1 = fio_cmm.load_single_object_from_disk(std::string("/castle1_points.dat")); - points_castle2 = fio_cmm.load_single_object_from_disk(std::string("/castle2_points.dat")); - } + Mediator::get_instance()->fio.read_all_maps_v2(maps_data_v2); + maps_data_npc_list = fio_cmm.load_from_disk(std::string("/map_npc_data.dat")); + maps_data_object_list = fio_cmm.load_from_disk(std::string("/map_object_data.dat")); } void Mediator::save_game() { - clean_data(); - //temp_fix_player_colors_order(); - Mediator::get_instance()->fio.write_game(game_data); Mediator::get_instance()->fio.write_all_stages(stage_data); - std::string stages_extra_data_filename = "data/stages_extra_data" + fio.get_sufix() + ".dat"; fio_cmm.save_struct_data(stages_extra_data_filename, stage_extra_data); - save_map_data(); Mediator::get_instance()->fio.write_castle_data(castle_data); fio_cmm.save_data_to_disk("game_enemy_list_3_1_2.dat", enemy_list); fio_cmm.save_data_to_disk("game_object_list.dat", object_list); fio_cmm.save_data_to_disk("game_ai_list.dat", ai_list); - - - //convert_ai_list_to_v3(); - //fio_cmm.save_data_to_disk("game_ai_list_v3.dat", ai_list); - - //convertProjectileListToV2(); fio_cmm.save_data_to_disk("data/game_projectile_list_v3.dat", projectile_list_v3); - fio_cmm.save_data_to_disk("anim_block_list.dat", anim_block_list); - fio_cmm.save_data_to_disk("player_list_v3_1_1.dat", player_list_v3_1); - /* - // ######### convert player_v3.1 to player_v3.1.1 ######### // - player_list_v3_1_1.clear(); - for (int i=0; i("player_list_v3_1_1.dat", player_list_v3_1_1); - // ######### convert player_v3.1 to player_v3.1.1 ######### // - - // ######### convert npc to npc_v3.1.1 ######### // - enemy_list_3_1_1.clear(); - for (int i=0; i("game_enemy_list_3_1_1.dat", enemy_list_3_1_1); - // ######### convert npc to npc_v3.1.1 ######### // - */ - - fio_cmm.save_single_object_to_disk("castle1_points.dat", points_castle1); - fio_cmm.save_single_object_to_disk("castle2_points.dat", points_castle2); - ScenesMediator::get_instance()->save_game_scenes(); save_dialogs(); } -void Mediator::save_map_data() -{ - //Mediator::get_instance()->fio.write_all_maps(maps_data); - Mediator::get_instance()->fio.write_all_maps_v2(maps_data_v2); - // TODO save v2 - fio_cmm.save_data_to_disk("/map_npc_data.dat", maps_data_npc_list); - fio_cmm.save_data_to_disk("/map_object_data.dat", maps_data_object_list); -} - -void Mediator::convert_map_data_to_v2() +void Mediator::clean_map_data() { - //maps_data[FS_MAX_STAGES][FS_STAGE_MAX_MAPS] - maps_data_npc_list.clear(); - maps_data_object_list.clear(); + //maps_data_v2[FS_MAX_STAGES][FS_STAGE_MAX_MAPS] for (int i=0; igetPallete().length() < 1) { - filename = QString(FILEPATH.c_str()) + QString("/images/tilesets/") + QString("default.png"); - } else { - filename = QString(FILEPATH.c_str()) + QString("/images/tilesets/") + QString(Mediator::get_instance()->getPallete().c_str()); - } - - QPixmap *image = new QPixmap(filename); - if (image->isNull()) { - printf("DEBUG.Tile - Could not load image file '%s'\n", qPrintable(filename)); - } - - int tileset_w = image->width(); - int tileset_h = image->height(); - - std::cout << "tileset_w[" << tileset_w << "], tileset_h[" << tileset_h << "]" << std::endl; - // remove all invalid level-3 tiles from maps - for (int i=0; i= tileset_w || maps_data_v2[i][j].tiles[x][y].tile3.y*TILESIZE >= tileset_h) { - std::cout << "ERASE LV3 TILE stage[" << i << "], map[" << j << "], tile[" << x << "][" << y << "], values[" << (int)maps_data_v2[i][j].tiles[x][y].tile3.x << "][" << (int)maps_data_v2[i][j].tiles[x][y].tile3.y << "]" << std::endl; - maps_data_v2[i][j].tiles[x][y].tile3.x = -1; - maps_data_v2[i][j].tiles[x][y].tile3.y = -1; - } - } - } - - } - - } + clean_map_data(); + Mediator::get_instance()->fio.write_all_maps_v2(maps_data_v2); + fio_cmm.save_data_to_disk("/map_npc_data.dat", maps_data_npc_list); + fio_cmm.save_data_to_disk("/map_object_data.dat", maps_data_object_list); } + void Mediator::temp_fix_player_colors_order() { for (int i=0; i object_list; std::vector ai_list; - //std::vector ai_list; - //std::vector projectile_list; std::vector projectile_list_v2; std::vector projectile_list_v3; std::vector scene_list; std::vector anim_block_list; std::vector player_list_v3_1; - //std::vector player_list_v3_1_1; - CURRENT_FILE_FORMAT::file_io fio; @@ -167,9 +155,6 @@ class Mediator { // stage dialogs, key is stage_n, vector represent the list for each text line std::vector > > stage_dialog_list; - CURRENT_FILE_FORMAT::st_file_castle_ponts points_castle1; - CURRENT_FILE_FORMAT::st_file_castle_ponts points_castle2; - private: Mediator(); diff --git a/editor/model/buttondelegate.cpp b/editor/model/buttondelegate.cpp index 3a8c453c..603281a9 100644 --- a/editor/model/buttondelegate.cpp +++ b/editor/model/buttondelegate.cpp @@ -72,18 +72,14 @@ void ButtonDelegate::onButtonClicked(int row) return; } QFileInfo file_info(filename); - std::cout << ">>> filename: " << filename.toStdString() << std::endl; std::string dest_path = FILEPATH + dir_list.at(row) + std::string("/") + file_info.fileName().toStdString(); - std::cout << "ButtonDelegate::editorEvent::dest_path: " << dest_path << std::endl; if (QFile::copy(filename, QString(dest_path.c_str())) == false) { - std::cout << "ButtonDelegate::editorEvent::ERROR: Can't copy file." << std::endl; + // TODO: show error } emit data_changed(row); } else if (operation_mode == 1) { - //QString path = QDir::toNativeSeparators(QApplication::applicationDirPath()); QString filepath = QString("file:///") + QString(FILEPATH.c_str()) + QString("/") + QString(dir_list.at(row).c_str()); - std::cout << ">>>>> filepath: " << filepath.toStdString() << std::endl; QDesktopServices::openUrl(QUrl(filepath)); } } diff --git a/editor/model/stringeditmodel.cpp b/editor/model/stringeditmodel.cpp index e72d9faa..4b2f6734 100644 --- a/editor/model/stringeditmodel.cpp +++ b/editor/model/stringeditmodel.cpp @@ -48,7 +48,6 @@ QVariant StringEditModel::data(const QModelIndex &index, int role) const return res; } else if (col == 1) { QString res = QString(string_list.at(index.row()).c_str()); - std::cout << "StringEditModel::col0[" << res.toStdString() << "]" << std::endl; return res; } } diff --git a/editor/player_preview_area.cpp b/editor/player_preview_area.cpp index c1dc4f51..54fd2b41 100644 --- a/editor/player_preview_area.cpp +++ b/editor/player_preview_area.cpp @@ -26,116 +26,17 @@ void player_preview_area::update_sprites() QBitmap mask = sprites.createMaskFromColor(QColor(75, 125, 125), Qt::MaskInColor); sprites.setMask(mask); _original_sprites = sprites.toImage(); - - //std::cout << ">>>>>>>>>>>>>>>>> count[" << _original_sprites.colorCount() << "]" << std::endl; _original_sprites = _original_sprites.scaled(_original_sprites.width()*PREVIEW_SCALE, _original_sprites.height()*PREVIEW_SCALE+1); - replace_colors(); - -} - -void player_preview_area::replace_colors() -{ - - //std::cout << "### PLAYERPREVIEW::PAINT::START ###" << std::endl; - _colored_sprites = _original_sprites.copy(); - - /* - QRgb color1 = qRgb(Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.r, Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.g, Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.b); - QRgb color2 = qRgb(Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.r, Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.g, Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.b); - QRgb color3 = qRgb(Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.r, Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.g, Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.b); - - QRgb key1 = qRgb(COLORKEY1_R, COLORKEY1_G, COLORKEY1_B); - QRgb key2 = qRgb(COLORKEY2_R, COLORKEY2_G, COLORKEY2_B); - QRgb key3 = qRgb(COLORKEY3_R, COLORKEY3_G, COLORKEY3_B); - - - std::cout << "key1: " << key1 << ", key2: " << key2 << ", key3: " << key3 << ", w: " << _colored_sprites.width() << ", h: " << _colored_sprites.height() << std::endl; - - for (int x=0; x<_colored_sprites.width(); x++) { - for (int y=0; y<_colored_sprites.height(); y++) { - QRgb pixel_color = _colored_sprites.pixel(x, y); - std::cout << "pixel_color[" << x << "][" << y << "]: [" << pixel_color << "]" << std::endl; - - if (pixel_color == key1 && Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color1.r != -1) { - _colored_sprites.setPixel(x, y, color1); - } - if (pixel_color == key2 && Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color2.r != -1) { - _colored_sprites.setPixel(x, y, color2); - } - if (pixel_color == key3 && Mediator::get_instance()->player_list[Mediator::get_instance()->current_player].weapon_colors[Mediator::get_instance()->current_weapon].color3.r != -1) { - _colored_sprites.setPixel(x, y, color3); - } - } - } - - std::cout << "### PLAYERPREVIEW::PAINT::END ###" << std::endl; - */ - - int player_n = Mediator::get_instance()->current_player; - int weapon_n = Mediator::get_instance()->current_weapon; - - if (weapon_n < 0) { - return; - } - - st_color color1 = Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color1; - st_color color2 = Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color2; - st_color color3 = Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color3; - - QColor replace_color1((int)color1.r, (int)color1.g, (int)color1.b); - QColor replace_color2((int)color2.r, (int)color2.g, (int)color2.b); - QColor replace_color3((int)color3.r, (int)color3.g, (int)color3.b); - - QColor key_color1(55, 255, 0); - QColor key_color2(255, 0, 255); - QColor key_color3(0, 255, 255); - - - - // convert qpixmap to qimage, so we can manipulate colors - - //temp_image.setColor(64, replace_color1.rgb()); - //temp_image.setColor(65, replace_color2.rgb()); - //temp_image.setColor(66, replace_color3.rgb()); - - - int color_count = _original_sprites.colorCount(); - //std::cout << "replace1[" << replace_color1.rgb() << "], replace2[" << replace_color2.rgb() << "], replace3[" << replace_color3.rgb() << "]" << std::endl; - for (int i=0; icurrent_player; + int weapon_n = Mediator::get_instance()->current_weapon; + + if (weapon_n < 0) { + std::cout << ">>>>>>>>>>> ERROR #1 - weapon_n[" << weapon_n << "]" << std::endl; + return; + } - this->resize(_colored_sprites.size()); - myParent->adjustSize(); + this->resize(_colored_sprites.size().width(), _colored_sprites.size().height()*2); + myParent->adjustSize(); target = QRectF(QPoint(0, 0), QSize(_colored_sprites.width(), _colored_sprites.height())); source = QRectF(QPoint(0, 0), QSize(_colored_sprites.width(), _colored_sprites.height())); painter.drawImage(target, _colored_sprites, source); - //printf("npcPreviewArea::paintEvent - gSize: %d\n", Mediator::get_instance()->npcGraphicSize_w); + // colorized copy under the first one + // COLOR_KEY_GREEN, COLOR_KEY_PURPLE, COLOR_KEY_CYAN + + QColor weaponColor1 = QColor(Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color1.r, Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color1.g, Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color1.b); + QColor weaponColor2 = QColor(Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color2.r, Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color2.g, Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color2.b); + QColor weaponColor3 = QColor(Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color3.r, Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color3.g, Mediator::get_instance()->player_list_v3_1[player_n].weapon_colors[weapon_n].color3.b); + + QImage cloned = _colored_sprites.copy(); + source = QRectF(QPoint(0, 0), QSize(cloned.width(), cloned.height())); + target = QRectF(QPoint(0, cloned.height()), QSize(cloned.width(), cloned.height())); + for(int y = 0; y < cloned.height(); y++) { + for(int x= 0; x < cloned.width(); x++) { + QColor pixelColor = cloned.pixelColor(x, y); + if (pixelColor == colorKey1) { + cloned.setPixelColor(x, y, weaponColor1); + } else if (pixelColor == colorKey2) { + cloned.setPixelColor(x, y, weaponColor2); + } else if (pixelColor == colorKey3) { + cloned.setPixelColor(x, y, weaponColor3); + } + } + } + painter.drawImage(target, cloned, source); - painter.setPen(QColor(0, 120, 0)); - int inc = Mediator::get_instance()->player_graphics_data.frame_size.width*2; - //std::cout << "PLAYYERPREVIEWAREA::PAINTEVENT - inc: " << inc << ", limit: " << this->width() << std::endl; - if (inc > 0) { + painter.setPen(QColor(0, 120, 0)); + int inc = Mediator::get_instance()->player_graphics_data.frame_size.width*2; + if (inc > 0) { for (i=0; i<=this->width(); i=i+inc) { - //std::cout << "PLAYYERPREVIEWAREA::PAINTEVENT - LOOP #1 - inc: " << inc << ", limit: " << this->width() << std::endl; // linhas verticais line = QLineF(i, 0, i, this->height()); painter.drawLine(line); } - } - inc = Mediator::get_instance()->player_graphics_data.frame_size.height*2; - if (inc > 0) { - for (i=0; iheight(); i=i+inc) { + } + inc = Mediator::get_instance()->player_graphics_data.frame_size.height*2; + if (inc > 0) { + for (i=0; iheight()*2; i=i+inc) { // linhas horizontais - //std::cout << "PLAYYERPREVIEWAREA::PAINTEVENT - LOOP #2" << std::endl; line = QLineF(0, i, this->width(), i); painter.drawLine(line); } - } + } + + // draw hitarea + int inc_x = Mediator::get_instance()->player_graphics_data.frame_size.width*3*2; + int x = inc_x + Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.x*PREVIEW_SCALE; + int y = Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.y*PREVIEW_SCALE; + int w = Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.w*PREVIEW_SCALE; + int h = Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.h*PREVIEW_SCALE; + + painter.setBrush(QColor(100, 100, 255, 180)); + painter.drawRect(x, y, w, h); + + + + //Mediator::get_instance()->player_list_v3_1[Mediator::get_instance()->current_player].sprite_hit_area.y; } diff --git a/editor/player_preview_area.h b/editor/player_preview_area.h index 78ec9804..3bbe71c2 100644 --- a/editor/player_preview_area.h +++ b/editor/player_preview_area.h @@ -28,14 +28,15 @@ public slots: protected: void paintEvent(QPaintEvent *event); -private: - void replace_colors(); - private: int selected_player; QWidget *myParent; QImage _colored_sprites; QImage _original_sprites; + QColor colorKey1 = QColor(55, 255, 0); + QColor colorKey2 = QColor(255, 0, 255); + QColor colorKey3 = QColor(0, 255, 255); + }; #endif // PLAYER_PREVIEW_AREA_H diff --git a/editor/projectilepreviewarea.cpp b/editor/projectilepreviewarea.cpp index 8333ada0..f67d20ff 100644 --- a/editor/projectilepreviewarea.cpp +++ b/editor/projectilepreviewarea.cpp @@ -24,12 +24,12 @@ void projectilePreviewArea::paintEvent(QPaintEvent *) { QPixmap image(projectile_filename.c_str()); if (image.isNull() == true || image.width() <= 0) { - std::cout << "projectilePreviewArea::paintEvent - Could not load image file '" << Mediator::get_instance()->addProjectileFilename << "'" << std::endl; + // TODO: show error return; } image_w = image.width(); image_h = image.height(); - image = image.scaled(image.width()*2, image.height()*2); + image = image.scaled(image.width()*zoom, image.height()*zoom); this->resize(QSize(image.size().width()+1, image.size().height()+1)); myParent->adjustSize(); @@ -40,7 +40,7 @@ void projectilePreviewArea::paintEvent(QPaintEvent *) { //printf("projectilePreviewArea::paintEvent - gSize: %d\n", Mediator::get_instance()->projectileGraphicSize_w); painter.setPen(QColor(0, 120, 0)); - int step = Mediator::get_instance()->projectile_list_v3.at(Mediator::get_instance()->current_projectile).size.width*2; + int step = Mediator::get_instance()->projectile_list_v3.at(Mediator::get_instance()->current_projectile).size.width*zoom; int max = this->width()+1; if (step < 1) { step = 1; @@ -51,7 +51,7 @@ void projectilePreviewArea::paintEvent(QPaintEvent *) { painter.drawLine(line); } max = this->height()+1; - step = Mediator::get_instance()->projectile_list_v3.at(Mediator::get_instance()->current_projectile).size.height*2; + step = Mediator::get_instance()->projectile_list_v3.at(Mediator::get_instance()->current_projectile).size.height*zoom; if (step < 1) { step = 1; } @@ -62,4 +62,23 @@ void projectilePreviewArea::paintEvent(QPaintEvent *) { } } +void projectilePreviewArea::wheelEvent(QWheelEvent *event) +{ + int numDegrees = event->delta() / 8; + int numSteps = numDegrees / 15; + + if (numSteps > 0) { + if (zoom < 8) { + zoom++; + repaint(); + } + } else if (numSteps < 0) { + if (zoom > 2) { + zoom--; + repaint(); + } + } + +} + diff --git a/editor/projectilepreviewarea.h b/editor/projectilepreviewarea.h index 75cbcebc..ac9b01ab 100644 --- a/editor/projectilepreviewarea.h +++ b/editor/projectilepreviewarea.h @@ -22,9 +22,11 @@ class projectilePreviewArea : public QWidget int editor_selectedTileY; int image_w; int image_h; + int zoom = 4; protected: void paintEvent(QPaintEvent *event); + void wheelEvent(QWheelEvent *event); QWidget *myParent; diff --git a/editor/scenes/animation_previewarea.cpp b/editor/scenes/animation_previewarea.cpp index 271da737..cff01d4c 100644 --- a/editor/scenes/animation_previewarea.cpp +++ b/editor/scenes/animation_previewarea.cpp @@ -56,10 +56,8 @@ void AnimationPreviewArea::set_y(int set) void AnimationPreviewArea::update_animation() { - //std::cout << ">> AnimationPreviewArea::update_animation - frame_n: " << frame_n << std::endl; unsigned int now_time = QDateTime::currentMSecsSinceEpoch(); if (now_time > animation_timer) { - //std::cout << ">> AnimationPreviewArea::update_animation - RUN!" << std::endl; animation_timer = now_time + delay; frame_n++; repaint(); @@ -74,18 +72,18 @@ void AnimationPreviewArea::paintEvent(QPaintEvent *event) painter.fillRect(0, 0, RES_W, RES_H, QColor(0, 0, 0, 255)); if (graphic_filename.length() == 0) { - std::cout << ">> ImageAreaPreview::paintEvent: LEAVE #1" << std::endl; + // TODO: show error return; } if (graphic_filename.toStdString().find(".png") == std::string::npos) { - std::cout << ">> ImageAreaPreview::paintEvent: LEAVE #3" << std::endl; + // TODO: show error return; } QPixmap image(graphic_filename.toStdString().c_str()); if (image.isNull() == true || image.width() <= 0) { - std::cout << ">> ImageAreaPreview::paintEvent: LEAVE #4" << std::endl; + // TODO: show error return; } @@ -101,7 +99,6 @@ void AnimationPreviewArea::paintEvent(QPaintEvent *event) } // reset animation when needed - //std::cout << "frame_n: " << frame_n << ", frame_n*w: " << (frame_n*w) << ", image.width(): " << image.width() << std::endl; if (frame_n*w >= image.width()) { frame_n = 0; } diff --git a/editor/scenes/imageareapreview.cpp b/editor/scenes/imageareapreview.cpp index da2fbfe4..58f683d7 100644 --- a/editor/scenes/imageareapreview.cpp +++ b/editor/scenes/imageareapreview.cpp @@ -29,7 +29,6 @@ ImageAreaPreview::ImageAreaPreview(QWidget *parent) : QWidget(parent) void ImageAreaPreview::setImageFilename(QString name) { graphic_filename = name; - std::cout << ">> ImageAreaPreview::setImageFilename: " << graphic_filename.toStdString() << std::endl; repaint(); } @@ -96,18 +95,18 @@ void ImageAreaPreview::paintEvent(QPaintEvent *event) painter.fillRect(0, 0, RES_W, RES_H, QColor(0, 0, 0, 255)); if (graphic_filename.length() == 0) { - std::cout << ">> ImageAreaPreview::paintEvent: LEAVE #1" << std::endl; + // TODO: show error return; } if (graphic_filename.toStdString().find(".png") == std::string::npos) { - std::cout << ">> ImageAreaPreview::paintEvent: LEAVE #3" << std::endl; + // TODO: show error return; } QPixmap image(graphic_filename.toStdString().c_str()); if (image.isNull() == true || image.width() <= 0) { - std::cout << ">> ImageAreaPreview::paintEvent: LEAVE #4 [" << graphic_filename.toStdString() << "]" << std::endl; + // TODO: show error return; } @@ -148,8 +147,6 @@ void ImageAreaPreview::paintEvent(QPaintEvent *event) // destiny rectangle painter.setPen(QColor(0, 255, 0)); - std::cout << "dest_x: " << dest_x << ", dest_y: " << dest_y << std::endl; - // linha topo line = QLineF((x+dest_x), (y+dest_y), (x+dest_x+w), (y+dest_y)); painter.drawLine(line); diff --git a/editor/scenes/model/objectlistmodel.cpp b/editor/scenes/model/objectlistmodel.cpp index 4ab1cc25..89560067 100644 --- a/editor/scenes/model/objectlistmodel.cpp +++ b/editor/scenes/model/objectlistmodel.cpp @@ -18,7 +18,6 @@ int ObjectListModel::rowCount(const QModelIndex &parent) const } n++; } - //std::cout << "ScenesMediator::get_instance()->selected_scene: " << ScenesMediator::get_instance()->selected_scene << ", scene_count: " << n << std::endl; return n; } @@ -29,16 +28,11 @@ int ObjectListModel::columnCount(const QModelIndex &parent) const QVariant ObjectListModel::data(const QModelIndex &index, int role) const { - - //std::cout << "+++++++++++++++ ObjectListModel::data - RUN #1 +++++++++++++++++++++++" << std::endl; - int row = index.row(); int col = index.column(); - //std::cout << "ObjectListModel::data - row: " << row << ", col: " << col << std::endl; - if (ScenesMediator::get_instance()->selected_scene > ScenesMediator::get_instance()->scenes_list.size()-1) { - std::cout << "ObjectListModel::data - LEAVE #1" << std::endl; + // TODO: show error return QVariant(); } if (role == Qt::DisplayRole || role == Qt::EditRole) { @@ -69,6 +63,8 @@ QVariant ObjectListModel::data(const QModelIndex &index, int role) const name = "[SUB-SCENE] " + std::string(ScenesMediator::get_instance()->scenes_list.at(seek_n).name); } else if (type == CURRENT_FILE_FORMAT::SCENETYPE_CLEAR_SCREEN) { name = "[CLEAR-SCREEN] " + std::string("CLEAR-SCREEN"); + } else if (type == CURRENT_FILE_FORMAT::SCENETYPE_PARALLAX) { + name = "[PARALLAX] " + std::string(ScenesMediator::get_instance()->parallax_list.at(seek_n).name); } return QString(name.c_str()); } else if (col == 1) { @@ -176,7 +172,7 @@ bool ObjectListModel::setData(const QModelIndex &index, const QVariant &value, i } else if (type == CURRENT_FILE_FORMAT::SCENETYPE_SUBSCENE) { sprintf(ScenesMediator::get_instance()->scenes_list.at(seek_n).name, "%s", name.c_str()); } else { - std::cout << "Invalid object to set name" << std::endl; + // TODO: show error return false; } } else if (col == 1) { @@ -205,10 +201,6 @@ void ObjectListModel::update() { QModelIndex topLeft = index(0, 0); QModelIndex bottomRight = index(rowCount()-1, columnCount()-1); - - - //std::cout << "%%%%%%%%%%%%%% ObjectListModel::update - RUN, row: " << (rowCount()-1) << " %%%%%%%%%%%%%%" << std::endl; - emit dataChanged ( topLeft, bottomRight ); emit layoutChanged(); } diff --git a/editor/scenes/sceneeditorwindow.cpp b/editor/scenes/sceneeditorwindow.cpp index 316556a9..b7a2ff8e 100644 --- a/editor/scenes/sceneeditorwindow.cpp +++ b/editor/scenes/sceneeditorwindow.cpp @@ -34,6 +34,9 @@ SceneEditorWindow::SceneEditorWindow(QWidget *parent) : animation_tab = new TabAnimation(); ui->tabAnimation_scrollArea->setWidget(animation_tab); + + parallax_tab = new tab_parallax(); + ui->parallax_scrollArea->setWidget(parallax_tab); } SceneEditorWindow::~SceneEditorWindow() @@ -57,6 +60,7 @@ void SceneEditorWindow::closeEvent(QCloseEvent *event) void SceneEditorWindow::reload() { image_tab->reload(); + parallax_tab->reload(); viewpoint_tab->reload(); text_tab->reload(); scenes_tab->reload(); @@ -66,6 +70,11 @@ void SceneEditorWindow::reload() animation_tab->reload(); } +void SceneEditorWindow::update_app_theme() +{ + scenes_tab->update_app_theme(); +} + void SceneEditorWindow::on_actionSave_triggered() { save(); @@ -81,16 +90,19 @@ void SceneEditorWindow::save() music_tab->save_data(); cleararea_tab->save_data(); animation_tab->save_data(); + parallax_tab->save_data(); } void SceneEditorWindow::on_actionPlay_Movie_triggered() { - QString file = QString(GAMEPATH.c_str()) + QString("scenesviewer"); + QString file = QString("scenesviewer"); #ifdef WIN32 file += QString(".exe"); #endif - file += QString(" --gamename \"") + QString(GAMENAME.c_str()) + QString("\"") + QString(" --scenenumber ") + QString::number(ScenesMediator::get_instance()->selected_scene); - std::cout << ">>> EXEC: file: '" << file.toStdString() << "'." << std::endl; + file += QString(" --gamename \"") + QString(GAMENAME.c_str()) + QString("\"") + + QString(" --language \"") + QString::number(scenes_tab->get_language()) + QString("\"") + + QString(" --scenenumber ") + QString::number(ScenesMediator::get_instance()->selected_scene); + std::cout << "SceneEditorWindow::on_actionPlay_Movie_triggered[" << file.toStdString() << "]" << std::endl; process.start(file); } diff --git a/editor/scenes/sceneeditorwindow.h b/editor/scenes/sceneeditorwindow.h index f7f0e8a4..332bd1da 100644 --- a/editor/scenes/sceneeditorwindow.h +++ b/editor/scenes/sceneeditorwindow.h @@ -15,6 +15,7 @@ #include "scenes/tab_music.h" #include "scenes/tab_cleararea.h" #include "scenes/tab_animation.h" +#include "scenes/tab_parallax.h" namespace Ui { class SceneEditorWindow; @@ -29,6 +30,7 @@ class SceneEditorWindow : public QMainWindow ~SceneEditorWindow(); void closeEvent (QCloseEvent *event); void reload(); + void update_app_theme(); signals: void scenes_editor_window_closed(); @@ -52,6 +54,7 @@ private slots: TabMusic* music_tab; TabClearArea* cleararea_tab; TabAnimation* animation_tab; + tab_parallax* parallax_tab; QProcess process; }; diff --git a/editor/scenes/sceneeditorwindow.ui b/editor/scenes/sceneeditorwindow.ui index 1699b0f4..183700ab 100644 --- a/editor/scenes/sceneeditorwindow.ui +++ b/editor/scenes/sceneeditorwindow.ui @@ -36,7 +36,7 @@ 0 0 1009 - 423 + 411 @@ -60,7 +60,7 @@ 0 0 1009 - 423 + 411 @@ -84,7 +84,31 @@ 0 0 1009 - 423 + 411 + + + + + + + + + + Parallax + + + + + + true + + + + + 0 + 0 + 1009 + 411 @@ -108,7 +132,7 @@ 0 0 1009 - 423 + 411 @@ -132,7 +156,7 @@ 0 0 1009 - 423 + 411 @@ -156,7 +180,7 @@ 0 0 1009 - 423 + 411 @@ -180,7 +204,7 @@ 0 0 1009 - 423 + 411 @@ -204,7 +228,7 @@ 0 0 1009 - 423 + 411 @@ -222,7 +246,7 @@ 0 0 1051 - 19 + 24 @@ -277,6 +301,8 @@ + + diff --git a/editor/scenes/scenesmediator.h b/editor/scenes/scenesmediator.h index 7636c114..d5e192f7 100644 --- a/editor/scenes/scenesmediator.h +++ b/editor/scenes/scenesmediator.h @@ -17,6 +17,7 @@ class ScenesMediator public: std::vector image_list; + std::vector parallax_list; std::vector viewpoint_list; std::vector text_list; std::vector cleararea_list; @@ -28,7 +29,7 @@ class ScenesMediator std::map game_scenes_map; - int selected_scene; + unsigned long selected_scene = 0; private: ScenesMediator(); diff --git a/editor/scenes/tab_animation.cpp b/editor/scenes/tab_animation.cpp index 5a87a1b5..4fab16cc 100644 --- a/editor/scenes/tab_animation.cpp +++ b/editor/scenes/tab_animation.cpp @@ -66,7 +66,6 @@ void TabAnimation::fill_data() void TabAnimation::set_fields(int index) { ui->name_lineEdit->setText(ScenesMediator::get_instance()->animation_list.at(index).name); - std::cout << "READ::frame_w[" << ui->select_comboBox->currentIndex() << "][" << ScenesMediator::get_instance()->animation_list.at(ui->select_comboBox->currentIndex()).frame_w << "]" << std::endl; ui->width_spinBox->setValue(ScenesMediator::get_instance()->animation_list.at(index).frame_w); ui->height_spinBox->setValue(ScenesMediator::get_instance()->animation_list.at(index).frame_h); ui->duration_spinBox->setValue(ScenesMediator::get_instance()->animation_list.at(index).frame_delay); @@ -138,7 +137,6 @@ void TabAnimation::on_width_spinBox_valueChanged(int arg1) { if (data_loading == true) { return; } ScenesMediator::get_instance()->animation_list.at(ui->select_comboBox->currentIndex()).frame_w = arg1; - std::cout << "WRITE::frame_w[" << ui->select_comboBox->currentIndex() << "][" << ScenesMediator::get_instance()->animation_list.at(ui->select_comboBox->currentIndex()).frame_w << "]" << std::endl; ui->widget->set_w(ScenesMediator::get_instance()->animation_list.at(ui->select_comboBox->currentIndex()).frame_w); } diff --git a/editor/scenes/tab_image.cpp b/editor/scenes/tab_image.cpp index f2db59aa..4310c728 100644 --- a/editor/scenes/tab_image.cpp +++ b/editor/scenes/tab_image.cpp @@ -80,6 +80,7 @@ void tab_image::set_fields(int index) ui->destx_spinBox->setValue(ScenesMediator::get_instance()->image_list.at(index).dest_x); ui->desty_spinBox->setValue(ScenesMediator::get_instance()->image_list.at(index).dest_y); ui->delay_spinBox->setValue(ScenesMediator::get_instance()->image_list.at(index).move_delay); + ui->img_area_x->setValue(ScenesMediator::get_instance()->image_list.at(index).copy_area.x); ui->img_area_y->setValue(ScenesMediator::get_instance()->image_list.at(index).copy_area.y); ui->img_area_w->setValue(ScenesMediator::get_instance()->image_list.at(index).copy_area.w); @@ -92,6 +93,12 @@ void tab_image::set_fields(int index) ui->blocking_checkBox->setChecked(ScenesMediator::get_instance()->image_list.at(index).blocking); + ui->image_preview_widget->set_x(ScenesMediator::get_instance()->image_list.at(index).copy_area.x); + ui->image_preview_widget->set_y(ScenesMediator::get_instance()->image_list.at(index).copy_area.y); + ui->image_preview_widget->set_w(ScenesMediator::get_instance()->image_list.at(index).copy_area.w); + ui->image_preview_widget->set_h(ScenesMediator::get_instance()->image_list.at(index).copy_area.h); + ui->image_preview_widget->repaint(); + //ui->select_comboBox->setCurrentIndex(ScenesMediator::get_instance()->image_list.at(index).loop_mode); update_preview_image(ui->select_comboBox->currentIndex()); @@ -121,7 +128,9 @@ void tab_image::on_add_Button_clicked() void tab_image::on_select_comboBox_currentIndexChanged(int index) { if (data_loading) { return; } + data_loading = true; set_fields(index); + data_loading = false; } void tab_image::on_destx_spinBox_valueChanged(int arg1) @@ -155,6 +164,7 @@ void tab_image::on_filename_comboBox_currentIndexChanged(const QString &arg1) if (data_loading) { return; } sprintf(ScenesMediator::get_instance()->image_list.at(ui->select_comboBox->currentIndex()).filename, "%s", arg1.toStdString().c_str()); std::string filename = ScenesMediator::get_instance()->image_list.at(ui->select_comboBox->currentIndex()).filename; + if (filename.length() > 0) { st_size img_size = common::calc_image_size(filename); ui->img_area_w->setValue(img_size.width); @@ -217,14 +227,14 @@ void tab_image::on_img_area_h_valueChanged(int arg1) void tab_image::change_w(int value) { data_loading = true; - ui->img_area_w->setValue(value); + //ui->img_area_w->setValue(value); data_loading = false; } void tab_image::change_h(int value) { data_loading = true; - ui->img_area_h->setValue(value); + //ui->img_area_h->setValue(value); data_loading = false; } diff --git a/editor/scenes/tab_image.ui b/editor/scenes/tab_image.ui index b9e07c12..d002a89d 100644 --- a/editor/scenes/tab_image.ui +++ b/editor/scenes/tab_image.ui @@ -7,7 +7,7 @@ 0 0 565 - 391 + 419 @@ -352,8 +352,8 @@ 0 0 - 186 - 355 + 148 + 383 diff --git a/editor/scenes/tab_parallax.cpp b/editor/scenes/tab_parallax.cpp new file mode 100644 index 00000000..a85cf712 --- /dev/null +++ b/editor/scenes/tab_parallax.cpp @@ -0,0 +1,198 @@ +#include "tab_parallax.h" +#include "ui_tab_parallax.h" +#include "common.h" + +extern std::string GAMEPATH; +extern std::string GAMENAME; + +tab_parallax::tab_parallax(QWidget *parent) : + QWidget(parent), + ui(new Ui::tab_parallax) +{ + ui->setupUi(this); + + fill_data(); +} + +tab_parallax::~tab_parallax() +{ + delete ui; +} + +void tab_parallax::save_data() +{ + fio.save_scenes_parallax(ScenesMediator::get_instance()->parallax_list); +} + +void tab_parallax::reload() +{ + fill_data(); +} + +void tab_parallax::fill_data() +{ + data_loading = true; + ScenesMediator::get_instance()->parallax_list = fio.load_scenes_parallax(); + + common::fill_files_combo("/images/scenes", ui->parallax_layer_image_comboBox); + common::fill_direction_combo(ui->parallax_direction_comboBox); + common::fill_numbered_combo(ui->parallax_layer_comboBox, 0, PARALLAX_LAYERS_MAX); + int list_size = ScenesMediator::get_instance()->parallax_list.size(); + + for (int i=0; iparallax_select_comboBox->addItem(QString(ScenesMediator::get_instance()->parallax_list.at(i).name)); + } + data_loading = false; + ui->parallax_select_comboBox->setCurrentIndex(0); + + set_fields(0); + + data_loading = false; + +} + +void tab_parallax::set_fields(int index) +{ + if (index < 0 || index >= ScenesMediator::get_instance()->parallax_list.size()) { + return; + } + ui->parallax_name_lineEdit->setText(QString(ScenesMediator::get_instance()->parallax_list.at(index).name)); + ui->parallax_delay_spinBox->setValue(ScenesMediator::get_instance()->parallax_list.at(index).frame_delay); + ui->parallax_direction_comboBox->setCurrentIndex(ScenesMediator::get_instance()->parallax_list.at(index).move_direction); + ui->duration_spinBox->setValue(ScenesMediator::get_instance()->parallax_list.at(index).total_duration); + ui->parallax_layer_comboBox->setCurrentIndex(0); + set_layer_fields(0); + set_all_layer_images(index); + +} + +void tab_parallax::set_layer_fields(int layer_n) +{ + int index = ui->parallax_select_comboBox->currentIndex(); + int count = ui->parallax_layer_comboBox->count(); + if (layer_n < 0 || layer_n >= count) { + return; + } + + ui->parallax_layer_image_comboBox->setCurrentIndex(ui->parallax_layer_image_comboBox->findText(ScenesMediator::get_instance()->parallax_list.at(index).filename[layer_n])); + ui->parallax_layer_ypos_spinBox->setValue(ScenesMediator::get_instance()->parallax_list.at(index).adjust_y[layer_n]); + ui->parallax_layer_maxh_spinBox->setValue(ScenesMediator::get_instance()->parallax_list.at(index).adjust_h[layer_n]); + ui->parallax_layer_speed_spinBox->setValue(ScenesMediator::get_instance()->parallax_list.at(index).layer_speed[layer_n]); + + //update_preview_image(ui->select_comboBox->currentIndex()); + +} + +void tab_parallax::set_all_layer_images(int parallax_n) +{ + for (int i=0; iparallax_list.at(parallax_n).filename[i]); + if (layer_filename.length() == 0) { + ui->image_preview_widget->set_filename(i, ""); + } else { + std::string filename = FILEPATH + "/images/scenes/" + layer_filename; + ui->image_preview_widget->set_filename(i, filename); + } + ui->image_preview_widget->set_y(i, ScenesMediator::get_instance()->parallax_list.at(parallax_n).adjust_y[i]); + ui->image_preview_widget->set_h(i, ScenesMediator::get_instance()->parallax_list.at(parallax_n).adjust_h[i]); + } +} + +void tab_parallax::update_preview_image(int parallax_n, int layer_n) +{ + std::string filename = FILEPATH + "/images/scenes/" + ScenesMediator::get_instance()->parallax_list.at(parallax_n).filename[layer_n]; + ui->image_preview_widget->set_filename(layer_n, filename); + //ui->image_preview_widget->set_y(ScenesMediator::get_instance()->parallax_list.at(parallax_n).adjust_y[layer_n]); + //ui->image_preview_widget->set_h(ScenesMediator::get_instance()->parallax_list.at(parallax_n).adjust_h[layer_n]); + ui->image_preview_widget->repaint(); +} + +void tab_parallax::on_parallax_select_comboBox_currentIndexChanged(int index) +{ + if (data_loading) { return; } + data_loading = true; + set_fields(index); + data_loading = false; +} + +void tab_parallax::on_pushButton_clicked() +{ + CURRENT_FILE_FORMAT::file_scene_show_parallax new_parallax; + sprintf(new_parallax.name, "%s%d", "Parallax #", ScenesMediator::get_instance()->parallax_list.size()+1); + ScenesMediator::get_instance()->parallax_list.push_back(new_parallax); + ui->parallax_select_comboBox->addItem(QString(new_parallax.name)); + ui->parallax_select_comboBox->setCurrentIndex(ScenesMediator::get_instance()->parallax_list.size()-1); + +} + +void tab_parallax::on_parallax_layer_comboBox_currentIndexChanged(int index) +{ + if (data_loading) { return; } + data_loading = true; + set_layer_fields(index); + data_loading = false; +} + +void tab_parallax::on_parallax_layer_image_comboBox_currentIndexChanged(const QString &arg1) +{ + if (data_loading) { return; } + int current_parallax = ui->parallax_select_comboBox->currentIndex(); + int current_layer = ui->parallax_layer_comboBox->currentIndex(); + sprintf(ScenesMediator::get_instance()->parallax_list.at(current_parallax).filename[current_layer], "%s", arg1.toStdString().c_str()); + update_preview_image(current_parallax, current_layer); + ui->image_preview_widget->repaint(); +} + +void tab_parallax::on_parallax_layer_ypos_spinBox_valueChanged(int arg1) +{ + if (data_loading) { return; } + int current_parallax = ui->parallax_select_comboBox->currentIndex(); + int current_layer = ui->parallax_layer_comboBox->currentIndex(); + ScenesMediator::get_instance()->parallax_list.at(current_parallax).adjust_y[current_layer] = arg1; + ui->image_preview_widget->set_y(current_layer, arg1); + ui->image_preview_widget->repaint(); + +} + +void tab_parallax::on_parallax_layer_maxh_spinBox_valueChanged(int arg1) +{ + if (data_loading) { return; } + int current_parallax = ui->parallax_select_comboBox->currentIndex(); + int current_layer = ui->parallax_layer_comboBox->currentIndex(); + ScenesMediator::get_instance()->parallax_list.at(current_parallax).adjust_h[current_layer] = arg1; + ui->image_preview_widget->set_h(current_layer, arg1); + ui->image_preview_widget->repaint(); + +} + +void tab_parallax::on_parallax_layer_speed_spinBox_valueChanged(int arg1) +{ + if (data_loading) { return; } + int current_parallax = ui->parallax_select_comboBox->currentIndex(); + int current_layer = ui->parallax_layer_comboBox->currentIndex(); + ScenesMediator::get_instance()->parallax_list.at(current_parallax).layer_speed[current_layer] = arg1; +} + +void tab_parallax::on_run_pushButton_clicked() +{ + QString file = QString("scenesviewer"); +#ifdef WIN32 + file += QString(".exe"); +#endif + file += QString(" --gamename \"") + QString(GAMENAME.c_str()) + QString("\"") + QString(" --parallax ") + QString::number(ui->parallax_select_comboBox->currentIndex()); + process.start(file); +} + +void tab_parallax::on_parallax_delay_spinBox_valueChanged(int arg1) +{ + if (data_loading) { return; } + int current_parallax = ui->parallax_select_comboBox->currentIndex(); + ScenesMediator::get_instance()->parallax_list.at(current_parallax).frame_delay = arg1; +} + +void tab_parallax::on_duration_spinBox_valueChanged(int arg1) +{ + if (data_loading) { return; } + int current_parallax = ui->parallax_select_comboBox->currentIndex(); + ScenesMediator::get_instance()->parallax_list.at(current_parallax).total_duration = arg1; +} diff --git a/editor/scenes/tab_parallax.h b/editor/scenes/tab_parallax.h new file mode 100644 index 00000000..c7ce4c48 --- /dev/null +++ b/editor/scenes/tab_parallax.h @@ -0,0 +1,62 @@ +#ifndef TAB_PARALLAX_H +#define TAB_PARALLAX_H + +#include +#include + +#include "../../defines.h" +#include "../file/fio_scenes.h" +#include "scenes/scenesmediator.h" + + +namespace Ui { +class tab_parallax; +} + +class tab_parallax : public QWidget +{ + Q_OBJECT + +public: + explicit tab_parallax(QWidget *parent = nullptr); + ~tab_parallax(); + void save_data(); + void reload(); + + +private: + void fill_data(); + void set_fields(int index); + void set_layer_fields(int layer_n); + void set_all_layer_images(int parallax_n); + void update_preview_image(int parallax_n, int layer_n); + +private slots: + void on_parallax_select_comboBox_currentIndexChanged(int index); + + void on_pushButton_clicked(); + + void on_parallax_layer_comboBox_currentIndexChanged(int index); + + void on_parallax_layer_image_comboBox_currentIndexChanged(const QString &arg1); + + void on_parallax_layer_ypos_spinBox_valueChanged(int arg1); + + void on_parallax_layer_maxh_spinBox_valueChanged(int arg1); + + void on_parallax_layer_speed_spinBox_valueChanged(int arg1); + + void on_run_pushButton_clicked(); + + void on_parallax_delay_spinBox_valueChanged(int arg1); + + void on_duration_spinBox_valueChanged(int arg1); + +private: + Ui::tab_parallax *ui; + CURRENT_FILE_FORMAT::fio_scenes fio; + bool data_loading; + QProcess process; +}; + +#endif // TAB_PARALLAX_H diff --git a/editor/scenes/tab_parallax.ui b/editor/scenes/tab_parallax.ui new file mode 100644 index 00000000..90a01b7c --- /dev/null +++ b/editor/scenes/tab_parallax.ui @@ -0,0 +1,205 @@ + + + tab_parallax + + + + 0 + 0 + 1017 + 513 + + + + Form + + + + + + + + 10 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Name: + + + + + + + Add New + + + + + + + Adjust Y Position: + + + + + + + Run + + + + + + + + + + Image: + + + + + + + + + + 999 + + + + + + + Parallax: + + + + + + + Direction: + + + + + + + Max Height: + + + + + + + + + + Speed: + + + + + + + Layer: + + + + + + + + + + 999 + + + + + + + + + + 9999 + + + + + + + Frame Delay: + + + + + + + Total Duration (ms): + + + + + + + 99999 + + + + + + + + + + + true + + + + + 0 + 0 + 494 + 493 + + + + + + + + + + + + + + + parallaxpreviewarea + QWidget +
widgets/parallaxpreviewarea.h
+ 1 +
+
+ + +
diff --git a/editor/scenes/tab_scenelist.cpp b/editor/scenes/tab_scenelist.cpp index fb5a6a4f..341cf8f2 100644 --- a/editor/scenes/tab_scenelist.cpp +++ b/editor/scenes/tab_scenelist.cpp @@ -1,6 +1,9 @@ #include "tab_scenelist.h" #include "ui_tab_scenelist.h" #include "scenes/comboboxdelegate.h" +#include "common.h" + +#include #include @@ -19,8 +22,7 @@ TabScenelist::TabScenelist(QWidget *parent) : QDialog(parent), ui(new Ui::Scenes ui->scenes_tableView->setEditTriggers(QAbstractItemView::DoubleClicked); ui->scenes_tableView->setSelectionMode(QAbstractItemView::SingleSelection); - ui->scenes_tableView->setAlternatingRowColors(true); - ui->scenes_tableView->setStyleSheet("alternate-background-color: #dafeff;background-color: #dddddd;"); + update_app_theme(); ComboBoxDelegate* delegate = new ComboBoxDelegate(this); ui->scenes_tableView->setItemDelegateForColumn(2, delegate); @@ -34,6 +36,8 @@ TabScenelist::TabScenelist(QWidget *parent) : QDialog(parent), ui(new Ui::Scenes ScenesMediator::get_instance()->scenes_list = fio.load_scenes(); + common::fill_languages_combo(ui->language_comboBox); + fill_data(); data_loading = false; } @@ -62,8 +66,6 @@ void TabScenelist::fill_data() { ui->sceneSelector->clear(); - std::cout << "fill_data::ScenesMediator::get_instance()->scenes_list.size(): " << ScenesMediator::get_instance()->scenes_list.size() << std::endl; - for (int i=0; iscenes_list.size(); i++) { ui->sceneSelector->addItem(QString(ScenesMediator::get_instance()->scenes_list.at(i).name)); } @@ -86,6 +88,22 @@ void TabScenelist::reload() data_loading = false; } +void TabScenelist::update_app_theme() +{ + ui->scenes_tableView->setAlternatingRowColors(true); + std::cout << "LOAD #2 - Mediator::get_instance()->app_theme[" << Mediator::get_instance()->app_theme << "]" << std::endl; + if (Mediator::get_instance()->app_theme == 0) { + ui->scenes_tableView->setStyleSheet("alternate-background-color: #dafeff; background-color: #dddddd; font-color:black; color:black;"); + } else { + ui->scenes_tableView->setStyleSheet("alternate-background-color: #0c004e; background-color: #313131; font-color:white; color:white;"); + } +} + +int TabScenelist::get_language() +{ + return ui->language_comboBox->currentIndex(); +} + void TabScenelist::change_fields_enabled(bool value) { ui->sceneSelector->setEnabled(value); @@ -135,6 +153,10 @@ void TabScenelist::on_sceneTypeSelector_currentIndexChanged(int index) list.append(QString(ScenesMediator::get_instance()->scenes_list.at(i).name)); //} } + } else if (index == CURRENT_FILE_FORMAT::SCENETYPE_PARALLAX) { + for (unsigned int i=0; iparallax_list.size(); i++) { + list.append(QString(ScenesMediator::get_instance()->parallax_list.at(i).name)); + } } model_objects.setStringList(list); } @@ -171,7 +193,6 @@ void TabScenelist::on_addButton_clicked() if (ScenesMediator::get_instance()->scenes_list.at(n).objects[i].seek_n == -1) { ScenesMediator::get_instance()->scenes_list.at(n).objects[i].seek_n = seek_n; ScenesMediator::get_instance()->scenes_list.at(n).objects[i].type = ui->sceneTypeSelector->currentIndex(); - std::cout << "ADDED at row[" << i << "], ScenesMediator::get_instance()->scenes_list.size: " << (ScenesMediator::get_instance()->scenes_list.size()) << std::endl; ui->scenes_tableView->setModel(&model_scenes); @@ -234,12 +255,11 @@ void TabScenelist::on_removeButton_clicked() void TabScenelist::on_pushButton_clicked() { - QString file = QString(GAMEPATH.c_str()) + QString("scenesviewer"); + QString file = QString("scenesviewer"); #ifdef WIN32 file += QString(".exe"); #endif - file += QString(" --gamename \"") + QString(GAMENAME.c_str()) + QString("\"") + QString(" --scenenumber ") + QString::number(ui->sceneSelector->currentIndex()); - std::cout << ">>> EXEC: file: '" << file.toStdString() << "'." << std::endl; + file += QString(" --gamename \"") + QString(GAMENAME.c_str()) + QString("\"") + QString(" --scenenumber ") + QString::number(ui->sceneSelector->currentIndex()) + QString(" --language ") + QString::number(current_language); process.start(file); } @@ -294,3 +314,8 @@ void TabScenelist::on_down_pushButton_clicked() model_scenes.update(); } + +void TabScenelist::on_language_comboBox_currentIndexChanged(int index) +{ + current_language = index; +} diff --git a/editor/scenes/tab_scenelist.h b/editor/scenes/tab_scenelist.h index ce6ac9b7..dbc2a65e 100644 --- a/editor/scenes/tab_scenelist.h +++ b/editor/scenes/tab_scenelist.h @@ -23,6 +23,8 @@ class TabScenelist : public QDialog ~TabScenelist(); void save_data(); void reload(); + void update_app_theme(); + int get_language(); private: void fill_data(); @@ -47,6 +49,8 @@ private slots: void on_down_pushButton_clicked(); + void on_language_comboBox_currentIndexChanged(int index); + private: Ui::ScenesList *ui; QStringListModel model_objects; @@ -54,6 +58,7 @@ private slots: bool data_loading; CURRENT_FILE_FORMAT::fio_scenes fio; QProcess process; + int current_language = LANGUAGE_ENGLISH; }; #endif // SCENESLIST_H diff --git a/editor/scenes/tab_scenelist.ui b/editor/scenes/tab_scenelist.ui index 0574c750..7d98b40f 100644 --- a/editor/scenes/tab_scenelist.ui +++ b/editor/scenes/tab_scenelist.ui @@ -14,21 +14,50 @@ Dialog
- + - Scene Name: + Cutscene Name: - - - - + + + + + + + + 300 + 16777215 + + + + QAbstractItemView::SelectRows + + + + + + + + 120 + 16777215 + + + + Add New Scene + + + + + + + 0 @@ -105,20 +134,7 @@
- - - - - 120 - 16777215 - - - - Add New Scene - - - - + QAbstractItemView::AllEditTriggers @@ -131,43 +147,7 @@ - - - - - 16777215 - 16777215 - - - - Play Scene - - - - - - - - - - Scene Objects: - - - - - - - 300 - 16777215 - - - - QAbstractItemView::SelectRows - - - - @@ -227,27 +207,59 @@ Sub-Scene - - - - - - - 120 - 16777215 - - - - Available Objects: - + + + Parallax + + + + + + Parts: + + + + + + + Language: + + + + + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + + + + + + diff --git a/editor/scenes/tab_text.cpp b/editor/scenes/tab_text.cpp index b415b23d..8489b92e 100644 --- a/editor/scenes/tab_text.cpp +++ b/editor/scenes/tab_text.cpp @@ -2,6 +2,7 @@ #include "ui_tab_text.h" #include "../file/format.h" #include "common.h" +#include "shareddata.h" TabText::TabText(QWidget *parent) : QDialog(parent), @@ -9,7 +10,7 @@ TabText::TabText(QWidget *parent) : { dataLoading = true; currentIndex = -1; - currentLanguage = LANGUAGE_ENGLISH; + SharedData::get_instance()->current_language = LANGUAGE_ENGLISH; ui->setupUi(this); @@ -27,7 +28,6 @@ TabText::~TabText() void TabText::save_data() { fio_scenes.save_scenes_show_text(ScenesMediator::get_instance()->text_list); - save_data(currentIndex); } @@ -37,11 +37,12 @@ void TabText::save_data(int n) for (int i=0; icurrent_language); } void TabText::reload() { + currentIndex = 0; fill_data(); } @@ -69,7 +70,7 @@ void TabText::fill_data() void TabText::set_fields(int index) { - std::vector text_list = fio_str.get_string_list_from_scene_text_file(index, currentLanguage); + std::vector text_list = fio_str.get_string_list_from_scene_text_file(index); for (int i=0; icurrent_language = index; set_fields(currentIndex); } diff --git a/editor/scenes/tab_text.h b/editor/scenes/tab_text.h index a65ec686..8ea29b64 100644 --- a/editor/scenes/tab_text.h +++ b/editor/scenes/tab_text.h @@ -65,7 +65,6 @@ public slots: bool data_loading; std::string scene_text_list[SCENE_TEXT_LINES_N]; int currentIndex; - int currentLanguage; bool dataLoading; }; diff --git a/editor/scenes/textpreviewarea.cpp b/editor/scenes/textpreviewarea.cpp index b15bba20..3595fb3e 100644 --- a/editor/scenes/textpreviewarea.cpp +++ b/editor/scenes/textpreviewarea.cpp @@ -39,25 +39,15 @@ void TextPreviewArea::paintEvent(QPaintEvent *event) painter.fillRect(QRectF(0.0, 0.0, RES_W, RES_H), QColor(0, 0, 0, 255)); if (ScenesMediator::get_instance()->text_list.size() < 1 || ScenesMediator::get_instance()->text_list.size() < selected_n) { - //std::cout << ">> DON't DRAW TEXT PREVIEW << " << std::endl; return; } - //std::cout << ">>OK - DRAW TEXT PREVIEW << " << std::endl; painter.setPen(QColor(255, 255, 255, 255)); CURRENT_FILE_FORMAT::file_scene_show_text text_info = ScenesMediator::get_instance()->text_list.at(selected_n); int pos_x = 0; int pos_y = 0; - /* - text_position_type_dialogbottom, - text_position_type_dialogtop, - text_position_type_centered, - text_position_type_center_x, - text_position_type_center_y, - text_position_type_user_defined - */ int lines_n = 0; int max_line_w = 0; @@ -73,6 +63,7 @@ void TextPreviewArea::paintEvent(QPaintEvent *event) } int center_x = (RES_W * 0.5) - (max_line_w/2 * FONT_SIZE); + //int center_x = (RES_W-(max_line_w/2 * FONT_SIZE))/2; int center_y = (RES_H * 0.5) - (lines_n * (SCENES_LINE_H_DIFF * 0.5)); @@ -105,7 +96,6 @@ void TextPreviewArea::paintEvent(QPaintEvent *event) for (int i=0; i>OK - DRAW LINE[" << i << "]" << std::endl; } } diff --git a/editor/sprite_preview_area.cpp b/editor/sprite_preview_area.cpp index bd55af15..a615d543 100644 --- a/editor/sprite_preview_area.cpp +++ b/editor/sprite_preview_area.cpp @@ -17,7 +17,6 @@ sprite_preview_area::sprite_preview_area(QWidget *parent) : void sprite_preview_area::updateBG() { - //std::cout << "sprite_preview_area::updateBG - current_npc: " << Mediator::get_instance()->current_npc_n << ", current_sprite_type: " << Mediator::get_instance()->current_sprite_type << std::endl; _sprite_n++; if (_sprite_n > ANIM_FRAMES_COUNT-1) { _sprite_n = 0; @@ -65,28 +64,37 @@ void sprite_preview_area::paintEvent(QPaintEvent *) int npc_w = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.width*2; int npc_h = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).frame_size.height*2; - if (fg_image.isNull() == false && fg_image.width() > 0) { - fg_image = fg_image.scaled(fg_image.width()*2, fg_image.height()*2); - QRectF target(QPoint(center_x+adjust_x, center_y+adjust_y), QSize(npc_w, npc_h)); - QRectF source(QPoint(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[Mediator::get_instance()->current_sprite_type][_sprite_n].sprite_graphic_pos_x * npc_w, 0), QSize(npc_w, npc_h)); - painter.drawPixmap(target, fg_image, source); - } + int bg_w = 0; if (bg_image.isNull() == false && bg_image.width() > 0) { + bg_w = bg_image.width(); bg_image = bg_image.scaled(bg_image.width()*2, bg_image.height()*2); QRectF target(QPoint(center_x, center_y), QSize(bg_image.width()*2, bg_image.height()*2)); QRectF source(QPoint(0, 0), QSize(bg_image.width()*2, bg_image.height()*2)); painter.drawPixmap(target, bg_image, source); } - // draw hit-area + + if (fg_image.isNull() == false && fg_image.width() > 0) { + fg_image = fg_image.scaled(fg_image.width()*2, fg_image.height()*2); + QRectF target(QPoint(center_x+adjust_x, center_y+adjust_y), QSize(npc_w, npc_h)); + QRectF source(QPoint(Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).sprites[Mediator::get_instance()->current_sprite_type][_sprite_n].sprite_graphic_pos_x * npc_w, 0), QSize(npc_w, npc_h)); + painter.drawPixmap(target, fg_image, source); + } + + // draw vulnerable-area painter.setBrush(QColor(255, 0, 0, 50)); if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w != 0 && Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.h != 0) { - int hitx = center_x+Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.x*2; + int bg_w_diff = 0; + if (bg_w > 0) { + bg_w_diff = bg_w*2 - Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w*2; + } + int hitx = center_x - Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.x*2 + bg_w_diff; + + std::cout << "center_x[" << center_x << "], total_w[" << total_w << "], x[" << Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.x << "], total_w[" << total_w << "], w[" << Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w << "], bg_w_diff[" << bg_w_diff << "], hitx[" << hitx << "]" << std::endl; + int hity = center_y+adjust_y+Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.y*2; int hitw = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.w*2; int hith = Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).vulnerable_area.h*2; - - //std::cout << "hitx: " << hitx << ", hity: " << hity << ", hitw: " << hitw << ", hith: " << hith << std::endl; painter.drawRect(hitx, hity, hitw, hith); } @@ -94,7 +102,6 @@ void sprite_preview_area::paintEvent(QPaintEvent *) if (Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_arm_pos.x > 0 || Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_arm_pos.y > 0) { painter.setPen(QPen(QColor(0, 150, 0), 2, Qt::DashLine)); int attack_x = center_x + npc_w - (adjust_x + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_arm_pos.x*2); - //std::cout << ">>>>>>>>> attack_x: " << attack_x << ", npc_w: " << npc_w << std::endl; int attack_y = center_y + adjust_y + Mediator::get_instance()->enemy_list.at(Mediator::get_instance()->current_npc_n).attack_arm_pos.y*2; // vertical line painter.drawLine(attack_x, (center_y + adjust_y), attack_x, (center_y + adjust_y + npc_h)); @@ -106,10 +113,8 @@ void sprite_preview_area::paintEvent(QPaintEvent *) painter.setPen(QPen(QColor(0, 0, 255), 1, Qt::DashLine)); int ini_x = center_x + temp_npc.sprites[Mediator::get_instance()->current_sprite_type][Mediator::get_instance()->current_sprite_selection].collision_rect.x*2; int end_x = ini_x + temp_npc.sprites[Mediator::get_instance()->current_sprite_type][Mediator::get_instance()->current_sprite_selection].collision_rect.w*2; - int ini_y = center_y + temp_npc.sprites[Mediator::get_instance()->current_sprite_type][Mediator::get_instance()->current_sprite_selection].collision_rect.y*2; int end_y = ini_y + temp_npc.sprites[Mediator::get_instance()->current_sprite_type][Mediator::get_instance()->current_sprite_selection].collision_rect.h*2; - // horizontal lines painter.drawLine(ini_x, ini_y, end_x, ini_y); painter.drawLine(ini_x, end_y, end_x, end_y); diff --git a/editor/stage_swap_dialog.cpp b/editor/stage_swap_dialog.cpp index fca18b50..a1da3f5d 100644 --- a/editor/stage_swap_dialog.cpp +++ b/editor/stage_swap_dialog.cpp @@ -48,9 +48,7 @@ void stage_swap_dialog::on_buttonBox_accepted() } // ### SWAP DIALOGS ### // - - // load data, if needed - for (int i=0; istage_dialog_list[i].find(dest_n) == Mediator::get_instance()->stage_dialog_list[i].end()) { Mediator::get_instance()->stage_dialog_list[i].insert(std::pair >(dest_n, fio_str.get_stage_dialogs(dest_n, LANGUAGE_ENGLISH, false))); @@ -85,10 +83,37 @@ void stage_swap_dialog::on_buttonBox_accepted() sprintf(Mediator::get_instance()->game_data.stages_face_name[dest_n], "%s", Mediator::get_instance()->game_data.stages_face_name[origin_n]); sprintf(Mediator::get_instance()->game_data.stages_face_name[origin_n], "%s", temp_face_name); - char temp_face_filename[FS_CHAR8_NAME_SIZE]; + char temp_face_filename[FS_FACE_FILENAME_MAX]; sprintf(temp_face_filename, "%s", Mediator::get_instance()->game_data.stage_face_filename[dest_n]); sprintf(Mediator::get_instance()->game_data.stage_face_filename[dest_n], "%s", Mediator::get_instance()->game_data.stage_face_filename[origin_n]); sprintf(Mediator::get_instance()->game_data.stage_face_filename[origin_n], "%s", temp_face_filename); + // SWAP OBJECTS + for (unsigned int i=0; imaps_data_object_list.size(); i++) { + if (Mediator::get_instance()->maps_data_object_list.at(i).stage_id == origin_n) { + Mediator::get_instance()->maps_data_object_list.at(i).stage_id = dest_n; + } else if (Mediator::get_instance()->maps_data_object_list.at(i).stage_id == dest_n) { + Mediator::get_instance()->maps_data_object_list.at(i).stage_id = origin_n; + } + } + + // SWAP ENEMIES + for (unsigned int i=0; imaps_data_npc_list.size(); i++) { + if (Mediator::get_instance()->maps_data_npc_list.at(i).stage_id == origin_n) { + Mediator::get_instance()->maps_data_npc_list.at(i).stage_id = dest_n; + } else if (Mediator::get_instance()->maps_data_npc_list.at(i).stage_id == dest_n) { + Mediator::get_instance()->maps_data_npc_list.at(i).stage_id = origin_n; + } + } + + QString tileset(Mediator::get_instance()->stage_data.stages[Mediator::get_instance()->currentStage].tileset_filename); + if (tileset.length() > 0) { + Mediator::get_instance()->setPallete(tileset.toStdString()); + } else { + Mediator::get_instance()->setPallete("default.png"); + } + + + emit finished_swap_stages(); } diff --git a/editor/stage_swap_dialog.h b/editor/stage_swap_dialog.h index 4a0a08a2..53860ce8 100644 --- a/editor/stage_swap_dialog.h +++ b/editor/stage_swap_dialog.h @@ -18,6 +18,10 @@ class stage_swap_dialog : public QDialog private slots: void on_buttonBox_accepted(); +signals: + void finished_swap_stages(); + + private: Ui::stage_swap_dialog *ui; }; diff --git a/editor/widgets/animtilepalette.cpp b/editor/widgets/animtilepalette.cpp index 2fbc1127..50b0cec1 100644 --- a/editor/widgets/animtilepalette.cpp +++ b/editor/widgets/animtilepalette.cpp @@ -14,14 +14,12 @@ animTilePalette::animTilePalette(QWidget *parent) : QWidget(parent) QString animTilePalette::getPallete() { - } void animTilePalette::reload() { image_list.clear(); int max = Mediator::get_instance()->anim_block_list.size(); - //std::cout << "ANIMPALETTE::reload::max: " << max << std::endl; for (int i=0; ianim_block_list.at(i).filename); if (filename.find(".png") == std::string::npos) { @@ -35,6 +33,8 @@ void animTilePalette::reload() myParent->adjustSize(); } + +// TODO: grid, do not select outside image bondaries void animTilePalette::paintEvent(QPaintEvent *event) { QPainter painter(this); @@ -52,11 +52,14 @@ void animTilePalette::paintEvent(QPaintEvent *event) } } } - this->resize(this->width(), (row+1)*TILESIZE*2); + // draw the selection marker painter.setPen(QColor(255, 0, 0)); QRectF select(QPoint((selectedTileX*TILESIZE*2), (selectedTileY*TILESIZE*2)), QSize(TILESIZE*2, TILESIZE*2-1)); painter.drawRect(select); + + this->resize(this->width(), (row+1)*TILESIZE*4); + myParent->adjustSize(); } void animTilePalette::mousePressEvent(QMouseEvent *event) @@ -67,9 +70,15 @@ void animTilePalette::mousePressEvent(QMouseEvent *event) Mediator::get_instance()->setPalleteX(selectedTileX); Mediator::get_instance()->setPalleteY(selectedTileY); - std::cout << ">>>>>>>>>>>>> animTilePalette::mousePressEvent - x: " << selectedTileX << ", y: " << selectedTileY << std::endl; + int selected_anim_tile = selectedTileX + (selectedTileY * EDITOR_ANIM_PALETE_MAX_COL) + selectedTileY;; + int anim_tile_id = (selected_anim_tile*-1) - 2; + std::cout << "anim_tile_id[" << anim_tile_id << "], anim_block_list.size[" << Mediator::get_instance()->anim_block_list.size() << "]" << std::endl; + int abs_anim_tile_id = abs(anim_tile_id) - 2; + if (abs_anim_tile_id >= Mediator::get_instance()->anim_block_list.size()) { + return; + } - Mediator::get_instance()->selectedAnimTileset = selectedTileX + (selectedTileY * EDITOR_ANIM_PALETE_MAX_COL) + selectedTileY; + Mediator::get_instance()->selectedAnimTileset = selected_anim_tile; repaint(); } diff --git a/editor/widgets/parallaxpreviewarea.cpp b/editor/widgets/parallaxpreviewarea.cpp new file mode 100644 index 00000000..0277790b --- /dev/null +++ b/editor/widgets/parallaxpreviewarea.cpp @@ -0,0 +1,72 @@ +#include "parallaxpreviewarea.h" + +#include +#include +#include +#include + +parallaxpreviewarea::parallaxpreviewarea(QWidget *parent) : QWidget(parent) +{ + for (int i=0; i RES_W) { + w = RES_W; + } + if (h > RES_H) { + h = RES_H; + } + + target = QRectF(QPoint(0, ypos[i]*2), QSize(w*2, h*2)); + source = QRectF(QPoint(0, 0), QSize(w, h)); + painter.drawPixmap(target, image, source); + } +} diff --git a/editor/widgets/parallaxpreviewarea.h b/editor/widgets/parallaxpreviewarea.h new file mode 100644 index 00000000..beb85f1b --- /dev/null +++ b/editor/widgets/parallaxpreviewarea.h @@ -0,0 +1,30 @@ +#ifndef PARALLAXPREVIEWAREA_H +#define PARALLAXPREVIEWAREA_H + +#include "defines.h" +#include "file/v4/file_scene_v4.h" +#include + +#include + +class parallaxpreviewarea : public QWidget +{ + Q_OBJECT +public: + explicit parallaxpreviewarea(QWidget *parent = nullptr); + void set_filename(int layer_n, std::string new_filename); + void set_y(int layer_n, int y); + void set_h(int layer_n, int h); + +signals: + +protected: + void paintEvent(QPaintEvent *event); + +private: + std::string filename[PARALLAX_LAYERS_MAX]; + int ypos[PARALLAX_LAYERS_MAX]; + int hpos[PARALLAX_LAYERS_MAX]; +}; + +#endif // PARALLAXPREVIEWAREA_H diff --git a/file/file_io.cpp b/file/file_io.cpp index 11c0d645..9b6fef13 100644 --- a/file/file_io.cpp +++ b/file/file_io.cpp @@ -1,16 +1,16 @@ #include #include #include + +#include "logger.h" #include "file_io.h" #include "convert.h" -#include "../file/convert.h" -#include "aux_tools/stringutils.h" -#include "aux_tools/exception_manager.h" +#include "../aux_tools/stringutils.h" +#include "../aux_tools/exception_manager.h" #ifdef DREAMCAST #include #elif PLAYSTATION2 -#include typedef struct { char displayname[64]; int dircheck; @@ -20,8 +20,6 @@ typedef struct { #ifdef ANDROID #include -#include "ports/android/android_game_services.h" -extern android_game_services game_services; #endif extern std::string FILEPATH; @@ -31,9 +29,8 @@ extern std::string GAMENAME; extern bool GAME_FLAGS[FLAG_COUNT]; // versioned file for config, so we can force resetting it -#define CONFIG_FILENAME "/config_v204.sav" - -extern CURRENT_FILE_FORMAT::st_game_config game_config; +#define CONFIG_FILENAME "/config_v205.sav" +#define CONFIG_FILENAME_OLD "/config_v204.sav" // ************************************************************************************************************* // @@ -213,8 +210,6 @@ namespace format_v4 { if (!fp.is_open()) { std::cout << "ERROR::write_all_stages - could not write to file '" << filename << "'. Will create new one." << std::endl; fp.open(filename.c_str(), std::ios_base::in | std::ios_base::out | std::ios_base::trunc); - } else { - std::cout << "fio::write_game - recorded to file '" << filename << std::endl; } fp.write(reinterpret_cast(&stages_data_in), sizeof(struct format_v4::file_stages)); fp.close(); @@ -232,13 +227,13 @@ namespace format_v4 { filename = std::string(FILEPATH) + "/game" + sufix + ".dat"; fp = fopen(filename.c_str(), "rb"); if (!fp) { - std::cout << ">>file_io::read_game - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::read_game - file '" << filename << "' not found." << std::endl; fflush(stdout); return; } int read_result = fread(&data_out, sizeof(struct format_v4::file_game), 1, fp); if (read_result == -1) { - std::cout << ">>file_io::read_game - Error reading struct data from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game - Error reading struct data from game file '" << filename << "'." << std::endl; fflush(stdout); exception_manager::throw_general_exception(std::string("file_io::read_game - Error reading data from file."), filename); } @@ -254,86 +249,86 @@ namespace format_v4 { filename = std::string(FILEPATH) + "/game_properties" + sufix + ".dat"; fp = fopen(filename.c_str(), "rb"); if (!fp) { - std::cout << ">>file_io::read_game - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::read_game - file '" << filename << "' not found." << std::endl; return; } if (unsigned int res = fread(&data_out.version, sizeof(float), 1, fp) != 1) { - std::cout << ">>file_io::read_game - res: " << res << ", sizeof(float): " << sizeof(float) << ", Error reading struct data [version2] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game - res: " << res << ", sizeof(float): " << sizeof(float) << ", Error reading struct data [version2] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (unsigned int res = fread(&data_out.name, sizeof(char), FS_CHAR_NAME_SIZE, fp) != FS_CHAR_NAME_SIZE) { - std::cout << ">>file_io::read_game - res: " << res << ", sizeof(char): " << sizeof(char) << ", Error reading struct data from [name] game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game - res: " << res << ", sizeof(char): " << sizeof(char) << ", Error reading struct data from [name] game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.semi_charged_projectile_id, sizeof(Sint8), 1, fp) != 1) { - std::cout << ">>file_io::read_game - Error reading struct data [semi_charged_projectile_id] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game - Error reading struct data [semi_charged_projectile_id] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.player_items, sizeof(Sint8), FS_PLATER_ITEMS_N, fp) != FS_PLATER_ITEMS_N) { - std::cout << ">>file_io::read_game - Error reading struct data [player_items] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game - Error reading struct data [player_items] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.stage_face_filename, sizeof(char), (MAX_STAGES*FS_FACE_FILENAME_MAX), fp) != MAX_STAGES*FS_FACE_FILENAME_MAX) { - std::cout << ">>file_io::read_game res: - Error reading struct data [stage_face_filename] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [stage_face_filename] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.stages_face_name, sizeof(char), (MAX_STAGES*FS_CHAR8_NAME_SIZE), fp) != MAX_STAGES*FS_CHAR8_NAME_SIZE) { - std::cout << ">>file_io::read_game res: - Error reading struct data [stages_face_name] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [stages_face_name] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.boss_music_filename, sizeof(char), (FS_CHAR_NAME_SIZE), fp) != FS_CHAR_NAME_SIZE) { - std::cout << ">>file_io::read_game res: - Error reading struct data [boss_music_filename] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [boss_music_filename] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.final_boss_music_filename, sizeof(char), (FS_CHAR_NAME_SIZE), fp) != FS_CHAR_NAME_SIZE) { - std::cout << ">>file_io::read_game res: - Error reading struct data [final_boss_music_filename] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [final_boss_music_filename] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.got_weapon_music_filename, sizeof(char), (FS_CHAR_NAME_SIZE), fp) != FS_CHAR_NAME_SIZE) { - std::cout << ">>file_io::read_game res: - Error reading struct data [got_weapon_music_filename] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [got_weapon_music_filename] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.game_over_music_filename, sizeof(char), (FS_CHAR_NAME_SIZE), fp) != FS_CHAR_NAME_SIZE) { - std::cout << ">>file_io::read_game res: - Error reading struct data [game_over_music_filename] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [game_over_music_filename] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.stage_select_music_filename, sizeof(char), (FS_CHAR_NAME_SIZE), fp) != FS_CHAR_NAME_SIZE) { - std::cout << ">>file_io::read_game res: - Error reading struct data [stage_select_music_filename] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [stage_select_music_filename] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.game_start_screen_music_filename, sizeof(char), (FS_CHAR_NAME_SIZE), fp) != FS_CHAR_NAME_SIZE) { - std::cout << ">>file_io::read_game res: - Error reading struct data [stage_select_music_filename] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [stage_select_music_filename] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.use_second_castle, sizeof(bool), 1, fp) != 1) { - std::cout << ">>file_io::read_game res: - Error reading struct data [use_second_castle] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [use_second_castle] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.game_style, sizeof(Uint8), 1, fp) != 1) { - std::cout << ">>file_io::read_game res: - Error reading struct data [game_style] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [game_style] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } if (fread(&data_out.final_boss_id, sizeof(Uint8), 1, fp) != 1) { - std::cout << ">>file_io::read_game res: - Error reading struct data [final_boss_id] from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game res: - Error reading struct data [final_boss_id] from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } @@ -347,11 +342,11 @@ namespace format_v4 { filename = StringUtils::clean_filename(filename); fp = fopen(filename.c_str(), "rb"); if (!fp) { - std::cout << ">>file_io::read_game - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::read_game - file '" << filename << "' not found." << std::endl; return; } if (fread(&data_out.weapons, sizeof(file_weapon), FS_MAX_WEAPONS, fp) != FS_MAX_WEAPONS) { - std::cout << ">>file_io::read_game[weapons] - Error reading data from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game[weapons] - Error reading data from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } @@ -364,11 +359,11 @@ namespace format_v4 { filename = StringUtils::clean_filename(filename); fp = fopen(filename.c_str(), "rb"); if (!fp) { - std::cout << ">>file_io::read_game - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::read_game - file '" << filename << "' not found." << std::endl; return; } if (fread(&data_out.trophies, sizeof(st_file_trophy), TROPHIES_MAX, fp) != TROPHIES_MAX) { - std::cout << ">>file_io::read_game[trophies] - Error reading data from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game[trophies] - Error reading data from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } @@ -381,11 +376,11 @@ namespace format_v4 { filename = StringUtils::clean_filename(filename); fp = fopen(filename.c_str(), "rb"); if (!fp) { - std::cout << ">>file_io::read_game - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::read_game - file '" << filename << "' not found." << std::endl; return; } if (fread(&data_out.armor_pieces, sizeof(st_armor_piece), FS_PLAYER_ARMOR_PIECES_MAX, fp) != FS_PLAYER_ARMOR_PIECES_MAX) { - std::cout << ">>file_io::read_game[armor_pieces] - Error reading data from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game[armor_pieces] - Error reading data from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } @@ -400,11 +395,11 @@ namespace format_v4 { fp = fopen(filename.c_str(), "rb"); if (!fp) { - std::cout << ">>file_io::read_game - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::read_game - file '" << filename << "' not found." << std::endl; return; } if (fread(&data_out.weapon_menu_colors, sizeof(st_color), MAX_WEAPON_N, fp) != MAX_WEAPON_N) { - std::cout << ">>file_io::read_game[armor_pieces] - Error reading data from game file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::read_game[armor_pieces] - Error reading data from game file '" << filename << "'." << std::endl; fclose(fp); exit(-1); } @@ -436,7 +431,7 @@ namespace format_v4 { if (!fp) { printf("ERROR.read_stage: Could not read stage '%s'\n", filename.c_str()); #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "### ROCKBOT2 ###", "### ERROR.read_stage: Could not read stage '%s'] ###", filename.c_str()); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "### ERROR.read_stage: Could not read stage '%s'] ###", filename.c_str()); #endif fflush(stdout); @@ -444,16 +439,16 @@ namespace format_v4 { } #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "### ROCKBOT2 ###", "### file_io::read_stage, stage_n[%d]] ###", stage_n); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "### file_io::read_stage, stage_n[%d]] ###", stage_n); #endif fseek(fp, sizeof(format_v4::file_stage) * stage_n, SEEK_SET); size_t read_result = fread(&stages_data_out, sizeof(struct format_v4::file_stage), 1, fp); if (read_result != 1) { - std::cout << ">>file_io::read_game - Error reading struct data from stage file, read_result[" << read_result << "], expected[" << sizeof(struct format_v4::file_stage) << "]" << std::endl; + std::cout << "ERROR: file_io::read_game - Error reading struct data from stage file, read_result[" << read_result << "], expected[" << sizeof(struct format_v4::file_stage) << "]" << std::endl; #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "### ROCKBOT2 ###", "### ERROR.read_stage:Error reading struct data from stage file ###"); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "### ERROR.read_stage:Error reading struct data from stage file ###"); #endif fflush(stdout); exit(-1); @@ -478,87 +473,13 @@ namespace format_v4 { if (j >= 3) { file_map temp_map; fp.read(reinterpret_cast(&temp_map), sizeof(file_map)); - } else { - fp.read(reinterpret_cast(&data_out[i][j]), sizeof(file_map)); - for (int x=0; x(&data_out[stage_n][map_n]), sizeof(file_map)); - - for (int x=0; x(&data_in[i][j]), sizeof(file_map)); - } - } fp.close(); } - void file_io::read_stage_maps(int stage_id, file_map (&data_out)[FS_STAGE_MAX_MAPS]) - { - std::ifstream fp; - std::string filename = std::string(FILEPATH) + std::string("/maps.dat"); - filename = StringUtils::clean_filename(filename); - fp.open(filename.c_str(), std::ios::in | std::ios::binary | std::ios::app); - if (!fp.is_open()) { - std::cout << "ERROR::read_all_maps - could not load file '" << filename << "'" << std::endl; - return; - } - - int fpos = stage_id * FS_STAGE_MAX_MAPS * sizeof(file_map); - fp.seekg(fpos, std::ios::beg); - - for (int j=0; j(&data_out[j]), sizeof(file_map)); - } - -#ifdef WII - wii_convert_map_data(data_out); -#endif - - - fp.close(); - } - */ void file_io::read_all_maps_v2(file_map_v2 (&data_out)[FS_MAX_STAGES][FS_STAGE_MAX_MAPS]) { @@ -586,8 +507,6 @@ namespace format_v4 { if (!fp.is_open()) { std::cout << "ERROR::write_all_maps - could not write to file '" << filename << "'. Will create new one." << std::endl; fp.open(filename.c_str(), std::ios_base::in | std::ios_base::out | std::ios_base::trunc); - } else { - std::cout << "fio::write_game - recorded to file '" << filename << std::endl; } for (int i=0; i npc_list = fio_cmm.load_from_disk(std::string("/map_npc_data.dat")); + std::vector temp_enemy_list = fio_cmm.load_from_disk("game_enemy_list_3_1_2.dat"); + + for (unsigned int i=0; i= CASTLE1_STAGE1 && temp_game_data.final_boss_id == npc_list.at(i).id_npc) { + std::cout << "FOUND final boss[" << temp_enemy_list.at(npc_list.at(i).id_npc).name << "] in stage[" << (int)npc_list.at(i).stage_id << "] at position[" << npc_list.at(i).start_point.x << "][" << npc_list.at(i).start_point.y << "]" << std::endl; + return npc_list.at(i).stage_id; + } + } + + // search through npcs spawn actions or reactions + std::vector ai_list = fio_cmm.load_from_disk("game_ai_list.dat"); + int spanwer_npc = -1; + for (unsigned int i=0; iwrite(std::string("file_io::file_exists.filename[").append(filename).append(std::string("]"))); bool res = false; FILE *fp; fp = fopen(filename.c_str(), "rb"); @@ -667,122 +624,6 @@ namespace format_v4 { return read_directory_list(filename, true); } -#ifdef PS2 - // @TODO - /* - int file_io::listcdvd(const char *path, entries *FileEntry) { - static struct TocEntry TocEntryList[2048]; - char dir[1025]; - int i, n, t; - - strcpy(dir, &path[5]); - // Directories first... - - CDVD_FlushCache(); - n = CDVD_GetDir(dir, NULL, CDVD_GET_DIRS_ONLY, TocEntryList, 2048, dir); - - strcpy(FileEntry[0].filename, ".."); - strcpy(FileEntry[0].displayname, ".."); - FileEntry[0].dircheck = 1; - t = 1; - - for (i=0; i= 2046) { - break; - } - } - - // Now files only - - CDVD_FlushCache(); - n = CDVD_GetDir(dir, NULL, CDVD_GET_FILES_ONLY, TocEntryList, 2048, dir); - - for (i=0; i= 2046) { - break; - } - } - return t; - } -*/ - - void file_io::ps2_listfiles(std::string filepath, std::vector &res) { - int n = 0; - entries *FileEntry; - iox_dirent_t buf; - - // force because code crashed // - res.push_back("Rockbot2"); - return; - - printf(">>> file_io::ps2_listfiles::START <<<\n"); - - int dd = fioDopen(filepath.c_str()); - if (dd < 0) { - printf(">>> file_io::ps2_listfiles::CHECK #1 <<<\n"); - std::cout << "ps2_listfiles - Could not read directory" << std::endl; - return; - } else { - printf("Directory opened!\n"); - printf(">>> file_io::ps2_listfiles::CHECK #2 <<<\n"); - - /* - //adds pseudo folder .. to every folder opened as mass: reported none but mc0: did - strcpy(FileEntry[0].filename,".."); - strcpy(FileEntry[0].displayname,".."); - FileEntry[0].dircheck = 1; - n=1; - */ - - printf(">>> file_io::ps2_listfiles::CHECK #3 <<<\n"); - - while (fileXioDread(dd, &buf) > 0) { - printf(">>> file_io::ps2_listfiles::CHECK #4 <<<\n"); - if (buf.stat.mode & FIO_S_IFDIR && (!strcmp(buf.name,".") || !strcmp(buf.name,".."))) { - printf(">>> file_io::ps2_listfiles::CHECK #5 <<<\n"); - continue; - } - printf(">>> file_io::ps2_listfiles::CHECK #6 <<<\n"); - if (buf.stat.mode & FIO_S_IFDIR) { - printf(">>> file_io::ps2_listfiles::CHECK #7 <<<\n"); - FileEntry[n].dircheck = 1; - strcpy(FileEntry[n].filename, buf.name); - res.push_back(std::string(FileEntry[n].filename)); - n++; - printf(">>> file_io::ps2_listfiles::CHECK #8 <<<\n"); - } - - printf(">>> file_io::ps2_listfiles::CHECK #9 <<<\n"); - if(n > 2046) { - printf(">>> file_io::ps2_listfiles::CHECK #10 <<<\n"); - break; - } - } - if (dd >= 0) { - printf(">>> file_io::ps2_listfiles::CHECK #11 <<<\n"); - fioDclose(dd); - printf("Directory closed!\n"); - } - printf(">>> file_io::ps2_listfiles::CHECK #12 <<<\n"); - } - } -#endif - // @TODO: make this work in multiplatform // http://stackoverflow.com/questions/612097/how-can-i-get-the-list-of-files-in-a-directory-using-c-or-c std::vector file_io::read_directory_list(std::string filename, bool dir_only) @@ -793,14 +634,11 @@ namespace format_v4 { DIR *dir = opendir(filename.c_str()); - #ifndef PLAYSTATION2 struct dirent *entry = readdir(dir); while (entry != NULL) { - //std::cout << ">>>>>>>>> entry->d_name: " << entry->d_name << std::endl; - std::string dir_name = std::string(entry->d_name); if (dir_name != "." && dir_name != "..") { DIR *child_dir; @@ -817,9 +655,10 @@ namespace format_v4 { } closedir(dir); - #else - res.push_back(std::string("Rockbot2")); + // TODO: support both + res.push_back(std::string("RockDroid1")); + res.push_back(std::string("RockDroid2")); /* if (filename.find("cdfs:") != std::string::npos) { // @TODO @@ -855,21 +694,43 @@ namespace format_v4 { void file_io::load_config(format_v4::st_game_config& config) { - FILE *fp; std::string filename = std::string(SAVEPATH) + CONFIG_FILENAME; filename = StringUtils::clean_filename(filename); - fp = fopen(filename.c_str(), "rb"); - if (!fp) { - std::cout << "WARNING: Could not read config file '" << filename.c_str() << "'." << std::endl; + + std::string filename_old = std::string(SAVEPATH) + CONFIG_FILENAME_OLD; + filename_old = StringUtils::clean_filename(filename_old); + + + if (!file_exists(filename) && file_exists(filename_old)) { + FILE *fp_old = fopen(filename_old.c_str(), "rb"); + if (!fp_old) { + std::cout << "WARNING: Could not read config file '" << filename.c_str() << "'." << std::endl; + } else { + format_v4_old::st_game_config config_old; + int read_result = fread(&config_old, sizeof(struct format_v4_old::st_game_config), 1, fp_old); + if (read_result == -1) { + printf("ERROR: file_io::read_game - Error reading struct data from game file '%s'.\n", filename.c_str()); + fflush(stdout); + exit(-1); + } + fclose(fp_old); + config = config_old; + } } else { - int read_result = fread(&config, sizeof(struct format_v4::st_game_config), 1, fp); - if (read_result == -1) { - printf(">>file_io::read_game - Error reading struct data from game file '%s'.\n", filename.c_str()); - fflush(stdout); - exit(-1); + FILE *fp = fopen(filename.c_str(), "rb"); + if (!fp) { + std::cout << "WARNING: Could not read config file '" << filename.c_str() << "'." << std::endl; + } else { + int read_result = fread(&config, sizeof(struct format_v4::st_game_config), 1, fp); + if (read_result == -1) { + printf("ERROR: file_io::read_game - Error reading struct data from game file '%s'.\n", filename.c_str()); + fflush(stdout); + exit(-1); + } + fclose(fp); } - fclose(fp); } + if (config.get_current_platform() != config.platform) { config.reset(); } @@ -877,7 +738,9 @@ namespace format_v4 { config.video_filter = VIDEO_FILTER_NOSCALE; std::cout << "IO::load_config - SET video_filter to " << VIDEO_FILTER_NOSCALE << ", value: " << config.video_filter << std::endl; #endif - +#ifdef PLAYSTATION2 + config.reset(); +#endif if (config.volume_music == 0) { config.volume_music = 128; } @@ -885,14 +748,6 @@ namespace format_v4 { config.volume_sfx = 128; } - // DEBUG // - //config.game_finished = true; - - /* - if (config.android_touch_controls_size >= ANDROID_TOUCH_CONTROL_SIZE_COUNT) { - config.android_touch_controls_size = ANDROID_TOUCH_CONTROL_SIZE_MEDIUM; - } - */ } void file_io::save_config(st_game_config &config) const @@ -902,7 +757,7 @@ namespace format_v4 { filename = StringUtils::clean_filename(filename); fp = fopen(filename.c_str(), "wb"); if (!fp) { - std::cout << "Error: Could not open config file '" << filename << "'." << std::endl; + std::cout << "ERROR: Could not open config file '" << filename << "'." << std::endl; exit(-1); } fwrite(&config, sizeof(struct format_v4::st_game_config), 1, fp); @@ -934,23 +789,34 @@ namespace format_v4 { } int read_result = fread(&data_out, sizeof(struct format_v4::st_save), 1, fp); if (read_result == -1) { - printf(">>file_io::read_game - Error reading struct data from game file '%s'.\n", filename.c_str()); + printf("ERROR: file_io::read_game - Error reading struct data from game file '%s'.\n", filename.c_str()); fflush(stdout); return false; } // ------- DEBUG ------- // +/* data_out.stages[INTRO_STAGE] = 1; for (int i=STAGE1; i<=STAGE8; i++) { - data_out.stages[i] = 1; + data_out.stages[i] = 0; } for (int i=CASTLE1_STAGE1; i 9) { old_format_save.items.lifes = 3; } @@ -1072,7 +938,7 @@ namespace format_v4 { fseek(fp, sizeof(format_v4::file_stage) * stage_n, SEEK_SET); int read_result = fread(&stages_data_out, sizeof(struct format_v4::file_stage), 1, fp); if (read_result == -1) { - printf(">>file_io::read_game - Error reading struct data from stage file.\n"); + printf("ERROR: reading struct data from stage file.\n"); fflush(stdout); exit(-1); } @@ -1128,8 +994,6 @@ namespace format_v4 { if (!fp.is_open()) { std::cout << "ERROR::write_all_stages - could not write to file '" << filename << "'. Will create new one." << std::endl; fp.open(filename.c_str(), std::ios_base::in | std::ios_base::out | std::ios_base::trunc); - } else { - std::cout << "fio::write_game - recorded to file '" << filename << std::endl; } fp.write(reinterpret_cast(&data_in), sizeof(struct format_v4::file_castle)); fp.close(); diff --git a/file/file_io.h b/file/file_io.h index f0230567..dc67d4b1 100644 --- a/file/file_io.h +++ b/file/file_io.h @@ -1,7 +1,6 @@ #ifndef FILE_IO_H #define FILE_IO_H -#include "format.h" #include #include #include @@ -18,7 +17,9 @@ #include #endif -#include "file/fio_common.h" +#include "format.h" +#include "fio_common.h" +#include "file/v4/file_config_old.h" extern std::string FILEPATH; extern std::string SAVEPATH; @@ -60,6 +61,7 @@ namespace format_v4 { std::vector read_map_enemy_list(int stage_id); std::vector read_map_object_list(int stage_id); + int get_last_stage(); bool file_exists(std::string filename) const; std::vector read_game_list(); diff --git a/file/fio_common.cpp b/file/fio_common.cpp index 8e9f5af9..bcb9c758 100644 --- a/file/fio_common.cpp +++ b/file/fio_common.cpp @@ -1,7 +1,7 @@ -#include "file/fio_common.h" +#include "fio_common.h" -#include "defines.h" -#include "file/v4/file_save_v4.h" +#include "../defines.h" +#include "v4/file_save_v4.h" fio_common::fio_common() { diff --git a/file/fio_common.h b/file/fio_common.h index 17cf0d8f..2216649d 100644 --- a/file/fio_common.h +++ b/file/fio_common.h @@ -7,7 +7,7 @@ #include #include -#include "aux_tools/exception_manager.h" +#include "../aux_tools/exception_manager.h" extern std::string FILEPATH; extern std::string GAMEPATH; @@ -29,10 +29,9 @@ class fio_common template void fio_common::save_struct_data(std::string file, T data) { std::string filename = std::string(FILEPATH) + "/" + file; - std::cout << ">> file_io::save_struct_data - filename: '" << filename << "'." << std::endl; FILE *fp = fopen(filename.c_str(), "wb"); if (!fp) { - std::cout << ">> file_io::save_struct_data - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::save_struct_data - file '" << filename << "' not found." << std::endl; return; } @@ -46,17 +45,15 @@ template T fio_common::load_struct_data(std::string file) { T res; FILE *fp = fopen(filename.c_str(), "rb"); if (!fp) { - std::cout << ">>file_io::load_struct_data - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::load_struct_data - file '" << filename << "' not found." << std::endl; return res; } T out; int res_read = fread(&out, sizeof(T), 1, fp); - - //std::cout << ">>file_io::load_from_disk - res_read '" << res_read << "'." << std::endl; if (res_read == -1) { - std::cout << ">>file_io::load_struct_data - Error reading data from scenes_list file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::load_struct_data - Error reading data from scenes_list file '" << filename << "'." << std::endl; fclose(fp); exception_manager::throw_general_exception(std::string("fio_common::load_struct_data - Error reading data from file."), filename); } @@ -68,15 +65,12 @@ template T fio_common::load_struct_data(std::string file) { template void fio_common::save_data_to_disk(std::string file, std::vector data) { std::string filename = std::string(FILEPATH) + "/" + file; - std::cout << ">> file_io::save_data_to_disk - filename: '" << filename << "'." << std::endl; FILE *fp = fopen(filename.c_str(), "wb"); if (!fp) { - std::cout << ">> file_io::save_data_to_disk - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::save_data_to_disk - file '" << filename << "' not found." << std::endl; return; } - std::cout << ">>file_io::save_data_to_disk - size: " << data.size() << std::endl; - for (unsigned int i=0; i std::vector fio_common::load_from_disk(std::string file) std::vector res; FILE *fp = fopen(filename.c_str(), "rb"); if (!fp) { - std::cout << ">>file_io::load_from_disk - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::load_from_disk - file '" << filename << "' not found." << std::endl; return res; } @@ -102,9 +96,8 @@ template std::vector fio_common::load_from_disk(std::string file) int res_read = fread(&out, sizeof(T), 1, fp); - //std::cout << ">>file_io::load_from_disk - res_read '" << res_read << "'." << std::endl; if (res_read == -1) { - std::cout << ">>file_io::load_from_disk - Error reading data from scenes_list file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::load_from_disk - Error reading data from scenes_list file '" << filename << "'." << std::endl; fclose(fp); exception_manager::throw_general_exception(std::string("fio_common::load_from_disk - Error reading data from file."), filename); } else if (res_read == 1) { @@ -123,7 +116,7 @@ template T fio_common::load_single_object_from_disk(std::string file) T res; FILE *fp = fopen(filename.c_str(), "rb"); if (!fp) { - std::cout << ">>file_io::load_from_disk - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::load_from_disk - file '" << filename << "' not found." << std::endl; return res; } @@ -131,9 +124,8 @@ template T fio_common::load_single_object_from_disk(std::string file) T out; int res_read = fread(&out, sizeof(T), 1, fp); - //std::cout << ">>file_io::load_single_object_from_disk - res_read '" << res_read << "'." << std::endl; if (res_read == -1) { - std::cout << ">>file_io::load_from_disk - Error reading data from scenes_list file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::load_from_disk - Error reading data from scenes_list file '" << filename << "'." << std::endl; } else if (res_read == 1) { res = out; break; @@ -147,10 +139,9 @@ template T fio_common::load_single_object_from_disk(std::string file) template void fio_common::save_single_object_to_disk(std::string file, T data_in) { std::string filename = std::string(FILEPATH) + "/" + file; - std::cout << ">> file_io::save_single_object_to_disk - filename: '" << filename << "'." << std::endl; FILE *fp = fopen(filename.c_str(), "wb"); if (!fp) { - std::cout << ">> file_io::save_single_object_to_disk - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::save_single_object_to_disk - file '" << filename << "' not found." << std::endl; return; } diff --git a/file/fio_scenes.cpp b/file/fio_scenes.cpp index 0130cf3e..7aa69584 100644 --- a/file/fio_scenes.cpp +++ b/file/fio_scenes.cpp @@ -2,7 +2,7 @@ #include #include "fio_scenes.h" -#include "aux_tools/exception_manager.h" +#include "../aux_tools/exception_manager.h" namespace format_v4 { @@ -41,6 +41,11 @@ namespace format_v4 { return load_from_disk("scenes_show_image.dat"); } + std::vector fio_scenes::load_scenes_parallax() + { + return load_from_disk("scenes_parallax.dat"); + } + std::vector fio_scenes::load_scenes_show_viewpoint() { return load_from_disk("scenes_show_viewpoint.dat"); @@ -66,6 +71,11 @@ namespace format_v4 { save_data_to_disk("scenes_show_image.dat", data); } + void fio_scenes::save_scenes_parallax(std::vector data) + { + save_data_to_disk("scenes_parallax.dat", data); + } + void fio_scenes::save_scenes_show_viewpoint(std::vector data) { save_data_to_disk("scenes_show_viewpoint.dat", data); @@ -113,6 +123,7 @@ namespace format_v4 { void fio_scenes::generate_files() { save_scenes_show_image(std::vector()); + save_scenes_parallax(std::vector()); save_scenes_show_viewpoint(std::vector()); save_scenes_show_text(std::vector()); save_scenes_show_animation(std::vector()); @@ -129,18 +140,20 @@ namespace format_v4 { { std::string filename = std::string(FILEPATH) + "scenes/" + file; std::vector res; + if (FILEPATH.length() == 0) { + return res; + } FILE *fp = fopen(filename.c_str(), "rb"); if (!fp) { - std::cout << ">>file_io::load_from_disk - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::load_from_disk - file '" << filename << "' not found." << std::endl; return res; } while (!feof(fp) && !ferror(fp)) { T out; int res_read = fread(&out, sizeof(T), 1, fp); - //std::cout << ">>file_io::load_from_disk - res_read '" << res_read << "'." << std::endl; if (res_read == -1) { - std::cout << ">>file_io::load_from_disk - Error reading data from scenes_list file '" << filename << "'." << std::endl; + std::cout << "ERROR: file_io::load_from_disk - Error reading data from scenes_list file '" << filename << "'." << std::endl; //SDL_Quit(); exception_manager::throw_general_exception(std::string("fio_scenes::load_from_disk - Error reading data from file."), filename); } else if (res_read == 1) { @@ -154,10 +167,9 @@ namespace format_v4 { template void fio_scenes::save_data_to_disk(std::string file, std::vector data) { std::string filename = std::string(FILEPATH) + "scenes/" + file; - std::cout << ">> file_io::save_data_to_disk - filename: '" << filename << "'." << std::endl; FILE *fp = fopen(filename.c_str(), "wb"); if (!fp) { - std::cout << ">> file_io::save_data_to_disk - file '" << filename << "' not found." << std::endl; + std::cout << "ERROR: file_io::save_data_to_disk - file '" << filename << "' not found." << std::endl; return; } diff --git a/file/fio_scenes.h b/file/fio_scenes.h index 1dfb0e7f..cc021216 100644 --- a/file/fio_scenes.h +++ b/file/fio_scenes.h @@ -6,7 +6,7 @@ #include #include -#include "file/v4/file_scene_v4.h" +#include "v4/file_scene_v4.h" extern std::string FILEPATH; /**< TODO */ @@ -73,11 +73,13 @@ namespace format_v4 { std::vector load_scenes_play_sfx(); std::vector load_scenes_show_animation(); std::vector load_scenes_show_image(); + std::vector load_scenes_parallax(); std::vector load_scenes_show_viewpoint(); std::vector load_scenes_show_text(); std::map load_game_scenes(); void save_scenes_show_image(std::vector data); + void save_scenes_parallax(std::vector data); void save_scenes_show_viewpoint(std::vector data); void save_scenes_show_text(std::vector data); void save_scenes(std::vector data); diff --git a/file/fio_strings.cpp b/file/fio_strings.cpp index 82512d45..6d01035e 100644 --- a/file/fio_strings.cpp +++ b/file/fio_strings.cpp @@ -5,9 +5,11 @@ #include #include -#include "defines.h" -#include "aux_tools/stringutils.h" -#include "file/fio_common.h" +#include "../defines.h" +#include "../aux_tools/stringutils.h" +#include "fio_common.h" +#include "shareddata.h" +#include "strings_map.h" extern std::string FILEPATH; extern std::string GAMEPATH; @@ -60,8 +62,6 @@ namespace format_v4 { return ""; } - //std::cout << "FIO_STRINGS::get_ingame_string[" << n << "]: " << string_list.at(n) << std::endl; - return string_list.at(n); } @@ -78,16 +78,12 @@ namespace format_v4 { std::ifstream fp(filename.c_str()); if (!fp.is_open()) { - std::cout << "[WARNING] file_io::load_game_strings - file '" << filename << "' not found, will generate default..." << std::endl; if (filename == get_game_strings_filename(language)) { create_default_ingame_strings(); } else if (filename == get_common_strings_filename(language)) { create_default_common_strings(); } fp.open(filename.c_str(), std::ios::in | std::ios::binary | std::ios::app); - if (!fp.is_open()) { - std::cout << "[WARNING] file_io::load_game_strings - Critical error, can't open' '" << filename << "' for reading." << std::endl; - } } std::string str; @@ -101,7 +97,6 @@ namespace format_v4 { } StringUtils::replace_all(str, "\\xC9", "é"); } - //std::cout << "load_game_strings_from_file[" << str << "]" << std::endl; res.push_back(str); } @@ -134,7 +129,6 @@ namespace format_v4 { { std::ofstream fp(filename.c_str()); if (!fp.is_open()) { - std::cout << ">> fio_strings::create_default_ingame_strings: Could not open '" << filename << "' for writting." << std::endl; return; } @@ -196,7 +190,7 @@ namespace format_v4 { sprintf(lines[strings_ingame_savegameerror1], "%s", "ERRO SALVANDO JOGO,"); sprintf(lines[strings_ingame_savegameerror2], "%s", "VERIFIQUE SE DISPOSITIVO OU"); sprintf(lines[strings_ingame_savegameerror3], "%s", "ARQUIVO ESTÁ PROTEGIDO PARA GRAVACAO."); - sprintf(lines[strings_ingame_copyrightline], "%s", "\xA9 2009-2017 UPPERLAND STUDIOS"); + sprintf(lines[strings_ingame_copyrightline], "%s", "\xA9 2009-2020 UPPERLAND STUDIOS"); sprintf(lines[strings_ingame_audio], "%s", "AUDIO"); sprintf(lines[strings_ingame_input], "%s", "CONTROLE"); sprintf(lines[strings_ingame_video], "%s", "VIDEO"); @@ -242,7 +236,7 @@ namespace format_v4 { sprintf(lines[strings_ingame_config_android_play_services4], "%s", "COM ESTA OPCAO HABILITADA."); sprintf(lines[strings_ingame_config_android_hide_controls1], "%s", "REQUER UM CONTROLE FÍSICO,"); - sprintf(lines[strings_ingame_config_android_hide_controls2], "%s", "CASO CONTRÁRIO NAO CONSEGUIRA"); + sprintf(lines[strings_ingame_config_android_hide_controls2], "%s", "CASO CONTRÁRIO NÃO CONSEGUIRA"); sprintf(lines[strings_ingame_config_android_hide_controls3], "%s", "RESTAURAR CONFIGURACOES."); sprintf(lines[strings_ingame_config_extras_music_player], "%s", "PLAYER DE MÚSICA"); @@ -257,7 +251,7 @@ namespace format_v4 { sprintf(lines[strings_ingame_yes], "%s", "SIM"); sprintf(lines[strings_ingame_no], "%s", "NAO"); sprintf(lines[strings_ingame_life], "%s", "VIDAS"); - sprintf(lines[strings_ingame_item], "%s", "ITEMS"); + sprintf(lines[strings_ingame_item], "%s", "ITEM"); sprintf(lines[strings_ingame_coin], "%s", "MOEDAS"); sprintf(lines[strings_ingame_gotarmor_type_ability], "%s", "CONCEDEM A HABILIDADE PARA"); sprintf(lines[strings_ingame_gotarmor_type_arms], "%s", "OS BRACOS MELHORADOS IRAO"); @@ -288,7 +282,7 @@ namespace format_v4 { sprintf(lines[strings_ingame_config_audio_volume_sfx], "%s", "VOLUME EFEITOS"); sprintf(lines[strings_ingame_config_enabled], "%s", "HABILITADO"); sprintf(lines[strings_ingame_config_disabled], "%s", "DESABILITADO"); - sprintf(lines[strings_ingame_ready_message], "%s", "PREPARE-SE!!"); + sprintf(lines[strings_ingame_ready_message], "%s", "MISSÃO INICIADA!"); sprintf(lines[strings_ingame_config_select_player], "%s", "< SELECIONE PERSONAGEM >"); sprintf(lines[strings_ingame_config_press_start_to_select], "%s", "APERTE START PARA INICIAR"); sprintf(lines[strings_ingame_manual], "%s", "MANUAL"); @@ -298,7 +292,7 @@ namespace format_v4 { sprintf(lines[strings_config_android_screencontrolssize], "%s", "TAMANHO CONTROLES"); sprintf(lines[strings_config_android_useplayservices], "%s", "PLAY SERVICES"); sprintf(lines[strings_config_android_usecloudsave], "%s", "SALVAR NA NUVEM"); - sprintf(lines[strings_config_wii_joysticktype], "%s", "TYPO DE CONTROLE"); + sprintf(lines[strings_config_wii_joysticktype], "%s", "TIPO DE CONTROLE"); sprintf(lines[strings_config_android_screencontrolssize_SMALL], "%s", "PEQUENO"); sprintf(lines[strings_config_android_screencontrolssize_MEDIUM], "%s", "MEDIUM"); sprintf(lines[strings_config_android_screencontrolssize_BIG], "%s", "GRANDE"); @@ -316,37 +310,345 @@ namespace format_v4 { sprintf(lines[strings_config_high], "%s", "ALTO"); sprintf(lines[string_stage_select_stage], "%s", "FASE:"); sprintf(lines[string_stage_select_lair_of], "%s", "LAR DE:"); - sprintf(lines[string_stage_select_enter_stage], "%s", "[ENTRAR FASE]"); + sprintf(lines[string_stage_select_enter_stage], "%s", "[ENTRAR MISSÃO]"); sprintf(lines[string_stage_select_unavailable], "%s", "[INDISPONÍVEL NA DEMO]"); sprintf(lines[strings_config_return], "%s", "VOLTAR"); sprintf(lines[string_intro_upperland_studios], "%s", "TIME DE JOGOS CASEIROS"); sprintf(lines[string_intro_presents], "%s", "APRESENTA"); + sprintf(lines[string_intro_engine1], "%s", "-- ROCKBOT ENGINE --"); - sprintf(lines[string_intro_engine2], "%s", "JOGO CONTRUÍDO COM UM MOTOR DE JOGO"); - sprintf(lines[string_intro_engine3], "%s", "DE UPPERLAND STUDIOS, CRIADO DE FORMA"); - sprintf(lines[string_intro_engine4], "%s", "CASEIRA E NÃO-PROFISSIONAL."); - sprintf(lines[string_intro_engine5], "%s", "CÓDIGO-FONTE LICENCIADO SOB A"); - sprintf(lines[string_intro_engine6], "%s", "GPL E LIVREMENTE DISTRIBUÍDO."); - sprintf(lines[string_intro_engine7], "%s", "CONTEÚDO DE JOGO DESTRIBUÍDO SOB"); - sprintf(lines[string_intro_engine8], "%s", "LICENÇAS DE SEUS RESPECTIVOS CRIADORES."); - - sprintf(lines[string_intro_demo_warning_title], "%s", "-- AVISO SOBRE VERSÃO FREE --"); - sprintf(lines[string_intro_demo_warning1], "%s", "VOCÊ ESTÁ JOGANDO A VERSÃO GRATUÍTA."); - sprintf(lines[string_intro_demo_warning2], "%s", "ESTA CONTÉM APENAS ALGUMAS FASES E"); - sprintf(lines[string_intro_demo_warning3], "%s", "NÃO POSSUIU ALGUMAS FUNÇÕES COMO"); - sprintf(lines[string_intro_demo_warning4], "%s", "SELEÇÃO DE PERSONAGEM. A VERSÃO"); - sprintf(lines[string_intro_demo_warning5], "%s", "INTEGRAL [INCOMPLETA] PODE SER"); - sprintf(lines[string_intro_demo_warning6], "%s", "OBTIDA NO GOGOLE+ DO JOGO."); - sprintf(lines[string_intro_demo_warning7], "%s", "NÃO HÁ UMA DATA PARA FINALIZAÇÃO"); - sprintf(lines[string_intro_demo_warning8], "%s", "DO DESENVOLVIMENTO, POIS ESTE É"); - sprintf(lines[string_intro_demo_warning9], "%s", "UM SOFTWARE CASEIRO, SENDO"); - sprintf(lines[string_intro_demo_warning10], "%s", "DESENVOLVIDO NO TEMPO PESSOAL LIVRE."); - sprintf(lines[string_intro_demo_warning11], "%s", "DIVIRTA-SE COM A DEMONSTRAÇÃO!"); - sprintf(lines[string_press_key_or_button], "%s", "APERTE UM BOTÃO/TECLA PARA CONTINUAR"); + sprintf(lines[string_intro_engine2], "%s", "ESTE JOGO USA CÓDIGO E ARTE"); + sprintf(lines[string_intro_engine3], "%s", "ORIGINAIS, CRIADOS DO ZERO"); + sprintf(lines[string_intro_engine4], "%s", "QUALQUER SEMELHANÇA É MERA"); + sprintf(lines[string_intro_engine5], "%s", "COINCIDÊNCIA OU HOMENAGEM"); + sprintf(lines[string_intro_engine6], "%s", "À JOGOS ANTIGOS OU ENGANO."); + sprintf(lines[string_intro_engine7], "%s", "ROCKBOT E UPPERLAND NÃO TEM"); + sprintf(lines[string_intro_engine8], "%s", "QUALQUER RELAÇÃO COM OUTRAS EMPRESAS."); + sprintf(lines[string_intro_engine9], "%s", "ROCKBOT FOI REMOVIDO PELO GOOGLE"); + sprintf(lines[string_intro_engine10], "%s", "USUÁRIOS RELATANDO ELE COMO"); + sprintf(lines[string_intro_engine11], "%s", "SENDO VERSÃO 'FALSA' DE OUTRO."); + + sprintf(lines[string_intro_demo_warning_title], "%s", "-- AVISO JOGO CASEIRO" + " --"); + sprintf(lines[string_intro_demo_warning1], "%s", "ESTE JOGO FOI FEITO EM CASA, POR"); + sprintf(lines[string_intro_demo_warning2], "%s", "POUCAS PESSOAS, SEM GANHOS MONETÁRIOS"); + sprintf(lines[string_intro_demo_warning3], "%s", "E DURANTE O TEMPO LIVRE DO EMPREGO."); + sprintf(lines[string_intro_demo_warning4], "%s", "FAZEMOS JOGOS PARA VOCÊ SE DIVERTIR"); + sprintf(lines[string_intro_demo_warning5], "%s", "AINDA ASSIM, ALGUNS NOS ODEIAM."); + sprintf(lines[string_intro_demo_warning6], "%s", "NÃO SEJA TROLL. NÃO REPORTE"); + sprintf(lines[string_intro_demo_warning7], "%s", "SÓ PORQUE ACHA PARECIDO."); + sprintf(lines[string_intro_demo_warning8], "%s", "LEIA A FAQ NO NOSSO SITE ANTES!!"); + sprintf(lines[string_intro_demo_warning9], "%s", "VERSÃO ROCKBOT PODE SER OBTIDA EM:"); + sprintf(lines[string_intro_demo_warning10], "%s", "HTTPS://ROCKBOT.UPPERLAND.NET"); + sprintf(lines[string_intro_demo_warning11], "%s", ""); + sprintf(lines[string_press_key_or_button], "%s", ""); sprintf(lines[STRING_ENDING_CONCEPT], "%s", "CONCEITO"); sprintf(lines[STRING_ENDING_DESIGN], "%s", "DESENHO"); + sprintf(lines[strings_config_android_screencontrolsspacing], "%s", "ESPAÇO BOTÕES"); + sprintf(lines[strings_config_android_audiobuffersize], "%s", "TAMANHO BUFFER ÁUDIO"); + sprintf(lines[strings_config_android_audiobuffersize_VERY_SMALL], "%s", "MUITO PEQUENO"); + sprintf(lines[strings_config_android_audiobuffersize_SMALL], "%s", "PEQUENO"); + sprintf(lines[strings_config_android_audiobuffersize_MEDIUM], "%s", "MÉDIO"); + sprintf(lines[strings_config_android_audiobuffersize_BIG], "%s", "GRANDE"); + sprintf(lines[strings_config_android_audiobuffersize_DESCRIPTION], "%s", "AUMENTE VALOR SE ÁUDIO ESTIVER CORTADO"); + + sprintf(lines[strings_menu_item_CHEATS], "%s", "TRAPAÇAS"); + sprintf(lines[strings_menu_item_CHEATS_INVENCIBLE], "%s", "INVENCÍVEL"); + sprintf(lines[strings_menu_item_CHEATS_ALLBEATEN], "%s", "TUDO DERROTADO"); + sprintf(lines[strings_menu_item_CHEATS_CHARACTER], "%s", "PERSONAGEM"); + + sprintf(lines[strings_menu_pick_save_slot_PICK_OPTION], "%s", "ESCOLHA UM ESPAÇO DE SAVE"); + sprintf(lines[strings_menu_pick_save_slot_NEW_GAME], "%s", "CRIAR NOVO JOGO"); + sprintf(lines[strings_menu_pick_save_slot_LOAD_GAME], "%s", "CARREGAR ARQUIVO"); + sprintf(lines[strings_menu_pick_save_slot_NO_SAVE], "%s", "- SEM ARQUIVO -"); + + sprintf(lines[strings_ending_NEW_CHARACTERS_AVAILABLE], "%s", "NOVOS PERSONAGENS DISPONPIVEIS"); + sprintf(lines[strings_ending_NEW_CHARACTERS_PRESS_TO_CONTINUE], "%s", "USE PARA CONTINUAR"); + + sprintf(lines[strings_weapon_name_COIL], "%s", "SAPO-MOLA"); + sprintf(lines[strings_weapon_name_JET], "%s", "ÁGUIA-JATO"); + sprintf(lines[strings_weapon_name_ETANK], "%s", "CRISTAL HP"); + sprintf(lines[strings_weapon_name_WTANK], "%s", "CRISTAL MP"); + sprintf(lines[strings_weapon_name_STANK], "%s", "CRISTAL ESPECIAL"); + + sprintf(lines[strings_weapon_menu_CHANGE_WEAPON], "%s", "MUDAR ARMA/ITEM"); + sprintf(lines[strings_weapon_menu_TANKS], "%s", "CRISTAIS DE ENERGIA"); + sprintf(lines[strings_weapon_menu_BOOTS], "%s", "BOTAS"); + sprintf(lines[strings_weapon_menu_ARMOR], "%s", "ARMADURA"); + sprintf(lines[strings_weapon_menu_WEAPON], "%s", "TIRO"); + sprintf(lines[strings_weapon_menu_PART_NORMAL], "%s", "NORMAL"); + sprintf(lines[strings_weapon_menu_PART_ENHANCED], "%s", "MELHORADO"); + + sprintf(lines[strings_ingame_config_audio_use_old_music], "%s", "USAR MÚSICA ANTIGA"); + + sprintf(lines[strings_about_site], "%s", "- SITE -"); + sprintf(lines[strings_about_bugs], "%s", "- SUPORTE -"); + sprintf(lines[strings_about_twitter], "%s", "- TWITTER -"); + sprintf(lines[strings_about_facebook], "%s", "- FACEBOOK -"); + + sprintf(lines[strings_stage_select_pick_mission], "%s", "ESCOLHA UMA MISSÃO"); + sprintf(lines[strings_stage_select_boss], "%s", "CHEFE:"); + sprintf(lines[strings_stage_select_select], "%s", "SELECIONAR"); + + sprintf(lines[strings_config_android_use_mod_music], "%s", "USAR MÚSICA CHIPTUNE"); + sprintf(lines[strings_config_android_use_mod_music_warning], "%s", "PODE CAUSAR PROBLEMAS DE ÁUDIO"); + + sprintf(lines[strings_weapon_selected], "%s", "ARMA"); + + sprintf(lines[strings_game_engine_credits_title], "%s", "CRÉDITOS DO MOTOR DE JOGO"); + sprintf(lines[strings_game_engine_credits_planning], "%s", "PLANEJAMENTO"); + sprintf(lines[strings_game_engine_credits_design], "%s", "DESIGN"); + sprintf(lines[strings_game_engine_credits_dialogs], "%s", "DIÁLOGOS"); + sprintf(lines[strings_game_engine_credits_tests], "%s", "TESTES AND REVISÃO"); + sprintf(lines[strings_game_engine_credits_illustration], "%s", "ILUSTRAÇÕES"); + sprintf(lines[strings_game_engine_credits_music], "%s", "MÚSICA"); + sprintf(lines[strings_game_engine_credits_translation], "%s", "TRADUÇÃO"); + sprintf(lines[strings_game_engine_credits_programming], "%s", "PROGRAMAÇÃO"); + sprintf(lines[strings_game_engine_credits_ports], "%s", "PLATAFORMAS"); + sprintf(lines[strings_game_engine_credits_special_thanks], "%s", "AGRADECIMENTOS ESPECIAIS"); + sprintf(lines[strings_game_engine_credits_dev_tools], "%s", "FERRAMENTAS DE DESENVOLVIMENTO"); + sprintf(lines[strings_game_engine_credits_presented_by], "%s", "APRESENTADO POR"); + + + } else if (language == LANGUAGE_SPANISH) { + sprintf(lines[strings_ingame_newgame], "%s", "NUEVA PARTIDA"); + sprintf(lines[strings_ingame_loadgame], "%s", "CARGAR PARTIDA"); + sprintf(lines[strings_ingame_config], "%s", "CONFIGURACIÓN"); + sprintf(lines[strings_ingame_about], "%s", "INFORMACIÓN"); + sprintf(lines[strings_ingame_extras], "%s", "EXTRAS"); + sprintf(lines[strings_ingame_password], "%s", "CONTRASEÑA"); + sprintf(lines[strings_ingame_gameover], "%s", "PARTIDA ACABADA"); + sprintf(lines[strings_ingame_and], "%s", "Y"); + sprintf(lines[strings_ingame_yougot_singular], "%s", "HA SIDO ADQUIRIDO"); + sprintf(lines[strings_ingame_yougot_plural], "%s", "HA SIDO ADQUIRIDO"); + sprintf(lines[strings_ingame_selectgame], "%s", "SELECCIONE PARTIDA"); + sprintf(lines[strings_ingame_savegameerror1], "%s", "ERROR AL GUARDAR PARTIDA,"); + sprintf(lines[strings_ingame_savegameerror2], "%s", "EVISE QUE EL DISPOSITIVO O"); + sprintf(lines[strings_ingame_savegameerror3], "%s", "ARCHIVO NO ESTE PROTEGIDO."); + sprintf(lines[strings_ingame_copyrightline], "%s", "\xA9 2009-2020 UPPERLAND STUDIOS"); + sprintf(lines[strings_ingame_audio], "%s", "AUDIO"); + sprintf(lines[strings_ingame_input], "%s", "INPUT"); + sprintf(lines[strings_ingame_video], "%s", "VIDEO"); + sprintf(lines[strings_ingame_leavestage], "%s", "DEJAR NIVEL"); + sprintf(lines[strings_ingame_language], "%s", "LENGUAJE"); + sprintf(lines[strings_ingame_video_windowed], "%s", "EN VENTANA"); + sprintf(lines[strings_ingame_video_fullscreen], "%s", "PANTALLA COMPLETA"); + sprintf(lines[strings_ingame_video_noscale], "%s", "NO ESCALAR "); + sprintf(lines[strings_ingame_video_size2x], "%s", "TAMAÑO X2 "); + sprintf(lines[strings_ingame_video_scale2x], "%s", "ESCALA X2 "); + sprintf(lines[strings_ingame_video_show_fps], "%s", "ENSEÑAR FPS"); + sprintf(lines[strings_ingame_config_restart1], "%s", "OR FAVOR REINICIE EL JUEGO"); + sprintf(lines[strings_ingame_config_restart2], "%s", "PARA QUE LA CONFIGURACIÓN"); + sprintf(lines[strings_ingame_config_restart3], "%s", "TOME EFECTO."); + sprintf(lines[strings_ingame_config_presstorestart], "%s", "PRESIONE UN BOTÓN PARA REGRESAR"); + sprintf(lines[strings_ingame_pressanykey], "%s", "PRESIONE CUALQUIER BOTÓN"); + sprintf(lines[strings_ingame_config_set], "%s", "DEFINIR"); + sprintf(lines[strings_ingame_config_key_up], "%s", "ARRIBA"); + sprintf(lines[strings_ingame_config_key_down], "%s", "ABAJO"); + sprintf(lines[strings_ingame_config_key_left], "%s", "IZQUIERDA"); + sprintf(lines[strings_ingame_config_key_right], "%s", "DERECHA"); + sprintf(lines[strings_ingame_config_key_jump], "%s", "SALTAR"); + sprintf(lines[strings_ingame_config_key_dash], "%s", "DASH"); + sprintf(lines[strings_ingame_config_key_shield], "%s", "ESCUDO"); + sprintf(lines[strings_ingame_config_key_fire], "%s", "DISPARAR"); + sprintf(lines[strings_ingame_config_key_start], "%s", "START"); + sprintf(lines[strings_ingame_config_key_keyl], "%s", "BOTÓN-L"); + sprintf(lines[strings_ingame_config_key_keyr], "%s", "BOTÓN-R"); + sprintf(lines[strings_ingame_config_key_pressnew], "%s", "PRESIONE UNA NUEVA TECLA/BOTÓN"); + sprintf(lines[strings_ingame_config_key_reset], "%s", "REESTABLECER"); + sprintf(lines[strings_ingame_config_key_directional], "%s", "DIRECCIONAL"); + sprintf(lines[strings_ingame_config_key_directional_analog], "%s", "ANÁLOGO"); + sprintf(lines[strings_ingame_config_key_directional_digital], "%s", "DIGITAL"); + + sprintf(lines[strings_ingame_config_android_cloud_save1], "%s", "EL GUARDADO EN LA NUBE REQUIERE"); + sprintf(lines[strings_ingame_config_android_cloud_save2], "%s", "CONEXIÓN A INTERNET O EL JUEGO SE"); + sprintf(lines[strings_ingame_config_android_cloud_save3], "%s", "CONGELARÁ CUANDO TRATE DE OBTENER"); + sprintf(lines[strings_ingame_config_android_cloud_save4], "%s", "DATOS DEL SERVIDOR."); + + sprintf(lines[strings_ingame_config_android_play_services1], "%s", "ACTIVAR ESTA OPCIÓN REQUIERE"); + sprintf(lines[strings_ingame_config_android_play_services2], "%s", "CONEXIÓN A DATOS."); + sprintf(lines[strings_ingame_config_android_play_services3], "%s", "ADVERTENCIA: EL JUEGO PODRÍA"); + sprintf(lines[strings_ingame_config_android_play_services4], "%s", "CONGELARSE CON ESTA OPCIÓN ACTIVADA."); + + sprintf(lines[strings_ingame_config_android_hide_controls1], "%s", "REQUIERES DE UN MANDO FÍSICO,"); + sprintf(lines[strings_ingame_config_android_hide_controls2], "%s", "O NO PODRÁS RESTABLECER LA"); + sprintf(lines[strings_ingame_config_android_hide_controls3], "%s", "CONFIGURACIÓN."); + + sprintf(lines[strings_ingame_config_extras_music_player], "%s", "REPRODUCTOR DE MÚSICA"); + sprintf(lines[strings_ingame_config_extras_sound_player], "%s", "REPRODUCTOR DE SFX"); + sprintf(lines[strings_ingame_config_extras_art_gallery], "%s", "GALLERÍA DE ARTE"); + + sprintf(lines[strings_ingame_passwordinvalid], "%s", "CONTRASEÑA INVALIDA"); + sprintf(lines[strings_ingame_pressstart], "%s", "PRESIONE START"); + sprintf(lines[strings_ingame_engineerror], "%s", "ERROR EN ROCKBOT ENGINE"); + sprintf(lines[strings_ingame_nogames], "%s", "NO HAY JUEGOS DISPONIBLES"); + sprintf(lines[strings_ingame_quitgame], "%s", "¿SALIR DEL JUEGO?"); + sprintf(lines[strings_ingame_yes], "%s", "SI"); + sprintf(lines[strings_ingame_no], "%s", "NO"); + sprintf(lines[strings_ingame_life], "%s", "VIDA(S)"); + sprintf(lines[strings_ingame_item], "%s", "OBJETO(S)"); + sprintf(lines[strings_ingame_coin], "%s", "MONEDA(S)"); + sprintf(lines[strings_ingame_gotarmor_type_ability], "%s", "TE DA LA HABILIDAD DE"); + sprintf(lines[strings_ingame_gotarmor_type_arms], "%s", "ESTOS BRAZOS MEJORADOS TE PERMITEN"); + sprintf(lines[strings_ingame_gotarmor_type_arms_msg], "%s", "DISPARAR"); + sprintf(lines[strings_ingame_gotarmor_type_legs], "%s", "ESTAS PIERNAS LIGERAS TE PERMITEN"); + sprintf(lines[strings_ingame_gotarmor_type_legs_msg1], "%s", "HACER UN DASH EN EL AIRE."); + sprintf(lines[strings_ingame_gotarmor_type_legs_msg2], "%s", "HACER UN SALTO DOBLE"); + sprintf(lines[strings_ingame_gotarmor_type_legs_msg3], "%s", "HACER UN SHOURYUKEN (ARRIBA+DASH)"); + sprintf(lines[strings_ingame_gotarmor_type_legs_msg4], "%s", " "); + sprintf(lines[strings_ingame_gotarmor_type_body], "%s", "ESTE CUERPO FORTIFICADO TE PERMITE"); + sprintf(lines[strings_ingame_gotarmor_type_body_msg1], "%s", "SER INTANGIBLE POR MÁS TIEMPO"); + sprintf(lines[strings_ingame_gotarmor_type_body_msg2], "%s", "TOMAR LA MITAD DEL DAÑO"); + sprintf(lines[strings_ingame_gotarmor_type_body_msg3], "%s", "EVITAR EMPUJONES AL SER DAÑADO"); + sprintf(lines[strings_ingame_gotarmor_type_body_msg4], "%s", "RESISTIR ESPINAS"); + sprintf(lines[strings_ingame_difficulty_select], "%s", "SELECCIONE UNA DIFICULTAD:"); + sprintf(lines[strings_ingame_difficulty_easy], "%s", "FÁCIL"); + sprintf(lines[strings_ingame_difficulty_normal], "%s", "NORMAL"); + sprintf(lines[strings_ingame_difficulty_hard], "%s", "DIFÍCIL"); + sprintf(lines[strings_ingame_config_input_selected_joystick], "%s", "JOYSTICK SELECCIONADO"); + sprintf(lines[strings_ingame_config_input_buttons], "%s", "CONFIGURAR BOTONES"); + sprintf(lines[strings_ingame_config_input_turbo_mode], "%s", "MODO TURBO"); + sprintf(lines[strings_ingame_config_input_autocharge_mode], "%s", "AUTO-CARGA"); + sprintf(lines[strings_ingame_config_on], "%s", "SI"); + sprintf(lines[strings_ingame_config_off], "%s", "NO"); + sprintf(lines[strings_ingame_config_quitgame], "%s", "SALIR DEL JUEGO"); + sprintf(lines[strings_ingame_armor], "%s", "ARMADURA"); + sprintf(lines[strings_ingame_config_audio_volume_music], "%s", "VOLUMEN DE MÚSICA"); + sprintf(lines[strings_ingame_config_audio_volume_sfx], "%s", "VOLUMEN DE SFX"); + sprintf(lines[strings_ingame_config_enabled], "%s", "HABILITADO"); + sprintf(lines[strings_ingame_config_disabled], "%s", "DESHABILITADO"); + sprintf(lines[strings_ingame_ready_message], "%s", "¡MISIÓN INICIADA!"); + sprintf(lines[strings_ingame_config_select_player], "%s", "< SELECCIONE UN PERSONAJE >"); + sprintf(lines[strings_ingame_config_press_start_to_select], "%s", "PRESIONE START PARA SELECCIONAR"); + sprintf(lines[strings_ingame_manual], "%s", "MANUAL"); + sprintf(lines[strings_ingame_mode], "%s", "MODO"); + sprintf(lines[strings_ingame_video_scale_mode], "%s", "MODO DE ESCALA"); + sprintf(lines[strings_config_android_hidescreencontrols], "%s", "OCULTAR CONTROLES"); + sprintf(lines[strings_config_android_screencontrolssize], "%s", "TAMAÑO DE CONTROLES"); + sprintf(lines[strings_config_android_useplayservices], "%s", "SERVICIOS DE GOOGLE PLAY"); + sprintf(lines[strings_config_android_usecloudsave], "%s", "GUARDADO EN LA NUBE"); + sprintf(lines[strings_config_wii_joysticktype], "%s", "TIPO DE JOYSTICK"); + sprintf(lines[strings_config_android_screencontrolssize_SMALL], "%s", "PEQUEÑO"); + sprintf(lines[strings_config_android_screencontrolssize_MEDIUM], "%s", "MEDIANO"); + sprintf(lines[strings_config_android_screencontrolssize_BIG], "%s", "GRANDE"); + sprintf(lines[strings_config_wii_joysticktype_WIIMOTE], "%s", "WIIMOTE"); + sprintf(lines[strings_config_wii_joysticktype_CLASSIC], "%s", "CLASSIC"); + sprintf(lines[strings_config_wii_joysticktype_GAMECUBE], "%s", "GAMECUBE"); + sprintf(lines[strings_config_wii_platformspecific], "%s", "ESPECIFICO DE PLATAFORMA"); + sprintf(lines[strings_config_keys_unet], "%s", "POR FAVOR DEFINA"); + sprintf(lines[strings_ingame_config_graphics_performance], "%s", "RENDIMIENTO"); + sprintf(lines[strings_ingame_enable_playservices_dialog], "%s", "¿HABILITAR SERVICIOS DE GOOGLE PLAY?"); + sprintf(lines[strings_ingame_enable_cloudsave_dialog], "%s", "¿HABILITAR GUARDADO EN LA NUBE?"); + sprintf(lines[strings_ingame_requires_network], "%s", "(SE REQUIERE UN CONEXIÓN DISPONIBLE)"); + sprintf(lines[strings_config_low], "%s", "BAJO"); + sprintf(lines[strings_config_medium], "%s", "MEDIO"); + sprintf(lines[strings_config_high], "%s", "ALTO"); + sprintf(lines[string_stage_select_stage], "%s", "NIVEL:"); + sprintf(lines[string_stage_select_lair_of], "%s", "GUARIDA DE:"); + sprintf(lines[string_stage_select_enter_stage], "%s", "[SELECCIONAR]"); + sprintf(lines[string_stage_select_unavailable], "%s", "[NO DISPONIBLE EN LA DEMO]"); + sprintf(lines[strings_config_return], "%s", "REGRESAR"); + + sprintf(lines[string_intro_upperland_studios], "%s", "HOMEBREW GAMES TEAM"); + sprintf(lines[string_intro_presents], "%s", "PRESENTA"); + + sprintf(lines[string_intro_engine1], "%s", "-- ROCKBOT ENGINE --"); + sprintf(lines[string_intro_engine2], "%s", "ESTE JUEGO UTILIZA CÓDIGO ORIGINAL"); + sprintf(lines[string_intro_engine3], "%s", "Y ASSETS HECHOS DESDE CERO."); + sprintf(lines[string_intro_engine4], "%s", "CUALQUIER SIMILITUDES SON"); + sprintf(lines[string_intro_engine5], "%s", "TRIBUTOS A JUEGOS ANTIGUOS"); + sprintf(lines[string_intro_engine6], "%s", "O UN MALENTENDIDO."); + + sprintf(lines[string_intro_engine7], "%s", "ROCKBOT Y UPPERLAND NO ESTÁN RELACIONADOS"); + sprintf(lines[string_intro_engine8], "%s", "A NINGUNA OTRA COMPAÑÍA O JUEGO."); + sprintf(lines[string_intro_engine9], "%s", "GOOGLE REMOVIÓ ROCKBOT DEBIDO"); + sprintf(lines[string_intro_engine10], "%s", "A USUARIOS REPORTÁNDOLO POR"); + sprintf(lines[string_intro_engine11], "%s", "‘COPIAR’ A OTRO JUEGO."); + + sprintf(lines[string_intro_demo_warning_title], "%s", "-- ADVERTENCIA HOMEBREW" + " --"); + sprintf(lines[string_intro_demo_warning1], "%s", "ESTO ES UN HOMEBREW, HECHO POR"); + sprintf(lines[string_intro_demo_warning2], "%s", "POCAS PERSONAS SIN NINGUNA GANANCIA"); + sprintf(lines[string_intro_demo_warning3], "%s", "MONETARIA Y DURANTE NUESTRO TIEMPO"); + sprintf(lines[string_intro_demo_warning4], "%s", "LIBRE DEL TRABAJO. HACEMOS JUEGOS PARA"); + sprintf(lines[string_intro_demo_warning5], "%s", "QUÉ SE DIVIERTAN."); + sprintf(lines[string_intro_demo_warning6], "%s", "NÃO SEJA TROLL. NÃO REPORTE"); + sprintf(lines[string_intro_demo_warning7], "%s", "SÓ PORQUE ACHA PARECIDO."); + sprintf(lines[string_intro_demo_warning8], "%s", "POR FAVOR, LEA EL F.A.Q.!!"); + sprintf(lines[string_intro_demo_warning9], "%s", "VERSIONES ANTIGUAS PUEDEN SER OBTENIDAS EN:"); + sprintf(lines[string_intro_demo_warning10], "%s", "HTTPS://ROCKBOT.UPPERLAND.NET"); + sprintf(lines[string_intro_demo_warning11], "%s", ""); + sprintf(lines[string_press_key_or_button], "%s", ""); + sprintf(lines[STRING_ENDING_CONCEPT], "%s", "CONCEPTO"); + sprintf(lines[STRING_ENDING_DESIGN], "%s", "DISEÑO"); + + sprintf(lines[strings_config_android_screencontrolsspacing], "%s", "ESPACIADO ENTRE BOTONES"); + sprintf(lines[strings_config_android_audiobuffersize], "%s", "TAMAÑO DEL BÚFER DE AUDIO"); + sprintf(lines[strings_config_android_audiobuffersize_VERY_SMALL], "%s", "MUY PEQUEÑO"); + sprintf(lines[strings_config_android_audiobuffersize_SMALL], "%s", "PEQUEÑO"); + sprintf(lines[strings_config_android_audiobuffersize_MEDIUM], "%s", "MEDIANO"); + sprintf(lines[strings_config_android_audiobuffersize_BIG], "%s", "GRANDE"); + sprintf(lines[strings_config_android_audiobuffersize_DESCRIPTION], "%s", "INCREMENTE EL VALOR SI SE ESCUCHA CORTADO"); + + sprintf(lines[strings_menu_item_CHEATS], "%s", "TRUCOS"); + sprintf(lines[strings_menu_item_CHEATS_INVENCIBLE], "%s", "INVENCIBILIDAD"); + sprintf(lines[strings_menu_item_CHEATS_ALLBEATEN], "%s", "TODOS LOS NIVELES COMPLETADOS"); + sprintf(lines[strings_menu_item_CHEATS_CHARACTER], "%s", "PERSONAJE"); + + sprintf(lines[strings_menu_pick_save_slot_PICK_OPTION], "%s", "POR FAVOR, SELECCIONE UNA CASILLA DE GUARDADO"); + sprintf(lines[strings_menu_pick_save_slot_NEW_GAME], "%s", "CREAR UNA NUEVA PARTIDA"); + sprintf(lines[strings_menu_pick_save_slot_LOAD_GAME], "%s", "CARGAR UN ARCHIVO DE GUARDADO"); + sprintf(lines[strings_menu_pick_save_slot_NO_SAVE], "%s", "– SIN PARTIDA GUARDADA –"); + + sprintf(lines[strings_ending_NEW_CHARACTERS_AVAILABLE], "%s", "NUEVOS PERSONAJES DESBLOQUEADOS"); + sprintf(lines[strings_ending_NEW_CHARACTERS_PRESS_TO_CONTINUE], "%s", "USA PARA CONTINUAR"); + + sprintf(lines[strings_weapon_name_COIL], "%s", "FROG COIL"); + sprintf(lines[strings_weapon_name_JET], "%s", "EAGLE JET"); + sprintf(lines[strings_weapon_name_ETANK], "%s", "HP CRYSTAL"); + sprintf(lines[strings_weapon_name_WTANK], "%s", "MP CRYSTAL"); + sprintf(lines[strings_weapon_name_STANK], "%s", "SPECIAL CRYSTAL"); + + sprintf(lines[strings_weapon_menu_CHANGE_WEAPON], "%s", "CAMBIAR ARMA/OBJETO"); + sprintf(lines[strings_weapon_menu_TANKS], "%s", "HEALTH CRYSTALS"); + sprintf(lines[strings_weapon_menu_BOOTS], "%s", "BOTAS"); + sprintf(lines[strings_weapon_menu_ARMOR], "%s", "ARMADURA"); + sprintf(lines[strings_weapon_menu_WEAPON], "%s", "RAYO"); + sprintf(lines[strings_weapon_menu_PART_NORMAL], "%s", "NORMAL"); + sprintf(lines[strings_weapon_menu_PART_ENHANCED], "%s", "MEJORADO"); + + sprintf(lines[strings_ingame_config_audio_use_old_music], "%s", "USAR MÚSICA ANTIGUA"); + + sprintf(lines[strings_about_site], "%s", "- SITIO -"); + sprintf(lines[strings_about_bugs], "%s", "- AYUDA -"); + sprintf(lines[strings_about_twitter], "%s", "- TWITTER -"); + sprintf(lines[strings_about_facebook], "%s", "- FACEBOOK -"); + + sprintf(lines[strings_stage_select_pick_mission], "%s", "SELECCIONE UNA MISIÓN"); + sprintf(lines[strings_stage_select_boss], "%s", "JEFE:"); + sprintf(lines[strings_stage_select_select], "%s", "SELECCIONE"); + + sprintf(lines[strings_config_android_use_mod_music], "%s", "USAR MÚSICA CHIPTUNE"); + sprintf(lines[strings_config_android_use_mod_music_warning], "%s", "PUEDE CAUSAR PROBLEMAS DE AUDIO"); + + sprintf(lines[strings_weapon_selected], "%s", "ARMA"); + + sprintf(lines[strings_game_engine_credits_title], "%s", "CRÉDITOS DO MOTOR DE JOGO"); + sprintf(lines[strings_game_engine_credits_planning], "%s", "PLANEJAMENTO"); + sprintf(lines[strings_game_engine_credits_design], "%s", "DESIGN"); + sprintf(lines[strings_game_engine_credits_dialogs], "%s", "DIÁLOGOS"); + sprintf(lines[strings_game_engine_credits_tests], "%s", "TESTES AND REVISÃO"); + sprintf(lines[strings_game_engine_credits_illustration], "%s", "ILUSTRAÇÕES"); + sprintf(lines[strings_game_engine_credits_music], "%s", "MÚSICA"); + sprintf(lines[strings_game_engine_credits_translation], "%s", "TRADUÇÃO"); + sprintf(lines[strings_game_engine_credits_programming], "%s", "PROGRAMAÇÃO"); + sprintf(lines[strings_game_engine_credits_ports], "%s", "PLATAFORMAS"); + sprintf(lines[strings_game_engine_credits_special_thanks], "%s", "AGRADECIMENTOS ESPECIAIS"); + sprintf(lines[strings_game_engine_credits_dev_tools], "%s", "FERRAMENTAS DE DESENVOLVIMENTO"); + sprintf(lines[strings_game_engine_credits_presented_by], "%s", "APRESENTADO POR"); + } else { sprintf(lines[strings_ingame_newgame], "%s", "NEW GAME"); sprintf(lines[strings_ingame_loadgame], "%s", "LOAD GAME"); @@ -362,7 +664,7 @@ namespace format_v4 { sprintf(lines[strings_ingame_savegameerror1], "%s", "ERROR WHILE SAVING GAME,"); sprintf(lines[strings_ingame_savegameerror2], "%s", "PLEASE CHECK THAT THE DEVICE OR"); sprintf(lines[strings_ingame_savegameerror3], "%s", "FILE IS NOT WRITE-PROTECTED."); - sprintf(lines[strings_ingame_copyrightline], "%s", "\xA9 2009-2017 UPPERLAND STUDIOS"); + sprintf(lines[strings_ingame_copyrightline], "%s", "\xA9 2009-2020 UPPERLAND STUDIOS"); sprintf(lines[strings_ingame_audio], "%s", "AUDIO"); sprintf(lines[strings_ingame_input], "%s", "INPUT"); sprintf(lines[strings_ingame_video], "%s", "VIDEO"); @@ -408,14 +710,14 @@ namespace format_v4 { sprintf(lines[strings_ingame_config_android_hide_controls1], "%s", "REQUIRES PHYSICAL CONTROLLER."); sprintf(lines[strings_ingame_config_android_hide_controls2], "%s", "OTHERWISE YOU WON'T BE"); - sprintf(lines[strings_ingame_config_android_hide_controls3], "%s", "ABLE TO RESTORE SETTING"); + sprintf(lines[strings_ingame_config_android_hide_controls3], "%s", "ABLE TO RESTORE SETTING."); sprintf(lines[strings_ingame_config_extras_music_player], "%s", "MUSIC PLAYER"); sprintf(lines[strings_ingame_config_extras_sound_player], "%s", "SFX PLAYER"); sprintf(lines[strings_ingame_config_extras_art_gallery], "%s", "ART GALLERY"); - sprintf(lines[strings_ingame_passwordinvalid], "%s", "PASSWORD INVALID"); + sprintf(lines[strings_ingame_passwordinvalid], "%s", "INVALID PASSWORD"); sprintf(lines[strings_ingame_pressstart], "%s", "PRESS START"); sprintf(lines[strings_ingame_engineerror], "%s", "ROCKBOT ENGINE ERROR"); sprintf(lines[strings_ingame_nogames], "%s", "NO GAMES AVAILABLE"); @@ -454,7 +756,7 @@ namespace format_v4 { sprintf(lines[strings_ingame_config_audio_volume_sfx], "%s", "SFX VOLUME"); sprintf(lines[strings_ingame_config_enabled], "%s", "ENABLED"); sprintf(lines[strings_ingame_config_disabled], "%s", "DISABLED"); - sprintf(lines[strings_ingame_ready_message], "%s", "GET READY!!"); + sprintf(lines[strings_ingame_ready_message], "%s", "MISSION STARTED!"); sprintf(lines[strings_ingame_config_select_player], "%s", "< SELECT PLAYER >"); sprintf(lines[strings_ingame_config_press_start_to_select], "%s", "PRESS START TO SELECT"); sprintf(lines[strings_ingame_manual], "%s", "MANUAL"); @@ -483,38 +785,109 @@ namespace format_v4 { sprintf(lines[string_stage_select_stage], "%s", "STAGE:"); sprintf(lines[string_stage_select_lair_of], "%s", "LAIR OF:"); - sprintf(lines[string_stage_select_enter_stage], "%s", "[ENTER STAGE]"); + sprintf(lines[string_stage_select_enter_stage], "%s", "[ENTER MISSION]"); sprintf(lines[string_stage_select_unavailable], "%s", "[UNAVAILABLE IN DEMO]"); sprintf(lines[strings_config_return], "%s", "RETURN"); sprintf(lines[string_intro_upperland_studios], "%s", "HOMEBREW GAMES TEAM"); sprintf(lines[string_intro_presents], "%s", "PRESENTS"); sprintf(lines[string_intro_engine1], "%s", "-- ROCKBOT ENGINE --"); - sprintf(lines[string_intro_engine2], "%s", "GAME BUILT USING A GAME ENGINE"); - sprintf(lines[string_intro_engine3], "%s", "FROM UPPERLAND STUDIOS, CREATED AS"); - sprintf(lines[string_intro_engine4], "%s", "HOMEBREW AND UNPROFESSIONAL."); - sprintf(lines[string_intro_engine5], "%s", "SOURCE-CODE LICENSED UNDER"); - sprintf(lines[string_intro_engine6], "%s", "GPL AND FREELY DISTRIBUTABLE."); - sprintf(lines[string_intro_engine7], "%s", "GAME CONTENT IS UNDER DIFFERENT"); - sprintf(lines[string_intro_engine8], "%s", "LICENCES BY ITS RESPECTIVE CREATORS."); - - sprintf(lines[string_intro_demo_warning_title], "%s", "-- FREE VERSION WARNING --"); - sprintf(lines[string_intro_demo_warning1], "%s", "YOU ARE PLAYING THE FREE VERSION."); - sprintf(lines[string_intro_demo_warning2], "%s", "THIS CONTAINS ONLY A FEW STAGES AND"); - sprintf(lines[string_intro_demo_warning3], "%s", "LACKS SOME FEATURES LIKE CHARACTER"); - sprintf(lines[string_intro_demo_warning4], "%s", "SELECTION. THE FULL VERSION"); - sprintf(lines[string_intro_demo_warning5], "%s", "[INCOMPLETE] CAN BE OBTAINED"); - sprintf(lines[string_intro_demo_warning6], "%s", "IN THE GAME'S GOGOLE+ COMMUNITY."); - sprintf(lines[string_intro_demo_warning7], "%s", "THERE IS NO DATA FOR DEVELOPMENT"); - sprintf(lines[string_intro_demo_warning8], "%s", "BEING FINISHED, AS THIS IS HOMEBREW"); - sprintf(lines[string_intro_demo_warning9], "%s", "SOFTWARE, BEING DEVELOPED AT"); - sprintf(lines[string_intro_demo_warning10], "%s", "PERSONAL FREE TIME."); - sprintf(lines[string_intro_demo_warning11], "%s", "HAVE FUN WITH THE DEMONSTRATION!"); + sprintf(lines[string_intro_engine2], "%s", "THIS GAME USES ORIGINAL CODE"); + sprintf(lines[string_intro_engine3], "%s", "AND ART ASSETS CREATED FROM"); + sprintf(lines[string_intro_engine4], "%s", "SCRATCH. ANY SIMILARITIES"); + sprintf(lines[string_intro_engine5], "%s", "ARE A WAY OF TRIBUTE"); + sprintf(lines[string_intro_engine6], "%s", "TO OLD GAMES OR A MISTAKE."); + sprintf(lines[string_intro_engine7], "%s", "ROCKBOT AND UPPERLAND ARE NOT"); + sprintf(lines[string_intro_engine8], "%s", "RELATED TO ANY COMPANY OR GAMES."); + sprintf(lines[string_intro_engine9], "%s", "GOOGLE REMOVED ROCKBOT DUE TO"); + sprintf(lines[string_intro_engine10], "%s", "USERS REPORTING IT AS"); + sprintf(lines[string_intro_engine11], "%s", "'IMPERSONATING' OTHER GAME."); + + sprintf(lines[string_intro_demo_warning_title], "%s", "-- WARNING HOMEBREW --"); + sprintf(lines[string_intro_demo_warning1], "%s", "THIS IS A HOMEBREW GAME, MADE BY A FEW"); + sprintf(lines[string_intro_demo_warning2], "%s", "PEOPLE, WITHOUT MONETARY GAINS AND"); + sprintf(lines[string_intro_demo_warning3], "%s", "DURING FREE TIME FROM DAILY JOBS."); + sprintf(lines[string_intro_demo_warning4], "%s", "WE MAKE GAMES FOR YOU TO HAVE FUN, "); + sprintf(lines[string_intro_demo_warning5], "%s", "BUT STILL SOME PEOPLE HATE US."); + sprintf(lines[string_intro_demo_warning6], "%s", "DON'T BE A TROLL. DO NOT REPORT THE"); + sprintf(lines[string_intro_demo_warning7], "%s", "APP BECAUSE IT LOOKS ALIKE. "); + sprintf(lines[string_intro_demo_warning8], "%s", "READ FAQ IN OUT SITE FIRST!"); + sprintf(lines[string_intro_demo_warning9], "%s", "OLD VERSIONS CAN BE OBTAINED AT:"); + sprintf(lines[string_intro_demo_warning10], "%s", "HTTPS://ROCKBOT.UPPERLAND.NET"); + sprintf(lines[string_intro_demo_warning11], "%s", ""); + + sprintf(lines[string_press_key_or_button], "%s", "PRESS A KEY/BUTTON TO CONTINUE."); sprintf(lines[STRING_ENDING_CONCEPT], "%s", "CONCEPT"); sprintf(lines[STRING_ENDING_DESIGN], "%s", "DESIGN"); + sprintf(lines[strings_config_android_screencontrolsspacing], "%s", "BUTTON SPACING"); + sprintf(lines[strings_config_android_audiobuffersize], "%s", "AUDIO BUFFER SIZE"); + sprintf(lines[strings_config_android_audiobuffersize_VERY_SMALL], "%s", "VERY SMALL"); + sprintf(lines[strings_config_android_audiobuffersize_SMALL], "%s", "SMALL"); + sprintf(lines[strings_config_android_audiobuffersize_MEDIUM], "%s", "MEDIUM"); + sprintf(lines[strings_config_android_audiobuffersize_BIG], "%s", "BIG"); + sprintf(lines[strings_config_android_audiobuffersize_DESCRIPTION], "%s", "INCREASE VALUE IF AUDIO IS CHOPPY"); + + sprintf(lines[strings_menu_item_CHEATS], "%s", "CHEATS"); + sprintf(lines[strings_menu_item_CHEATS_INVENCIBLE], "%s", "INVENCIBLE"); + sprintf(lines[strings_menu_item_CHEATS_ALLBEATEN], "%s", "ALL BEATEN"); + sprintf(lines[strings_menu_item_CHEATS_CHARACTER], "%s", "CHARACTER"); + + sprintf(lines[strings_menu_pick_save_slot_PICK_OPTION], "%s", "PLEASE SELECT SAVE SLOT"); + sprintf(lines[strings_menu_pick_save_slot_NEW_GAME], "%s", "CREATE NEW GAME"); + sprintf(lines[strings_menu_pick_save_slot_LOAD_GAME], "%s", "LOAD GAME FILE"); + sprintf(lines[strings_menu_pick_save_slot_NO_SAVE], "%s", "- NO SAVE FILE -"); + + sprintf(lines[strings_ending_NEW_CHARACTERS_AVAILABLE], "%s", "NEW CHARACTERS AVAILABLE"); + sprintf(lines[strings_ending_NEW_CHARACTERS_PRESS_TO_CONTINUE], "%s", "PRESS TO CONTINUE"); + + + sprintf(lines[strings_weapon_name_COIL], "%s", "FROG COIL"); + sprintf(lines[strings_weapon_name_JET], "%s", "EAGLE JET"); + sprintf(lines[strings_weapon_name_ETANK], "%s", "HP CRYSTAL"); + sprintf(lines[strings_weapon_name_WTANK], "%s", "MP CRYSTAL"); + sprintf(lines[strings_weapon_name_STANK], "%s", "SPECIAL CRYSTAL"); + + sprintf(lines[strings_weapon_menu_CHANGE_WEAPON], "%s", "CHANGE WEAPON/ITEM"); + sprintf(lines[strings_weapon_menu_TANKS], "%s", "HEALTH CRYSTALS"); + sprintf(lines[strings_weapon_menu_BOOTS], "%s", "BOOTS"); + sprintf(lines[strings_weapon_menu_ARMOR], "%s", "ARMOR"); + sprintf(lines[strings_weapon_menu_WEAPON], "%s", "BEAM"); + sprintf(lines[strings_weapon_menu_PART_NORMAL], "%s", "NORMAL"); + sprintf(lines[strings_weapon_menu_PART_ENHANCED], "%s", "IMPROVED"); + + sprintf(lines[strings_ingame_config_audio_use_old_music], "%s", "USE OLD MUSIC"); + + sprintf(lines[strings_about_site], "%s", "- SITE -"); + sprintf(lines[strings_about_bugs], "%s", "- SUPPORT -"); + sprintf(lines[strings_about_twitter], "%s", "- TWITTER -"); + sprintf(lines[strings_about_facebook], "%s", "- FACEBOOK -"); + + sprintf(lines[strings_stage_select_pick_mission], "%s", "PICK A MISSION"); + sprintf(lines[strings_stage_select_boss], "%s", "BOSS:"); + sprintf(lines[strings_stage_select_select], "%s", "SELECT"); + + sprintf(lines[strings_config_android_use_mod_music], "%s", "USE CHIPTUNE MUSIC"); + sprintf(lines[strings_config_android_use_mod_music_warning], "%s", "MAY CAUSE AUDIO ISSUES"); + + sprintf(lines[strings_weapon_selected], "%s", "WEAPON"); + + sprintf(lines[strings_game_engine_credits_title], "%s", "GAME ENGINE CREDITS"); + sprintf(lines[strings_game_engine_credits_planning], "%s", "PLANNING"); + sprintf(lines[strings_game_engine_credits_design], "%s", "DESIGN"); + sprintf(lines[strings_game_engine_credits_dialogs], "%s", "DIALOGS"); + sprintf(lines[strings_game_engine_credits_tests], "%s", "TESTS AND REVIEW"); + sprintf(lines[strings_game_engine_credits_illustration], "%s", "ILLUSTRATION"); + sprintf(lines[strings_game_engine_credits_music], "%s", "MUSIC"); + sprintf(lines[strings_game_engine_credits_translation], "%s", "TRANSLATION"); + sprintf(lines[strings_game_engine_credits_programming], "%s", "PROGRAMMING"); + sprintf(lines[strings_game_engine_credits_ports], "%s", "PORTING"); + sprintf(lines[strings_game_engine_credits_special_thanks], "%s", "SPECIAL THANKS"); + sprintf(lines[strings_game_engine_credits_dev_tools], "%s", "DEVLOPMENT TOOLS"); + sprintf(lines[strings_game_engine_credits_presented_by], "%s", "PRESENTED BY"); + } @@ -523,7 +896,6 @@ namespace format_v4 { std::vector res; for (int i=0; i fio_strings::get_game_engine_credits() + { + std::vector credits_list; + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_title) + " -"); + credits_list.push_back(""); + credits_list.push_back(""); + credits_list.push_back(""); + + + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_planning) + " -"); + credits_list.push_back("IURI FIEDORUK"); + credits_list.push_back(""); + credits_list.push_back(""); + credits_list.push_back(""); + + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_design) + " -"); + credits_list.push_back("IURI FIEDORUK"); + credits_list.push_back("ARISMEIRE KUMMER SILVA FIEDORUK"); + credits_list.push_back("BOBERATU"); + credits_list.push_back("HFBN2"); + credits_list.push_back("CAPT. CHRIS AND KB"); + credits_list.push_back("SURT.OPENGAMEART"); + credits_list.push_back("AVERAGE-HANZO.DEVIANTART"); + credits_list.push_back("FUNKY96.DEVIANTART"); + credits_list.push_back(""); + credits_list.push_back(""); + credits_list.push_back(""); + + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_dialogs) + " -"); + credits_list.push_back("IURI FIEDORUK"); + credits_list.push_back("NELSON ROSENBERG"); + credits_list.push_back(""); + credits_list.push_back(""); + credits_list.push_back(""); + + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_illustration) + " -"); + credits_list.push_back("ARISMEIRE KUMMER SILVA FIEDORUK"); + credits_list.push_back("IURI FIEDORUK"); + credits_list.push_back(""); + credits_list.push_back(""); + credits_list.push_back(""); + + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_music) + " -"); + credits_list.push_back("MODARCHIVE.ORG"); + credits_list.push_back("FIREAGE"); + credits_list.push_back("SOLARIS"); + credits_list.push_back("LEON/EXCESS"); + credits_list.push_back("DIOMATIC"); + credits_list.push_back("JASON"); + credits_list.push_back("DEADLOCK/EXLSD"); + credits_list.push_back("4MAT"); + credits_list.push_back("ZANAZAC"); + credits_list.push_back("AMEGA INDUSTRIESQ"); + credits_list.push_back("DEATH ADDR"); + credits_list.push_back("TOBBX"); + credits_list.push_back("HYOCHAN"); + credits_list.push_back("DR.BULLY/MAJIC12"); + credits_list.push_back(""); + credits_list.push_back(""); + credits_list.push_back(""); + + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_translation) + " -"); + credits_list.push_back("DOUBLE JAY GREEN"); + credits_list.push_back(""); + credits_list.push_back(""); + credits_list.push_back(""); + + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_programming) + " -"); + credits_list.push_back("IURI FIEDORUK"); + credits_list.push_back("FARLEY KNIGHT"); + credits_list.push_back(""); + credits_list.push_back(""); + credits_list.push_back(""); + + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_ports) + " -"); + credits_list.push_back("DINGUX: SHIN-NIL"); + credits_list.push_back("PANDORA: SIGMA NL"); + credits_list.push_back("PS2: RAGNAROK2040"); + credits_list.push_back("PS2: WOON-YUNG LIU"); + credits_list.push_back("PS2: SP193"); + credits_list.push_back("ANDROID: PELYA"); + credits_list.push_back(""); + credits_list.push_back(""); + credits_list.push_back(""); + + if (SharedData::get_instance()->current_language == LANGUAGE_PORTUGUESE) { + credits_list.push_back("- REVISÃO E TESTES -"); + } else { + credits_list.push_back("- REVIEW & TESTING -"); + } + credits_list.push_back("ARISMEIRE KUMMER SILVA FIEDORUK"); + credits_list.push_back("NELSON ROSENBERG"); + credits_list.push_back("ANDREW PRZELUCKI"); + credits_list.push_back("YAMA DROID"); + credits_list.push_back("DARK GAMERDUB"); + credits_list.push_back(""); + credits_list.push_back(""); + + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_special_thanks) + " -"); + credits_list.push_back("FELIPE ZACANI (FPS)"); + credits_list.push_back("FREE SDK DEVELOPERS"); + credits_list.push_back("DEVIANTART.COM"); + credits_list.push_back("PIXELJOINT.COM"); + credits_list.push_back("OPENGAMEART.ORG"); + credits_list.push_back("VENOM"); + credits_list.push_back("JERONIMO"); + credits_list.push_back(""); + credits_list.push_back(""); + credits_list.push_back(""); + + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_dev_tools) + " -"); + credits_list.push_back("LIBSDL"); + credits_list.push_back("DIGIA QT"); + credits_list.push_back("GCC G+"); + credits_list.push_back("UBUNTU LINUX"); + credits_list.push_back("MINT LINUX"); + credits_list.push_back("GIMP EDITOR"); + credits_list.push_back("PAINT TOOL SAI"); + credits_list.push_back("COREL DRAW"); + credits_list.push_back("SIMPLE SCREEN RECORD"); + credits_list.push_back("AUDACIOUS PLAYER"); + credits_list.push_back("AUDACITY EDITOR"); + credits_list.push_back("BFXR.NET"); + + for (int i=0; i<20; i++) { + credits_list.push_back(""); + } + credits_list.push_back("- " + strings_map::get_instance()->get_ingame_string(strings_game_engine_credits_presented_by) + " -"); + credits_list.push_back("UPPERLAND STUDIOS"); + + return credits_list; + } + + void fio_strings::log_error(std::string error) + { + std::ofstream outfile; + outfile.open(FILEPATH + "/errors.log", std::ios_base::app); // append instead of overwrite + outfile << error << std::endl; + outfile.close(); + } + void fio_strings::create_default_common_strings() { @@ -651,12 +1163,10 @@ namespace format_v4 { std::vector fio_strings::get_common_strings(int language, bool convert_symbols) { if (FILEPATH == "") { - std::cout << "FIO_STRINGS - NO FILEPATH count: " << common_strings_list.size() << std::endl; return common_strings_list; } if (common_strings_list.size() == 0) { - std::cout << "FIO_STRINGS - LOAD count: " << common_strings_list.size() << std::endl; common_strings_list = load_game_strings_from_file(get_common_strings_filename(language), language, convert_symbols); } return common_strings_list; @@ -671,14 +1181,13 @@ namespace format_v4 { std::ifstream fp(filename.c_str()); if (!fp.is_open()) { - std::cout << "[WARNING] file_io::get_string_list_from_file - file '" << filename << "' not found." << std::endl; #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "### ROCKBOT2 ###", "### ERROR.fio_strings::get_string_list_from_file file [%s] not found. ###", filename.c_str()); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "### ERROR.fio_strings::get_string_list_from_file file [%s] not found. ###", filename.c_str()); #endif return res; } else { #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "### ROCKBOT2 ###", "### ERROR.fio_strings::get_string_list_from_file file [%s] loaded. ###", filename.c_str()); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "### ERROR.fio_strings::get_string_list_from_file file [%s] loaded. ###", filename.c_str()); #endif } @@ -686,7 +1195,7 @@ namespace format_v4 { while (getline(fp, str)) { #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "### ROCKBOT2 ###", "### ERROR.fio_strings::get_string_list_from_file::read.str[%s], res.size[%d]. ###", str.c_str(), res.size()); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "### ERROR.fio_strings::get_string_list_from_file::read.str[%s], res.size[%d]. ###", str.c_str(), res.size()); #endif if (str.length() > 0) { @@ -698,7 +1207,7 @@ namespace format_v4 { fp.close(); #ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "### ROCKBOT2 ###", "### ERROR.fio_strings::get_string_list_from_file res.size[%d]. ###", res.size()); + __android_log_print(ANDROID_LOG_INFO, "###ROCKBOT###", "### ERROR.fio_strings::get_string_list_from_file res.size[%d]. ###", res.size()); #endif return res; @@ -706,59 +1215,21 @@ namespace format_v4 { - std::vector fio_strings::get_string_list_from_scene_text_file(int text_scene_n, int language) + std::vector fio_strings::get_string_list_from_scene_text_file(int text_scene_n) { std::vector text_list; char file_chr[255]; - /* - std::vector res; - filename = StringUtils::clean_filename(filename); - std::ifstream fp(filename.c_str()); - - if (!fp.is_open()) { - std::cout << "[WARNING] file_io::load_game_strings - file '" << filename << "' not found, will generate default..." << std::endl; - if (filename == get_game_strings_filename(language)) { - create_default_ingame_strings(); - } else if (filename == get_common_strings_filename(language)) { - create_default_common_strings(); - } - fp.open(filename.c_str(), std::ios::in | std::ios::binary | std::ios::app); - if (!fp.is_open()) { - std::cout << "[WARNING] file_io::load_game_strings - Critical error, can't open' '" << filename << "' for reading." << std::endl; - } - } - - std::string str; - while (getline(fp, str)) { - if (str.length() > 0) { - StringUtils::replace_all(str, "\n", ""); - StringUtils::replace_all(str, "\r", ""); - std::string str2 = "\\xC9"; - if (str.find(str2) != -1) { - str.replace(str.find(str2), str2.length(),"é"); - } - StringUtils::replace_all(str, "\\xC9", "é"); - } - res.push_back(str); - } - - - fp.close(); - */ - - sprintf(file_chr, "%d.txt", text_scene_n); - std::string filename = FILEPATH + "scenes/text/" + get_language_filename_prefix(language) + "/" + std::string(file_chr); + std::string filename = FILEPATH + "scenes/text/" + get_language_filename_prefix(SharedData::get_instance()->current_language) + "/" + std::string(file_chr); + std::cout << "FIO:_STRINGS::get_string_list_from_scene_text_file[" << filename << "]" << std::endl; filename = StringUtils::clean_filename(filename); // if does not have language, try default english - if (!file_exists(filename) && language != LANGUAGE_ENGLISH) { - std::cout << ">>>>>>>>>>>>>>>>>>>>>>>>>>>> try another language" << std::endl; + if (!file_exists(filename) && SharedData::get_instance()->current_language != LANGUAGE_ENGLISH) { filename = FILEPATH + "scenes/text/" + get_language_filename_prefix(LANGUAGE_ENGLISH) + "/" + std::string(file_chr); filename = StringUtils::clean_filename(filename); } if (file_exists(filename)) { - //text_list = get_string_list_from_file(filename); std::ifstream fp(filename.c_str()); std::string str; while (getline(fp, str)) { @@ -771,16 +1242,10 @@ namespace format_v4 { } StringUtils::replace_all(str, "\\xC9", "é"); } - //std::cout << "load_game_strings_from_file[" << str << "]" << std::endl; text_list.push_back(str); } } - for (int i=0; i #include -#include "file/v4/file_strings.h" +#include "v4/file_strings.h" class fio_strings { @@ -47,11 +47,14 @@ class fio_strings // === scenes string files === // - std::vector get_string_list_from_scene_text_file(int text_scene_n, int language); + std::vector get_string_list_from_scene_text_file(int text_scene_n); void write_scene_text_file(int text_scene_n, std::vector list, int language); std::string get_language_filename_prefix(int language); + std::vector get_game_engine_credits(); + + void log_error(std::string error); private: // === GAME STRINGS === // diff --git a/file/format.h b/file/format.h index 1f4b0cfa..2c7c566a 100644 --- a/file/format.h +++ b/file/format.h @@ -8,11 +8,11 @@ #include "../file/format/st_common.h" #include "../file/format/st_hitPoints.h" -#include "file/v4/file_stage_v4.h" -#include "file/v4/file_map.h" -#include "file/v4/file_game_v4.h" -#include "file/v4/file_scene_v4.h" -#include "file/v4/file_anim_block.h" +#include "v4/file_stage_v4.h" +#include "v4/file_map.h" +#include "v4/file_game_v4.h" +#include "v4/file_scene_v4.h" +#include "v4/file_anim_block.h" #endif // FILE_FORMAT_H diff --git a/file/format/st_common.h b/file/format/st_common.h index f1297e24..9ca06e2b 100644 --- a/file/format/st_common.h +++ b/file/format/st_common.h @@ -7,7 +7,7 @@ #include #include -#include "defines.h" +#include "../../defines.h" /** * @brief @@ -59,10 +59,6 @@ struct st_position { -/** - * @brief - * - */ struct st_float_position { float x; float y; @@ -70,34 +66,19 @@ struct st_float_position { x = 0.0; y = 0.0; } -/** - * @brief - * - * @param setX - * @param setY - */ - st_float_position (float setX, float setY) { + + st_float_position(float setX, float setY) { x = setX; y = setY; } - /** - * @brief - * - * @param set_pt - * @return st_position &operator - */ + st_float_position& operator=(const st_position &set_pt) { x = set_pt.x; y = set_pt.y; return *this; } - /** - * @brief - * - * @param comp_pt - * @return bool operator - */ + bool operator==(const st_position &comp_pt) const { if (x == comp_pt.x && y == comp_pt.y) { @@ -105,24 +86,14 @@ struct st_float_position { } return false; } - /** - * @brief - * - * @param set_pt - * @return st_position &operator - */ + st_float_position& operator=(const st_float_position &set_pt) { x = set_pt.x; y = set_pt.y; return *this; } - /** - * @brief - * - * @param comp_pt - * @return bool operator - */ + bool operator==(const st_float_position &comp_pt) const { if (x == comp_pt.x && y == comp_pt.y) { @@ -158,6 +129,27 @@ struct st_size { }; +struct st_float_size { + float width; + float height; + st_float_size() + { + width = 0; + height = 0; + } +/** + * @brief + * + * @param w + * @param h + */ + st_float_size(float w, float h) + { + width = w; + height = h; + } +}; + /** * @brief * @@ -196,7 +188,7 @@ struct st_rectangle { } bool operator!=(const st_rectangle &comp_pt) const { - if (x != comp_pt.x || y != comp_pt.y || w != comp_pt.w && h != comp_pt.h) { + if (x != comp_pt.x || y != comp_pt.y || (w != comp_pt.w && h != comp_pt.h)) { return true; } return false; @@ -230,7 +222,6 @@ struct graphicsLib_gSurface { private: SDL_Surface *gSurface; - SDL_Color get_pixel_color(Uint32 pixel) const { if (!gSurface) { return SDL_Color(); @@ -252,20 +243,10 @@ struct graphicsLib_gSurface { st_color get_point_color(int x, int y) { Uint32 pixel = this->get_pixel(x, y); SDL_Color px_color = get_pixel_color(pixel); - /* - if (pixel != 0) { - std::cout << "pixel[" << pixel << "]: [" << (int)px_color.r << "][" << (int)px_color.g << "][" << (int)px_color.b << "]" << std::endl; - } - */ return st_color((int)px_color.r, (int)px_color.g, (int)px_color.b); } void set_point_color(int set_x, int set_y, int set_r, int set_g, int set_b) { - /* - if (set_r != 0 && set_g != 0 && set_b != 0) { - std::cout << "set_point_color[" << set_x << "][" << set_y << "]: [" << set_r << "][" << set_g << "][" << set_b << "]" << std::endl; - } - */ if (gSurface == NULL || gSurface->format == NULL) { return; } @@ -295,11 +276,12 @@ struct graphicsLib_gSurface { show_debug = false; is_rle_enabled = false; } + // copy CONSTRUCTOR graphicsLib_gSurface(const graphicsLib_gSurface &original) { - if (original.gSurface == NULL) { + if (original.width == 0 || original.height == 0) { gSurface = NULL; width = 0; height = 0; @@ -332,8 +314,7 @@ struct graphicsLib_gSurface { // assign constructor graphicsLib_gSurface& operator=(const graphicsLib_gSurface& original) { - - if (original.gSurface == NULL) { + if (original.width == 0 || original.height == 0) { gSurface = NULL; width = 0; height = 0; @@ -360,11 +341,11 @@ struct graphicsLib_gSurface { } is_rle_enabled = original.is_rle_enabled; } + return *this; } ~graphicsLib_gSurface() { - setbuf(stdout, NULL); freeGraphic(); colorkey1_points.clear(); colorkey2_points.clear(); @@ -389,30 +370,11 @@ struct graphicsLib_gSurface { std::vector get_color_points(int r, int g, int b) { std::vector res; - /* - if (show_debug) { - std::cout << ">>>>>> get_color_points::START <<<<<<" << std::endl; - } - */ - for (int tolerance=0; tolerance<=6; tolerance++) { for (Sint16 y=0; yh; y++) { for (Sint16 x=0; xw; x++) { Uint32 pixel = get_pixel(x, y); SDL_Color pixel_color = get_pixel_color(pixel); - - - //std::cout << "r[" << (int)r << "], point.r[" << (int)pixel_color.r << ", g[" << (int)g << "], point.g[" << (int)pixel_color.g << ", b[" << (int)b << "], point.b[" << (int)pixel_color.b << "]" << std::endl; - - // ignore colorkey [74][125][123]/[75][125][125] - /* - if (!((int)pixel_color.r == 0 && (int)pixel_color.g == 0 && (int)pixel_color.b == 0)) { - if ((int)pixel_color.r != 74 || (int)pixel_color.g != 125 || (int)pixel_color.b != 123) { - std::cout << "px[" << x << "][" << y << "]: [" << (int)pixel_color.r << "][" << (int)pixel_color.g << "][" << (int)pixel_color.b << "]" << std::endl; - } - } - */ - if (is_on_tolerance(pixel_color, r, g, b, tolerance) == true) { st_position pos = st_position(x, y); res.push_back(pos); @@ -424,8 +386,6 @@ struct graphicsLib_gSurface { } } - //std::cout << ">>>>>> get_color_points::END <<<<<<" << std::endl; - return res; } @@ -444,9 +404,7 @@ struct graphicsLib_gSurface { void set_surface(SDL_Surface *surface) { // free old surface memory if (gSurface != NULL) { - try { - SDL_FreeSurface(gSurface); - } catch (std::exception e) {} + SDL_FreeSurface(gSurface); } if (surface != NULL) { gSurface = surface; @@ -463,29 +421,21 @@ struct graphicsLib_gSurface { } if (key_n < 0 || key_n > 3) { // we have only 3 color-keys, ignore everything else - if (show_debug == true) { - std::cout << "change_colorkey_color LEAVE #1, key_n: " << (int)key_n << std::endl; - } return; } Uint32 new_color_n = SDL_MapRGB(gSurface->format, new_color.r, new_color.g, new_color.b); - //std::cout << "change_colorkey_color, key_n[" << (int)key_n << "], new_color_n[" << (int)new_color_n << "]" << std::endl; - - - //std::cout << "change_colorkey_color - colorkey1_points.size[" << colorkey1_points.size() << "], colorkey2_points.size[" << colorkey2_points.size() << "], colorkey3_points.size[" << colorkey3_points.size() << "]" << std::endl; - if (key_n == 0) { - for (int i=0; i 0 && width <= 3200) { // 3200 check is to handle invalid projectiles (trash in memory) if (video_screen == false && gSurface != NULL) { - //std::cout << "GSURFACE::freeGraphic - w: " << width << std::endl; width = -1; height = -1; SDL_FreeSurface(gSurface); @@ -516,13 +465,12 @@ struct graphicsLib_gSurface { bool is_null() { if (width <= 0 || height <= 0) { - //std::cout << "GSURFACE - invalid size[" << width << "][" << height << "]" << std::endl; return true; } if (gSurface == NULL) { - //std::cout << "GSURFACE - SDL-Surface is NULL" << std::endl; return true; } + return false; } diff --git a/file/v4/file_anim_block.h b/file/v4/file_anim_block.h index 4f508bb2..8ea35c19 100644 --- a/file/v4/file_anim_block.h +++ b/file/v4/file_anim_block.h @@ -1,7 +1,7 @@ #ifndef FILE_ANIM_BLOCK_H #define FILE_ANIM_BLOCK_H -#include "defines.h" +#include "../../defines.h" namespace format_v4 { struct file_map_anim_block { diff --git a/file/v4/file_castlepoints.h b/file/v4/file_castlepoints.h deleted file mode 100644 index d2745624..00000000 --- a/file/v4/file_castlepoints.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef CASTLEPOINTS_H -#define CASTLEPOINTS_H - -#include "defines.h" -#include "file/format/st_common.h" - -namespace format_v4 { - struct st_file_castle_ponts { - st_position points[CASTLE_STAGES_MAX]; - }; -} - - -#endif // CASTLEPOINTS_H diff --git a/file/v4/file_config_old.h b/file/v4/file_config_old.h new file mode 100644 index 00000000..e8e45e14 --- /dev/null +++ b/file/v4/file_config_old.h @@ -0,0 +1,367 @@ +#ifndef FILE_CONFIG_OLD_H +#define FILE_CONFIG_OLD_H + +#include "../format/st_common.h" + +namespace format_v4_old { + + + struct st_game_config { + bool sound_enabled; + bool video_fullscreen; + Sint8 video_filter; + E_INPUT_TYPES input_type; // if keyboard or joystick + E_INPUT_MODES input_mode; // inf directional is joypad-digital, analog sick or hat + E_PLATFORM platform; // if changed, must reset config to default + int keys_codes[BTN_COUNT]; // number indicator for the keyboard-keys + st_input_button_config button_codes[BTN_COUNT]; // number indicator for the joystick-button-keys + + bool game_finished; // stores if game was finished, so we can show more options to player + Uint8 selected_input_device; + Uint8 selected_language; + bool turbo_mode; + bool auto_charge_mode; + Uint8 volume_sfx; + Uint8 volume_music; + bool android_touch_controls_hide; // define if touch controls must be hidden + Uint8 android_touch_controls_size; // for android, size of the on-screen controls 0 = small, 1 = normal, 2 = big + Sint8 wii_joystick_type; // for wii to define between wiimote, classic, gamecube, etc + Uint8 playstation2_video_mode; // for playstation 2, define screen resolution setting + Uint8 graphics_performance_mode; // 0 => lowend, 1=> normal, 2 => highend + bool first_run; + + void get_default_keys(int (&keys_codes_copy)[BTN_COUNT]) { +#ifdef PLAYSTATION2 + for (int i=0; i