Exemplo n.º 1
0
void BuildingFunc::addSoldier( Coord pos,int id,int popution )
{    
	if (_camps.empty())
	{
		return;
	}

	//排序
	sort(_camps.begin(),_camps.end(),[=](DBuilding * a,DBuilding * b){return  (pos.x - a->coord.x)*(pos.x - a->coord.x) + (pos.y - a->coord.y)*(pos.y - a->coord.y)
		<   (pos.x - b->coord.x)*(pos.x - b->coord.x) + (pos.y - b->coord.y)*(pos.y - b->coord.y);});
	
	//TODO 分配兵力
	for (auto item : _camps)
	{
		auto sitem = BarrackData::getBarrackFromId(item->id);
		if (sitem->maxpopulation - sitem->curpopulation >= popution)
		{   
			sitem->curpopulation += popution;
			sitem->addSoldier(id);
			sitem->updateData();
			break;
		}
	}
	for (auto item :_allSoldiers)
	{
		delete item.second;
	}

	_allSoldiers.clear();



}
Exemplo n.º 2
0
 void UIConveyorLayer::UpDataConveyorInfo(int id, int TypeId )
 {
	 //添加运输机内士兵  
	 auto info = ConveyorConfig::getConveyorConfigFromId(id);
	 int Barrackid = 0;
	 if(info)
	 {
		 auto tmpmap = BarrackData::getBarrackDataMap();
		 bool boolen = true;
		 for (auto item:tmpmap)
		 {
			 for(auto item2:item.second->soldieritems)
			 {
				 if(item2->soldierid == TypeId && boolen)
				 {

					 if(item2->soldierstate < item2->number)
					 {
						 Barrackid = item2->id;
						 boolen = false;
					 }
					 else break;
				 }

			 }
		 }
		 if(Barrackid == 0 )return;
		 info->addSoldier(Barrackid,TypeId);
		 //减少可用士兵
		 auto map = BarrackData::getBarrackDataMap();
		 for (auto item:map)
		 {
			 auto Soldier = item.second;
			 if(Soldier->id == Barrackid){
				 Soldier->updataSoldierUseState(TypeId,Barrackid,1);
				 auto tmpmap = BuildingFunc::getInstance()->getAllSoldier();
				 auto iter = tmpmap.find(TypeId);
				 if(iter != tmpmap.end())
					iter->second->soldierstate++;
				 break;
			 }
		 }

	 }

	 //刷新界面
	 showConveyorInfoLayer();
	 showSoldierInfoLayer();
 }
Exemplo n.º 3
0
/////////////////////////////////////////////////////////////////////////////
// add a new item to the tree
/////////////////////////////////////////////////////////////////////////////
void CUndoDialog::addItem(int iAction, CUndo *pUndo)
{
	switch(iAction)
	{
	case UNDO_SETTLE_PLACE: addPlacement(TRUE);	break;
	case UNDO_THIRD_ROAD_PLACE:
	case UNDO_ROAD_PLACE: addPlacement(FALSE); break;
	case UNDO_SHIP_PLACE: addPlacement(FALSE, TRUE); break;
	case UNDO_FIRST_ROLL: addRoll(TRUE, ((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_ROLL:	addRoll(FALSE, ((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_ACTION_START:	addActionStart(); break;
	case UNDO_ACTION: addAction(); break;
	case UNDO_ROAD:	addRoad(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_SHIP: addShip(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_CITY:	addCity(); break;
	case UNDO_MOVE_SHIP: addMoveShip(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_SETTLEMENT: addSettle(); break;
	case UNDO_BUY_DEVCARD: addDevcard(); break;
	case UNDO_ROBBER_PLACE:	addRobber(); break;
	case UNDO_PIRATE_PLACE: addPirate(); break;
	case UNDO_PLAY_VICTORY:	addVictory(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_PLAY_MONOPOLY: addMonopoly((CUndoMonopoly *) pUndo); break;
	case UNDO_PLAY_ROAD: addRoadBuild(); break;
	case UNDO_PLAY_YEAR: addYearPlenty(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_PLAY_SOLDIER:	addSoldier(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_TRADE: addTrade((CUndoTrade *) pUndo); break;
	case UNDO_STEAL: addSteal(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_LOSECARDS: addLoseCards((CUndoTrade *) pUndo); break;
	case UNDO_ACTION_END: endTurn(); break;
	case UNDO_WIN: addWin(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_WASTE: addWaste(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_GOLD: addGold((CUndoGold *) pUndo); break;
	case UNDO_CHITLESS: addChitless(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_VOLCANO: addVolcano(); break;
	case UNDO_TRADE_JUNGLE: addJungle((CUndoTrade *) pUndo); break;
	case UNDO_SPECIAL_BUILD: addSpecialBuild(((CUndoOne *) pUndo)->m_iOne); break;
	case UNDO_SPECIAL_BUILD_END: addSpecialBuildEnd(); break;
	default: break;
	}
}