void ActorLayer::AddNewItem(flownet::Item item, flownet::POINT spawnPosition) { ItemNode* itemNode = ItemNode::create(item.GetItemType(), item.GetItemID()); // 중복된 것인지 한번 체크해 볼 필요는 있는듯 this->m_ItemNodeMap.insert(ItemNodeMap::value_type(item.GetItemID(), itemNode)); itemNode->setPosition(PointConverter::Convert(spawnPosition)); this->addChild(itemNode); }
ItemNode* ItemNode::create(ItemNodeType type) { ItemNode *obj = new ItemNode(); if (obj && obj->init(type)) { obj->autorelease(); return obj; } CC_SAFE_DELETE(obj); return NULL; }
void ActorLayer::PickupItemFromField(flownet::ActorID playerID, flownet::ItemID itemID) { ActorNode* actor = this->FindActorNode(playerID); ItemNode* item = this->FindItemNode(itemID); CCJumpTo* jumpTo = CCJumpTo::create(0.3, actor->GetMidPosition(), 30, 1); CCDelayTime* delay = CCDelayTime::create(0.3); CCCallFuncO* remove = CCCallFuncO::create(this, callfuncO_selector(ActorLayer::RemoveItem), item); CCSequence* sequence = CCSequence::create(jumpTo, delay, remove, NULL); sequence->setTag(ActionType_Animation); item->runAction(sequence); // TO DO : display effect for acquiring item }
void ActorLayer::RemoveItem(CCObject* object) { ItemNode* itemNode = dynamic_cast<ItemNode*>(object); if(!itemNode) { ASSERT_DEBUG(itemNode != nullptr); } this->m_ItemNodeMap.erase(itemNode->GetItemID()); this->removeChild(itemNode, true); delete itemNode; }
ItemNode* ItemNode::create(flownet::ItemType itemType, flownet::ItemID itemID) { ItemNode* itemNode = new ItemNode(); if(itemNode && itemNode->init(itemType, itemID)) { return itemNode; } else { delete itemNode; itemNode = nullptr; return nullptr; } }
void UpdateItemList(int dirNum) { ListView_DeleteAllItems(ghItemListWindow); MediaServer *mserver = gMediaGate->getMediaServer(); Directory *dir = mserver->getContentDirectory(dirNum); if (dir == NULL) return; LVITEM item = {0}; item.mask = 0; item.mask = LVIF_TEXT; TCHAR buf[512] = { 0 } ; int itemCnt = dir->getNContentNodes(); for (int n=0 ; n<itemCnt ; n++) { ContentNode *conNode = dir->getContentNode(n); if (conNode->isItemNode() == false) continue; ItemNode *itemNode = (ItemNode *)conNode; FTL::CFConversion conv; item.pszText = (LPTSTR)conv.MBCS_TO_TCHAR(itemNode->getTitle()); item.iItem = n; item.iSubItem = 0; ListView_InsertItem(ghItemListWindow , &item); item.pszText = (LPTSTR)conv.MBCS_TO_TCHAR(itemNode->getCreator()); item.iSubItem = 1; ListView_SetItem(ghItemListWindow , &item); item.pszText = (LPTSTR)conv.MBCS_TO_TCHAR(itemNode->getDate()); item.iSubItem = 2; ListView_SetItem(ghItemListWindow , &item); _stprintf(buf, TEXT("%ld"), itemNode->getStorageUsed()); item.pszText = buf; item.iSubItem = 3; ListView_SetItem(ghItemListWindow , &item); } }