Ticket #8602: nut-ondemand.diff
File nut-ondemand.diff, 4.3 KB (added by , 17 years ago) |
---|
-
engines/scumm/smush/smush_player.cpp
574 574 if ((!ConfMan.getBool("subtitles")) && ((flags & 8) == 8)) 575 575 return; 576 576 577 SmushFont *sf = _sf[0];577 SmushFont *sf = getFont(0); 578 578 int color = 15; 579 579 while (*str == '/') { 580 580 str++; // For Full Throttle text resources … … 600 600 { 601 601 int id = str[3] - '0'; 602 602 str += 4; 603 sf = _sf[id];603 sf = getFont(id); 604 604 } 605 605 break; 606 606 case 'c': … … 1027 1027 } 1028 1028 1029 1029 void SmushPlayer::setupAnim(const char *file) { 1030 int i;1031 char file_font[11];1032 1033 1030 if (_insanity) { 1034 1031 if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) 1035 1032 readString("mineroad.trs"); 1036 1033 } else 1037 1034 readString(file); 1035 } 1038 1036 1037 SmushFont *SmushPlayer::getFont(int font) { 1038 char file_font[11]; 1039 1040 if (_sf[font]) 1041 return _sf[font]; 1042 1039 1043 if (_vm->_game.id == GID_FT) { 1040 1044 if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) { 1041 _sf[0] = new SmushFont(_vm, true, false); 1042 _sf[1] = new SmushFont(_vm, true, false); 1043 _sf[2] = new SmushFont(_vm, true, false); 1044 _sf[3] = new SmushFont(_vm, true, false); 1045 _sf[0]->loadFont("scummfnt.nut", false); 1046 _sf[1]->loadFont("techfnt.nut", false); 1047 _sf[2]->loadFont("titlfnt.nut", false); 1048 _sf[3]->loadFont("specfnt.nut", false); 1045 const char *ft_fonts[] = { 1046 "scummfnt.nut", 1047 "techfnt.nut", 1048 "titlfnt.nut", 1049 "specfnt.nut" 1050 }; 1051 1052 assert(font >= 0 && font < ARRAYSIZE(ft_fonts)); 1053 1054 _sf[font] = new SmushFont(_vm, true, false); 1055 _sf[font]->loadFont(ft_fonts[font], false); 1049 1056 } 1050 1057 } else if (_vm->_game.id == GID_DIG) { 1051 1058 if (!(_vm->_game.features & GF_DEMO)) { 1052 for (i = 0; i < 4; i++) {1053 sprintf(file_font, "font%d.nut", i); 1054 _sf[i] = new SmushFont(_vm, i != 0, false);1055 _sf[i]->loadFont(file_font, false);1056 }1059 assert(font >= 0 && font < 4); 1060 1061 sprintf(file_font, "font%d.nut", font); 1062 _sf[font] = new SmushFont(_vm, font != 0, false); 1063 _sf[font]->loadFont(file_font, false); 1057 1064 } 1058 1065 } else if (_vm->_game.id == GID_CMI) { 1059 for (i = 0; i < 5; i++) { 1060 if ((_vm->_game.features & GF_DEMO) && (i == 4)) 1061 break; 1062 sprintf(file_font, "font%d.nut", i); 1063 _sf[i] = new SmushFont(_vm, false, true); 1064 _sf[i]->loadFont(file_font, false); 1065 } 1066 int numFonts = (_vm->_game.features & GF_DEMO) ? 4 : 5; 1067 assert(font >= 0 && font < numFonts); 1068 1069 sprintf(file_font, "font%d.nut", font); 1070 _sf[font] = new SmushFont(_vm, false, true); 1071 _sf[font]->loadFont(file_font, false); 1066 1072 } else { 1067 error("SmushPlayer:: setupAnim() Unknown font setup for game");1073 error("SmushPlayer::getFont() Unknown font setup for game"); 1068 1074 } 1075 1076 assert(_sf[font]); 1077 return _sf[font]; 1069 1078 } 1070 1079 1071 1080 void SmushPlayer::parseNextFrame() { -
engines/scumm/smush/smush_player.h
122 122 const char *getString(int id); 123 123 124 124 private: 125 SmushFont *getFont(int font); 125 126 void parseNextFrame(); 126 127 void init(int32 spped); 127 128 void setupAnim(const char *file); -
engines/scumm/charset.cpp
1604 1604 _current = 0; 1605 1605 1606 1606 for (int i = 0; i < 5; i++) { 1607 char fontname[256]; 1608 if ((_vm->_game.id == GID_CMI) && (_vm->_game.features & GF_DEMO) && (i == 4)) 1609 break; 1610 sprintf(fontname, "font%d.nut", i); 1611 _fr[i] = new NutRenderer(_vm); 1612 if (!(_fr[i]->loadFont(fontname, true))) { 1613 delete _fr[i]; 1614 _fr[i] = NULL; 1615 } 1607 _fr[i] = NULL; 1616 1608 } 1617 1609 } 1618 1610 … … 1625 1617 } 1626 1618 1627 1619 void CharsetRendererNut::setCurID(byte id) { 1628 assert(id < 5); 1620 int numFonts = ((_vm->_game.id == GID_CMI) && (_vm->_game.features & GF_DEMO)) ? 4 : 5; 1621 assert(id < numFonts); 1629 1622 _curId = id; 1623 if (!_fr[id]) { 1624 _fr[id] = new NutRenderer(_vm); 1625 char fontname[11]; 1626 sprintf(fontname, "font%d.nut", id); 1627 _fr[id] = new NutRenderer(_vm); 1628 _fr[id]->loadFont(fontname, true); 1629 } 1630 1630 _current = _fr[id]; 1631 1631 assert(_current); 1632 1632 }