ToString: BUILDING_TYPE_HOUSE])
{
attribute=ATTR_POPULATION;
[[Counters instance] updateWithType: TYPE_COLLECT_TIMES subType: @ population addValue: 1];
}
else
{
attribute=ATTR_MONEY1;
[[Counters instance] updateWithType: TYPE_COLLECT_TIMES subType: @ money1 addValue: 1];
} (attribute!=nil)
{
NSMutableArray * dropItems=[NSMutableArray arrayWithCapacity: 3]; value=[building inCountToCollect];
if ([[building typeName] isEqualToString: BUILDING_TYPE_HOUSE])
{
value -=building.dropedValue;
int population=[_gameStat valueForAttribute: ATTR_POPULATION];
int happiness=[_gameStat valueForAttribute: ATTR_HAPPINESS];
int dropedPopulation=[self.map.dropItemManager totalValueOfItemsWithType: DROP_ITEM_ATTRIBUTE name: @ population ];
int v=- happiness + (population + value + dropedPopulation); (v gt; 0)
{
value -=v;
building.dropedValue +=value;
}
else
building.dropedValue=0;
} ([_ gameStat canAddValue: value forAttribute: attribute])
{
DropItem * item=[[[DropItem alloc] initWithMap: building.map attribute: attribute count: value] autorelease];
[dropItems addObject: item];
} exp=[building valueForParam: @ in_exp ];
if (exp!=0)
{
DropItem * xpItem=[[[DropItem alloc] initWithMap: building.map attribute: ATTR_EXP count: exp] autorelease];
[dropItems addObject: xpItem]; * bonus=[Bonus bonusByName: @ bonus_collect ];
[dropItems addObjectsFromArray: [bonus apply]]; ([Game game] .collectAllMode)//do not show drop when CollectAll
[building.map.dropItemManager applyInvisibleDrops: dropItems];
[building.map.dropItemManager dropItems: dropItems atObject: building];
}
[building afterCollect];
[[Counters instance] addValue: 1 forCounter: @ count_collect_times ];
}
Клас, відповідальний за випадання на карту отриманих ресурсів та їх автоматичний збір з карти. У даному випадку процес відбувається в режимі silent, тобто без звуку і візуальної відображення.
DropItemManager- dropItems: - collectItem: - applyInvisibleDrop: Сінглтон-клас, відповідальний за отримання даних про поточний стан будь-якого атрибуту і його зміна.
GameStat- setValue: - canAddValue: - valueForAttribute:
RewardNode- buildContentWithTouchPriority: - setIconWithName: - setLabelText:
Клас, відповідальний за створення осередку в таблиці.
CollectAllВиполняемое дію- buildProfitNodeОрганізація вікна, таблиці. Запуск алгоритму сбора.- countItemsForProfit- onCollectAll- xpForContract: Підрахунок вихідних атрибутів при зборі: досвід, населення, продукти. Підсумовування елементів для отрисовки в комірці табліци.- xpForAllContracts: - peopleForHouse: - peopleForAllHouses: - sumContractsFor: - actionScrollLeft: Робота з прокруткой.- actionScrollRight: - updateButtons- compareContractsCost: Сортування ресурсів за ціною. + ResultPopulationBuildingsПроверка умов для появи кнопки запуску вікна. + resultFactoryBuildings + canCollectHouse: Перевірка можливості збору.
Реалізація деяких методів класу CollectAll:
NSInteger compareContractsCost (Building * building1, Building * building2, void * context) {* contract1=((FactoryBuilding *) building1) .contractInProgress;
Contract * contract2=((FactoryBuilding *) building2) .contractInProgress; * res1=[Resource resourceByCode: [contract1 outResource]];
Resource * res2=[Resource resourceByCode: [contract2 outResource]]; (res1.sellMoney1!=res2.sellMoney1)
{
return - (res1.sellMoney1 - res2.sellMoney1);
}
return 0;
}
(int) xpForContract: (FactoryBuilding *) factoryBuilding
{
Contract * contract=factoryBuilding.contractInProgress;...