]> git.mxchange.org Git - quix0rs-blobwars.git/commitdiff
1.17 Medal Support
authorStephen Sweeney <steve@reddwarf.(none)>
Mon, 8 Mar 2010 08:29:27 +0000 (08:29 +0000)
committerStephen Sweeney <steve@reddwarf.(none)>
Mon, 8 Mar 2010 08:29:27 +0000 (08:29 +0000)
206 files changed:
gfx/main/CircuitBoard.jpg [changed mode: 0644->0755]
gfx/main/alienDevice.png [changed mode: 0644->0755]
gfx/main/areaClear.png [changed mode: 0644->0755]
gfx/main/areaClearBackGround.jpg [changed mode: 0644->0755]
gfx/main/areaPerfect.png [changed mode: 0644->0755]
gfx/main/cheats.png [changed mode: 0644->0755]
gfx/main/creditsBack.png [changed mode: 0644->0755]
gfx/main/creditsDevice.png [changed mode: 0644->0755]
gfx/main/cursor1.png [changed mode: 0644->0755]
gfx/main/cursor2.png [changed mode: 0644->0755]
gfx/main/cursor3.png [changed mode: 0644->0755]
gfx/main/cursor4.png [changed mode: 0644->0755]
gfx/main/cursor5.png [changed mode: 0644->0755]
gfx/main/cursor6.png [changed mode: 0644->0755]
gfx/main/gameover.png [changed mode: 0644->0755]
gfx/main/hubArrowLeft.png [changed mode: 0644->0755]
gfx/main/hubArrowLeft2.png [changed mode: 0644->0755]
gfx/main/hubArrowRight.png [changed mode: 0644->0755]
gfx/main/hubArrowRight2.png [changed mode: 0644->0755]
gfx/main/hubIcon1.png [changed mode: 0644->0755]
gfx/main/hubIcon2.png [changed mode: 0644->0755]
gfx/main/hubIcon3.png [changed mode: 0644->0755]
gfx/main/hubIcon4.png [changed mode: 0644->0755]
gfx/main/hubIcon5.png [changed mode: 0644->0755]
gfx/main/hubIcon6.png [changed mode: 0644->0755]
gfx/main/joystickConfig.png [changed mode: 0644->0755]
gfx/main/keyConfig.png [changed mode: 0644->0755]
gfx/main/licensePic.png [changed mode: 0644->0755]
gfx/main/mapBackground.png [changed mode: 0644->0755]
gfx/main/options.png [changed mode: 0644->0755]
gfx/main/optionsBackground.png [changed mode: 0644->0755]
gfx/main/prlogo.gif [changed mode: 0644->0755]
gfx/main/title.png [changed mode: 0644->0755]
gfx/main/worldMap.jpg [changed mode: 0644->0755]
locale/ca.mo
locale/nl.mo
makefile [changed mode: 0644->0755]
makefile.windows [changed mode: 0644->0755]
src/CAudio.cpp [changed mode: 0644->0755]
src/CAudio.h [changed mode: 0644->0755]
src/CBoss.cpp [changed mode: 0644->0755]
src/CBoss.h [changed mode: 0644->0755]
src/CCollision.cpp [changed mode: 0644->0755]
src/CCollision.h [changed mode: 0644->0755]
src/CConfig.cpp [changed mode: 0644->0755]
src/CConfig.h [changed mode: 0644->0755]
src/CCutscene.cpp [changed mode: 0644->0755]
src/CCutscene.h [changed mode: 0644->0755]
src/CData.cpp [changed mode: 0644->0755]
src/CData.h [changed mode: 0644->0755]
src/CEffect.cpp [changed mode: 0644->0755]
src/CEffect.h [changed mode: 0644->0755]
src/CEngine.cpp [changed mode: 0644->0755]
src/CEngine.h [changed mode: 0644->0755]
src/CEntity.cpp [changed mode: 0644->0755]
src/CEntity.h [changed mode: 0644->0755]
src/CFileData.cpp [changed mode: 0644->0755]
src/CFileData.h [changed mode: 0644->0755]
src/CGame.cpp [changed mode: 0644->0755]
src/CGame.h [changed mode: 0644->0755]
src/CGameData.cpp [changed mode: 0644->0755]
src/CGameData.h [changed mode: 0644->0755]
src/CGameObject.cpp [changed mode: 0644->0755]
src/CGameObject.h [changed mode: 0644->0755]
src/CGraphics.cpp [changed mode: 0644->0755]
src/CGraphics.h [changed mode: 0644->0755]
src/CHashtable.cpp [changed mode: 0644->0755]
src/CHashtable.h [changed mode: 0644->0755]
src/CHub.cpp [changed mode: 0644->0755]
src/CHub.h [changed mode: 0644->0755]
src/CJoystick.cpp [changed mode: 0644->0755]
src/CJoystick.h [changed mode: 0644->0755]
src/CKeyboard.cpp [changed mode: 0644->0755]
src/CKeyboard.h [changed mode: 0644->0755]
src/CLineDef.cpp [changed mode: 0644->0755]
src/CLineDef.h [changed mode: 0644->0755]
src/CList.cpp [changed mode: 0644->0755]
src/CList.h [changed mode: 0644->0755]
src/CMap.cpp [changed mode: 0644->0755]
src/CMap.h [changed mode: 0644->0755]
src/CMath.cpp [changed mode: 0644->0755]
src/CMath.h [changed mode: 0644->0755]
src/CObjective.cpp [changed mode: 0644->0755]
src/CObjective.h [changed mode: 0644->0755]
src/CPak.cpp [changed mode: 0644->0755]
src/CPak.h [changed mode: 0644->0755]
src/CParticle.cpp [changed mode: 0644->0755]
src/CParticle.h [changed mode: 0644->0755]
src/CPersistData.cpp [changed mode: 0644->0755]
src/CPersistData.h [changed mode: 0644->0755]
src/CPersistant.cpp [changed mode: 0644->0755]
src/CPersistant.h [changed mode: 0644->0755]
src/CRadarBlip.cpp [changed mode: 0644->0755]
src/CRadarBlip.h [changed mode: 0644->0755]
src/CReference.cpp [changed mode: 0644->0755]
src/CReference.h [changed mode: 0644->0755]
src/CReplayData.cpp [changed mode: 0644->0755]
src/CReplayData.h [changed mode: 0644->0755]
src/CReplayDataHeader.h [changed mode: 0644->0755]
src/CSpawnPoint.cpp [changed mode: 0644->0755]
src/CSpawnPoint.h [changed mode: 0644->0755]
src/CSprite.cpp [changed mode: 0644->0755]
src/CSprite.h [changed mode: 0644->0755]
src/CString.cpp [changed mode: 0644->0755]
src/CString.h [changed mode: 0644->0755]
src/CSwitch.cpp [changed mode: 0644->0755]
src/CSwitch.h [changed mode: 0644->0755]
src/CTeleporter.cpp [changed mode: 0644->0755]
src/CTeleporter.h [changed mode: 0644->0755]
src/CTrain.cpp [changed mode: 0644->0755]
src/CTrain.h [changed mode: 0644->0755]
src/CTrap.cpp [changed mode: 0644->0755]
src/CTrap.h [changed mode: 0644->0755]
src/CWeapon.cpp [changed mode: 0644->0755]
src/CWeapon.h [changed mode: 0644->0755]
src/CWidget.cpp [changed mode: 0644->0755]
src/CWidget.h [changed mode: 0644->0755]
src/aquaBoss.cpp [changed mode: 0644->0755]
src/aquaBoss.h [changed mode: 0644->0755]
src/bosses.cpp [changed mode: 0644->0755]
src/bosses.h [changed mode: 0644->0755]
src/bullets.cpp [changed mode: 0644->0755]
src/bullets.h [changed mode: 0644->0755]
src/cutscene.cpp [changed mode: 0644->0755]
src/cutscene.h [changed mode: 0644->0755]
src/defines.h [changed mode: 0644->0755]
src/defs.h [changed mode: 0644->0755]
src/droidBoss.cpp [changed mode: 0644->0755]
src/droidBoss.h [changed mode: 0644->0755]
src/effects.cpp [changed mode: 0644->0755]
src/effects.h [changed mode: 0644->0755]
src/enemies.cpp [changed mode: 0644->0755]
src/enemies.h [changed mode: 0644->0755]
src/entities.cpp [changed mode: 0644->0755]
src/entities.h [changed mode: 0644->0755]
src/explosions.cpp [changed mode: 0644->0755]
src/explosions.h [changed mode: 0644->0755]
src/finalBattle.cpp [changed mode: 0644->0755]
src/finalBattle.h [changed mode: 0644->0755]
src/galdov.cpp [changed mode: 0644->0755]
src/galdov.h [changed mode: 0644->0755]
src/game.cpp [changed mode: 0644->0755]
src/game.h [changed mode: 0644->0755]
src/graphics.cpp [changed mode: 0644->0755]
src/graphics.h [changed mode: 0644->0755]
src/headers.h [changed mode: 0644->0755]
src/hub.cpp [changed mode: 0644->0755]
src/hub.h [changed mode: 0644->0755]
src/info.cpp [changed mode: 0644->0755]
src/info.h [changed mode: 0644->0755]
src/init.cpp [changed mode: 0644->0755]
src/init.h [changed mode: 0644->0755]
src/intro.cpp [changed mode: 0644->0755]
src/intro.h [changed mode: 0644->0755]
src/items.cpp [changed mode: 0644->0755]
src/items.h [changed mode: 0644->0755]
src/lineDefs.cpp [changed mode: 0644->0755]
src/lineDefs.h [changed mode: 0644->0755]
src/loadSave.cpp [changed mode: 0644->0755]
src/loadSave.h [changed mode: 0644->0755]
src/main.cpp [changed mode: 0644->0755]
src/main.h [changed mode: 0644->0755]
src/map.cpp [changed mode: 0644->0755]
src/map.h [changed mode: 0644->0755]
src/mapData.cpp [changed mode: 0644->0755]
src/mapData.h [changed mode: 0644->0755]
src/mapEditor.cpp [changed mode: 0644->0755]
src/mapEditor.h [changed mode: 0644->0755]
src/mias.cpp [changed mode: 0644->0755]
src/mias.h [changed mode: 0644->0755]
src/mission.cpp [changed mode: 0644->0755]
src/mission.h [changed mode: 0644->0755]
src/objectives.cpp [changed mode: 0644->0755]
src/objectives.h [changed mode: 0644->0755]
src/obstacles.cpp [changed mode: 0644->0755]
src/obstacles.h [changed mode: 0644->0755]
src/options.cpp [changed mode: 0644->0755]
src/options.h [changed mode: 0644->0755]
src/pak.cpp [changed mode: 0644->0755]
src/pak.h [changed mode: 0644->0755]
src/particles.cpp [changed mode: 0644->0755]
src/particles.h [changed mode: 0644->0755]
src/player.cpp [changed mode: 0644->0755]
src/player.h [changed mode: 0644->0755]
src/resources.cpp [changed mode: 0644->0755]
src/resources.h [changed mode: 0644->0755]
src/spawnPoints.cpp [changed mode: 0644->0755]
src/spawnPoints.h [changed mode: 0644->0755]
src/switches.cpp [changed mode: 0644->0755]
src/switches.h [changed mode: 0644->0755]
src/tankBoss.cpp [changed mode: 0644->0755]
src/tankBoss.h [changed mode: 0644->0755]
src/teleporters.cpp [changed mode: 0644->0755]
src/teleporters.h [changed mode: 0644->0755]
src/title.cpp [changed mode: 0644->0755]
src/title.h [changed mode: 0644->0755]
src/trains.cpp [changed mode: 0644->0755]
src/trains.h [changed mode: 0644->0755]
src/traps.cpp [changed mode: 0644->0755]
src/traps.h [changed mode: 0644->0755]
src/triggers.cpp [changed mode: 0644->0755]
src/triggers.h [changed mode: 0644->0755]
src/weapons.cpp [changed mode: 0644->0755]
src/weapons.h [changed mode: 0644->0755]
src/widgets.cpp [changed mode: 0644->0755]
src/widgets.h [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 3001db7..c08c596
Binary files a/gfx/main/gameover.png and b/gfx/main/gameover.png differ
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 0b532b5c30296890a098edcc4aee897d60a3b465..77d648742932ef7c6f2111b56f429d4b4eb6f166 100644 (file)
Binary files a/locale/ca.mo and b/locale/ca.mo differ
index 0bf83ef757cdba20786033f7b38bd6fd7c59c785..3f20013e6b129ce226a1d58f3cc5bf3c62d2b36d 100644 (file)
Binary files a/locale/nl.mo and b/locale/nl.mo differ
old mode 100644 (file)
new mode 100755 (executable)
index 1af900d..3232b1d
--- a/makefile
+++ b/makefile
@@ -3,7 +3,7 @@ PAKNAME = blobwars.pak
 DOCS = doc/*
 ICONS = icons/
 
-VERSION = 1.14
+VERSION = 1.17
 RELEASE = 1
 USEPAK = 1
 
@@ -14,12 +14,15 @@ DOCDIR = $(PREFIX)/share/doc/$(PROG)/
 ICONDIR = $(PREFIX)/share/icons/hicolor/
 DESKTOPDIR = $(PREFIX)/share/applications/
 LOCALEDIR = $(PREFIX)/share/locale/
+MEDAL_SERVER_HOST = www.parallelrealities.co.uk
+#MEDAL_SERVER_HOST = localhost
+MEDAL_SERVER_PORT = 80
 
 CXXFLAGS += `sdl-config --cflags` -DVERSION=$(VERSION) -DRELEASE=$(RELEASE) -DUSEPAK=$(USEPAK)
 CXXFLAGS += -DPAKNAME=\"$(PAKNAME)\" -DPAKLOCATION=\"$(DATADIR)\" -DUNIX -DGAMEPLAYMANUAL=\"$(DOCDIR)index.html\" -Wall
-CXXFLAGS += -DLOCALEDIR=\"$(LOCALEDIR)\"
+CXXFLAGS += -DLOCALEDIR=\"$(LOCALEDIR)\" -DMEDAL_SERVER_HOST=\"$(MEDAL_SERVER_HOST)\" -DMEDAL_SERVER_PORT=$(MEDAL_SERVER_PORT)
 CXXFLAGS += $(CFLAGS) -Werror
-LIBS = `sdl-config --libs` -lSDL_mixer -lSDL_image -lSDL_ttf -lz
+LIBS = `sdl-config --libs` -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_net -lz
 
 OBJS += CAudio.o
 OBJS += CBoss.o
@@ -33,7 +36,7 @@ OBJS += CKeyboard.o
 OBJS += CJoystick.o 
 OBJS += CLineDef.o
 OBJS += CList.o
-OBJS += CMap.o CMath.o
+OBJS += CMap.o CMath.o CMedalServer.o
 OBJS += CObjective.o
 OBJS += CPak.o CParticle.o CPersistant.o CPersistData.o
 OBJS += CRadarBlip.o CReplayData.o
@@ -89,7 +92,7 @@ mapeditor: $(MAPOBJS)
 clean:
        $(RM) $(GAMEOBJS) mapEditor.o pak.o $(PROG) $(PAKNAME) pak mapeditor $(LOCALE_MO)
        
-buildpak: pak
+buildpak:
        ./pak data gfx music sound $(PAKNAME)
 
 # install
old mode 100644 (file)
new mode 100755 (executable)
index 0f0e694..8e8281b
@@ -3,7 +3,7 @@ PAKNAME = blobwars.pak
 DOCS = doc/*
 ICONS = icons/
 
-VERSION = 1.14
+VERSION = 1.17
 RELEASE = 1
 USEPAK = 1
 
@@ -14,14 +14,16 @@ DOCDIR = $(PREFIX)/share/doc/$(PROG)/
 ICONDIR = $(PREFIX)/share/icons/hicolor/
 DESKTOPDIR = $(PREFIX)/share/applications/
 LOCALEDIR = $(PREFIX)/share/locale/
+MEDAL_SERVER_HOST = www.parallelrealities.co.uk
+MEDAL_SERVER_PORT = 80
 
 CXX=i586-mingw32msvc-g++
 SDLC=/home/steve/Windows/bin/sdl-config
 
 CXXFLAGS += `$(SDLC) --cflags` -DVERSION=$(VERSION) -DRELEASE=$(RELEASE) -DUSEPAK=$(USEPAK)
 CXXFLAGS += -DPAKNAME=\"$(PAKNAME)\" -DPAKLOCATION=\"\" -DGAMEPLAYMANUAL=\"doc/index.html\" -Wall
-CXXFLAGS += -DLOCALEDIR=\"\" $(CFLAGS) -pg -Werror
-LIBS = `$(SDLC) --libs` -lintl -lz -lSDL_mixer -lSDL_image -lSDL_ttf -pg -lSDLmain
+CXXFLAGS += -DLOCALEDIR=\"\" $(CFLAGS)  -DMEDAL_SERVER_HOST=\"$(MEDAL_SERVER_HOST)\" -DMEDAL_SERVER_PORT=$(MEDAL_SERVER_PORT) -pg -Werror
+LIBS = `$(SDLC) --libs` -lintl -lz -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_net -pg -lSDLmain
 
 OBJS += CAudio.o
 OBJS += CBoss.o
@@ -35,7 +37,7 @@ OBJS += CKeyboard.o
 OBJS += CJoystick.o 
 OBJS += CLineDef.o
 OBJS += CList.o
-OBJS += CMap.o CMath.o
+OBJS += CMap.o CMath.o CMedalServer.o
 OBJS += CObjective.o
 OBJS += CPak.o CParticle.o CPersistant.o CPersistData.o
 OBJS += CRadarBlip.o CReplayData.o
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index cbeb334..5507f0f
-#include "headers.h"
-
-Config::Config()
-{
-       sdlJoystick = NULL;
-       
-       for (int i = 0 ; i < CONTROL::MAX ; i++)
-       {
-               command[i] = 0;
-       }
-}
-
-Config::~Config()
-{
-}
-
-void Config::populate()
-{
-       for (int i = 0 ; i < CONTROL::MAX ; i++)
-       {
-               command[i] = (engine->keyState[keyboard.control[i]]); 
-               
-               if (joystick.control[i] >= 0)
-               {
-                       command[i] = (command[i] || (engine->joystickState[joystick.control[i]]));
-               }
-       }
-       
-       if (engine->joyX < -joystick.sensitivity) command[CONTROL::LEFT] = 1;
-       if (engine->joyX > joystick.sensitivity)  command[CONTROL::RIGHT] = 1;
-       if (engine->joyY < -joystick.sensitivity) command[CONTROL::UP] = 1;
-       if (engine->joyY > joystick.sensitivity)  command[CONTROL::DOWN] = 1;
-}
-
-void Config::populate(int *data)
-{
-       for (int i = 0 ; i < CONTROL::MAX ; i++)
-       {
-               command[i] = data[i];
-       }
-       
-       command[CONTROL::MAP] = 0;
-       command[CONTROL::PAUSE] = 0;
-}
-
-bool Config::isControl(CONTROL::TYPE type)
-{
-       return command[type];
-}
-
-void Config::resetControl(CONTROL::TYPE type)
-{
-       engine->keyState[keyboard.control[type]] = 0;
-       
-       command[type] = 0;
-       
-       if (joystick.control[type] >= 0)
-       {
-               engine->joystickState[joystick.control[type]] = 0;
-       }
-       
-       if (type == CONTROL::LEFT) engine->joyX = 0;
-       if (type == CONTROL::RIGHT) engine->joyX = 0;
-       if (type == CONTROL::UP) engine->joyY = 0;
-       if (type == CONTROL::DOWN) engine->joyY = 0;
-}
-
-void Config::doPause()
-{
-       if (!engine->paused)
-       {
-               if (engine->keyState[keyboard.control[CONTROL::PAUSE]])
-               {
-                       engine->paused = true;
-                       engine->keyState[keyboard.control[CONTROL::PAUSE]] = 0;
-               }
-       }
-       else
-       {
-               if ((engine->keyState[keyboard.control[CONTROL::PAUSE]]) || (engine->keyState[SDLK_ESCAPE]))
-               {
-                       engine->paused = false;
-                       engine->keyState[keyboard.control[CONTROL::PAUSE]] = 0;
-                       engine->keyState[SDLK_ESCAPE] = 0;
-               }
-       }
-}
-
-bool Config::loadJoystickConfig()
-{
-       char filename[PATH_MAX];
-       sprintf(filename, "%sjoystick.cfg", engine->userHomeDirectory);
-       
-       debug(("Loading joystick config from %s\n", filename));
-       
-       FILE *fp = fopen(filename, "rb");
-       
-       if (!fp)
-       {
-               return false;
-       }
-               
-       if (fread(&joystick, sizeof(Joystick), 1, fp) != 1)
-       {
-               fclose(fp);
-               return false;
-       }
-               
-       fclose(fp);
-       
-       return true;
-}
-
-bool Config::saveJoystickConfig()
-{
-       char filename[PATH_MAX];
-       sprintf(filename, "%sjoystick.cfg", engine->userHomeDirectory);
-       
-       debug(("Saving joystick config to %s\n", filename));
-       
-       FILE *fp = fopen(filename, "wb");
-       
-       if (!fp)
-       {
-               debug(("WARNING: Couldn't save joystick config\n"));
-               return false;
-       }
-               
-       fwrite(&joystick, sizeof(Joystick), 1, fp);
-               
-       fclose(fp);
-       
-       return true;
-}
-
-bool Config::loadKeyConfig()
-{
-       char filename[PATH_MAX];
-       sprintf(filename, "%skeyboard.cfg", engine->userHomeDirectory);
-       
-       debug(("Loading keyboard config from %s\n", filename));
-       
-       FILE *fp = fopen(filename, "rb");
-       
-       if (!fp)
-       {
-               return false;
-       }
-               
-       if (fread(&keyboard, sizeof(Keyboard), 1, fp) != 1)
-       {
-               fclose(fp);
-               return false;
-       }
-
-       for (int i = 0; i < CONTROL::MAX; i++)
-       {
-               if (keyboard.control[i] < 0 || keyboard.control[i] >= 350)
-               {
-                       fclose(fp);
-                       return false;
-               }
-       }
-               
-       fclose(fp);
-       
-       // Keyboard break fix - Feb 09
-       keyboard.control[CONTROL::UP] = 0;
-       
-       return true;
-}
-
-bool Config::saveKeyConfig()
-{
-       char filename[PATH_MAX];
-       sprintf(filename, "%skeyboard.cfg", engine->userHomeDirectory);
-       
-       debug(("Saving keyboard config to %s\n", filename));
-       
-       FILE *fp = fopen(filename, "wb");
-       
-       if (!fp)
-       {
-               return false;
-       }
-               
-       fwrite(&keyboard, sizeof(keyboard), 1, fp);
-               
-       fclose(fp);
-       
-       return true;
-}
-
-void Config::restoreKeyDefaults()
-{
-       keyboard.setDefaultKeys();
-}
+#include "headers.h"\r
+\r
+Config::Config()\r
+{\r
+       sdlJoystick = NULL;\r
+       \r
+       for (int i = 0 ; i < CONTROL::MAX ; i++)\r
+       {\r
+               command[i] = 0;\r
+       }\r
+}\r
+\r
+Config::~Config()\r
+{\r
+}\r
+\r
+void Config::populate()\r
+{\r
+       for (int i = 0 ; i < CONTROL::MAX ; i++)\r
+       {\r
+               command[i] = (engine->keyState[keyboard.control[i]]); \r
+               \r
+               if (joystick.control[i] >= 0)\r
+               {\r
+                       command[i] = (command[i] || (engine->joystickState[joystick.control[i]]));\r
+               }\r
+       }\r
+       \r
+       if (engine->joyX < -joystick.sensitivity) command[CONTROL::LEFT] = 1;\r
+       if (engine->joyX > joystick.sensitivity)  command[CONTROL::RIGHT] = 1;\r
+       if (engine->joyY < -joystick.sensitivity) command[CONTROL::UP] = 1;\r
+       if (engine->joyY > joystick.sensitivity)  command[CONTROL::DOWN] = 1;\r
+}\r
+\r
+void Config::populate(int *data)\r
+{\r
+       for (int i = 0 ; i < CONTROL::MAX ; i++)\r
+       {\r
+               command[i] = data[i];\r
+       }\r
+       \r
+       command[CONTROL::MAP] = 0;\r
+       command[CONTROL::PAUSE] = 0;\r
+}\r
+\r
+bool Config::isControl(CONTROL::TYPE type)\r
+{\r
+       return command[type];\r
+}\r
+\r
+void Config::resetControl(CONTROL::TYPE type)\r
+{\r
+       engine->keyState[keyboard.control[type]] = 0;\r
+       \r
+       command[type] = 0;\r
+       \r
+       if (joystick.control[type] >= 0)\r
+       {\r
+               engine->joystickState[joystick.control[type]] = 0;\r
+       }\r
+       \r
+       if (type == CONTROL::LEFT) engine->joyX = 0;\r
+       if (type == CONTROL::RIGHT) engine->joyX = 0;\r
+       if (type == CONTROL::UP) engine->joyY = 0;\r
+       if (type == CONTROL::DOWN) engine->joyY = 0;\r
+}\r
+\r
+void Config::doPause()\r
+{\r
+       if (!engine->paused)\r
+       {\r
+               if (engine->keyState[keyboard.control[CONTROL::PAUSE]])\r
+               {\r
+                       engine->paused = true;\r
+                       engine->keyState[keyboard.control[CONTROL::PAUSE]] = 0;\r
+               }\r
+       }\r
+       else\r
+       {\r
+               if ((engine->keyState[keyboard.control[CONTROL::PAUSE]]) || (engine->keyState[SDLK_ESCAPE]))\r
+               {\r
+                       engine->paused = false;\r
+                       engine->keyState[keyboard.control[CONTROL::PAUSE]] = 0;\r
+                       engine->keyState[SDLK_ESCAPE] = 0;\r
+               }\r
+       }\r
+}\r
+\r
+bool Config::loadJoystickConfig()\r
+{\r
+       char filename[PATH_MAX];\r
+       sprintf(filename, "%sjoystick.cfg", engine->userHomeDirectory);\r
+       \r
+       debug(("Loading joystick config from %s\n", filename));\r
+       \r
+       FILE *fp = fopen(filename, "rb");\r
+       \r
+       if (!fp)\r
+       {\r
+               return false;\r
+       }\r
+               \r
+       if (fread(&joystick, sizeof(Joystick), 1, fp) != 1)\r
+       {\r
+               fclose(fp);\r
+               return false;\r
+       }\r
+               \r
+       fclose(fp);\r
+       \r
+       return true;\r
+}\r
+\r
+bool Config::saveJoystickConfig()\r
+{\r
+       char filename[PATH_MAX];\r
+       sprintf(filename, "%sjoystick.cfg", engine->userHomeDirectory);\r
+       \r
+       debug(("Saving joystick config to %s\n", filename));\r
+       \r
+       FILE *fp = fopen(filename, "wb");\r
+       \r
+       if (!fp)\r
+       {\r
+               debug(("WARNING: Couldn't save joystick config\n"));\r
+               return false;\r
+       }\r
+               \r
+       fwrite(&joystick, sizeof(Joystick), 1, fp);\r
+               \r
+       fclose(fp);\r
+       \r
+       return true;\r
+}\r
+\r
+bool Config::loadKeyConfig()\r
+{\r
+       char filename[PATH_MAX];\r
+       sprintf(filename, "%skeyboard.cfg", engine->userHomeDirectory);\r
+       \r
+       debug(("Loading keyboard config from %s\n", filename));\r
+       \r
+       FILE *fp = fopen(filename, "rb");\r
+       \r
+       if (!fp)\r
+       {\r
+               return false;\r
+       }\r
+               \r
+       if (fread(&keyboard, sizeof(Keyboard), 1, fp) != 1)\r
+       {\r
+               fclose(fp);\r
+               return false;\r
+       }\r
+               \r
+       fclose(fp);\r
+       \r
+       // Keyboard break fix - Feb 09\r
+       keyboard.control[CONTROL::UP] = 0;\r
+       \r
+       return true;\r
+}\r
+\r
+bool Config::saveKeyConfig()\r
+{\r
+       char filename[PATH_MAX];\r
+       sprintf(filename, "%skeyboard.cfg", engine->userHomeDirectory);\r
+       \r
+       debug(("Saving keyboard config to %s\n", filename));\r
+       \r
+       FILE *fp = fopen(filename, "wb");\r
+       \r
+       if (!fp)\r
+       {\r
+               return false;\r
+       }\r
+               \r
+       fwrite(&keyboard, sizeof(keyboard), 1, fp);\r
+               \r
+       fclose(fp);\r
+       \r
+       return true;\r
+}\r
+\r
+void Config::restoreKeyDefaults()\r
+{\r
+       keyboard.setDefaultKeys();\r
+}\r
old mode 100644 (file)
new mode 100755 (executable)
index 6a6f5f7..3a288cd
@@ -1,30 +1,30 @@
-class Config
-{
-       public:
-       
-               Engine *engine;
-
-               int command[CONTROL::MAX];
-               
-               SDL_Joystick *sdlJoystick;
-               
-               Joystick joystick;
-               Keyboard keyboard;
-
-       Config();
-       ~Config();
-       
-       void populate();
-       void populate(int *data);
-       
-       bool isControl(CONTROL::TYPE type);
-       void resetControl(CONTROL::TYPE type);
-       
-       void doPause();
-       
-       bool loadJoystickConfig();
-       bool saveJoystickConfig();
-       bool loadKeyConfig();
-       bool saveKeyConfig();
-       void restoreKeyDefaults();
-};
+class Config\r
+{\r
+       public:\r
+       \r
+               Engine *engine;\r
+\r
+               int command[CONTROL::MAX];\r
+               \r
+               SDL_Joystick *sdlJoystick;\r
+               \r
+               Joystick joystick;\r
+               Keyboard keyboard;\r
+\r
+       Config();\r
+       ~Config();\r
+       \r
+       void populate();\r
+       void populate(int *data);\r
+       \r
+       bool isControl(CONTROL::TYPE type);\r
+       void resetControl(CONTROL::TYPE type);\r
+       \r
+       void doPause();\r
+       \r
+       bool loadJoystickConfig();\r
+       bool saveJoystickConfig();\r
+       bool loadKeyConfig();\r
+       bool saveKeyConfig();\r
+       void restoreKeyDefaults();\r
+};\r
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 57105a2..13a5409
@@ -84,6 +84,11 @@ Engine::Engine()
 
        // Cheats
        memset(lastKeyEvents, ' ', 25);
+       #if USEPAK
+               cheats = false;
+       #else
+               cheats = true;
+       #endif
        cheatHealth = cheatExtras = cheatFuel = cheatLevels = false;
        cheatBlood = cheatInvulnerable = cheatReload = cheatSpeed = cheatSkipLevel = false;
        
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 7c63193..e93d324
@@ -31,6 +31,9 @@ Graphics::Graphics()
        infoMessage = NULL;
 
        fontSize = 0;
+       
+       medalMessageTimer = 0;
+       medalType = 0;
 
        currentLoading = 0;
 
@@ -88,7 +91,11 @@ void Graphics::destroy()
                        TTF_CloseFont(font[i]);
                }
        }
-
+       
+       if (medalMessage != NULL)
+       {
+               SDL_FreeSurface(medalMessage);
+       }
 
        if (fadeBlack)
        {
@@ -99,6 +106,15 @@ void Graphics::destroy()
        {
                SDL_FreeSurface(infoBar);
        }
+       
+       for (int i = 0 ; i < 4 ; i++)
+       {
+               if (medal[i] != NULL)
+               {
+                       SDL_FreeSurface(medal[i]);
+                       medal[i] = NULL;
+               }
+       }
 }
 
 void Graphics::registerEngine(Engine *engine)
@@ -129,6 +145,8 @@ void Graphics::mapColors()
        fadeBlack = alphaRect(640, 480, 0x00, 0x00, 0x00);
 
        infoBar = alphaRect(640, 25, 0x00, 0x00, 0x00);
+       
+       medalMessage = NULL;
 }
 
 Sprite *Graphics::getSpriteHead()
@@ -141,8 +159,34 @@ void Graphics::setTransparent(SDL_Surface *sprite)
        SDL_SetColorKey(sprite, (SDL_SRCCOLORKEY|SDL_RLEACCEL), SDL_MapRGB(sprite->format, 0, 0, 0));
 }
 
+bool Graphics::canShowMedalMessage()
+{
+       return (medalMessageTimer <= 0);
+}
+
 void Graphics::updateScreen()
 {
+       if (medalMessageTimer > 0)
+       {
+               int padding = 0;
+               
+               medalMessageTimer--;
+               
+               if (medalType >= 0)
+               {
+                       padding = 18;
+               }
+               
+               drawRect(screen->w - (medalMessage->w + 5 + padding), 5, medalMessage->w + padding - 2, 20, grey, screen);
+               drawRect(screen->w - (medalMessage->w + 5 + padding - 1), 6, medalMessage->w + padding - 4, 18, black, screen);
+               blit(medalMessage, screen->w - (medalMessage->w + 5), 7, screen, false);
+               
+               if (medalType >= 0)
+               {
+                       blit(medal[medalType], screen->w - (medalMessage->w + 5 + 16), 7, screen, false);
+               }
+       }
+       
        SDL_Flip(screen);
        SDL_Delay(1);
 
@@ -923,6 +967,54 @@ void Graphics::drawChatString(SDL_Surface *surface, int y)
        }
 }
 
+void Graphics::showMedalMessage(int type, const char *in)
+{
+       char message[1024];
+       
+       if (medalMessage != NULL)
+       {
+               SDL_FreeSurface(medalMessage);
+       }
+       
+       setFontSize(0);
+       
+       switch (type)
+       {
+               // Bronze
+               case 1:
+                       setFontColor(0xA6, 0x7D, 0x3D, 0x00, 0x00, 0x00);
+                       break;
+               
+               // Silver
+               case 2:
+                       setFontColor(0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00);
+                       break;
+                       
+               // Gold
+               case 3:
+                       setFontColor(0xFF, 0xCC, 0x33, 0x00, 0x00, 0x00);
+                       break;
+                       
+               // Ruby
+               case 4:
+                       setFontColor(0xFF, 0x11, 0x55, 0x00, 0x00, 0x00);
+                       break;
+       }
+       
+       medalType = type - 1; // for indexing on the image
+       if (type != -1)
+       {
+               sprintf(message, "  Medal Earned - %s  ", in);
+               medalMessage = getString(message, true);
+       }
+       else
+       {
+               sprintf(message, "  %s  ", in);
+               medalMessage = getString(message, true);
+       }
+       medalMessageTimer = (5 * 60);
+}
+
 void Graphics::drawWidgetRect(int x, int y, int w, int h)
 {
        drawRect(x - 5, y - 4, w + 10, h + 8, white, screen);
old mode 100644 (file)
new mode 100755 (executable)
index b965d90..5b1a5b5
@@ -40,6 +40,10 @@ class Graphics {
                int screenShotNumber;
                char screenshot[100];
                char chatString[1024];
+               
+               SDL_Surface *medalMessage;
+               int medalMessageTimer;
+               int medalType;
 
                SDL_Surface *fadeBlack;
                SDL_Surface *infoMessage;
@@ -51,6 +55,8 @@ class Graphics {
                SDL_Surface *screen, *background;
                SDL_Surface *tile[MAX_TILES];
                
+               SDL_Surface *medal[4];
+               
                SDL_Surface *infoBar;
 
                int red, yellow, green, darkGreen, skyBlue, blue, cyan, white, lightGrey, grey, darkGrey, black;
@@ -63,6 +69,7 @@ class Graphics {
        Sprite *getSpriteHead();
        void setTransparent(SDL_Surface *sprite);
        void updateScreen();
+       bool canShowMedalMessage();
        void delay(int time);
        void RGBtoHSV(float r, float g, float b, float *h, float *s, float *v);
        void HSVtoRGB(float *r, float *g, float *b, float h, float s, float v);
@@ -95,6 +102,7 @@ class Graphics {
        void drawString(const char *in, int x, int y, int alignment, SDL_Surface *dest);
        void clearChatString();
        void createChatString(const char *in);
+       void showMedalMessage(int type, const char *in);
        void drawChatString(SDL_Surface *surface, int y);
        void drawWidgetRect(int x, int y, int w, int h);
        SDL_Surface *createSurface(int width, int height);
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 1405476..b7ad722
@@ -113,6 +113,11 @@ void addBullet(Entity *owner, float dx, float dy)
                {
                        owner->reload = 4;
                }
+               
+               if (game.bulletsFired[game.currentWeapon] == 10000)
+               {
+                       presentPlayerMedal("10000_Bullets");
+               }
        }
 }
 
old mode 100644 (file)
new mode 100755 (executable)
index 6524f83..1059e24
@@ -32,6 +32,7 @@ extern void addFireParticles(float x, float y, int amount);
 extern void checkSwitchContact(Entity *ent);
 extern void throwBrickParticles(float x, float y);
 extern void throwStalagParticles(float x, float y);
+extern void presentPlayerMedal(const char *tname);
 
 extern Audio audio;
 extern Engine engine;
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 1758ffb..a18a110
@@ -359,6 +359,12 @@ enum {
 #ifndef GAMEPLAYMANUAL
        #define GAMEPLAYMANUAL "manual.html"
 #endif
+#ifndef MEDAL_SERVER_HOST
+       #define MEDAL_SERVER_HOST "localhost"
+#endif
+#ifndef MEDAL_SERVER_PORT
+       #define MEDAL_SERVER_PORT 80
+#endif
 
 enum {
 
@@ -371,10 +377,10 @@ enum {
 
 /* ############# debug ################## */
 
-#if DEBUG
-       #define debug(x) {printf("*** DEBUG: "); printf x;}
-#else
+#if USEPAK
        #define debug(x) {}
+#else
+       #define debug(x) {printf("*** DEBUG: "); printf x;}
 #endif
 
 #ifndef IGNORE_FLAGTOKEN_ERRORS
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 4ee1595..9179ebc
@@ -268,9 +268,8 @@ void doAI(Entity *enemy)
        // Don't enter areas you're not supposed to
        if (enemy->tx != (int)enemy->x)
        {
-               if (!(enemy->flags & ENT_FLIES))
+               if (!(enemy->flags & (ENT_FLIES|ENT_SWIMS)))
                {
-                       //if ((map.data[x][y] == MAP_AIR) || (map.data[x][y] >= MAP_DECORATION))
                        if (!map.isSolid(x, y))
                        {
                                enemy->tx = (int)enemy->x;
@@ -344,6 +343,18 @@ void doAI(Entity *enemy)
        lookForPlayer(enemy);
 }
 
+void checkCombo()
+{
+       int old = game.currentComboHits;
+       
+       game.doCombo();
+       
+       if (old == 24 && game.currentComboHits == 25)
+       {
+               presentPlayerMedal("25_Hit_Combo");
+       }
+}
+
 void enemyBulletCollisions(Entity *bullet)
 {
        if (bullet->health < 1)
@@ -439,12 +450,12 @@ void enemyBulletCollisions(Entity *bullet)
                                        {       
                                                if (bullet->owner == &player)
                                                {
-                                                       game.score += enemy->value;
+                                                       addPlayerScore(enemy->value);
                                                        game.currentMissionEnemiesDefeated++;
        
                                                        if (player.currentWeapon != &weapon[WP_LASER])
                                                        {
-                                                               game.doCombo();
+                                                               checkCombo();
                                                        }
                                                        
                                                        checkObjectives(comboString, false);
@@ -494,7 +505,7 @@ void enemyBulletCollisions(Entity *bullet)
                                        {
                                                if (player.currentWeapon != &weapon[WP_LASER])
                                                {
-                                                       game.doCombo();
+                                                       checkCombo();
                                                        checkObjectives(comboString, false);
                                                }
                                        }
old mode 100644 (file)
new mode 100755 (executable)
index 231ca69..5353d13
@@ -34,6 +34,8 @@ extern void addSmokeAndFire(Entity *ent, float dx, float dy, int amount);
 extern void checkObjectives(const char *name, bool alwaysInform);
 extern Weapon *getWeaponByName(const char *name);
 extern void addFireTrailParticle(float x, float y);
+extern void addPlayerScore(int score);
+extern void presentPlayerMedal(const char *tname);
 
 extern void doGaldovAI(Entity *galdov);
 extern void addTeleportParticles(float x, float y, int amount, int soundToPlay);
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index c5df00f..6e0ac98
@@ -90,7 +90,7 @@ void addExplosion(float x, float y, int radius, Entity *owner)
                                
                                if (owner == &player)
                                {
-                                       game.score += enemy->value;
+                                       addPlayerScore(enemy->value);
                                }
                        }
                        
old mode 100644 (file)
new mode 100755 (executable)
index 760d0b3..fbdd416
@@ -25,6 +25,7 @@ extern void throwAndDamageEntity(Entity *ent, int damage, int minDX, int maxDX,
 extern void addSmokeAndFire(Entity *ent, float dx, float dy, int amount);
 extern void addBlood(Entity *ent, float dx, float dy, int amount);
 extern void gibPlayer();
+extern void addPlayerScore(int score);
 
 extern Audio audio;
 extern Engine engine;
old mode 100644 (file)
new mode 100755 (executable)
index c6d1564..cf06372
@@ -230,6 +230,7 @@ void galdovFinalDie()
                self->react = NULL;
                Math::removeBit(&self->flags, ENT_FLIES);
                Math::removeBit(&self->flags, ENT_FIRETRAIL);
+               presentPlayerMedal("Final_Battle");
        }
        
        self->setActionFinished(1);
old mode 100644 (file)
new mode 100755 (executable)
index 9e8895a..8278d70
@@ -33,6 +33,7 @@ extern Weapon *getRandomGaldovWeapon();
 extern Weapon *getRandomAimedWeapon();
 extern void dropItems(int x, int y);
 extern void addItem(int itemType, const char *name, int x, int y, const char *spriteName, int health, int value, int flags, bool randomMovement);
+extern void presentPlayerMedal(const char *tname);
 
 extern Audio audio;
 extern Engine engine;
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 8fa42b2..cff9414
@@ -296,6 +296,7 @@ int gameover()
        }
 
        SDL_Surface *gameover = graphics.quickSprite("Game Over", graphics.loadImage("gfx/main/gameover.png"));
+       graphics.setTransparent(gameover);
 
        audio.loadGameOverMusic();
        audio.playMusic();
@@ -568,7 +569,7 @@ int doGame()
 
        Uint32 then, frames, frameLimit, millis, frameCounter;
 
-       #if DEBUG
+       #if !USEPAK
        Uint32 now;
        char fps[10];
        strcpy(fps, "fps");
@@ -584,10 +585,12 @@ int doGame()
        {
                player.health = -99;
 
+               //#if USEPAK
                if ((!map.isBossMission) && (replayData.replayMode == REPLAY_MODE::NONE))
                {
                        showMissionInformation();
                }
+               //#endif
 
                game.levelsStarted++;
        }
@@ -805,10 +808,11 @@ int doGame()
                if ((engine.keyState[SDLK_F3]) && (engine.cheatSkipLevel))
                {
                        autoCompleteAllObjectives(true);
+                       engine.keyState[SDLK_F3] = 0;
                        engine.setInfoMessage("Skipping Mission...", 2, INFO_OBJECTIVE);
                }
                
-               #if DEBUG
+               #if !USEPAK
                if (engine.keyState[SDLK_F1])
                {
                        autoCompleteAllObjectives(false);
@@ -835,7 +839,7 @@ int doGame()
                if (game.missionOverReason == MIS_GAMECOMPLETE)
                        frameLimit = SDL_GetTicks() + 64;
 
-               #if DEBUG
+               #if !USEPAK
                graphics.drawString(fps, 600, 30, true, graphics.screen);
 
                if (SDL_GetTicks() > frameCounter + 500)
old mode 100644 (file)
new mode 100755 (executable)
index 134873e..787e23b
@@ -67,6 +67,8 @@ extern void processPostMissionData();
 extern void clearAllMissionData();
 extern void saveGame();
 
+extern void presentPlayerMedal(const char *tname);
+
 extern Audio audio;
 extern Config config;
 extern Engine engine;
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 728ce02..f850159
@@ -39,6 +39,7 @@ extern DECLSPEC int SDLCALL SDL_GetGamma(float *red, float *green, float *blue);
 #include "SDL/SDL_image.h"
 #include "SDL/SDL_mixer.h"
 #include "SDL/SDL_ttf.h"
+#include "SDL/SDL_net.h"
 #endif
 
 #include <libintl.h>
@@ -96,3 +97,4 @@ extern DECLSPEC int SDLCALL SDL_GetGamma(float *red, float *green, float *blue);
 #include "CReplayDataHeader.h"
 #include "CReplayData.h"
 #include "CConfig.h"
+#include "CMedalServer.h"
old mode 100644 (file)
new mode 100755 (executable)
index 6e34265..f6540ef
@@ -405,16 +405,6 @@ void createMIAPanel(int start, int max)
 
 bool requirementMet(const char *requiredLevel)
 {
-       if (engine.cheatLevels)
-       {
-               return true;
-       }
-
-       if (strcmp(requiredLevel, "@none@") == 0)
-       {
-               return true;
-       }
-
        if (strstr(requiredLevel, "Stages"))
        {
                int stages = 0;
@@ -422,9 +412,20 @@ bool requirementMet(const char *requiredLevel)
 
                if (game.stagesCleared >= stages)
                {
+                       presentPlayerMedal(requiredLevel);
                        return true;
                }
        }
+       
+       if (engine.cheatLevels)
+       {
+               return true;
+       }
+
+       if (strcmp(requiredLevel, "@none@") == 0)
+       {
+               return true;
+       }
 
        return gameData.requiredLevelCleared(requiredLevel);
 }
@@ -440,6 +441,9 @@ int doHub()
        graphics.loadBackground("gfx/main/worldMap.jpg");
        audio.loadMusic("music/forAFriend.mod");
        
+       // we might want this now, for medals
+       audio.loadSound(SND_ITEM, "sound/item.wav");
+       
        graphics.quickSprite("cheatHeader", graphics.loadImage("gfx/main/cheats.png"));
        graphics.quickSprite("optionsHeader", graphics.loadImage("gfx/main/options.png"));
        graphics.quickSprite("keyHeader", graphics.loadImage("gfx/main/keyConfig.png"));
@@ -491,7 +495,7 @@ int doHub()
        char name[50], level[50], requiredLevel[50];
        int x, y;
 
-       #if DEBUG
+       #if !USEPAK
        char pos[50];
        #endif
 
@@ -583,6 +587,8 @@ int doHub()
                        hubList.clear();
                        return SECTION_EASYOVER;
                }
+               
+               presentPlayerMedal("World_Complete");
        }
        
        audio.playMusic();
@@ -609,7 +615,7 @@ int doHub()
                
                graphics.drawRect(10, 430, 620, 40, graphics.black, graphics.white, graphics.screen);
 
-               #if DEBUG
+               #if !USEPAK
                sprintf(pos, "%.3d:%.3d", engine.getMouseX(), engine.getMouseY());
                graphics.drawString(pos, 320, 15, true, graphics.screen);
                #endif
old mode 100644 (file)
new mode 100755 (executable)
index 7fbdf83..3c48939
--- a/src/hub.h
+++ b/src/hub.h
@@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include "headers.h"
 
 extern void showOptions();
+extern void presentPlayerMedal(const char *tname);
 
 extern Audio audio;
 extern Config config;
old mode 100644 (file)
new mode 100755 (executable)
index cdf365c..6945f46
@@ -213,8 +213,10 @@ void doPauseInfo()
        
        graphics.setFontColor(0xff, 0xff, 0xff, 0x00, 0x00, 0x00);
 
+       //#if !USEPAK
        sprintf(string, _("Position = %d:%d"), (int)player.x, (int)player.y);
        graphics.drawString(string, 5, 25, false, graphics.screen);
+       //#endif
 
        graphics.drawString(_("*** PAUSED ***"), 320, y, TXT_CENTERED, graphics.screen);
 
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 66e0949..cf555ca
@@ -195,6 +195,51 @@ void saveConfig()
        debug(("Output Type = %d\n", game.output));
 }
 
+//
+// see if we can load the private keyState
+//
+int initMedalService(void *data)
+{
+       SDL_mutexP(medalServer.lock);
+       
+       char connectMessage[1024];
+       sprintf(connectMessage, "Contacting Medal Server - %s:%d", MEDAL_SERVER_HOST, MEDAL_SERVER_PORT);
+       
+       graphics.showMedalMessage(-1, connectMessage);
+       
+       char keyPath[PATH_MAX];
+       char privateKey[20];
+
+       sprintf(keyPath, "%smedalKey", engine.userHomeDirectory);
+       
+       debug(("Loading private key from %s\n", keyPath));
+       
+       FILE *fp = fopen(keyPath, "rb");
+       
+       if (!fp)
+       {
+               graphics.showMedalMessage(-1, "No Medal Key found - Online functions disabled");
+               SDL_mutexV(medalServer.lock);
+               return 0;
+       }
+       
+       fscanf(fp, "%s", privateKey);
+       
+       fclose(fp);
+               
+       if (!medalServer.connect(privateKey))
+       {
+               graphics.showMedalMessage(-1, "Medal Server Connection Failed - Online functions disabled");
+               return 0;
+       }
+       
+       graphics.showMedalMessage(-1, "Connected to Medal Server");
+       
+       SDL_mutexV(medalServer.lock);
+       
+       return 1;
+}
+
 /*
 Chugg chugg chugg.... brrr... chugg chugg chugg...brrrrrr... chugg ch..
 BRRRRRRRRRRRRRRRRRMMMMMMMMMMMMMMMMMMM!! Well, hopefully anyway! ;)
@@ -255,7 +300,7 @@ void initSystem()
        {
                if (Mix_OpenAudio(22050, AUDIO_S16, engine.useAudio, 1024) < 0)
                {
-                       printf("Warning: Couldn't set 22050 Hz 16-bit audio - Reason: %s\n", Mix_GetError());
+                       printf("Warning: Couldn't set 44100 Hz 16-bit audio - Reason: %s\n", Mix_GetError());
                        printf("Sound and Music will be disabled\n");
                        engine.useAudio = 0;
                }
@@ -317,6 +362,11 @@ void initSystem()
        audio.loadSound(SND_CHEAT, "sound/Lock And Load!!!");
        audio.loadSound(SND_HIGHLIGHT, "sound/menu.wav");
        audio.loadSound(SND_SELECT, "sound/select.wav");
+       
+       graphics.medal[0] = graphics.loadImage("gfx/main/medal_bronze_1.png");
+       graphics.medal[1] = graphics.loadImage("gfx/main/award_star_silver_3.png");
+       graphics.medal[2] = graphics.loadImage("gfx/main/shield.png");
+       graphics.medal[3] = graphics.loadImage("gfx/main/ruby.png");
 
        SDL_Surface *device = graphics.loadImage("gfx/main/alienDevice.png");
 
@@ -342,6 +392,23 @@ void initSystem()
                checkForLicense();
        }
        
+       if (SDLNet_Init() < 0)
+       {
+               printf("SDLNet_Init: %s\n", SDLNet_GetError());
+       }
+       else
+       {
+               SDL_Thread *thread = SDL_CreateThread(initMedalService, NULL);
+       
+               if (thread == NULL)
+               {
+                       printf("Unable to create thread: %s\n", SDL_GetError());
+                       printf("Calling medal server directly\n");
+                       initMedalService(NULL);
+                       return;
+               }
+       }
+       
        engine.saveConfig = true;
 
        debug(("Init Complete...\n"));
@@ -408,6 +475,9 @@ void cleanup()
 
        debug(("Closing TTF...\n"));
        TTF_Quit();
+       
+       debug(("Closing NET...\n"));
+       SDLNet_Quit();
 
        debug(("Closing SDL Sub System...\n"));
        SDL_Quit();
old mode 100644 (file)
new mode 100755 (executable)
index 04e8221..2b6baaa
@@ -26,6 +26,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #endif
 #include <time.h>
 #include "headers.h"
+#include "SDL_thread.h"
 
 extern SDL_Surface *loadImage(const char *filename);
 
@@ -36,3 +37,4 @@ extern Game game;
 extern Graphics graphics;
 extern Map map;
 extern ReplayData replayData;
+extern MedalServer medalServer;
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 0a54e67..4db5fc8
@@ -243,7 +243,7 @@ void pickUpItem(Entity *item)
                case ITEM_POINTS5:
                case ITEM_POINTS6:
                case ITEM_POINTS7:
-                       game.score += item->value;
+                       addPlayerScore(item->value);
                        audio.playSound(SND_ITEM, CH_ITEM);
                        break;
                case ITEM_CHERRY:
@@ -289,6 +289,11 @@ void pickUpItem(Entity *item)
                        engine.setInfoMessage(string, 0, INFO_NORMAL);
 
                checkObjectives(item->name, true);
+               
+               if (strcmp(item->name, "LRTS") == 0)
+               {
+                       presentPlayerMedal("LRTS_PART");
+               }
        }
 }
 
old mode 100644 (file)
new mode 100755 (executable)
index 45909ce..962c555
@@ -27,6 +27,8 @@ extern bool checkBrickContact(Entity *object);
 extern void moveEntity(Entity *ent);
 extern void checkObjectives(const char *name, bool alwaysInform);
 extern void addTeleportParticles(float x, float y, int amount, int soundToPlay);
+extern void addPlayerScore(int score);
+extern void presentPlayerMedal(const char *tname);
 
 extern Audio audio;
 extern Engine engine;
old mode 100644 (file)
new mode 100755 (executable)
index ee55f84..81c5f48
@@ -64,7 +64,7 @@ void doLineDefs()
 
                if ((absX < 800) && (absY < 600))
                {
-                       #if DEBUG
+                       #if !USEPAK
                                graphics.drawRect(x, y, lineDef->width, lineDef->height, graphics.red, graphics.screen);
                        #endif
 
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 1bb3e5a..cfb509d
@@ -328,6 +328,7 @@ void saveGame()
                return;
 
        graphics.setFontSize(1);
+       graphics.setFontColor(0xff, 0xff, 0xff, 0x00, 0x00, 0x00);
        sprintf(message, _("Saving Game to Save Slot #%d. Please Wait..."), slot + 1);
        graphics.drawString(message, 320, 220, true, graphics.screen);
        graphics.updateScreen();
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 00bdcf9..020724c
@@ -94,7 +94,7 @@ void showVersion()
        printf("Blob Wars, Episode I - Metal Blob Solid (Version %.2f, Release %d)\n", VERSION, RELEASE);
        printf("Copyright (C) 2004 Parallel Realities\n");
        printf("Licensed under the GNU General Public License (GPL)\n\n");
-       exit(0);
+//     exit(0);
 }
 
 int main(int argc, char *argv[])
@@ -131,7 +131,7 @@ int main(int argc, char *argv[])
                else if (strcmp(argv[i], "-map") == 0) {game.setMapName(argv[++i]); requiredSection = SECTION_GAME;}
                else if (strcmp(argv[i], "-listmaps") == 0) listMaps();
                
-               #if DEBUG
+               #if !USEPAK
                else if (strcmp(argv[i], "-showsprites") == 0) showSprites = true;
                else if (strcmp(argv[i], "-hub") == 0) hub = true;
                else if (strcmp(argv[i], "-randomscreens") == 0) graphics.takeRandomScreenShots = true;
old mode 100644 (file)
new mode 100755 (executable)
index be6d7f4..b5697d3
@@ -44,6 +44,8 @@ extern void showMissionClear();
 extern void checkStartCutscene();
 extern void easyGameFinished();
 
+extern void presentPlayerMedal(const char *tname);
+
 Audio audio;
 Config config;
 Engine engine;
@@ -52,6 +54,7 @@ GameData gameData;
 Graphics graphics;
 Map map;
 ReplayData replayData;
+MedalServer medalServer;
 
 Entity defEnemy[MAX_ENEMIES];
 Entity defItem[MAX_ITEMS];
old mode 100644 (file)
new mode 100755 (executable)
index 70279d9..e7083c8
@@ -51,7 +51,7 @@ void drawMap()
                        {
                                graphics.blit(graphics.tile[brick], r.x, r.y, graphics.screen, false);
                                
-                               #if DEBUG
+                               #if !USEPAK
                                if ((brick >= MAP_NORESET) && (brick < MAP_DECORATION))
                                {
                                        graphics.drawRect(r.x, r.y, 32, 4, graphics.yellow, graphics.screen);
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 7696363..1ccef79
@@ -247,7 +247,8 @@ void getMapTokens()
                        else if (strcmp("AMBIENCE", mapEntity) == 0)
                        {
                                sscanf(token, "%*s %*s %s", string[0]);
-                               audio.loadSound(SND_AMBIANCE, string[0]);
+                               if (!audio.loadSound(SND_AMBIANCE, string[0]))
+                                       graphics.showErrorAndExit(ERR_FILE, string[0]);
                        }
                        else if (strcmp("WATERLEVEL", mapEntity) == 0)
                        {
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index e8096de..5810419
@@ -20,9 +20,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 #include "mapEditor.h"
 
-Config config;
-ReplayData replayData;
-
 void drawMap(int mapX, int mapY)
 {
        SDL_Rect r;
@@ -434,10 +431,6 @@ int main(int argc, char *argv[])
                exit(1);
        }
 
-       config.engine = &engine;
-
-       replayData.reset();
-
        atexit(cleanup);
        
        engine.useAudio = 0;
@@ -476,7 +469,7 @@ int main(int argc, char *argv[])
        {
                engine.getInput();
                config.populate();
-               config.doPause();
+               engine.doPause();
                engine.doFrameLoop();
 
                graphics.updateScreen();
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index d9de863..5936f9b
@@ -153,6 +153,24 @@ void doMIAs()
                                                sprintf(message, _("Rescue %d MIAs - Objective Complete - Checkpoint Reached!"), map.requiredMIAs);
                                                game.setObjectiveCheckPoint();
                                        }
+                                       
+                                       // MIA Medals
+                                       if (game.totalMIAsRescued == 50)
+                                       {
+                                               presentPlayerMedal("50_MIA");
+                                       }
+                                       else if (game.totalMIAsRescued == 100)
+                                       {
+                                               presentPlayerMedal("100_MIA");
+                                       }
+                                       else if (game.totalMIAsRescued == 200)
+                                       {
+                                               presentPlayerMedal("200_MIA");
+                                       }
+                                       else if (game.totalMIAsRescued == 227)
+                                       {
+                                               presentPlayerMedal("ALL_MIA");
+                                       }
 
                                        engine.setInfoMessage(message, 1, INFO_OBJECTIVE);
                                }
old mode 100644 (file)
new mode 100755 (executable)
index 07e3244..55fed7c
@@ -30,3 +30,4 @@ extern Map map;
 extern Entity player;
 
 extern void moveEntity(Entity *ent);
+extern void presentPlayerMedal(const char *tname);
old mode 100644 (file)
new mode 100755 (executable)
index 1bf4670..4d6e989
@@ -66,6 +66,7 @@ void processPostMissionData()
        
        if (!gameData.stagePreviouslyCleared(game.stageName))
        {
+               presentPlayerMedal(game.stageName);
                game.stagesCleared++;
        }
        
@@ -110,6 +111,16 @@ void processPostMissionData()
        }
 
        game.totalUpStats();
+       
+       if (game.totalEnemiesDefeated >= 1000)
+       {
+               presentPlayerMedal("1000_Enemies");
+       }
+       
+       if (game.totalEnemiesDefeated >= 2500)
+       {
+               presentPlayerMedal("2500_Enemies");
+       }
 }
 
 void clearAllMissionData()
old mode 100644 (file)
new mode 100755 (executable)
index eee869a..5ec0db5
@@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 extern bool perfectlyCompleted();
 extern void doParticles();
 extern void saveGame();
+extern void presentPlayerMedal(const char *tname);
 
 extern Audio audio;
 extern Config config;
old mode 100644 (file)
new mode 100755 (executable)
index 7d78fbc..edc5ad4
@@ -281,12 +281,14 @@ void checkObjectives(const char *name, bool alwaysInform)
                                        {
                                                sprintf(message, "Got the Aqua Lung! You can now swim forever!");
                                                game.hasAquaLung = true;
+                                               presentPlayerMedal("Aqua_Lung");
                                        }
 
                                        if (strcmp(objective->description, "Get the Jetpack") == 0)
                                        {
                                                sprintf(message, "Got the Jetpack! Press SPACE to Activate!");
                                                game.hasJetPack = true;
+                                               presentPlayerMedal("Jetpack");
                                        }
 
                                        engine.setInfoMessage(message, 9, INFO_OBJECTIVE);
old mode 100644 (file)
new mode 100755 (executable)
index 0df33f6..a6a57ee
@@ -20,6 +20,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 #include "headers.h"
 
+extern void presentPlayerMedal(const char *tname);
+
 extern Audio audio;
 extern Engine engine;
 extern Game game;
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index ac33957..4ce9892
@@ -20,6 +20,83 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 #include "player.h"
 
+int medalWorker(void *data)
+{
+       char *tname = (char*)data;
+       
+       SDL_mutexP(medalServer.lock);
+       
+       int type = medalServer.postMedal(tname);
+       
+       while (!graphics.canShowMedalMessage())
+       {
+               SDL_Delay(100);
+       }
+       
+       SDL_Delay(100);
+       
+       if (type >= 1 && type <= 3)
+       {
+               audio.playSound(SND_ITEM, CH_ANY);
+               graphics.showMedalMessage(type, medalServer.getMessage());
+               
+               if (medalServer.hasRuby())
+               {
+                       while (!graphics.canShowMedalMessage())
+                       {
+                               SDL_Delay(100);
+                       }
+                       
+                       SDL_Delay(100);
+                       
+                       audio.playSound(SND_ITEM, CH_ANY);
+                       graphics.showMedalMessage(4, medalServer.getRubyMessage());
+               }
+       }
+       
+       SDL_mutexV(medalServer.lock);
+       
+       delete tname;
+       
+       return type;
+}
+
+void presentPlayerMedal(const char *tname)
+{
+       // Copy the input, so that threading
+       // doesn't trip us up!
+       char *data = new char[128];
+       strcpy(data, tname);
+       
+       SDL_Thread *thread = SDL_CreateThread(medalWorker, (void*)data);
+       
+       if (thread == NULL)
+       {
+               printf("Unable to create thread: %s\n", SDL_GetError());
+               printf("Calling medal server directly\n");
+               medalWorker((void*)data);
+               return;
+       }
+}
+
+void addPlayerScore(int score)
+{
+       if (game.score < 100000 && game.score + score >= 100000)
+       {
+               presentPlayerMedal("Score_100000");
+       }
+       else if (game.score < 250000 && game.score + score >= 250000)
+       {
+               presentPlayerMedal("Score_250000");
+       }
+       else if (game.score < 500000 && game.score + score >= 500000)
+       {
+               presentPlayerMedal("Score_500000");
+       }
+       
+       game.score += score;
+}
+
 void resetPlayer()
 {
        game.getCheckPoint(&player.x, &player.y);
@@ -352,7 +429,7 @@ void doPlayer()
                }
        }
        
-       #if DEBUG
+       #if !USEPAK
        if (engine.keyState[SDLK_1])
                player.currentWeapon = &weapon[WP_PISTOL];
        else if (engine.keyState[SDLK_2])
old mode 100644 (file)
new mode 100755 (executable)
index a2f997e..9d5a43e
@@ -19,6 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 
 #include "headers.h"
+#include "SDL_thread.h"
 
 extern void throwAndDamageEntity(Entity *ent, int damage, int minDX, int maxDX, int DY);
 extern void moveEntity(Entity *ent);
@@ -36,6 +37,7 @@ extern Engine engine;
 extern Game game;
 extern Graphics graphics;
 extern Map map;
+extern MedalServer medalServer;
 
 extern Entity player;
 extern Weapon weapon[MAX_WEAPONS];
old mode 100644 (file)
new mode 100755 (executable)
index 5308eff..51a516a
@@ -22,7 +22,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 void loadSound(int index, const char *filename)
 {
-       audio.loadSound(index, filename);
+       if (!audio.loadSound(index, filename))
+               graphics.showErrorAndExit(ERR_FILE, filename);
 
        graphics.showLoading(1, 30);
 }
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)