void CCommander::Select(float dt) { hgeRect* rect = m_pSelectSqure->GetRect(); if(m_pHge->Input_KeyDown(HGEK_LBUTTON))m_IsOneSlt = false; if(m_pHge->Input_GetKeyState(HGEK_LBUTTON)) { if(m_pSelectSqure->IsPress())//多选 { for(UNITS_ITR itr = m_units->begin();itr != m_units->end();itr ++) { CUnit* unit = *itr; if (rect->Intersect(unit->GetRect())) { if (!unit->IsSelected() && unit->m_camp == m_camp) { unit->SetSelected(true); m_IsOneSlt = true; } } else { if (unit->IsSelected()) { unit->SetSelected(false); } } } }else//单选 { for(UNITS_ITR itr = m_units->begin();itr != m_units->end();itr ++) { CUnit* unit = *itr; if(unit->IsSelected()) { unit->SetSelected(false); } } for(UNITS::reverse_iterator itr = m_units->rbegin();itr != m_units->rend();itr ++) { CUnit* unit = *itr; Point pos = m_pSelectSqure->GetMousePoint(); if(unit->GetRect()->TestPoint(pos.x, pos.y)) { if(!unit->IsSelected()) { unit->SetSelected(true); if(unit->m_camp == m_camp) m_IsOneSlt = true; } break; } } } } }
void CCommander::Move(float dt) { if(m_pHge->Input_KeyDown(HGEK_RBUTTON))//右键行走 { Point pos = m_pSelectSqure->GetMousePoint(); CUnit* tagetunit = NULL; bool attack = false; for(UNITS_ITR itr = m_units->begin();itr != m_units->end();itr ++) { CUnit* unit = *itr; if (unit->GetRect()->TestPoint(pos.x, pos.y)) { if (unit->m_camp + m_camp == 0) { attack = true; tagetunit = unit; } } } POS_LIST* list = NULL; //if(!attack) list = CUnit::GetPointList( pos.x/m_pMap->m_tileWidth, pos.y/m_pMap->m_tileHeight, m_pMap->m_map); for(UNITS_ITR itr = m_units->begin();itr != m_units->end();itr ++) { CUnit* unit = *itr; if(unit->IsSelected() && unit->m_camp == m_camp) { if(attack) { unit->SetAttackTaget(tagetunit); } //else //{ if(list->size() > 0) { long pos = list->front(); float posx = (POS_X(pos))*m_pMap->m_tileWidth; float posy = (POS_Y(pos))*m_pMap->m_tileHeight; unit->SetDst(Point(posx,posy)); list->pop(); } //} } } //if(!attack) list->c.clear(); } }