Add in hp and atk growth rate displays on level ups. Make increase and decrease buttons disable when the appropriate sell/buy amounts have been reached. Sell inventory count now shows up in the selling window. Add Lock/Unlock input helper display on merchant accessory sell window. Fix missing collision tile in 1-1. Release Build 7992. Patch Version 0.5.

pull/35/head
sigonasr2 11 months ago
parent 68bdb6bc26
commit 588e184764
  1. 18
      Adventures in Lestoria/BuyItemWindow.cpp
  2. 5
      Adventures in Lestoria/CharacterMenuWindow.cpp
  3. 29
      Adventures in Lestoria/MerchantWindow.cpp
  4. 8
      Adventures in Lestoria/Player.cpp
  5. 2
      Adventures in Lestoria/Player.h
  6. 31
      Adventures in Lestoria/SellItemWindow.cpp
  7. 3
      Adventures in Lestoria/State_LevelComplete.cpp
  8. 6
      Adventures in Lestoria/TODO.txt
  9. 6
      Adventures in Lestoria/Version.h
  10. 2
      Adventures in Lestoria/assets/Campaigns/1_1_v2.tmx
  11. BIN
      x64/Release/Adventures in Lestoria.exe

@ -61,6 +61,20 @@ void Menu::InitializeBuyItemWindow(){
if(!canPurchase)colorCode="#FF0000";
Component<MenuLabel>(BUY_ITEM,"Total Price Amount Label")->SetLabel(colorCode+std::to_string(qty*pricePerItem));
Component<MenuComponent>(BUY_ITEM,"Purchase Button")->SetGrayedOut(!canPurchase);
if(qty==99||pricePerItem*(qty+1)>game->GetPlayer()->GetMoney()){
Component<MenuComponent>(BUY_ITEM,"Increase buy amount Button")->SetGrayedOut(true);
Menu::menus[BUY_ITEM]->SetSelection(static_cast<std::weak_ptr<MenuComponent>>(Component<MenuComponent>(BUY_ITEM,"Decrease buy amount Button")));
}else{
Component<MenuComponent>(BUY_ITEM,"Increase buy amount Button")->SetGrayedOut(false);
}
if(qty<=1){
Component<MenuComponent>(BUY_ITEM,"Decrease buy amount Button")->SetGrayedOut(true);
Menu::menus[BUY_ITEM]->SetSelection(static_cast<std::weak_ptr<MenuComponent>>(Component<MenuComponent>(BUY_ITEM,"Increase buy amount Button")));
}else{
Component<MenuComponent>(BUY_ITEM,"Decrease buy amount Button")->SetGrayedOut(false);
}
};
buyItemWindow->ADD("Item Purchase Header",MenuLabel)(geom2d::rect<float>{{2,2},{188,12}},"Buying ",1.f,ComponentAttr::OUTLINE|ComponentAttr::BACKGROUND|ComponentAttr::SHADOW|ComponentAttr::FIT_TO_LABEL)END;
@ -175,8 +189,8 @@ void Menu::InitializeBuyItemWindow(){
.left="Decrease buy amount Button",
.right="Decrease buy amount Button",}},
{"Decrease buy amount Button",{
.up="Cancel Button",
.down="Cancel Button",
.up="Purchase Button",
.down="Purchase Button",
.left="Increase buy amount Button",
.right="Increase buy amount Button",}},
});

@ -382,8 +382,9 @@ void Menu::InitializeCharacterMenuWindow(){
}}},
{game->KEY_BACK,{"Back",[](MenuType type){
if(!Menu::menus[type]->GetSelection().expired()&&
!Menu::menus[type]->GetSelection().lock()->parentComponent.expired()&&
Menu::menus[type]->GetSelection().lock()->parentComponent.lock()->GetName()=="Equip List"){
(!Menu::menus[type]->GetSelection().lock()->parentComponent.expired()&&
Menu::menus[type]->GetSelection().lock()->parentComponent.lock()->GetName()=="Equip List")||
Menu::menus[type]->GetSelection().lock()->GetName()=="Equip Selection Select Button"){
Component<MenuComponent>(type,"Equip Selection Select Button")->Click();
}else{
Component<MenuComponent>(type,"Back button")->Click();

@ -110,8 +110,12 @@ void Menu::InitializeMerchantWindow(){
auto inventoryDisplay=merchantWindow->ADD("Merchant Inventory Display",RowInventoryScrollableWindowComponent)(geom2d::rect<float>{{2,28},{220,merchantWindow->size.y-44}},"Item Name Label","Item Description Label",
[](MenuFuncData data){
std::weak_ptr<RowItemDisplay>item=DYNAMIC_POINTER_CAST<RowItemDisplay>(data.component.lock());
int qty=1;
int pricePerItem=item.lock()->GetItem().lock()->BuyValue();
Component<MenuLabel>(BUY_ITEM,"Item Purchase Header")->S(A::ITEM_NAME)=item.lock()->GetItem().lock()->ActualName();
Component<MenuLabel>(BUY_ITEM,"Price per item Amount Label")->SetLabel(std::to_string(item.lock()->GetItem().lock()->BuyValue()));
Component<MenuLabel>(BUY_ITEM,"Price per item Amount Label")->SetLabel(std::to_string(pricePerItem));
Component<MenuLabel>(BUY_ITEM,"Amount to buy Amount Label")->SetLabel("1");
Component<MenuLabel>(BUY_ITEM,"Total Price Amount Label")->SetLabel(std::to_string(item.lock()->GetItem().lock()->BuyValue()));
Merchant&merchant=Merchant::GetCurrentTravelingMerchant();
@ -122,6 +126,14 @@ void Menu::InitializeMerchantWindow(){
Component<MenuLabel>(BUY_ITEM,"Total Price Amount Label")->SetLabel(colorCode+std::to_string(item.lock()->GetItem().lock()->BuyValue()));
Component<MenuLabel>(BUY_ITEM,"Item Purchase Header")->SetLabel("Buying "+item.lock()->GetItem().lock()->DisplayName());
Component<MenuComponent>(BUY_ITEM,"Purchase Button")->SetGrayedOut(!merchant.CanPurchaseItem(item.lock()->GetItem().lock()->ActualName(),1));
Component<MenuComponent>(BUY_ITEM,"Decrease buy amount Button")->SetGrayedOut(true);
if(pricePerItem*(qty+1)>game->GetPlayer()->GetMoney()){
Component<MenuComponent>(BUY_ITEM,"Increase buy amount Button")->SetGrayedOut(true);
}else{
Component<MenuComponent>(BUY_ITEM,"Increase buy amount Button")->SetGrayedOut(false);
}
Menu::OpenMenu(BUY_ITEM);
return true;
},
@ -185,7 +197,7 @@ void Menu::InitializeMerchantWindow(){
if(item.lock()->GetItem().lock()->CanBeSold()){
Component<ItemMenuLabel>(SELL_ITEM,"Item Sell Header")->SetItem(item.lock()->GetItem());
Component<MenuLabel>(SELL_ITEM,"Price per item Amount Label")->SetLabel(std::to_string(item.lock()->GetItem().lock()->SellValue()));
Component<MenuLabel>(SELL_ITEM,"Amount to sell Amount Label")->SetLabel("1");
Component<MenuLabel>(SELL_ITEM,"Amount to sell Amount Label")->SetLabel(std::format("{}/{}",1,Inventory::GetItemCount(item.lock()->GetItem().lock()->ActualName())));
Component<MenuLabel>(SELL_ITEM,"Total Price Amount Label")->SetLabel(std::to_string(item.lock()->GetItem().lock()->SellValue()));
Merchant&merchant=Merchant::GetCurrentTravelingMerchant();
bool canPurchase=merchant.CanSellItem(item.lock()->GetItem(),1);
@ -195,6 +207,15 @@ void Menu::InitializeMerchantWindow(){
Component<MenuLabel>(SELL_ITEM,"Total Price Amount Label")->SetLabel(colorCode+std::to_string(item.lock()->GetItem().lock()->SellValue()));
Component<MenuLabel>(SELL_ITEM,"Item Sell Header")->SetLabel("Selling "+item.lock()->GetItem().lock()->DisplayName());
Component<MenuComponent>(SELL_ITEM,"Sell Button")->SetGrayedOut(!merchant.CanSellItem(item.lock()->GetItem(),1));
Component<MenuComponent>(SELL_ITEM,"Decrease sell amount Button")->SetGrayedOut(true);
int qty=1;
int inventoryQty=Inventory::GetItemCount(item.lock()->GetItem().lock()->ActualName());
if(qty>=inventoryQty){
Component<MenuComponent>(SELL_ITEM,"Increase sell amount Button")->SetGrayedOut(true);
}else{
Component<MenuComponent>(SELL_ITEM,"Increase sell amount Button")->SetGrayedOut(false);
}
Menu::OpenMenu(SELL_ITEM);
}
return true;
@ -334,9 +355,7 @@ void Menu::InitializeMerchantWindow(){
}
}}},
{{game->KEY_SCROLL,Pressed},{"Navigate",[](MenuType type){}}},
{game->KEY_CONFIRM,{"Select",[](MenuType type){}}},
{game->KEY_SELECT,{[](MenuFuncData data){
/* //Too wordy, let's leave it out for now.
if(!data.menu.GetSelection().expired()&&
!data.menu.GetSelection().lock()->parentComponent.expired()&&
data.menu.GetSelection().lock()->parentComponent.lock()->GetName()=="Inventory Display - Accessories"){
@ -345,7 +364,7 @@ void Menu::InitializeMerchantWindow(){
}else{
return "Lock";
}
}*/
}
return "";
},[](MenuType type){
if(!Menu::menus[type]->GetSelection().expired()&&

@ -1427,4 +1427,12 @@ const bool Player::IsInvisible()const{
void Player::ResetVelocity(){
vel={};
}
const float Player::GetHealthGrowthRate()const{
return hpGrowthRate;
}
const float Player::GetAtkGrowthRate()const{
return atkGrowthRate;
}

@ -249,6 +249,8 @@ public:
void SetInvisible(const bool invisibleState);
const bool IsInvisible()const;
void ResetVelocity();
const float GetHealthGrowthRate()const;
const float GetAtkGrowthRate()const;
private:
int hp="Warrior.BaseHealth"_I;
int mana="Player.BaseMana"_I;

@ -49,18 +49,35 @@ void Menu::InitializeSellItemWindow(){
return std::stoi(Component<MenuLabel>(SELL_ITEM,"Amount to sell Amount Label")->GetLabel());
};
static auto UpdateMenu=[&](int32_t qty){
const std::weak_ptr<Item>item=Component<ItemMenuLabel>(SELL_ITEM,"Item Sell Header")->GetItem();
qty=std::clamp(qty,1,99);
int inventoryQty=Inventory::GetItemCount(item.lock()->ActualName());
int pricePerItem=std::stoi(Component<MenuLabel>(SELL_ITEM,"Price per item Amount Label")->GetLabel());
Component<MenuLabel>(SELL_ITEM,"Amount to sell Amount Label")->SetLabel(std::to_string(qty));
Component<MenuLabel>(SELL_ITEM,"Amount to sell Amount Label")->SetLabel(std::format("{}/{}",qty,inventoryQty));
Merchant&merchant=Merchant::GetCurrentTravelingMerchant();
const std::weak_ptr<Item>item=Component<ItemMenuLabel>(SELL_ITEM,"Item Sell Header")->GetItem();
bool canSell=merchant.CanSellItem(item,GetQuantity());
std::string colorCode="";
if(!canSell)colorCode="#FF0000";
Component<MenuLabel>(SELL_ITEM,"Total Price Amount Label")->SetLabel(colorCode+std::to_string(qty*pricePerItem));
Component<MenuComponent>(SELL_ITEM,"Sell Button")->SetGrayedOut(!canSell);
if(qty==99||qty>=inventoryQty){
Component<MenuComponent>(SELL_ITEM,"Increase sell amount Button")->SetGrayedOut(true);
Menu::menus[SELL_ITEM]->SetSelection(static_cast<std::weak_ptr<MenuComponent>>(Component<MenuComponent>(SELL_ITEM,"Decrease sell amount Button")));
}else{
Component<MenuComponent>(SELL_ITEM,"Increase sell amount Button")->SetGrayedOut(false);
}
if(qty<=1){
Component<MenuComponent>(SELL_ITEM,"Decrease sell amount Button")->SetGrayedOut(true);
Menu::menus[SELL_ITEM]->SetSelection(static_cast<std::weak_ptr<MenuComponent>>(Component<MenuComponent>(SELL_ITEM,"Increase sell amount Button")));
}else{
Component<MenuComponent>(SELL_ITEM,"Decrease sell amount Button")->SetGrayedOut(false);
}
};
sellItemWindow->ADD("Item Sell Header",ItemMenuLabel)(geom2d::rect<float>{{2,2},{188,12}},"Selling {}",Item::BLANK,1,ComponentAttr::OUTLINE|ComponentAttr::BACKGROUND|ComponentAttr::SHADOW|ComponentAttr::FIT_TO_LABEL)END;
@ -70,16 +87,16 @@ void Menu::InitializeSellItemWindow(){
sellItemWindow->ADD("Price Label",MenuLabel)(geom2d::rect<float>{{4,50},{188,12}},"Total Price",1.0f,ComponentAttr::LEFT_ALIGN|ComponentAttr::SHADOW)END;
sellItemWindow->ADD("Price per item Amount Label",MenuLabel)(geom2d::rect<float>{{sellItemWindow->size.x/2+28,18},{72,12}},"0",1.0f,ComponentAttr::SHADOW|ComponentAttr::FIT_TO_LABEL)END;
sellItemWindow->ADD("Amount to sell Amount Label",MenuLabel)(geom2d::rect<float>{{sellItemWindow->size.x/2+48,34},{32,12}},"0",1.0f,ComponentAttr::SHADOW|ComponentAttr::OUTLINE|ComponentAttr::FIT_TO_LABEL)END;
sellItemWindow->ADD("Amount to sell Amount Label",MenuLabel)(geom2d::rect<float>{{sellItemWindow->size.x/2+42,34},{44,12}},"0",1.0f,ComponentAttr::SHADOW|ComponentAttr::OUTLINE|ComponentAttr::FIT_TO_LABEL)END;
sellItemWindow->ADD("Increase sell amount Button",MenuComponent)(geom2d::rect<float>{{sellItemWindow->size.x/2+80+2,34},{12,12}},"+",[&](MenuFuncData data){
sellItemWindow->ADD("Increase sell amount Button",MenuComponent)(geom2d::rect<float>{{sellItemWindow->size.x/2+86+2,34},{12,12}},"+",[&](MenuFuncData data){
if(!incrementButtonDisabled){
UpdateMenu(GetQuantity()+1);
}
incrementButtonDisabled=false;
return true;
})END;
sellItemWindow->ADD("Decrease sell amount Button",MenuComponent)(geom2d::rect<float>{{sellItemWindow->size.x/2+48-14,34},{12,12}},"-",[](MenuFuncData data){
sellItemWindow->ADD("Decrease sell amount Button",MenuComponent)(geom2d::rect<float>{{sellItemWindow->size.x/2+42-14,34},{12,12}},"-",[](MenuFuncData data){
if(!incrementButtonDisabled){
UpdateMenu(GetQuantity()-1);
}
@ -173,8 +190,8 @@ void Menu::InitializeSellItemWindow(){
.left="Decrease sell amount Button",
.right="Decrease sell amount Button",}},
{"Decrease sell amount Button",{
.up="Cancel Button",
.down="Cancel Button",
.up="Sell Button",
.down="Sell Button",
.left="Increase sell amount Button",
.right="Increase sell amount Button",}},
});

@ -133,6 +133,9 @@ void State_LevelComplete::DrawOverlay(AiL*game){
game->DrawShadowStringPropDecal(levelUpTextPos+vf2d{8.f,0.f},"Level Up!",YELLOW);
game->DrawRotatedDecal(levelUpTextPos+vf2d{2.f,1.f},GFX["overworld_arrow.png"].Decal(),-PI/2,GFX["overworld_arrow.png"].Sprite()->Size(),{1.f,1.f},BLACK);
game->DrawRotatedDecal(levelUpTextPos+vf2d{2.f,0.f},GFX["overworld_arrow.png"].Decal(),-PI/2,GFX["overworld_arrow.png"].Sprite()->Size(),{1.f,1.f},YELLOW);
game->DrawShadowStringPropDecal(levelUpTextPos+vf2d{-69.f,4.f},std::format("HP +{}",int(game->GetPlayer()->GetHealthGrowthRate())),PixelLerp({226,234,244},WHITE,sin((40*game->GetRuntime())/2.f+0.5f)));
game->DrawShadowStringPropDecal(levelUpTextPos+vf2d{-69.f,12.f},std::format("ATK+{}",int(game->GetPlayer()->GetAtkGrowthRate())),PixelLerp({226,234,244},WHITE,sin((40*game->GetRuntime())/2.f+0.5f)));
}
void State_LevelComplete::TurnOffXPSound(){

@ -8,10 +8,6 @@ Materials for initial craft seems to be wrong? need to recheck
do we need a minimap? (maybe with fog of war?) Maybe polling that once testing with more people.
should gemstones dropp from boss stages aswell? (Maybe lower droprate?)
When opening craft/buy/sell menu, default to the appropriate button.
Pressing back on the Select button of the equip menu causes you to exit the menu.
Funny text colors with text color override on blacksmith menu
Toggle for displaying error messages
Level Up shows Health + and Atk + Indicators
Toggle for displaying error messages

@ -37,9 +37,9 @@ All rights reserved.
#pragma endregion
#pragma once
#define VERSION_MAJOR 0
#define VERSION_MINOR 4
#define VERSION_PATCH 5
#define VERSION_BUILD 7969
#define VERSION_MINOR 5
#define VERSION_PATCH 0
#define VERSION_BUILD 7992
#define stringify(a) stringify_(a)
#define stringify_(a) #a

@ -546,7 +546,7 @@
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

Loading…
Cancel
Save