[Scummvm-git-logs] scummvm master -> 9f75998c56f83614a756d7a78548940a9507d599
dreammaster
paulfgilbert at gmail.com
Sat May 9 04:48:25 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
9f75998c56 ULTIMA4: Leak fixes and class field renames
Commit: 9f75998c56f83614a756d7a78548940a9507d599
https://github.com/scummvm/scummvm/commit/9f75998c56f83614a756d7a78548940a9507d599
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-05-08T21:48:09-07:00
Commit Message:
ULTIMA4: Leak fixes and class field renames
Changed paths:
engines/ultima/nuvie/core/anim_manager.cpp
engines/ultima/nuvie/core/anim_manager.h
engines/ultima/ultima4/map/tileanim.cpp
engines/ultima/ultima4/map/tileanim.h
diff --git a/engines/ultima/nuvie/core/anim_manager.cpp b/engines/ultima/nuvie/core/anim_manager.cpp
index 3e0c90316c..847c954ade 100644
--- a/engines/ultima/nuvie/core/anim_manager.cpp
+++ b/engines/ultima/nuvie/core/anim_manager.cpp
@@ -291,13 +291,13 @@ void NuvieAnim::update_position() {
/*** TileAnim ***/
TileAnim::TileAnim() {
- map_window = Game::get_game()->get_map_window();
- tx = ty = px = py = 0;
+ _mapWindow = Game::get_game()->get_map_window();
+ _tx = _ty = _px = _py = 0;
}
TileAnim::~TileAnim() {
- while (tiles.size())
+ while (_tiles.size())
remove_tile();
}
@@ -306,9 +306,9 @@ TileAnim::~TileAnim() {
* Returns -1 if it isn't found.
*/
sint32 TileAnim::get_tile_id(PositionedTile *find_tile) {
- uint32 tile_count = tiles.size();
+ uint32 tile_count = _tiles.size();
for (uint32 t = 0; t < tile_count; t++)
- if (find_tile == tiles[t])
+ if (find_tile == _tiles[t])
return (t);
return (-1);
}
@@ -317,11 +317,11 @@ sint32 TileAnim::get_tile_id(PositionedTile *find_tile) {
/* Display ordered tile list.
*/
void TileAnim::display() {
- uint32 tcount = tiles.size();
+ uint32 tcount = _tiles.size();
for (sint32 t = (tcount - 1); t >= 0; t--)
- anim_manager->drawTileAtWorldCoords(tiles[t]->tile,
- tx + tiles[t]->pos_x, ty + tiles[t]->pos_y,
- px + tiles[t]->px, py + tiles[t]->py);
+ anim_manager->drawTileAtWorldCoords(_tiles[t]->tile,
+ _tx + _tiles[t]->pos_x, _ty + _tiles[t]->pos_y,
+ _px + _tiles[t]->px, _py + _tiles[t]->py);
}
@@ -335,7 +335,7 @@ PositionedTile *TileAnim::add_tile(Tile *tile, sint16 x, sint16 y,
new_tile->pos_y = y;
new_tile->px = add_x;
new_tile->py = add_y;
- tiles.insert(tiles.begin(), new_tile);
+ _tiles.insert(_tiles.begin(), new_tile);
return (new_tile);
}
@@ -343,23 +343,23 @@ PositionedTile *TileAnim::add_tile(Tile *tile, sint16 x, sint16 y,
/* Remove tile from list position `i'. (default = last added)
*/
void TileAnim::remove_tile(uint32 i) {
- if (i < tiles.size()) {
+ if (i < _tiles.size()) {
//vector<PositionedTile*>::iterator ti = &tiles[i];
- Std::vector<PositionedTile *>::iterator ti = tiles.begin();
+ Std::vector<PositionedTile *>::iterator ti = _tiles.begin();
for (uint32 j = 0; j < i; j++)
ti++;
delete *ti;
- tiles.erase(ti);
+ _tiles.erase(ti);
}
}
void TileAnim::remove_tile(PositionedTile *p_tile) {
- Std::vector<PositionedTile *>::iterator ti = tiles.begin();
- for (; ti != tiles.end(); ti++) {
+ Std::vector<PositionedTile *>::iterator ti = _tiles.begin();
+ for (; ti != _tiles.end(); ti++) {
if (*ti == p_tile) {
delete *ti;
- tiles.erase(ti);
+ _tiles.erase(ti);
break;
}
}
@@ -372,7 +372,7 @@ void TileAnim::remove_tile(PositionedTile *p_tile) {
*/
void TileAnim::shift(sint32 sx, sint32 sy) {
uint8 tile_pitch = anim_manager->get_tile_pitch();
- uint32 total_px = (tx * tile_pitch) + px, total_py = (ty * tile_pitch) + py;
+ uint32 total_px = (_tx * tile_pitch) + _px, total_py = (_ty * tile_pitch) + _py;
total_px += sx;
total_py += sy;
move(total_px / tile_pitch, total_py / tile_pitch,
@@ -383,20 +383,20 @@ void TileAnim::shift(sint32 sx, sint32 sy) {
/* Move a tile by the pixel, relative to the animation, in direction sx,sy.
*/
void TileAnim::shift_tile(uint32 ptile_num, sint32 sx, sint32 sy) {
- if (tiles.size() <= ptile_num)
+ if (_tiles.size() <= ptile_num)
return;
uint8 tile_pitch = anim_manager->get_tile_pitch();
- uint16 vtx = tiles[ptile_num]->pos_x, vty = tiles[ptile_num]->pos_y;
- uint16 vpx = tiles[ptile_num]->px, vpy = tiles[ptile_num]->py;
+ uint16 vtx = _tiles[ptile_num]->pos_x, vty = _tiles[ptile_num]->pos_y;
+ uint16 vpx = _tiles[ptile_num]->px, vpy = _tiles[ptile_num]->py;
uint32 total_px = (vtx * tile_pitch) + vpx, total_py = (vty * tile_pitch) + vpy;
total_px += sx;
total_py += sy;
// move
- tiles[ptile_num]->pos_x = total_px / tile_pitch;
- tiles[ptile_num]->pos_y = total_py / tile_pitch;
- tiles[ptile_num]->px = total_px % tile_pitch;
- tiles[ptile_num]->py = total_py % tile_pitch;
+ _tiles[ptile_num]->pos_x = total_px / tile_pitch;
+ _tiles[ptile_num]->pos_y = total_py / tile_pitch;
+ _tiles[ptile_num]->px = total_px % tile_pitch;
+ _tiles[ptile_num]->py = total_py % tile_pitch;
}
void TileAnim::move_tile(PositionedTile *ptile, uint32 x, uint32 y) {
@@ -414,7 +414,7 @@ void TileAnim::move_tile(PositionedTile *ptile, uint32 x, uint32 y) {
*/
HitAnim::HitAnim(MapCoord *loc) {
hit_actor = NULL;
- add_tile(map_window->get_tile_manager()->get_tile(257), // U6 HIT_EFFECT
+ add_tile(_mapWindow->get_tile_manager()->get_tile(257), // U6 HIT_EFFECT
0, 0);
move(loc->x, loc->y);
}
@@ -422,7 +422,7 @@ HitAnim::HitAnim(MapCoord *loc) {
HitAnim::HitAnim(Actor *actor) {
hit_actor = actor;
- add_tile(map_window->get_tile_manager()->get_tile(257), // U6 HIT_EFFECT
+ add_tile(_mapWindow->get_tile_manager()->get_tile(257), // U6 HIT_EFFECT
0, 0);
MapCoord loc = hit_actor->get_location();
move(loc.x, loc.y);
@@ -451,8 +451,8 @@ uint16 HitAnim::callback(uint16 msg, CallBack *caller, void *msg_data) {
/*** TextAnim ***/
TextAnim::TextAnim(Std::string t, MapCoord loc, uint32 dur) {
- px = loc.x;
- py = loc.y;
+ _px = loc.x;
+ _py = loc.y;
duration = dur;
font = Game::get_game()->get_font_manager()->get_conv_font();
text = t;
@@ -467,7 +467,7 @@ void TextAnim::display() {
if (is_paused())
return;
- anim_manager->drawText(font, text.c_str(), px, py);
+ anim_manager->drawText(font, text.c_str(), _px, _py);
}
uint16 TextAnim::callback(uint16 msg, CallBack *caller, void *msg_data) {
@@ -514,7 +514,7 @@ void TossAnim::init(Tile *tile, uint16 degrees, const MapCoord &start, const Map
target = new MapCoord(stop);
blocking = stop_flags;
speed = pixels_per_sec;
- map_window->get_level(&mapwindow_level);
+ _mapWindow->get_level(&mapwindow_level);
TileManager *tile_mgr = Game::get_game()->get_tile_manager();
MapCoord direction; // relative direction from->to
@@ -586,12 +586,12 @@ void TossAnim::stop() {
* center of the tile must be left or above the center of its location.
*/
MapCoord TossAnim::get_location() {
- MapCoord loc(tx, ty, 0);
+ MapCoord loc(_tx, _ty, 0);
if (src->x > target->x) { // moving left
- if (px > 0) loc.x += 1;
+ if (_px > 0) loc.x += 1;
}
if (src->y > target->y) { // moving up
- if (px > 0) loc.y += 1;
+ if (_px > 0) loc.y += 1;
}
return (loc);
}
@@ -711,13 +711,13 @@ uint32 TossAnim::update_position(uint32 max_move) {
if (x_move != 0) {
if (x_dist >= y_dist) { // Y=X*tangent
- uint32 xpos = tx * 16 + px; // pixel location
+ uint32 xpos = _tx * 16 + _px; // pixel location
sint32 relx = (xpos + x_move) - start_px; // new relative position
sint32 rely = (uint32)roundf(relx * tanS);
shift(x_move, rely - old_relpos); // **MOVE**
old_relpos = rely;
} else { // X=Y/tangent
- uint32 ypos = ty * 16 + py; // pixel location
+ uint32 ypos = _ty * 16 + _py; // pixel location
sint32 rely = (ypos + y_move) - start_py; // new relative position
sint32 relx = (uint32)roundf(rely / tanS);
shift(relx - old_relpos, y_move); // **MOVE**
@@ -769,7 +769,7 @@ ExplosiveAnim::~ExplosiveAnim() {
* the center.
*/
void ExplosiveAnim::start() {
- TileManager *tile_manager = map_window->get_tile_manager();
+ TileManager *tile_manager = _mapWindow->get_tile_manager();
sint32 s = 8; // how many pixels each new fireball is from the previous
move(center.x, center.y);
@@ -870,7 +870,7 @@ bool ExplosiveAnim::update() {
uint8 mapwindow_level;
LineTestResult lt;
- map_window->get_level(&mapwindow_level);
+ _mapWindow->get_level(&mapwindow_level);
for (uint32 t = 0; t < flame.size(); t++) { // update each line of fire
if (flame[t].direction.sx == 0 && flame[t].direction.sy == 0)
continue; // not moving; check next flames
@@ -996,7 +996,7 @@ ProjectileAnim::~ProjectileAnim() {
* the center.
*/
void ProjectileAnim::start() {
- TileManager *tile_manager = map_window->get_tile_manager();
+ TileManager *tile_manager = _mapWindow->get_tile_manager();
Tile *t = tile_manager->get_tile(tile_num);
move(0, 0);
@@ -1020,12 +1020,12 @@ void ProjectileAnim::start() {
* a blocked tile. Hit actors & volatile objects (powder kegs).
*/
bool ProjectileAnim::update() {
- TileManager *tile_manager = map_window->get_tile_manager();
+ TileManager *tile_manager = _mapWindow->get_tile_manager();
Map *map = Game::get_game()->get_game_map();
uint8 level;
LineTestResult lt;
- map_window->get_level(&level);
+ _mapWindow->get_level(&level);
for (uint16 i = 0; i < line.size(); i++) {
if (line[i].isRunning) {
@@ -1098,7 +1098,7 @@ bool ProjectileAnim::already_hit(MapEntity ent) {
/*** WingAnim ***/
WingAnim::WingAnim(MapCoord t) {
- TileManager *tile_manager = map_window->get_tile_manager();
+ TileManager *tile_manager = _mapWindow->get_tile_manager();
p_tile_top = NULL;
p_tile_bottom = NULL;
@@ -1106,8 +1106,8 @@ WingAnim::WingAnim(MapCoord t) {
y = target.y * 16;
uint16 mx, my, win_w, win_h;
- map_window->get_pos(&mx, &my);
- map_window->get_windowSize(&win_w, &win_h);
+ _mapWindow->get_pos(&mx, &my);
+ _mapWindow->get_windowSize(&win_w, &win_h);
uint16 off_x;
@@ -1243,7 +1243,7 @@ bool HailstormAnim::update() {
hailstones[i].p_tile = NULL;
uint8 z = 0;
- map_window->get_level(&z);
+ _mapWindow->get_level(&z);
Actor *actor = Game::get_game()->get_actor_manager()->get_actor(hailstones[i].x / 16, hailstones[i].y / 16, z);
if (actor) {
pause();
diff --git a/engines/ultima/nuvie/core/anim_manager.h b/engines/ultima/nuvie/core/anim_manager.h
index 312d9318d4..72dae375c2 100644
--- a/engines/ultima/nuvie/core/anim_manager.h
+++ b/engines/ultima/nuvie/core/anim_manager.h
@@ -202,11 +202,11 @@ typedef struct {
*/
class TileAnim : public NuvieAnim {
protected:
- MapWindow *map_window;
- uint32 tx, ty, // location on surface: in increments of "tile_pitch"
- px, py; // location on surface: pixel offset from tx,ty
+ MapWindow *_mapWindow;
+ uint32 _tx, _ty, // location on surface: in increments of "tile_pitch"
+ _px, _py; // location on surface: pixel offset from tx,ty
- vector<PositionedTile *> tiles;
+ vector<PositionedTile *> _tiles;
void display() override;
@@ -215,19 +215,19 @@ public:
~TileAnim() override;
MapCoord get_location() override {
- return (MapCoord(tx, ty, 0));
+ return (MapCoord(_tx, _ty, 0));
}
void get_offset(uint32 &x_add, uint32 &y_add) {
- x_add = px;
- y_add = py;
+ x_add = _px;
+ y_add = _py;
}
sint32 get_tile_id(PositionedTile *find_tile);
void move(uint32 x, uint32 y, uint32 add_x = 0, uint32 add_y = 0) override {
- tx = x;
- ty = y;
- px = add_x;
- py = add_y;
+ _tx = x;
+ _ty = y;
+ _px = add_x;
+ _py = add_y;
}
void shift(sint32 sx, sint32 sy) override;
void shift_tile(uint32 ptile_num, sint32 sx, sint32 sy);
diff --git a/engines/ultima/ultima4/map/tileanim.cpp b/engines/ultima/ultima4/map/tileanim.cpp
index 0aa80bf9af..db1e86fa1e 100644
--- a/engines/ultima/ultima4/map/tileanim.cpp
+++ b/engines/ultima/ultima4/map/tileanim.cpp
@@ -308,6 +308,13 @@ TileAnim::TileAnim(const ConfigElement &conf) : _random(0) {
}
}
+TileAnim::~TileAnim() {
+ for (uint idx = 0; idx < _transforms.size(); ++idx)
+ delete _transforms[idx];
+ for (uint idx = 0; idx < _contexts.size(); ++idx)
+ delete _contexts[idx];
+}
+
void TileAnim::draw(Image *dest, Tile *tile, MapTile &mapTile, Direction dir) {
Std::vector<TileAnimTransform *>::const_iterator t;
Std::vector<TileAnimContext *>::const_iterator c;
diff --git a/engines/ultima/ultima4/map/tileanim.h b/engines/ultima/ultima4/map/tileanim.h
index 3beee54836..18a193c699 100644
--- a/engines/ultima/ultima4/map/tileanim.h
+++ b/engines/ultima/ultima4/map/tileanim.h
@@ -196,6 +196,7 @@ private:
class TileAnim {
public:
TileAnim(const ConfigElement &conf);
+ ~TileAnim();
Common::String _name;
Std::vector<TileAnimTransform *> _transforms;
More information about the Scummvm-git-logs
mailing list