OSDN Git Service

未知地形グラフィックを表示 / Draw unknown field graphics.
authorDeskull <desull@users.sourceforge.jp>
Sun, 4 Jan 2015 06:42:01 +0000 (15:42 +0900)
committerDeskull <desull@users.sourceforge.jp>
Sun, 4 Jan 2015 06:42:01 +0000 (15:42 +0900)
Deeangband/GameSurfaceSDL.cpp
Deeangband/GameSurfaceSDL.h
img/UnknownField.png

index 8962150..fd1e471 100644 (file)
@@ -112,6 +112,11 @@ namespace Deeangband
                error = IMG_GetError();
                titleSurface = IMG_LoadPNG_RW(rwop);
 
+               //! @note \96¢\92m\92n\8c`\83O\83\89\83t\83B\83b\83N\82Ì\93Ç\82Ý\8d\9e\82Ý
+
+               rwop = SDL_RWFromFile("img\\UnknownField.png", "rb");
+               unknownFieldSurface = IMG_LoadPNG_RW(rwop);
+
                //! @note \8f°\92n\8c`\83O\83\89\83t\83B\83b\83N\82Ì\90Ý\92è
 
                for(floorIt = gameWorld->GetFloorList()->begin(); floorIt != gameWorld->GetFloorList()->end(); floorIt++)
@@ -539,12 +544,17 @@ void GameSurfaceSDL::drawField(const CREATURE_IT &subjectCreatureIt, GameWorld *
                {
                        if(px < fieldPtr->GetWidth() && py < fieldPtr->GetHeight())
                        {
+                               SDL_Rect blitRect = {GameSurfaceSDL::sideBarWidth + (px - x) * squareGraphicWidth, 30 + (py - y) * squareGraphicHeight , squareGraphicWidth, squareGraphicHeight};
                                if(subjectCreatureIt->second->GetLore()->GetFieldLore(0, px, py) > 0)
                                {
                                        TAG tag = fieldPtr->GetSquare(px, py)->GetFloorTag();
-                                       SDL_Rect blitRect = {GameSurfaceSDL::sideBarWidth + (px - x) * squareGraphicWidth, 30 + (py - y) * squareGraphicHeight , squareGraphicWidth, squareGraphicHeight};
                                        SDL_BlitSurface(floorSurfaces[tag], &symbolRect, windowSurface, &blitRect); 
                                }
+                               else
+                               {
+                                       SDL_Rect fieldRect = {blitRect.x % 128, blitRect.y % 128, blitRect.x % 128 + squareGraphicWidth, blitRect.y % 128 + squareGraphicHeight};
+                                       SDL_BlitSurface(unknownFieldSurface, &fieldRect, windowSurface, &blitRect); 
+                               }
                        }
                }
        }
@@ -555,8 +565,11 @@ void GameSurfaceSDL::drawField(const CREATURE_IT &subjectCreatureIt, GameWorld *
                {
                        updateCreatureGraphics(creatureIt);
                }
-               SDL_Rect blitRect = {GameSurfaceSDL::sideBarWidth + (creatureIt->second->GetPosition().GetX() - x) * squareGraphicWidth, 30 + (creatureIt->second->GetPosition().GetY()- y) * squareGraphicHeight, squareGraphicWidth, squareGraphicHeight};
-               SDL_BlitSurface(creatureSurfaces[creatureIt->first], &symbolRect, windowSurface, &blitRect); 
+               if(subjectCreatureIt->second->GetLore()->GetFieldLore(0, creatureIt->second->GetPosition().GetX(), creatureIt->second->GetPosition().GetY()) > 0)
+               {
+                       SDL_Rect blitRect = {GameSurfaceSDL::sideBarWidth + (creatureIt->second->GetPosition().GetX() - x) * squareGraphicWidth, 30 + (creatureIt->second->GetPosition().GetY()- y) * squareGraphicHeight, squareGraphicWidth, squareGraphicHeight};
+                       SDL_BlitSurface(creatureSurfaces[creatureIt->first], &symbolRect, windowSurface, &blitRect); 
+               }
        }
 }
 
index 16d0dcd..9ce3d29 100644 (file)
@@ -55,6 +55,7 @@ namespace Deeangband
                SDL_Surface *windowSurface;  //!< \83Q\81[\83\80\83E\83B\83\93\83h\83E\82ÌSurface\8eQ\8fÆ
 
                SDL_Surface *titleSurface;   //!< \83Q\81[\83\80\83^\83C\83g\83\8b\83O\83\89\83t\83B\83b\83N\82ÌSurface\8eQ\8fÆ
+               SDL_Surface *unknownFieldSurface; //!< \96¢\92m\83t\83B\81[\83\8b\83h\83O\83\89\83t\83B\83b\83N\82ÌSurface\8eQ\8fÆ
                SDL_Surface *systemMessageSurface; //!< \83V\83X\83e\83\80\83\81\83b\83Z\81[\83W\83O\83\89\83t\83B\83b\83N\82ÌSurface\8eQ\8fÆ
                SDL_Surface *gameMessageSurface; //!< \83Q\81[\83\80\83\81\83b\83Z\81[\83W\83O\83\89\83t\83B\83b\83N\82ÌSurface\8eQ\8fÆ
                SDL_Surface *creatureStatusSurface;  //!< \83N\83\8a\81[\83`\83\83\81[\83X\83e\81[\83^\83X\95\\8e¦\82ÌSurface\8eQ\8fÆ
index 534fab5..a02eb2f 100644 (file)
Binary files a/img/UnknownField.png and b/img/UnknownField.png differ