Fix loading objects in the Amiga version of BRA.
svn-id: r39413
This commit is contained in:
parent
bcabf5e53f
commit
7f99a190cb
5 changed files with 38 additions and 17 deletions
|
@ -66,7 +66,7 @@ public:
|
||||||
virtual Script* loadLocation(const char *name) = 0;
|
virtual Script* loadLocation(const char *name) = 0;
|
||||||
virtual Script* loadScript(const char* name) = 0;
|
virtual Script* loadScript(const char* name) = 0;
|
||||||
virtual GfxObj* loadTalk(const char *name) = 0;
|
virtual GfxObj* loadTalk(const char *name) = 0;
|
||||||
virtual GfxObj* loadObjects(const char *name) = 0;
|
virtual GfxObj* loadObjects(const char *name, uint8 part = 0) = 0;
|
||||||
virtual Frames* loadPointer(const char *name) = 0;
|
virtual Frames* loadPointer(const char *name) = 0;
|
||||||
virtual GfxObj* loadHead(const char* name) = 0;
|
virtual GfxObj* loadHead(const char* name) = 0;
|
||||||
virtual Font* loadFont(const char* name) = 0;
|
virtual Font* loadFont(const char* name) = 0;
|
||||||
|
@ -130,7 +130,7 @@ public:
|
||||||
Script* loadLocation(const char *name);
|
Script* loadLocation(const char *name);
|
||||||
Script* loadScript(const char* name);
|
Script* loadScript(const char* name);
|
||||||
GfxObj* loadTalk(const char *name);
|
GfxObj* loadTalk(const char *name);
|
||||||
GfxObj* loadObjects(const char *name);
|
GfxObj* loadObjects(const char *name, uint8 part = 0);
|
||||||
Frames* loadPointer(const char *name);
|
Frames* loadPointer(const char *name);
|
||||||
GfxObj* loadHead(const char* name);
|
GfxObj* loadHead(const char* name);
|
||||||
Font* loadFont(const char* name);
|
Font* loadFont(const char* name);
|
||||||
|
@ -166,7 +166,7 @@ public:
|
||||||
Script* loadLocation(const char *name);
|
Script* loadLocation(const char *name);
|
||||||
Script* loadScript(const char* name);
|
Script* loadScript(const char* name);
|
||||||
GfxObj* loadTalk(const char *name);
|
GfxObj* loadTalk(const char *name);
|
||||||
GfxObj* loadObjects(const char *name);
|
GfxObj* loadObjects(const char *name, uint8 part = 0);
|
||||||
Frames* loadPointer(const char *name);
|
Frames* loadPointer(const char *name);
|
||||||
GfxObj* loadHead(const char* name);
|
GfxObj* loadHead(const char* name);
|
||||||
Font* loadFont(const char* name);
|
Font* loadFont(const char* name);
|
||||||
|
@ -222,7 +222,7 @@ public:
|
||||||
Script* loadLocation(const char *name);
|
Script* loadLocation(const char *name);
|
||||||
Script* loadScript(const char* name);
|
Script* loadScript(const char* name);
|
||||||
GfxObj* loadTalk(const char *name);
|
GfxObj* loadTalk(const char *name);
|
||||||
GfxObj* loadObjects(const char *name);
|
GfxObj* loadObjects(const char *name, uint8 part = 0);
|
||||||
Frames* loadPointer(const char *name);
|
Frames* loadPointer(const char *name);
|
||||||
GfxObj* loadHead(const char* name);
|
GfxObj* loadHead(const char* name);
|
||||||
Font* loadFont(const char* name);
|
Font* loadFont(const char* name);
|
||||||
|
@ -264,7 +264,7 @@ public:
|
||||||
Frames* loadFrames(const char* name);
|
Frames* loadFrames(const char* name);
|
||||||
void loadSlide(BackgroundInfo& info, const char *filename);
|
void loadSlide(BackgroundInfo& info, const char *filename);
|
||||||
void loadScenery(BackgroundInfo& info, const char* name, const char* mask, const char* path);
|
void loadScenery(BackgroundInfo& info, const char* name, const char* mask, const char* path);
|
||||||
GfxObj* loadObjects(const char *name);
|
GfxObj* loadObjects(const char *name, uint8 part = 0);
|
||||||
Common::SeekableReadStream* loadMusic(const char* name);
|
Common::SeekableReadStream* loadMusic(const char* name);
|
||||||
Common::ReadStream* loadSound(const char* name);
|
Common::ReadStream* loadSound(const char* name);
|
||||||
Common::String selectArchive(const Common::String& name);
|
Common::String selectArchive(const Common::String& name);
|
||||||
|
|
|
@ -249,7 +249,7 @@ Font* DosDisk_br::loadFont(const char* name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GfxObj* DosDisk_br::loadObjects(const char *name) {
|
GfxObj* DosDisk_br::loadObjects(const char *name, uint8 part) {
|
||||||
debugC(5, kDebugDisk, "DosDisk_br::loadObjects");
|
debugC(5, kDebugDisk, "DosDisk_br::loadObjects");
|
||||||
Common::SeekableReadStream *stream = openFile(name);
|
Common::SeekableReadStream *stream = openFile(name);
|
||||||
GfxObj *obj = createInventoryObjects(*stream);
|
GfxObj *obj = createInventoryObjects(*stream);
|
||||||
|
@ -607,7 +607,11 @@ Common::ReadStream* AmigaDisk_br::loadSound(const char* name) {
|
||||||
return openFile("sfx/" + Common::String(name), ".sfx");
|
return openFile("sfx/" + Common::String(name), ".sfx");
|
||||||
}
|
}
|
||||||
|
|
||||||
GfxObj* AmigaDisk_br::loadObjects(const char *name) {
|
static const uint16 objectsMax[5] = {
|
||||||
|
5, 73, 71, 19, 48
|
||||||
|
};
|
||||||
|
|
||||||
|
GfxObj* AmigaDisk_br::loadObjects(const char *name, uint8 part) {
|
||||||
debugC(5, kDebugDisk, "AmigaDisk_br::loadObjects");
|
debugC(5, kDebugDisk, "AmigaDisk_br::loadObjects");
|
||||||
|
|
||||||
Common::SeekableReadStream *stream = openFile(name);
|
Common::SeekableReadStream *stream = openFile(name);
|
||||||
|
@ -621,7 +625,24 @@ GfxObj* AmigaDisk_br::loadObjects(const char *name) {
|
||||||
delete stream;
|
delete stream;
|
||||||
free(pal);
|
free(pal);
|
||||||
|
|
||||||
return new GfxObj(0, new SurfaceToFrames(surf));
|
uint16 max = objectsMax[part];
|
||||||
|
byte *data = new byte[max * 2601];
|
||||||
|
|
||||||
|
// Convert to the expected display format
|
||||||
|
for (int i = 0; i < max; i++) {
|
||||||
|
uint16 x = (i % 8) * 51;
|
||||||
|
uint16 y = (i / 8) * 51;
|
||||||
|
|
||||||
|
byte *src = (byte *)surf->getBasePtr(x, y);
|
||||||
|
byte *dst = data + i * 2601;
|
||||||
|
for (int h = 0; h < 51; h++) {
|
||||||
|
memcpy(dst, src, 51);
|
||||||
|
src += surf->w;
|
||||||
|
dst += 51;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new GfxObj(0, new Cnv(max, 51, 51, data, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
Common::String AmigaDisk_br::selectArchive(const Common::String& name) {
|
Common::String AmigaDisk_br::selectArchive(const Common::String& name) {
|
||||||
|
|
|
@ -371,7 +371,7 @@ Font* DosDisk_ns::loadFont(const char* name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GfxObj* DosDisk_ns::loadObjects(const char *name) {
|
GfxObj* DosDisk_ns::loadObjects(const char *name, uint8 part) {
|
||||||
char path[PATH_LEN];
|
char path[PATH_LEN];
|
||||||
sprintf(path, "%sobj", name);
|
sprintf(path, "%sobj", name);
|
||||||
return new GfxObj(0, loadExternalCnv(path), name);
|
return new GfxObj(0, loadExternalCnv(path), name);
|
||||||
|
@ -1154,7 +1154,7 @@ GfxObj* AmigaDisk_ns::loadHead(const char* name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GfxObj* AmigaDisk_ns::loadObjects(const char *name) {
|
GfxObj* AmigaDisk_ns::loadObjects(const char *name, uint8 part) {
|
||||||
debugC(1, kDebugDisk, "AmigaDisk_ns::loadObjects");
|
debugC(1, kDebugDisk, "AmigaDisk_ns::loadObjects");
|
||||||
|
|
||||||
char path[PATH_LEN];
|
char path[PATH_LEN];
|
||||||
|
|
|
@ -66,9 +66,9 @@ InventoryProperties _invProps_NS = {
|
||||||
24, // INVENTORYITEM_WIDTH
|
24, // INVENTORYITEM_WIDTH
|
||||||
24, // INVENTORYITEM_HEIGHT
|
24, // INVENTORYITEM_HEIGHT
|
||||||
30, // INVENTORY_MAX_ITEMS
|
30, // INVENTORY_MAX_ITEMS
|
||||||
5, // INVENTORY_ITEMS_PER_LINE
|
5, // INVENTORY_ITEMS_PER_LINE
|
||||||
6, // INVENTORY_LINES
|
6, // INVENTORY_LINES
|
||||||
5 * 24, // INVENTORY_WIDTH =(INVENTORY_ITEMS_PER_LINE*INVENTORYITEM_WIDTH)
|
5 * 24, // INVENTORY_WIDTH =(INVENTORY_ITEMS_PER_LINE*INVENTORYITEM_WIDTH)
|
||||||
6 * 24 // INVENTORY_HEIGHT = (INVENTORY_LINES*INVENTORYITEM_HEIGHT)
|
6 * 24 // INVENTORY_HEIGHT = (INVENTORY_LINES*INVENTORYITEM_HEIGHT)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -77,10 +77,10 @@ InventoryProperties _invProps_BR = {
|
||||||
51, // INVENTORYITEM_WIDTH
|
51, // INVENTORYITEM_WIDTH
|
||||||
51, // INVENTORYITEM_HEIGHT
|
51, // INVENTORYITEM_HEIGHT
|
||||||
48, // INVENTORY_MAX_ITEMS
|
48, // INVENTORY_MAX_ITEMS
|
||||||
6, // INVENTORY_ITEMS_PER_LINE
|
6, // INVENTORY_ITEMS_PER_LINE
|
||||||
8, // INVENTORY_LINES
|
8, // INVENTORY_LINES
|
||||||
6 * 51, // INVENTORY_WIDTH =(INVENTORY_ITEMS_PER_LINE*INVENTORYITEM_WIDTH)
|
6 * 51, // INVENTORY_WIDTH =(INVENTORY_ITEMS_PER_LINE*INVENTORYITEM_WIDTH)
|
||||||
8 * 51 // INVENTORY_HEIGHT = (INVENTORY_LINES*INVENTORYITEM_HEIGHT)
|
8 * 51 // INVENTORY_HEIGHT = (INVENTORY_LINES*INVENTORYITEM_HEIGHT)
|
||||||
};
|
};
|
||||||
|
|
||||||
int16 Parallaction::getHoverInventoryItem(int16 x, int16 y) {
|
int16 Parallaction::getHoverInventoryItem(int16 x, int16 y) {
|
||||||
|
|
|
@ -261,7 +261,7 @@ void Parallaction_br::changeLocation() {
|
||||||
if (getPlatform() == Common::kPlatformPC) {
|
if (getPlatform() == Common::kPlatformPC) {
|
||||||
_objects = _disk->loadObjects("icone.ico");
|
_objects = _disk->loadObjects("icone.ico");
|
||||||
} else {
|
} else {
|
||||||
_objects = _disk->loadObjects("icons.ico");
|
_objects = _disk->loadObjects("icons.ico", _part);
|
||||||
}
|
}
|
||||||
|
|
||||||
parseLocation("common.slf");
|
parseLocation("common.slf");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue