[Scummvm-git-logs] scummvm master -> c48a85d97c891fb5292ca12064418fd7a2e2d424
dreammaster
noreply at scummvm.org
Sat Mar 18 04:56:15 UTC 2023
This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
11b0d5cdcb MM: MM1: Fixes to blacksmith items buttons
ea9c18634b MM: MM1: Fix blacksmith items buttons not being clickable
98820217a2 MM: MM1: Blacksmith items now displaying
328c2bf17e MM: MM1: Remove deprecated list of item names
d0896acdd9 MM: MM1: Weapon/Armor/Misc switching for blacksmith
c48a85d97c MM: MM1: Fix incorrect cropping of Scroll of Fire item
Commit: 11b0d5cdcb7a78593e8c712045992127de1632f0
https://github.com/scummvm/scummvm/commit/11b0d5cdcb7a78593e8c712045992127de1632f0
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-17T21:55:45-07:00
Commit Message:
MM: MM1: Fixes to blacksmith items buttons
Changed paths:
engines/mm/mm1/views_enh/items_view.cpp
engines/mm/mm1/views_enh/text_view.cpp
engines/mm/mm1/views_enh/text_view.h
diff --git a/engines/mm/mm1/views_enh/items_view.cpp b/engines/mm/mm1/views_enh/items_view.cpp
index f1e7ba86045..43e78450164 100644
--- a/engines/mm/mm1/views_enh/items_view.cpp
+++ b/engines/mm/mm1/views_enh/items_view.cpp
@@ -27,7 +27,7 @@ namespace MM1 {
namespace ViewsEnh {
#define BUTTON_WIDTH 35
-#define EXIT_X 270
+#define EXIT_X 275
ItemsView::ItemsView(const Common::String &name) : PartyView(name),
_buttonsArea(Common::Rect(0, 101, 320, 146)) {
@@ -37,10 +37,13 @@ ItemsView::ItemsView(const Common::String &name) : PartyView(name),
void ItemsView::addButton(int frame, const Common::String &text,
Common::KeyCode keycode) {
Common::Point pt(_btnText.size() * BUTTON_WIDTH + 5, 0);
- if (keycode == Common::KEYCODE_ESCAPE)
+ if (keycode == Common::KEYCODE_ESCAPE) {
pt.x = EXIT_X;
+ PartyView::addButton(&g_globals->_escSprites, pt, 0, KEYBIND_ESCAPE);
+ } else {
+ PartyView::addButton(&_btnSprites, pt, frame, keycode);
+ }
- PartyView::addButton(&_btnSprites, pt, frame, keycode);
_btnText.push_back(text);
}
@@ -69,7 +72,7 @@ void ItemsView::draw() {
if (i == (_btnText.size() - 1))
pt.x = EXIT_X;
- writeString(pt.x + 18, pt.y, _btnText[i], ALIGN_MIDDLE);
+ writeString(pt.x + 12, pt.y, _btnText[i], ALIGN_MIDDLE);
}
// TODO: drawing items
@@ -79,14 +82,19 @@ bool ItemsView::msgKeypress(const KeypressMessage &msg) {
if (endDelay())
return true;
- return true;
+ return PartyView::msgKeypress(msg);
}
bool ItemsView::msgAction(const ActionMessage &msg) {
if (endDelay())
return true;
- return true;
+ if (msg._action == KEYBIND_ESCAPE) {
+ close();
+ return true;
+ } else {
+ return PartyView::msgAction(msg);
+ }
}
void ItemsView::timeout() {
diff --git a/engines/mm/mm1/views_enh/text_view.cpp b/engines/mm/mm1/views_enh/text_view.cpp
index bd45fb52178..3ae732d4e87 100644
--- a/engines/mm/mm1/views_enh/text_view.cpp
+++ b/engines/mm/mm1/views_enh/text_view.cpp
@@ -45,7 +45,7 @@ byte TextView::setTextColor(byte col) {
return oldColor;
}
-Graphics::Font *TextView::getFont() const {
+XeenFont *TextView::getFont() const {
return _fontReduced ? &g_globals->_fontReduced :
&g_globals->_fontNormal;
}
diff --git a/engines/mm/mm1/views_enh/text_view.h b/engines/mm/mm1/views_enh/text_view.h
index 5ec95099906..b8210d394f8 100644
--- a/engines/mm/mm1/views_enh/text_view.h
+++ b/engines/mm/mm1/views_enh/text_view.h
@@ -24,6 +24,7 @@
#include "graphics/font.h"
#include "mm/mm1/events.h"
+#include "mm/shared/utils/xeen_font.h"
namespace MM {
namespace MM1 {
@@ -31,7 +32,7 @@ namespace ViewsEnh {
class TextView : public UIElement {
private:
- Graphics::Font *getFont() const;
+ XeenFont *getFont() const;
/**
* Raw write string
Commit: ea9c18634b087267e7040e7ca644029cee638f69
https://github.com/scummvm/scummvm/commit/ea9c18634b087267e7040e7ca644029cee638f69
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-17T21:55:46-07:00
Commit Message:
MM: MM1: Fix blacksmith items buttons not being clickable
Changed paths:
engines/mm/mm1/views_enh/items_view.cpp
diff --git a/engines/mm/mm1/views_enh/items_view.cpp b/engines/mm/mm1/views_enh/items_view.cpp
index 43e78450164..9444054922a 100644
--- a/engines/mm/mm1/views_enh/items_view.cpp
+++ b/engines/mm/mm1/views_enh/items_view.cpp
@@ -36,7 +36,7 @@ ItemsView::ItemsView(const Common::String &name) : PartyView(name),
void ItemsView::addButton(int frame, const Common::String &text,
Common::KeyCode keycode) {
- Common::Point pt(_btnText.size() * BUTTON_WIDTH + 5, 0);
+ Common::Point pt(_btnText.size() * BUTTON_WIDTH + 5, 101);
if (keycode == Common::KEYCODE_ESCAPE) {
pt.x = EXIT_X;
PartyView::addButton(&g_globals->_escSprites, pt, 0, KEYBIND_ESCAPE);
@@ -54,21 +54,19 @@ bool ItemsView::msgFocus(const FocusMessage &msg) {
}
void ItemsView::draw() {
- // Manually draw a frame for the entire area to avoid
- // also drawing the buttons
- frame();
- fill();
+ // Draw the outer frame and buttons
+ PartyView::draw();
- // Now draw the buttons area
+ // Draw the frame surrounding the buttons area
const Common::Rect r = _bounds;
_bounds = _buttonsArea;
- PartyView::draw();
+ frame();
_bounds = r;
// Draw button text
setReduced(true);
for (uint i = 0; i < _btnText.size(); ++i) {
- Common::Point pt(i * BUTTON_WIDTH + 5, 122);
+ Common::Point pt(i * BUTTON_WIDTH + 5, 123);
if (i == (_btnText.size() - 1))
pt.x = EXIT_X;
Commit: 98820217a25150bd6e56acefae416c747197d52a
https://github.com/scummvm/scummvm/commit/98820217a25150bd6e56acefae416c747197d52a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-17T21:55:46-07:00
Commit Message:
MM: MM1: Blacksmith items now displaying
Changed paths:
devtools/create_mm/files/mm1/strings_en.yml
engines/mm/mm1/views_enh/items_view.cpp
engines/mm/mm1/views_enh/items_view.h
engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
engines/mm/mm1/views_enh/locations/blacksmith_items.h
diff --git a/devtools/create_mm/files/mm1/strings_en.yml b/devtools/create_mm/files/mm1/strings_en.yml
index e8568187a00..976a5ff070f 100644
--- a/devtools/create_mm/files/mm1/strings_en.yml
+++ b/devtools/create_mm/files/mm1/strings_en.yml
@@ -426,8 +426,7 @@ dialogs:
enhdialogs:
blacksmith:
browse: "\x01""37Browse"
- for: "for"
- the: "the"
+ backpack_for: "Backpack for %s the %s"
cost: "Cost"
gold: "Gold"
available: "Available"
@@ -437,12 +436,10 @@ enhdialogs:
areas:
weapons: "Weapons"
armor: "Armor"
- accessories: "Accessories"
misc: "Misc"
buttons:
weapons: "\x01""37Weap"
armor: "\x01""37Armor"
- accessories: "A\x01""37cces"
misc: "\x01""37Misc"
buy: "\x01""37Buy"
sell: "\x01""37Sell"
@@ -555,6 +552,7 @@ enhdialogs:
misc:
exit: "Exit"
go_back: "Go back"
+ no_items: "Inventory empty"
quickref:
title: "Quick Reference Chart"
headers:
diff --git a/engines/mm/mm1/views_enh/items_view.cpp b/engines/mm/mm1/views_enh/items_view.cpp
index 9444054922a..b5f0db3c2a8 100644
--- a/engines/mm/mm1/views_enh/items_view.cpp
+++ b/engines/mm/mm1/views_enh/items_view.cpp
@@ -73,7 +73,24 @@ void ItemsView::draw() {
writeString(pt.x + 12, pt.y, _btnText[i], ALIGN_MIDDLE);
}
- // TODO: drawing items
+ // List the items
+ for (uint i = 0; i < _items.size(); ++i) {
+ g_globals->_items.getItem(_items[i]);
+ const Item &item = g_globals->_currItem;
+ const Common::String line = Common::String::format(
+ "%c) %s", _startingChar + i,
+ item._name.c_str()
+ );
+ writeLine(2 + i, line, ALIGN_LEFT, 10);
+
+ if (_costMode != NO_COST) {
+ int cost = (_costMode == SHOW_COST) ? item._cost : item.getSellCost();
+ writeLine(2 + i, Common::String::format("%d", cost),
+ ALIGN_RIGHT);
+ }
+ }
+ if (_items.size() == 0)
+ writeLine(2, STRING["enhdialogs.misc.no_items"], ALIGN_LEFT, 10);
}
bool ItemsView::msgKeypress(const KeypressMessage &msg) {
diff --git a/engines/mm/mm1/views_enh/items_view.h b/engines/mm/mm1/views_enh/items_view.h
index 424dca7c91b..76a1d892e17 100644
--- a/engines/mm/mm1/views_enh/items_view.h
+++ b/engines/mm/mm1/views_enh/items_view.h
@@ -30,7 +30,10 @@ namespace ViewsEnh {
class ItemsView : public PartyView {
protected:
+ enum CostMode { SHOW_COST, SHOW_VALUE, NO_COST };
int _selectedItem = -1;
+ char _startingChar = '1';
+ CostMode _costMode = NO_COST;
Common::Array<int> _items;
const Common::Rect _buttonsArea;
Shared::Xeen::SpriteResource _btnSprites;
diff --git a/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp b/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
index 83f35d48c98..a2e767bfb41 100644
--- a/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
+++ b/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
@@ -31,7 +31,6 @@ BlacksmithItems::BlacksmithItems() : ItemsView("BlacksmithItems") {
_btnSprites.load("buy.icn");
addButton(0, STRING["enhdialogs.blacksmith.buttons.weapons"], Common::KEYCODE_w);
addButton(2, STRING["enhdialogs.blacksmith.buttons.armor"], Common::KEYCODE_a);
- addButton(4, STRING["enhdialogs.blacksmith.buttons.accessories"], Common::KEYCODE_c);
addButton(6, STRING["enhdialogs.blacksmith.buttons.misc"], Common::KEYCODE_m);
addButton(8, STRING["enhdialogs.blacksmith.buttons.buy"], Common::KEYCODE_b);
addButton(10, STRING["enhdialogs.blacksmith.buttons.sell"], Common::KEYCODE_s);
@@ -41,47 +40,98 @@ BlacksmithItems::BlacksmithItems() : ItemsView("BlacksmithItems") {
bool BlacksmithItems::msgFocus(const FocusMessage &msg) {
ItemsView::msgFocus(msg);
+ _mode = WEAPONS_MODE;
+ _buyMode = true;
+ populateItems();
+
return true;
}
void BlacksmithItems::draw() {
ItemsView::draw();
+ drawTitle();
+}
+
+void BlacksmithItems::drawTitle() {
+ const Character &c = *g_globals->_currCharacter;
+
+ Common::String areaName = STRING["enhdialogs.blacksmith.areas.weapons"];
+ if (_mode == ARMOR_MODE)
+ areaName = STRING["enhdialogs.blacksmith.areas.armor"];
+ if (_mode == MISC_MODE)
+ areaName = STRING["enhdialogs.blacksmith.areas.misc"];
+
+ if (_buyMode) {
+ // Show title with "Available <Area>", "Gold", and "Cost"
+ setReduced(false);
+ Common::String title = Common::String::format("%s %s",
+ STRING["enhdialogs.blacksmith.available"].c_str(),
+ areaName.c_str());
+ writeString(0, 0, title);
- // writeString(0, 0, STRING["dialogs.game.BlacksmithItems.BlacksmithItems_here"], ALIGN_MIDDLE);
+ Common::String gold = Common::String::format("%s - %d",
+ STRING["enhdialogs.blacksmith.gold"].c_str(),
+ c._gold);
+ writeString(160, 0, gold);
+
+ writeString(0, 0, STRING["enhdialogs.blacksmith.cost"], ALIGN_RIGHT);
+
+ } else {
+ // Shows a title like "Weapons for Arturius the Paladin"
+ Common::String title = Common::String::format(
+ STRING["enhdialogs.blacksmith.backpack_for"].c_str(),
+ c._name,
+ STRING[Common::String::format("stats.classes.%d", c._class)].c_str()
+ );
+
+ setReduced(false);
+ writeLine(0, title, ALIGN_MIDDLE);
+ }
}
bool BlacksmithItems::msgKeypress(const KeypressMessage &msg) {
if (endDelay())
return true;
- /*
- if (_mode == CONFIRM) {
- if (msg.keycode == Common::KEYCODE_n) {
- close();
- } else if (msg.keycode == Common::KEYCODE_y) {
- close();
- Game::BlacksmithItems::check();
- }
- }
- */
+
return ItemsView::msgKeypress(msg);
}
bool BlacksmithItems::msgAction(const ActionMessage &msg) {
if (endDelay())
return true;
- /*
- if (_mode == CONFIRM) {
- if (msg._action == KEYBIND_ESCAPE) {
- close();
- } else if (msg._action == KEYBIND_SELECT) {
- close();
- Game::BlacksmithItems::check();
- }
- }
- */
+
return ItemsView::msgAction(msg);
}
+void BlacksmithItems::populateItems() {
+ _startingChar = _buyMode ? '1' : 'A';
+ _costMode = _buyMode ? SHOW_COST : SHOW_VALUE;
+ _items.clear();
+
+ if (_buyMode) {
+ // Populate the list of items that can be purchased
+ // from the Blacksmith in that category
+ int townNum = g_maps->_currentMap->dataByte(Maps::MAP_ID);
+ if (townNum < 1 || townNum >= 6)
+ townNum = 1;
+
+ const byte *ITEMS = WEAPONS[townNum - 1];
+ if (_mode == ARMOR_MODE)
+ ITEMS = ARMOR[townNum - 1];
+ if (_mode == MISC_MODE)
+ ITEMS = MISC[townNum - 1];
+
+ for (int i = 0; i < 6; ++i)
+ _items.push_back(ITEMS[i]);
+ } else {
+ // Sell mode, so list the player's inventory
+ const Character &c = *g_globals->_currCharacter;
+
+ for (uint i = 0; i < c._backpack.size(); ++i)
+ _items.push_back(c._backpack[i]._id);
+ }
+}
+
} // namespace Locations
} // namespace ViewsEnh
} // namespace MM1
diff --git a/engines/mm/mm1/views_enh/locations/blacksmith_items.h b/engines/mm/mm1/views_enh/locations/blacksmith_items.h
index 066b42d1c0b..749717aa740 100644
--- a/engines/mm/mm1/views_enh/locations/blacksmith_items.h
+++ b/engines/mm/mm1/views_enh/locations/blacksmith_items.h
@@ -23,13 +23,31 @@
#define MM1_VIEWS_ENH_LOCATIONS_BLACKSMITH_ITEMS_H
#include "mm/mm1/views_enh/items_view.h"
+#include "mm/mm1/data/locations.h"
namespace MM {
namespace MM1 {
namespace ViewsEnh {
namespace Locations {
-class BlacksmithItems : public ItemsView {
+class BlacksmithItems : public ItemsView,
+ public BuyWeaponData, public BuyArmorData,
+ public BuyMiscData {
+private:
+ enum BlacksmithMode { WEAPONS_MODE = 0, ARMOR_MODE = 1, MISC_MODE = 2 };
+ BlacksmithMode _mode = WEAPONS_MODE;
+ bool _buyMode = true;
+
+ /**
+ * Populates the list of items
+ */
+ void populateItems();
+
+ /**
+ * Displays the title row
+ */
+ void drawTitle();
+
public:
BlacksmithItems();
virtual ~BlacksmithItems() {}
Commit: 328c2bf17e0716bccea34b1a9ca481ba92ad57a6
https://github.com/scummvm/scummvm/commit/328c2bf17e0716bccea34b1a9ca481ba92ad57a6
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-17T21:55:47-07:00
Commit Message:
MM: MM1: Remove deprecated list of item names
Changed paths:
devtools/create_mm/files/mm1/strings_en.yml
engines/mm/mm1/data/items.cpp
diff --git a/devtools/create_mm/files/mm1/strings_en.yml b/devtools/create_mm/files/mm1/strings_en.yml
index 976a5ff070f..60272be0f4d 100644
--- a/devtools/create_mm/files/mm1/strings_en.yml
+++ b/devtools/create_mm/files/mm1/strings_en.yml
@@ -662,262 +662,6 @@ stats:
3: "Algary"
4: "Dusk"
5: "Erliquin"
- items:
- 1: "club"
- 2: "dagger"
- 3: "hand axe"
- 4: "spear"
- 5: "short sword"
- 6: "mace"
- 7: "flail"
- 8: "scimitar"
- 9: "broad sword"
- 10: "battle axe"
- 11: "long sword"
- 12: "club +1"
- 13: "club +2"
- 14: "dagger +1"
- 15: "hand axe +1"
- 16: "spear +1"
- 17: "short sword +1"
- 18: "mace +1"
- 19: "flail +1"
- 20: "scimitar +1"
- 21: "broad sword +1"
- 22: "battle axe +1"
- 23: "long sword +1"
- 24: "flaming club"
- 25: "club of noise"
- 26: "dagger +2"
- 27: "hand axe +2"
- 28: "spear +2"
- 29: "short sword +2"
- 30: "mace +2"
- 31: "flail +2"
- 32: "scimitar +2"
- 33: "broad sword +2"
- 34: "battle axe +2"
- 35: "long sword +2"
- 36: "royal dagger"
- 37: "dagger of mind"
- 38: "diamond dagger"
- 39: "electric spear"
- 40: "holy mace"
- 41: "un-holy mace"
- 42: "dark flail"
- 43: "flail of fear"
- 44: "lucky scimitar"
- 45: "mace of undead"
- 46: "cold axe"
- 47: "electric sword"
- 48: "flaming sword"
- 49: "sword of might"
- 50: "sword of speed"
- 51: "sharp sword"
- 52: "accurate sword"
- 53: "sword of magic"
- 54: "immortal sword"
- 55: "axe protector"
- 56: "axe destroyer"
- 57: "x!xx!x's sword"
- 58: "adamtine axe"
- 59: "ultimate sword"
- 60: "element sword"
- 61: "sling"
- 62: "crossbow"
- 63: "short bow"
- 64: "long bow"
- 65: "great bow"
- 66: "sling +1"
- 67: "crossbow +1"
- 68: "short bow +1"
- 69: "long bow +1"
- 70: "great bow +1"
- 71: "magic sling"
- 72: "crossbow +2"
- 73: "short bow +2"
- 74: "long bow +2"
- 75: "great bow +2"
- 76: "crossbow luck"
- 77: "crossbow speed"
- 78: "lightning bow"
- 79: "flaming bow"
- 80: "giant's bow"
- 81: "the magic bow"
- 82: "bow of power"
- 83: "robber's x-bow"
- 84: "archer's bow"
- 85: "obsidian bow"
- 86: "staff"
- 87: "glaive"
- 88: "bardiche"
- 89: "halberd"
- 90: "great hammer"
- 91: "great axe"
- 92: "flamberge"
- 93: "staff +1"
- 94: "glaive +1"
- 95: "bardiche +1"
- 96: "halberd +1"
- 97: "great hammer+1"
- 98: "great axe +1"
- 99: "flamberge +1"
- 100: "staff +2"
- 101: "glaive +2"
- 102: "bardiche +2"
- 103: "halberd +2"
- 104: "great hammer+2"
- 105: "great axe +2"
- 106: "flamberge +2"
- 107: "staff of light"
- 108: "cold glaive"
- 109: "curing staff"
- 110: "minotaur's axe"
- 111: "thunder hammer"
- 112: "great axe +3"
- 113: "flamberge +3"
- 114: "sorcerer staff"
- 115: "staff of magic"
- 116: "demon's glaive"
- 117: "devil's glaive"
- 118: "the flamberge"
- 119: "holy flamberge"
- 120: "evil flamberge"
- 121: "padded armor"
- 122: "leather armor"
- 123: "scale armor"
- 124: "ring mail"
- 125: "chain mail"
- 126: "splint mail"
- 127: "plate mail"
- 128: "padded +1"
- 129: "leather +1"
- 130: "scale +1"
- 131: "ring mail +1"
- 132: "chain mail +1"
- 133: "splint mail +1"
- 134: "plate mail +1"
- 135: "leather +2"
- 136: "scale +2"
- 137: "ring mail +2"
- 138: "chain mail +2"
- 139: "splint mail +2"
- 140: "plate mail +2"
- 141: "bracers ac 4"
- 142: "ring mail +3"
- 143: "chain mail +3"
- 144: "splint mail +3"
- 145: "plate mail +3"
- 146: "bracers ac 6"
- 147: "chain mail +3"
- 148: "bracers ac 8"
- 149: "blue ring mail"
- 150: "red chain mail"
- 151: "x!xx!x's plate"
- 152: "holy plate"
- 153: "un-holy plate"
- 154: "ultimate plate"
- 155: "bracers ac 8"
- 156: "small shield"
- 157: "large shield"
- 158: "silver shield"
- 159: "small shield+1"
- 160: "large shield+1"
- 161: "large shield+1"
- 162: "small shield+2"
- 163: "large shield+2"
- 164: "large shield+2"
- 165: "fire shield"
- 166: "cold shield"
- 167: "elec shield"
- 168: "acid shield"
- 169: "magic shield"
- 170: "dragon shield"
- 171: "rope & hooks"
- 172: "torch"
- 173: "lantern"
- 174: "10 foot pole"
- 175: "garlic"
- 176: "wolfsbane"
- 177: "belladonna"
- 178: "magic herbs"
- 179: "dried beef"
- 180: "robber's tools"
- 181: "bag of silver"
- 182: "amber gem"
- 183: "smelling salt"
- 184: "bag of sand"
- 185: "might potion"
- 186: "speed potion"
- 187: "sundial"
- 188: "curing potion"
- 189: "magic potion"
- 190: "defense ring"
- 191: "bag of garbage"
- 192: "scroll of fire"
- 193: "flying carpet"
- 194: "jade amulet"
- 195: "antidote brew"
- 196: "skill potion"
- 197: "boots of speed"
- 198: "lucky charm"
- 199: "wand of fire"
- 200: "undead amulet"
- 201: "silent chime"
- 202: "belt of power"
- 203: "model boat"
- 204: "defense cloak"
- 205: "knowledge book"
- 206: "ruby idol"
- 207: "sorcerer robe"
- 208: "power gauntlet"
- 209: "cleric's beads"
- 210: "horn of death"
- 211: "potion of life"
- 212: "shiny pendant"
- 213: "lightning wand"
- 214: "precision ring"
- 215: "return scroll"
- 216: "teleport helm"
- 217: "youth potion"
- 218: "bells of time"
- 219: "magic oil"
- 220: "magic vest"
- 221: "destroyer wand"
- 222: "element scarab"
- 223: "sun scroll"
- 224: "star ruby"
- 225: "star sapphire"
- 226: "wealth chest"
- 227: "gem sack"
- 228: "diamond collar"
- 229: "fire opal"
- 230: "unobtainium"
- 231: "vellum scroll"
- 232: "ruby whistle"
- 233: "kings pass"
- 234: "merchants pass"
- 235: "crystal key"
- 236: "coral key"
- 237: "bronze key"
- 238: "silver key"
- 239: "gold key"
- 240: "diamond key"
- 241: "cactus nectar"
- 242: "map of desert"
- 243: "laser blaster"
- 244: "dragons tooth"
- 245: "wyvern eye"
- 246: "medusa head"
- 247: "ring of okrim"
- 248: "b queen idol"
- 249: "w queen idol"
- 250: "pirates map a"
- 251: "pirates map b"
- 252: "thundranium"
- 253: "key card"
- 254: "eye of gordos"
- 255: "(useless item)"
movement:
obstructed:
0: " solid! "
diff --git a/engines/mm/mm1/data/items.cpp b/engines/mm/mm1/data/items.cpp
index ca52aff236c..1260113d73b 100644
--- a/engines/mm/mm1/data/items.cpp
+++ b/engines/mm/mm1/data/items.cpp
@@ -65,8 +65,6 @@ bool ItemsArray::load() {
Item *ItemsArray::getItem(byte index) const {
assert(index > 0);
g_globals->_currItem = (*this)[index - 1];
- g_globals->_currItem._name = STRING[Common::String::format(
- "stats.items.%d", (int)index)];
return &g_globals->_currItem;
}
Commit: d0896acdd9db786247a6ee1ca4924a5682c6d281
https://github.com/scummvm/scummvm/commit/d0896acdd9db786247a6ee1ca4924a5682c6d281
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-17T21:55:47-07:00
Commit Message:
MM: MM1: Weapon/Armor/Misc switching for blacksmith
Changed paths:
engines/mm/mm1/views_enh/items_view.cpp
engines/mm/mm1/views_enh/items_view.h
engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
engines/mm/mm1/views_enh/locations/blacksmith_items.h
diff --git a/engines/mm/mm1/views_enh/items_view.cpp b/engines/mm/mm1/views_enh/items_view.cpp
index b5f0db3c2a8..01a171c84a6 100644
--- a/engines/mm/mm1/views_enh/items_view.cpp
+++ b/engines/mm/mm1/views_enh/items_view.cpp
@@ -78,7 +78,7 @@ void ItemsView::draw() {
g_globals->_items.getItem(_items[i]);
const Item &item = g_globals->_currItem;
const Common::String line = Common::String::format(
- "%c) %s", _startingChar + i,
+ "%d) %s", i + 1,
item._name.c_str()
);
writeLine(2 + i, line, ALIGN_LEFT, 10);
diff --git a/engines/mm/mm1/views_enh/items_view.h b/engines/mm/mm1/views_enh/items_view.h
index 76a1d892e17..bc394aed241 100644
--- a/engines/mm/mm1/views_enh/items_view.h
+++ b/engines/mm/mm1/views_enh/items_view.h
@@ -32,7 +32,6 @@ class ItemsView : public PartyView {
protected:
enum CostMode { SHOW_COST, SHOW_VALUE, NO_COST };
int _selectedItem = -1;
- char _startingChar = '1';
CostMode _costMode = NO_COST;
Common::Array<int> _items;
const Common::Rect _buttonsArea;
diff --git a/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp b/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
index a2e767bfb41..7c4490141f9 100644
--- a/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
+++ b/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
@@ -41,7 +41,6 @@ bool BlacksmithItems::msgFocus(const FocusMessage &msg) {
ItemsView::msgFocus(msg);
_mode = WEAPONS_MODE;
- _buyMode = true;
populateItems();
return true;
@@ -61,7 +60,18 @@ void BlacksmithItems::drawTitle() {
if (_mode == MISC_MODE)
areaName = STRING["enhdialogs.blacksmith.areas.misc"];
- if (_buyMode) {
+ if (_mode == SELL_MODE) {
+ // Show sell mode title
+ Common::String title = Common::String::format(
+ STRING["enhdialogs.blacksmith.backpack_for"].c_str(),
+ c._name,
+ STRING[Common::String::format("stats.classes.%d", c._class)].c_str()
+ );
+
+ setReduced(false);
+ writeLine(0, title, ALIGN_MIDDLE);
+
+ } else {
// Show title with "Available <Area>", "Gold", and "Cost"
setReduced(false);
Common::String title = Common::String::format("%s %s",
@@ -75,17 +85,6 @@ void BlacksmithItems::drawTitle() {
writeString(160, 0, gold);
writeString(0, 0, STRING["enhdialogs.blacksmith.cost"], ALIGN_RIGHT);
-
- } else {
- // Shows a title like "Weapons for Arturius the Paladin"
- Common::String title = Common::String::format(
- STRING["enhdialogs.blacksmith.backpack_for"].c_str(),
- c._name,
- STRING[Common::String::format("stats.classes.%d", c._class)].c_str()
- );
-
- setReduced(false);
- writeLine(0, title, ALIGN_MIDDLE);
}
}
@@ -93,7 +92,33 @@ bool BlacksmithItems::msgKeypress(const KeypressMessage &msg) {
if (endDelay())
return true;
- return ItemsView::msgKeypress(msg);
+ switch (msg.keycode) {
+ case Common::KEYCODE_w:
+ _mode = WEAPONS_MODE;
+ populateItems();
+ redraw();
+ break;
+ case Common::KEYCODE_a:
+ _mode = ARMOR_MODE;
+ populateItems();
+ redraw();
+ break;
+ case Common::KEYCODE_m:
+ _mode = MISC_MODE;
+ populateItems();
+ redraw();
+ break;
+ case Common::KEYCODE_s:
+ _mode = SELL_MODE;
+ populateItems();
+ redraw();
+ break;
+
+ default:
+ return ItemsView::msgKeypress(msg);
+ }
+
+ return true;
}
bool BlacksmithItems::msgAction(const ActionMessage &msg) {
@@ -104,13 +129,12 @@ bool BlacksmithItems::msgAction(const ActionMessage &msg) {
}
void BlacksmithItems::populateItems() {
- _startingChar = _buyMode ? '1' : 'A';
- _costMode = _buyMode ? SHOW_COST : SHOW_VALUE;
+ _costMode = (_mode == SELL_MODE) ? SHOW_VALUE : SHOW_COST;
_items.clear();
- if (_buyMode) {
+ if (_mode != SELL_MODE) {
// Populate the list of items that can be purchased
- // from the Blacksmith in that category
+ // from the blacksmith in that category
int townNum = g_maps->_currentMap->dataByte(Maps::MAP_ID);
if (townNum < 1 || townNum >= 6)
townNum = 1;
diff --git a/engines/mm/mm1/views_enh/locations/blacksmith_items.h b/engines/mm/mm1/views_enh/locations/blacksmith_items.h
index 749717aa740..201dd0197ee 100644
--- a/engines/mm/mm1/views_enh/locations/blacksmith_items.h
+++ b/engines/mm/mm1/views_enh/locations/blacksmith_items.h
@@ -34,9 +34,11 @@ class BlacksmithItems : public ItemsView,
public BuyWeaponData, public BuyArmorData,
public BuyMiscData {
private:
- enum BlacksmithMode { WEAPONS_MODE = 0, ARMOR_MODE = 1, MISC_MODE = 2 };
+ enum BlacksmithMode {
+ WEAPONS_MODE = 0, ARMOR_MODE = 1, MISC_MODE = 2,
+ SELL_MODE = 3
+ };
BlacksmithMode _mode = WEAPONS_MODE;
- bool _buyMode = true;
/**
* Populates the list of items
Commit: c48a85d97c891fb5292ca12064418fd7a2e2d424
https://github.com/scummvm/scummvm/commit/c48a85d97c891fb5292ca12064418fd7a2e2d424
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-17T21:55:47-07:00
Commit Message:
MM: MM1: Fix incorrect cropping of Scroll of Fire item
Changed paths:
engines/mm/mm1/data/items.cpp
diff --git a/engines/mm/mm1/data/items.cpp b/engines/mm/mm1/data/items.cpp
index 1260113d73b..835cc8ad127 100644
--- a/engines/mm/mm1/data/items.cpp
+++ b/engines/mm/mm1/data/items.cpp
@@ -45,7 +45,7 @@ bool ItemsArray::load() {
Common::String line = f.readLine();
assert(line.size() > 20 && line[0] == '"' && line[15] == '"');
- item._name = Common::String(line.c_str() + 1, line.c_str() + 14);
+ item._name = Common::String(line.c_str() + 1, line.c_str() + 15);
line = Common::String(line.c_str() + 16);
item._disablements = getNextValue(line);
More information about the Scummvm-git-logs
mailing list