void UIElements::setup(const Common::Point &pt) { _slotStart = 0; _itemList.clear(); _scoreValue = 0; _active = true; UICollection::setup(pt); hide(); _object1.setup(1, 3, 1, 0, 0, 255); add(&_object1); // Set up the inventory slots int xp = 0; for (int idx = 0; idx < 4; ++idx) { UIElement *item = NULL; switch (idx) { case 0: item = &_slot1; break; case 1: item = &_slot2; break; case 2: item = &_slot3; break; case 3: item = &_slot4; break; } xp = idx * 63 + 2; item->setup(9, 1, idx, xp, 4, 255); add(item); } // Setup bottom-right hand buttons xp += 62; _question.setup(1, 4, 7, xp, 16, 255); _question.setEnabled(false); add(&_question); xp += 21; _scrollLeft.setup(1, 4, 1, xp, 16, 255); add(&_scrollLeft); _scrollLeft._isLeft = true; xp += 22; _scrollRight.setup(1, 4, 4, xp, 16, 255); add(&_scrollRight); _scrollRight._isLeft = false; // Set up the score _score.postInit(); add(&_score); // Set interface area _bounds = Rect(0, BF_INTERFACE_Y - 1, SCREEN_WIDTH, SCREEN_HEIGHT); updateInventory(); }
void UiInv::checkUnclick(int hx, int hy, int x, int y) { if (!checkPlrInvClick(hx, hy, x, y)) if (!checkFloorInvClick(hx, hy, x, y)) checkOtherButtonsClick(hx, hy, x, y); updateInventory(); engine.ui->buttons->updatePlayerData(); }
/* * Scroll the inventory slots */ void UIElements::scrollInventory(bool isLeft) { if (isLeft) --_slotStart; else ++_slotStart; updateInventory(); }
/** * Set the game score */ void UIElements::addScore(int amount) { _scoreValue += amount; T2_GLOBALS._inventorySound.play(0); updateInventory(); }
void UIElements::setup(const Common::Point &pt) { _slotStart = 0; _itemList.clear(); _scoreValue = 0; _active = true; UICollection::setup(pt); hide(); _background.setup(1, 3, 1, 0, 0, 255); add(&_background); // Set up the inventory slots int xp = 0; for (int idx = 0; idx < 4; ++idx) { UIElement *item = NULL; switch (idx) { case 0: item = &_slot1; break; case 1: item = &_slot2; break; case 2: item = &_slot3; break; case 3: item = &_slot4; break; } xp = idx * 63 + 2; if (g_vm->getGameID() == GType_BlueForce) { item->setup(9, 1, idx, xp, 4, 255); } else { item->setup(7, 1, idx, xp, 4, 255); } add(item); } // Setup bottom-right hand buttons xp = (g_vm->getGameID() == GType_Ringworld2) ? 255 : 253; int yp = (g_vm->getGameID() == GType_BlueForce) ? 16 : 17; _question.setup(1, 4, 7, xp, yp, 255); _question.setEnabled(false); add(&_question); xp += 21; _scrollLeft.setup(1, 4, 1, xp, yp, 255); add(&_scrollLeft); _scrollLeft._isLeft = true; xp += (g_vm->getGameID() == GType_Ringworld2) ? 21 : 22; _scrollRight.setup(1, 4, 4, xp, yp, 255); add(&_scrollRight); _scrollRight._isLeft = false; switch (g_vm->getGameID()) { case GType_BlueForce: // Set up the score _score.postInit(); add(&_score); break; case GType_Ringworld2: // Set up the character display _character.setup(1, 5, R2_GLOBALS._player._characterIndex, 285, 11, 255); add(&_character); break; default: break; } // Set interface area _bounds = Rect(0, UI_INTERFACE_Y - 1, SCREEN_WIDTH, SCREEN_HEIGHT); updateInventory(); }
void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, LLInventoryObject::object_list_t* inv) { LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output"); LLInventoryObject::object_list_t::const_iterator it = inv->begin(); LLInventoryObject::object_list_t::const_iterator end = inv->end(); for ( ; it != end; ++it) { LLAssetType::EType asstype = (*it)->getType(); if( ( asstype == LLAssetType::AT_ANIMATION && gSavedSettings.getBOOL("BulkChangeIncludeAnimations")) || ( asstype == LLAssetType::AT_BODYPART && gSavedSettings.getBOOL("BulkChangeIncludeBodyParts" )) || ( asstype == LLAssetType::AT_CLOTHING && gSavedSettings.getBOOL("BulkChangeIncludeClothing" )) || ( asstype == LLAssetType::AT_GESTURE && gSavedSettings.getBOOL("BulkChangeIncludeGestures" )) || ( asstype == LLAssetType::AT_LANDMARK && gSavedSettings.getBOOL("BulkChangeIncludeLandmarks" )) || ( asstype == LLAssetType::AT_NOTECARD && gSavedSettings.getBOOL("BulkChangeIncludeNotecards" )) || ( asstype == LLAssetType::AT_OBJECT && gSavedSettings.getBOOL("BulkChangeIncludeObjects" )) || ( asstype == LLAssetType::AT_LSL_TEXT && gSavedSettings.getBOOL("BulkChangeIncludeScripts" )) || ( asstype == LLAssetType::AT_SOUND && gSavedSettings.getBOOL("BulkChangeIncludeSounds" )) || ( asstype == LLAssetType::AT_TEXTURE && gSavedSettings.getBOOL("BulkChangeIncludeTextures" ))) { LLViewerObject* object = gObjectList.findObject(viewer_obj->getID()); if (object) { LLInventoryItem* item = (LLInventoryItem*)((LLInventoryObject*)(*it)); LLViewerInventoryItem* new_item = (LLViewerInventoryItem*)item; LLPermissions perm(new_item->getPermissions()); U32 flags = new_item->getFlags(); U32 desired_next_owner_perms = LLFloaterPerms::getNextOwnerPerms("BulkChange"); U32 desired_everyone_perms = LLFloaterPerms::getEveryonePerms("BulkChange"); U32 desired_group_perms = LLFloaterPerms::getGroupPerms("BulkChange"); // If next owner permissions have changed (and this is an object) // then set the slam permissions flag so that they are applied on rez. if((perm.getMaskNextOwner() != desired_next_owner_perms) && (new_item->getType() == LLAssetType::AT_OBJECT)) { flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM; } // If everyone permissions have changed (and this is an object) // then set the overwrite everyone permissions flag so they // are applied on rez. if ((perm.getMaskEveryone() != desired_everyone_perms) && (new_item->getType() == LLAssetType::AT_OBJECT)) { flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE; } // If group permissions have changed (and this is an object) // then set the overwrite group permissions flag so they // are applied on rez. if ((perm.getMaskGroup() != desired_group_perms) && (new_item->getType() == LLAssetType::AT_OBJECT)) { flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP; } // chomp the inventory name so it fits in the scroll window nicely // and the user can see the [OK] std::string invname; invname=item->getName().substr(0,item->getName().size() < 30 ? item->getName().size() : 30 ); LLUIString status_text = getString("status_text"); status_text.setArg("[NAME]", invname.c_str()); // Check whether we appear to have the appropriate permissions to change permission on this item. // Although the server will disallow any forbidden changes, it is a good idea to guess correctly // so that we can warn the user. The risk of getting this check wrong is therefore the possibility // of incorrectly choosing to not attempt to make a valid change. // // Trouble is this is extremely difficult to do and even when we know the results // it is difficult to design the best messaging. Therefore in this initial implementation // we'll always try to set the requested permissions and consider all cases successful // and perhaps later try to implement a smarter, friendlier solution. -MG if(true //gAgent.allowOperation(PERM_MODIFY, perm, GP_OBJECT_MANIPULATE) // for group and everyone masks //|| something else // for next owner perms ) { perm.setMaskNext(desired_next_owner_perms); perm.setMaskEveryone(desired_everyone_perms); perm.setMaskGroup(desired_group_perms); new_item->setPermissions(perm); // here's the beef new_item->setFlags(flags); // and the tofu updateInventory(object,new_item,TASK_INVENTORY_ITEM_KEY,FALSE); //status_text.setArg("[STATUS]", getString("status_ok_text")); status_text.setArg("[STATUS]", ""); } else { //status_text.setArg("[STATUS]", getString("status_bad_text")); status_text.setArg("[STATUS]", ""); } list->addSimpleElement(status_text.getString()); //TODO if we are an object inside an object we should check a recuse flag and if set //open the inventory of the object and recurse - Michelle2 Zenovka // if(recurse && ( (*it)->getType() == LLAssetType::AT_OBJECT && processObject)) // { // I think we need to get the UUID of the object inside the inventory // call item->fetchFromServer(); // we need a call back to say item has arrived *sigh* // we then need to do something like // LLUUID* id = new LLUUID(mID); // registerVOInventoryListener(obj,id); // requestVOInventory(); // } } } } nextObject(); }
/** * Set the game score */ void UIElements::addScore(int amount) { _scoreValue += amount; BF_GLOBALS._sound2.play(0); updateInventory(); }
void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, InventoryObjectList* inv) { // find all of the lsl, leaving off duplicates. We'll remove // all matching asset uuids on compilation success. llinfos<<"handleInventory"<<llendl; char buffer[MAX_STRING]; /*Flawfinder: ignore*/ LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output"); InventoryObjectList::const_iterator it = inv->begin(); InventoryObjectList::const_iterator end = inv->end(); for ( ; it != end; ++it) { llinfos<<"Doing iterator of inventory"<<llendl; if( ( (*it)->getType() == LLAssetType::AT_LSL_TEXT && processScript) || ( (*it)->getType() == LLAssetType::AT_TEXTURE && processTexture) || ( (*it)->getType() == LLAssetType::AT_SOUND && processSound) || ( (*it)->getType() == LLAssetType::AT_LANDMARK && processLandmark) || ( (*it)->getType() == LLAssetType::AT_CLOTHING && processClothing) || ( (*it)->getType() == LLAssetType::AT_OBJECT && processObject) || ( (*it)->getType() == LLAssetType::AT_NOTECARD && processNotecard) || ( (*it)->getType() == LLAssetType::AT_BODYPART && processBodypart) || ( (*it)->getType() == LLAssetType::AT_ANIMATION && processAnimation) || ( (*it)->getType() == LLAssetType::AT_GESTURE && processGesture)) { LLViewerObject* object = gObjectList.findObject(viewer_obj->getID()); if (object) { LLInventoryItem* item = (LLInventoryItem*)((LLInventoryObject*)(*it)); LLViewerInventoryItem* new_item = (LLViewerInventoryItem*)item; LLPermissions perm(new_item->getPermissions()); // chomp the inventory name so it fits in the scroll window nicely // and the user can see the [OK] std::string invname; invname=item->getName().substr(0,item->getName().size() < 30 ? item->getName().size() : 30 ); // My attempt at checking valid permissions, CHECK ME // note its not actually bad to try to set permissions that are not allowed as the // server will protect against this, but it will piss the user off if its wrong if( (perm.getCreator()==gAgentID) || (perm.getMaskOwner() & PERM_TRANSFER) && (perm.getMaskOwner() & PERM_MODIFY) || (gAgent.getGroupID()==perm.getGroup() && (perm.getMaskGroup() & PERM_TRANSFER) && (perm.getMaskGroup() & PERM_MODIFY)) ){ llinfos<<"Setting perms"<<llendl; perm.setMaskNext(req_perm_mask); new_item->setPermissions(perm); updateInventory(object,new_item,TASK_INVENTORY_ITEM_KEY,FALSE); snprintf(buffer, sizeof(buffer), "Setting perms on '%s' [OK]", invname.c_str()); /* Flawfinder: ignore */ } else { llinfos<<"NOT setting perms"<<llendl; snprintf(buffer, sizeof(buffer), "Setting perms on '%s' [FAILED]", invname.c_str()); /* Flawfinder: ignore */ } list->addCommentText(buffer); if(recurse && ( (*it)->getType() == LLAssetType::AT_OBJECT && processObject)) { //Add this object back to the queue to be processed as it has inventory snprintf(buffer, sizeof(buffer), "Queueing object '%s' for open", invname.c_str()); llwarns << "Queueing object "<< invname.c_str() << " ID "<< (*it)->getUUID()<<llendl; mObjectIDs.put((*it)->getUUID()); // This will not YET work. as this is not a viewer object the unpack will fail } } } } nextObject(); }