mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-12 21:47:00 -04:00
- fixed SELECT_FIRST behavior: 0 >= 0
- added DoGetBestSize to PackTotalsPanel, so the text always fits git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1313 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
+4
-3
@@ -300,11 +300,11 @@ void PackInstance::expect_copy(double copies) {
|
|||||||
} else if (pack_type.select == SELECT_PROPORTIONAL) {
|
} else if (pack_type.select == SELECT_PROPORTIONAL) {
|
||||||
i.expect_copy(copies * item->amount * item->probability * i.count / total_probability);
|
i.expect_copy(copies * item->amount * item->probability * i.count / total_probability);
|
||||||
} else if (pack_type.select == SELECT_NONEMPTY) {
|
} else if (pack_type.select == SELECT_NONEMPTY) {
|
||||||
if (i.count >= 0) {
|
if (i.count > 0) {
|
||||||
i.expect_copy(copies * item->amount * item->probability / total_probability);
|
i.expect_copy(copies * item->amount * item->probability / total_probability);
|
||||||
}
|
}
|
||||||
} else if (pack_type.select == SELECT_FIRST) {
|
} else if (pack_type.select == SELECT_FIRST) {
|
||||||
if (i.count >= 0 && cards.empty()) {
|
if (i.count > 0 && cards.empty()) {
|
||||||
i.expect_copy(copies * item->amount);
|
i.expect_copy(copies * item->amount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -328,6 +328,7 @@ struct RandomRange {
|
|||||||
|
|
||||||
void PackInstance::generate(vector<CardP>* out) {
|
void PackInstance::generate(vector<CardP>* out) {
|
||||||
card_copies = 0;
|
card_copies = 0;
|
||||||
|
if (requested_copies == 0) return;
|
||||||
if (pack_type.select == SELECT_ALL) {
|
if (pack_type.select == SELECT_ALL) {
|
||||||
// add all cards
|
// add all cards
|
||||||
card_copies += requested_copies * cards.size();
|
card_copies += requested_copies * cards.size();
|
||||||
@@ -417,7 +418,7 @@ void PackInstance::generate(vector<CardP>* out) {
|
|||||||
// pick first nonempty item
|
// pick first nonempty item
|
||||||
FOR_EACH_CONST(item, pack_type.items) {
|
FOR_EACH_CONST(item, pack_type.items) {
|
||||||
PackInstance& i = parent.get(item->name);
|
PackInstance& i = parent.get(item->name);
|
||||||
if (i.count >= 0) {
|
if (i.count > 0) {
|
||||||
i.request_copy(requested_copies * item->amount);
|
i.request_copy(requested_copies * item->amount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ class PackTotalsPanel : public wxPanel {
|
|||||||
void addPack(PackType& pack, int copies);
|
void addPack(PackType& pack, int copies);
|
||||||
void addItemRef(PackItemRef& item, int copies);
|
void addItemRef(PackItemRef& item, int copies);
|
||||||
#endif
|
#endif
|
||||||
|
virtual wxSize DoGetBestSize() const;
|
||||||
private:
|
private:
|
||||||
DECLARE_EVENT_TABLE();
|
DECLARE_EVENT_TABLE();
|
||||||
GameP game;
|
GameP game;
|
||||||
@@ -149,7 +150,6 @@ void PackTotalsPanel::draw(DC& dc) {
|
|||||||
dc.DrawLine(0, y-2, size.x, y-2);
|
dc.DrawLine(0, y-2, size.x, y-2);
|
||||||
y += 7;
|
y += 7;
|
||||||
drawItem(dc, y, _LABEL_("total cards"), total);
|
drawItem(dc, y, _LABEL_("total cards"), total);
|
||||||
|
|
||||||
}
|
}
|
||||||
void PackTotalsPanel::drawItem(DC& dc, int& y, const String& name, double value) {
|
void PackTotalsPanel::drawItem(DC& dc, int& y, const String& name, double value) {
|
||||||
wxSize size = dc.GetSize();
|
wxSize size = dc.GetSize();
|
||||||
@@ -161,6 +161,27 @@ void PackTotalsPanel::drawItem(DC& dc, int& y, const String& name, double value
|
|||||||
y += h + 10;
|
y += h + 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxSize PackTotalsPanel::DoGetBestSize() const {
|
||||||
|
// count lines
|
||||||
|
int lines = 0;
|
||||||
|
#if USE_NEW_PACK_SYSTEM
|
||||||
|
if (game && generator.set) {
|
||||||
|
FOR_EACH(pack, game->pack_types) {
|
||||||
|
PackInstance& i = generator.get(pack);
|
||||||
|
if (pack->summary && i.has_cards()) lines++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
lines = game ? (int)game->pack_items.size() : 0;
|
||||||
|
#endif
|
||||||
|
// don't forget the total
|
||||||
|
lines++;
|
||||||
|
// size
|
||||||
|
int height = lines * (GetCharHeight() + 10) + 7 - 10;
|
||||||
|
wxSize ws = GetSize(), cs = GetClientSize();
|
||||||
|
return wxSize(0,height) + ws - cs;
|
||||||
|
}
|
||||||
|
|
||||||
void PackTotalsPanel::setGame(const GameP& game) {
|
void PackTotalsPanel::setGame(const GameP& game) {
|
||||||
this->game = game;
|
this->game = game;
|
||||||
#if !USE_NEW_PACK_SYSTEM
|
#if !USE_NEW_PACK_SYSTEM
|
||||||
|
|||||||
Reference in New Issue
Block a user