forked from twig33/ynoclient
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add background, sprites to battle scene
- Loading branch information
Showing
5 changed files
with
299 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
///////////////////////////////////////////////////////////////////////////// | ||
// This file is part of EasyRPG Player. | ||
// | ||
// EasyRPG Player is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// EasyRPG Player is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with EasyRPG Player. If not, see <http://www.gnu.org/licenses/>. | ||
///////////////////////////////////////////////////////////////////////////// | ||
|
||
//////////////////////////////////////////////////////////// | ||
// Headers | ||
//////////////////////////////////////////////////////////// | ||
#include <string> | ||
#include "data.h" | ||
#include "rpg_terrain.h" | ||
#include "baseui.h" | ||
#include "graphics.h" | ||
#include "cache.h" | ||
#include "background.h" | ||
|
||
//////////////////////////////////////////////////////////// | ||
Background::Background(const std::string& name) : | ||
ID(Graphics::drawable_id++), zobj(NULL), visible(true), | ||
bg_screen(NULL), bg_hscroll(0), bg_vscroll(0), bg_x(0), bg_y(0), | ||
fg_screen(NULL), fg_hscroll(0), fg_vscroll(0), fg_x(0), fg_y(0) { | ||
|
||
zobj = Graphics::RegisterZObj(0, ID); | ||
Graphics::RegisterDrawable(ID, this); | ||
|
||
bg_screen = BitmapScreen::CreateBitmapScreen(Cache::Backdrop(name)); | ||
} | ||
|
||
Background::Background(int terrain_id) : | ||
ID(Graphics::drawable_id++), zobj(NULL), visible(true), | ||
bg_screen(NULL), bg_hscroll(0), bg_vscroll(0), bg_x(0), bg_y(0), | ||
fg_screen(NULL), fg_hscroll(0), fg_vscroll(0), fg_x(0), fg_y(0) { | ||
|
||
zobj = Graphics::RegisterZObj(0, ID); | ||
Graphics::RegisterDrawable(ID, this); | ||
|
||
const RPG::Terrain& terrain = Data::terrains[terrain_id - 1]; | ||
|
||
if (terrain.background_type == 0) { | ||
bg_screen = BitmapScreen::CreateBitmapScreen(Cache::Backdrop(terrain.background_name)); | ||
return; | ||
} | ||
|
||
bg_screen = BitmapScreen::CreateBitmapScreen(Cache::Frame(terrain.background_a_name)); | ||
bg_hscroll = terrain.background_a_scrollh ? terrain.background_a_scrollh_speed : 0; | ||
bg_vscroll = terrain.background_a_scrollv ? terrain.background_a_scrollv_speed : 0; | ||
|
||
if (terrain.background_b) { | ||
fg_screen = BitmapScreen::CreateBitmapScreen(Cache::Frame(terrain.background_b_name)); | ||
fg_hscroll = terrain.background_b_scrollh ? terrain.background_b_scrollh_speed : 0; | ||
fg_vscroll = terrain.background_b_scrollv ? terrain.background_b_scrollv_speed : 0; | ||
} | ||
} | ||
|
||
//////////////////////////////////////////////////////////// | ||
Background::~Background() { | ||
Graphics::RemoveZObj(ID); | ||
Graphics::RemoveDrawable(ID); | ||
if (bg_screen != NULL) | ||
delete bg_screen; | ||
if (fg_screen != NULL) | ||
delete fg_screen; | ||
} | ||
|
||
//////////////////////////////////////////////////////////// | ||
int Background::GetZ() const { | ||
return z; | ||
} | ||
|
||
unsigned long Background::GetId() const { | ||
return ID; | ||
} | ||
|
||
DrawableType Background::GetType() const { | ||
return type; | ||
} | ||
|
||
//////////////////////////////////////////////////////////// | ||
void Background::Update(int& rate, int& value) { | ||
int step = | ||
(rate > 0) ? 1 << rate : | ||
(rate < 0) ? 1 << -rate : | ||
0; | ||
value += step; | ||
} | ||
|
||
void Background::Update() { | ||
Update(bg_hscroll, bg_x); | ||
Update(bg_vscroll, bg_y); | ||
Update(fg_hscroll, fg_x); | ||
Update(fg_vscroll, fg_y); | ||
} | ||
|
||
int Background::Scale(int x) { | ||
return x > 0 ? x / 64 : -(-x / 64); | ||
} | ||
|
||
void Background::Draw(int z_order) { | ||
if (!visible) | ||
return; | ||
|
||
if (bg_screen) | ||
bg_screen->BlitScreenTiled(bg_screen->GetBitmap()->GetRect(), | ||
DisplayUi->GetDisplaySurface()->GetRect(), | ||
Scale(bg_x), Scale(bg_y)); | ||
|
||
if (fg_screen != NULL) | ||
fg_screen->BlitScreenTiled(bg_screen->GetBitmap()->GetRect(), | ||
DisplayUi->GetDisplaySurface()->GetRect(), | ||
Scale(fg_x), Scale(fg_y)); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
///////////////////////////////////////////////////////////////////////////// | ||
// This file is part of EasyRPG Player. | ||
// | ||
// EasyRPG Player is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// EasyRPG Player is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with EasyRPG Player. If not, see <http://www.gnu.org/licenses/>. | ||
///////////////////////////////////////////////////////////////////////////// | ||
|
||
#ifndef _EASYRPG_BACKGROUND_H_ | ||
#define _EASYRPG_BACKGROUND_H_ | ||
|
||
//////////////////////////////////////////////////////////// | ||
// Headers | ||
//////////////////////////////////////////////////////////// | ||
#include <string> | ||
#include "drawable.h" | ||
#include "zobj.h" | ||
#include "bitmap_screen.h" | ||
|
||
//////////////////////////////////////////////////////////// | ||
class Background : public Drawable { | ||
public: | ||
Background(const std::string& name); | ||
Background(int terrain_id); | ||
virtual ~Background(); | ||
|
||
void Draw(int z_order); | ||
void Update(); | ||
|
||
unsigned long GetId() const; | ||
int GetZ() const; | ||
DrawableType GetType() const; | ||
|
||
private: | ||
static const int z = -1000; | ||
static const DrawableType type = TypeBackground; | ||
|
||
static void Update(int& rate, int& value); | ||
static int Scale(int x); | ||
|
||
unsigned long ID; | ||
ZObj* zobj; | ||
bool visible; | ||
|
||
BitmapScreen* bg_screen; | ||
int bg_hscroll; | ||
int bg_vscroll; | ||
int bg_x; | ||
int bg_y; | ||
BitmapScreen* fg_screen; | ||
int fg_hscroll; | ||
int fg_vscroll; | ||
int fg_x; | ||
int fg_y; | ||
}; | ||
|
||
#endif | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,6 +24,7 @@ enum DrawableType { | |
TypeTilemap, | ||
TypeSprite, | ||
TypePlane, | ||
TypeBackground, | ||
TypeDefault | ||
}; | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters