//090708 pdy 기획팀 요청에따라 가구 상태에따른 정렬기능 추가 void cHousingWarehouseDlg::RefreshIcon(stFurniture* pFurniture) { if( pFurniture == NULL ) return; WORD wTapNum = pFurniture->wCategory -1 ; cScrollIconGridDialog* pGridDlg = (cScrollIconGridDialog*)GetTabSheet(wTapNum); if( ! pGridDlg) return; //정렬기능때문에 가구의 실제 슬롯위치와 아이콘UI상의 슬롯위치는 같지 않다. //때문에 아이콘 해시에서 가구 Obj인덱스로 아이콘을 가져오자 cHousingStoredIcon* pResultIcon = m_StoredIconHash.GetData( pFurniture->dwObjectIndex ); if( pResultIcon == NULL ) return; //가구의 상태가 바뀌면 아이콘UI상의 해당탭의 배치정렬을 다시 해주어야 한다. SortIconByTapNum(wTapNum) ; pResultIcon->Refresh(); WORD wPosition = 0; pGridDlg->GetPositionForCell( pResultIcon->GetCellX() ,pResultIcon->GetCellY() ); if( IsDoor( pFurniture->dwFurnitureIndex ) ) { for(int i = 0; i < MAX_HOUSING_SLOT_NUM ; i++ ) { cHousingStoredIcon* pDoorIcon = (cHousingStoredIcon*)pGridDlg->GetIconForIdx( i ); if( pDoorIcon == NULL || IsDoor( pDoorIcon->GetLinkFurniture()->dwFurnitureIndex ) == FALSE ) continue; if( pDoorIcon->GetLinkFurniture()->wState == eHOUSEFURNITURE_STATE_INSTALL ) { wPosition = pGridDlg->GetPositionForCell( pDoorIcon->GetCellX() ,pDoorIcon->GetCellY() ); break; } } } else { wPosition = pGridDlg->GetPositionForCell( pResultIcon->GetCellX() ,pResultIcon->GetCellY() ); } //아이콘 정렬이 된후 선택된 셀위치를 다시 맞추어 준다. pGridDlg->SetCurSelCellPos( wPosition ); }
void BattleGround::OpenDoorEvent(uint8 event1, uint8 event2 /*=0*/) { if (!IsDoor(event1, event2)) { sLog.outError("BattleGround:OpenDoorEvent this is no door event1:%u event2:%u", event1, event2); return; } if (!IsActiveEvent(event1, event2)) // maybe already despawned (eye) { sLog.outError("BattleGround:OpenDoorEvent this event isn't active event1:%u event2:%u", event1, event2); return; } GuidVector::const_iterator itr = m_EventObjects[MAKE_PAIR32(event1, event2)].gameobjects.begin(); for (; itr != m_EventObjects[MAKE_PAIR32(event1, event2)].gameobjects.end(); ++itr) DoorOpen(*itr); }
void BattleGround::OnObjectDBLoad(GameObject* obj) { const BattleGroundEventIdx eventId = sBattleGroundMgr.GetGameObjectEventIndex(obj->GetGUIDLow()); if (eventId.event1 == BG_EVENT_NONE) return; m_EventObjects[MAKE_PAIR32(eventId.event1, eventId.event2)].gameobjects.push_back(obj->GetObjectGuid()); if (!IsActiveEvent(eventId.event1, eventId.event2)) { SpawnBGObject(obj->GetObjectGuid(), RESPAWN_ONE_DAY); } else { // it's possible, that doors aren't spawned anymore (wsg) if (GetStatus() >= STATUS_IN_PROGRESS && IsDoor(eventId.event1, eventId.event2)) DoorOpen(obj->GetObjectGuid()); } }
void cHousingWarehouseDlg::UseIcon(cIcon* pIcon) { if(!pIcon || pIcon->GetType() != WT_HOUSING_STORED_ICON) return; cHousingStoredIcon* pStoredIcon = (cHousingStoredIcon*)pIcon; stFurniture* pstFuniture = pStoredIcon->GetLinkFurniture(); if(! pstFuniture) return; if(HOUSINGMGR->IsDoDecoration() && (pstFuniture->wState == eHOUSEFURNITURE_STATE_UNINSTALL || pstFuniture->wState == eHOUSEFURNITURE_STATE_KEEP)) { HOUSINGMGR->CancelDecoration(); } else if(pstFuniture->wState == eHOUSEFURNITURE_STATE_INSTALL) { return; } //091224 NYJ eObjectState_None가 아니면 리턴. if( (pstFuniture->wState == eHOUSEFURNITURE_STATE_UNINSTALL || pstFuniture->wState == eHOUSEFURNITURE_STATE_KEEP) && (HERO->GetState() != eObjectState_None && HERO->GetState() != eObjectState_Housing)) { CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(2010) /*“가구를 설치할 수 없는 상태입니다.”*/ ); return; } //090527 pdy 하우징 시스템메세지 꾸미기 모드가 아닐시 제한사항 [머터리얼교체] if( (pstFuniture->wState == eHOUSEFURNITURE_STATE_UNINSTALL || pstFuniture->wState == eHOUSEFURNITURE_STATE_KEEP) && HERO->GetState() != eObjectState_Housing ) { //CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(1878) ); //1878 "꾸미기 모드일때만 사용하실 수 있습니다." //return; //091224 NYJ 꾸미기모드가 아니면 꾸미기 모드로 변환 HOUSINGMGR->RequestDecoRationMode(); HOUSINGMGR->SetDecorationModeTemp(); } // pStoredIcon->SetLock(TRUE) ; // 사용할 아이템을 잠근다. if( pstFuniture->bNotDelete ) //기본설치 품목일경우 아이템사용 없음 if(! IsDoor( pstFuniture->dwFurnitureIndex) ) //기본설치문은 아이템사용가능 if(! IsStart( pstFuniture->dwFurnitureIndex) ) //기본설치 스타트도 아이템사용가능 return; /* if( pstFuniture->wState == eHOUSEFURNITURE_STATE_INSTALL ) { //기본설치 품목이나 문류는 설치 불가 if( pstFuniture->bNotDelete || IsDoor( pstFuniture->dwFurnitureIndex ) ) { //090527 pdy 하우징 시스템메세지 기본제공가구 [설치해제] CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg( 1888 ) ); //1888 "기본 물품은 설치해제 할 수 없습니다." } ////091223 NYJ - 내집창고에서 더블클릭으로 가구회수기능 제거. //else //{ // HOUSINGMGR->RequestUninstallDecoFromUseIcon(pstFuniture); //} return; } */ //설치중이아니면 가구꾸미기 시작 HOUSINGMGR->StartDecoration(pstFuniture); }