Browse Source

Fixed #686.
Minor changes.

Michał W. Urbańczyk 13 years ago
parent
commit
d6223dd137
4 changed files with 18 additions and 10 deletions
  1. 6 7
      client/CMT.cpp
  2. 2 2
      client/CPlayerInterface.cpp
  3. 2 0
      client/CPlayerInterface.h
  4. 8 1
      lib/CGameState.cpp

+ 6 - 7
client/CMT.cpp

@@ -697,10 +697,9 @@ static void listenForEvents()
 		}
 		else if(ev->type == SDL_USEREVENT)
 		{
-			enum {CHANGE_SCREEN_RESOLUTION, RETURN_TO_MAIN_MENU, END_GAME_AND_DIE};
 			switch(ev->user.code)
 			{
-			case 1:
+			case CHANGE_SCREEN_RESOLUTION:
 			{
 				tlog0 << "Changing resolution has been requested\n";
 				const JsonNode& video = settings["video"];
@@ -708,7 +707,7 @@ static void listenForEvents()
 				setScreenRes(res["width"].Float(), res["height"].Float(), video["bitsPerPixel"].Float(), video["fullscreen"].Bool());
 				break;
 			}
-			case 2:
+			case RETURN_TO_MAIN_MENU:
 				client->endGame();
 				delete client;
 				client = NULL;
@@ -721,12 +720,12 @@ static void listenForEvents()
 				GH.curInt = CGP;
 				GH.defActionsDef = 63;
 				break;
+			case STOP_CLIENT:
+				client->endGame(false);
+				break;
 			default:
 				tlog1 << "Error: unknown user event. Code " << ev->user.code << std::endl;
 				assert(0);
-// 			case 3:
-// 				client->endGame(false);
-// 				break;
 			}
 
 			delete ev;
@@ -795,6 +794,6 @@ void requestChangingResolution()
 	//push special event to order event reading thread to change resolution
 	SDL_Event ev;
 	ev.type = SDL_USEREVENT;
-	ev.user.code = 1;
+	ev.user.code = CHANGE_SCREEN_RESOLUTION;
 	SDL_PushEvent(&ev);
 }

+ 2 - 2
client/CPlayerInterface.cpp

@@ -2265,12 +2265,12 @@ void CPlayerInterface::showShipyardDialogOrProblemPopup(const IShipyard *obj)
 
 void CPlayerInterface::requestReturningToMainMenu()
 {
-	sendCustomEvent(2);
+	sendCustomEvent(RETURN_TO_MAIN_MENU);
 }
 
 void CPlayerInterface::requestStoppingClient()
 {
-	sendCustomEvent(3);
+	sendCustomEvent(STOP_CLIENT);
 }
 
 void CPlayerInterface::sendCustomEvent( int code )

+ 2 - 0
client/CPlayerInterface.h

@@ -71,6 +71,8 @@ namespace boost
 	class recursive_mutex;
 };
 
+enum {CHANGE_SCREEN_RESOLUTION = 1, RETURN_TO_MAIN_MENU = 2, STOP_CLIENT = 3};
+
 /// Central class for managing user interface logic
 class CPlayerInterface : public CGameInterface, public IUpdateable
 {

+ 8 - 1
lib/CGameState.cpp

@@ -808,7 +808,11 @@ CGameState::~CGameState()
 
 BattleInfo * CGameState::setupBattle(int3 tile, const CArmedInstance *armies[2], const CGHeroInstance * heroes[2], bool creatureBank, const CGTownInstance *town)
 {
-	int terrain = map->getTile(tile).tertype;
+	const TerrainTile &t = map->getTile(tile);
+	int terrain = t.tertype;
+	if(t.isCoastal() && !t.isWater()) 
+		terrain = TerrainTile::sand;
+
 	int terType = battleGetBattlefieldType(tile);
 	return BattleInfo::setupBattle(tile, terrain, terType, armies, heroes, creatureBank, town);
 }
@@ -1623,6 +1627,9 @@ int CGameState::battleGetBattlefieldType(int3 tile)
 		}
 	}
 
+	if(!t.isWater() && t.isCoastal())
+		return 1; //sand/beach
+
 	switch(t.tertype)
 	{
 	case TerrainTile::dirt: