Fixed numbering of ringmenu, applied to buying at flag and weapon selector

Maikel de Vries 2012-05-22 20:34:10 +02:00
parent edfda6aecb
commit 821155b11c
6 changed files with 26 additions and 88 deletions

View File

@ -1,42 +0,0 @@
/* larger dynamite explosion */
#appendto RelaunchContainer
private func OpenWeaponMenu(object clonk)
{
if (!menu)
{
var weapons = WeaponList();
if(weapons)
{
menu = clonk->CreateRingMenu(Clonk, this);
for (var weapon in weapons)
{
if(weapon == Firestone) menu->AddItem(weapon,2);
else if(weapon == Dynamite) menu->AddItem(weapon,2);
else menu->AddItem(weapon);
}
menu->Show();
}
}
}
public func Selected(object menu, object selector, bool alt)
{
if (!selector)
return false;
for (var i = 0; i < selector->GetAmount(); i++)
{
var newobj = CreateObject(selector->GetSymbol());
if (newobj->GetID() == Bow)
newobj->CreateContents(Arrow);
if (newobj->GetID() == Musket)
newobj->CreateContents(LeadShot);
Contents()->Collect(newobj);
}
menu->Show();
RelaunchClonk();
return true;
}

View File

@ -1,5 +1,3 @@
/* larger dynamite explosion */
#appendto RelaunchContainer
private func OpenWeaponMenu(object clonk)
@ -14,30 +12,10 @@ private func OpenWeaponMenu(object clonk)
{
if(weapon == Firestone) menu->AddItem(weapon,2);
else if(weapon == Dynamite) menu->AddItem(weapon,2);
else menu->AddItem(weapon);
else menu->AddItem(weapon, 1);
}
menu->Show();
menu->SetUncloseable();
}
}
}
public func Selected(object menu, object selector, bool alt)
{
if (!selector)
return false;
for (var i = 0; i < selector->GetAmount(); i++)
{
var newobj = CreateObject(selector->GetSymbol());
if (newobj->GetID() == Bow)
newobj->CreateContents(Arrow);
if (newobj->GetID() == Musket)
newobj->CreateContents(LeadShot);
Contents()->Collect(newobj);
}
menu->Show();
RelaunchClonk();
return true;
}

View File

@ -62,7 +62,7 @@ private func OpenWeaponMenu(object clonk)
{
menu = clonk->CreateRingMenu(Clonk, this);
for (var weapon in weapons)
menu->AddItem(weapon);
menu->AddItem(weapon, 1);
menu->Show();
menu->SetUncloseable();
}
@ -96,7 +96,11 @@ public func Selected(object menu, object selector, bool alt)
if (!selector)
return false;
for (var i = 0; i < selector->GetAmount(); i++)
var amount = selector->GetAmount();
if (amount > 1)
alt = nil;
for (var i = 0; i < amount; i++)
GiveWeapon(selector->GetSymbol(), alt);
has_selected = true;

View File

@ -40,12 +40,8 @@ public func SetBG(bool newbg) {
public func SetNothing() // No item, no image, no whatever, just a plain button
{
SetAmount(0);
SetAmount(nil);
SetSymbol();
SetGraphics(nil,nil,9);
SetGraphics(nil,nil,10);
SetGraphics(nil,nil,11);
SetGraphics(nil,nil,12);
}
public func SetSize(int s) // in px *1000
@ -122,9 +118,15 @@ public func SetExtraData(extradata)
}
public func SetAmount(Amount)
{
amnt=Amount;
if(Amount==1) return ;
amnt = Amount;
if (Amount == nil)
{
SetGraphics(nil,nil,MI_AMOUNTX_LAYER);
SetGraphics(nil,nil,MI_AMOUNT1_LAYER);
SetGraphics(nil,nil,MI_AMOUNT10_LAYER);
SetGraphics(nil,nil,MI_AMOUNT100_LAYER);
return;
}
var one = Amount%10;
var ten = (Amount/10)%10;
var hun = (Amount/100)%10;

View File

@ -102,14 +102,7 @@ public func AddItem(new_item, int amount, extra)
menu_icons[index] = CreateObject(GUI_RingMenu_Icon,0,0,menu_object->GetOwner());
menu_icons[index]->SetSymbol(new_item);
menu_icons[index]->SetExtraData(extra);
if(amount == nil)
{
menu_icons[index]->SetAmount(1);
}
else
{
menu_icons[index]->SetAmount(amount);
}
menu_icons[index]->SetAmount(amount);
menu_icons[index].Visibility = VIS_None;
return index;
}

View File

@ -39,10 +39,10 @@ public func GetInteractionMetaInfo(object clonk)
public func Interact(object clonk)
{
var menu;
var i=0,item,player=clonk->GetOwner(), amount;
while (item = GetHomebaseMaterial(player, nil, i++))
var i = 0, item, amount;
while (item = GetHomebaseMaterial(GetOwner(), nil, i++))
{
amount = GetHomebaseMaterial(player, item);
amount = GetHomebaseMaterial(GetOwner(), item);
// Add even if amount==0
if (!menu) menu = clonk->CreateRingMenu(Flagpole, this);
if (!menu) return false;
@ -65,8 +65,11 @@ public func Selected(object menu, proplist menu_item, bool alt)
// Excess objects exit flag (can't get them out...)
var i = ContentsCount();
var obj;
while (i--) if (obj = Contents(i)) Contents(i)->Exit();
while (i--)
if (obj = Contents(i))
Contents(i)->Exit(0, GetDefHeight() / 2);
// Update available count
menu_item->SetAmount(GetHomebaseMaterial(clonk->GetOwner(), def));
menu_item->SetAmount(GetHomebaseMaterial(GetOwner(), def));
menu->Show();
return true;
}