diff --git a/ba/ba0.cpp b/ba/ba0.cpp index 59dc142b7..c35593481 100755 --- a/ba/ba0.cpp +++ b/ba/ba0.cpp @@ -29,28 +29,23 @@ class TPicture_mask : public TMask { - TImage _image; + TImage & _image; protected: virtual void handler(WINDOW win, EVENT* ep); public: - TPicture_mask(const char* name, int dx, int dy, short id); + TPicture_mask(const char* name, int dx, int dy, TImage & image, bool remap); virtual ~TPicture_mask() {} }; -TPicture_mask::TPicture_mask(const char* name, int dx, int dy, short id) -: TMask(name, 1, dx, dy), _image("") -{ - char* n = format("ba%02d.bmp", id); - if (id > 0 && !fexist(n)) - n = format("ba%02d.bmp", id = 0); - _image.load(n); - +TPicture_mask::TPicture_mask(const char* name, int dx, int dy, TImage & image, bool remap) +: TMask(name, 1, dx, dy), _image(image) +{ if (_image.ok()) { - if (id == 0 && MASK_BACK_COLOR != COLOR_DKCYAN) + if (!remap && MASK_BACK_COLOR != COLOR_DKCYAN) _image.set_clut(6, MASK_BACK_COLOR); else _image.set_palette(win()); @@ -100,7 +95,7 @@ class TMenu_application : public TApplication int _first[MAXLEVEL]; TArray _menu; // TAG|DESCRIPTION|ACTION TBit_array _enabled; - TArray _modules; + TArray _modules, _images; int _level, _max; bool _ditta_asked; @@ -143,7 +138,7 @@ bool TMenu_application::build_firm_data(long codditta, bool flagcom) if (!exist) { - s = s.path(); s << ntrc; + s = s.path(); s.rtrim(1); s << ntrc; exist = fexist(s); } if (exist) @@ -151,7 +146,7 @@ bool TMenu_application::build_firm_data(long codditta, bool flagcom) if (!yesno_box("Gli archivi della ditta %ld non esistono: si desidera generarli?", codditta)) return FALSE; set_autoload_new_files(yesno_box("Si desidera precaricare gli archivi standard")); - s = s.path(); + s = s.path(); s.rtrim(1); if (!fexist(s)) { @@ -382,8 +377,19 @@ int TMenu_application::do_level() const int height = 18; const int bwidth = 20; const int x = width-bwidth-12; - const short pic = (short)row.get_int(); - TPicture_mask menu(head, width, height, pic); + short id = (short)row.get_int(); + + if (_images.objptr(id) == NULL) + { + char* n = format("ba%02d.bmp", id); + if (id > 0 && !fexist(n)) + n = format("ba%02d.bmp", id = 0); + TImage * image = new TImage(n); + + _images.add(image, id); + } + + TPicture_mask menu(head, width, height, (TImage &) _images[id], id != 0); int y = 1;