/** * Test whether supplied verb is one of the common variety for this object * say_ok needed for special case of take/drop which may be handled not only * here but also in a cmd_list with a donestr string simultaneously */ bool Parser_v1d::isGenericVerb(char *word, object_t *obj) { debugC(1, kDebugParser, "isGenericVerb(%s, object_t *obj)", word); if (!obj->genericCmd) return false; // Following is equivalent to switch, but couldn't do one if (word == _vm->_text->getVerb(_vm->_look, 0)) { if ((LOOK & obj->genericCmd) == LOOK) Utils::Box(kBoxAny, "%s", _vm->_text->getTextData(obj->dataIndex)); else Utils::Box(kBoxAny, "%s", _vm->_text->getTextParser(kTBUnusual_1d)); } else if (word == _vm->_text->getVerb(_vm->_take, 0)) { if (obj->carriedFl) Utils::Box(kBoxAny, "%s", _vm->_text->getTextParser(kTBHave)); else if ((TAKE & obj->genericCmd) == TAKE) takeObject(obj); else if (!obj->verbOnlyFl) // Make sure not taking object in context! Utils::Box(kBoxAny, "%s", _vm->_text->getTextParser(kTBNoUse)); else return false; } else if (word == _vm->_text->getVerb(_vm->_drop, 0)) { if (!obj->carriedFl) Utils::Box(kBoxAny, "%s", _vm->_text->getTextParser(kTBDontHave)); else if ((DROP & obj->genericCmd) == DROP) dropObject(obj); else Utils::Box(kBoxAny, "%s", _vm->_text->getTextParser(kTBNeed)); } else { // It was not a generic cmd return false; } return true; }
void APhysicObjectBase::Destroy() { if(mContainingObject) { mContainingObject->mContainer.erase(mContainingObject->mContainer.find(this)); } //? drop all objects for(APhysicObjectBase* obj : mContainer) { dropObject(obj, GetTransform(), sHMap[obj->GetTemplateData()->collGroup]); } }
/** * Test whether command line contains one of the generic actions */ bool Parser_v3d::isGenericVerb(object_t *obj, char *comment) { debugC(1, kDebugParser, "isGenericVerb(object_t *obj, %s)", comment); if (!obj->genericCmd) return false; // Following is equivalent to switch, but couldn't do one if (isWordPresent(_vm->_arrayVerbs[_vm->_look]) && isNear(obj, _vm->_arrayVerbs[_vm->_look][0], comment)) { // Test state-dependent look before general look if ((obj->genericCmd & LOOK_S) == LOOK_S) { Utils::Box(BOX_ANY, "%s", _vm->_textData[obj->stateDataIndex[obj->state]]); } else { if ((LOOK & obj->genericCmd) == LOOK) { if (obj->dataIndex != 0) Utils::Box(BOX_ANY, "%s", _vm->_textData[obj->dataIndex]); else return false; } else { Utils::Box(BOX_ANY, "%s", _vm->_textParser[kTBUnusual]); } } } else if (isWordPresent(_vm->_arrayVerbs[_vm->_take]) && isNear(obj, _vm->_arrayVerbs[_vm->_take][0], comment)) { if (obj->carriedFl) Utils::Box(BOX_ANY, "%s", _vm->_textParser[kTBHave]); else if ((TAKE & obj->genericCmd) == TAKE) takeObject(obj); else if (obj->cmdIndex) // No comment if possible commands return false; else if (!obj->verbOnlyFl && (TAKE & obj->genericCmd) == TAKE) // Make sure not taking object in context! Utils::Box(BOX_ANY, "%s", _vm->_textParser[kTBNoUse]); else return false; } else if (isWordPresent(_vm->_arrayVerbs[_vm->_drop])) { if (!obj->carriedFl && ((DROP & obj->genericCmd) == DROP)) Utils::Box(BOX_ANY, "%s", _vm->_textParser[kTBDontHave]); else if (obj->carriedFl && ((DROP & obj->genericCmd) == DROP)) dropObject(obj); else if (obj->cmdIndex == 0) Utils::Box(BOX_ANY, "%s", _vm->_textParser[kTBNeed]); else return false; } else { // It was not a generic cmd return false; } return true; }
/** * Test whether command line contains one of the generic actions */ bool Parser_v3d::isGenericVerb_v3(Object *obj, char *comment) { debugC(1, kDebugParser, "isGenericVerb(Object *obj, %s)", comment); if (!obj->_genericCmd) return false; // Following is equivalent to switch, but couldn't do one if (isWordPresent(_vm->_text->getVerbArray(_vm->_look)) && isNear_v3(obj, _vm->_text->getVerb(_vm->_look, 0), comment)) { // Test state-dependent look before general look if ((obj->_genericCmd & LOOK_S) == LOOK_S) { Utils::notifyBox(_vm->_text->getTextData(obj->_stateDataIndex[obj->_state])); } else { if ((LOOK & obj->_genericCmd) == LOOK) { if (obj->_dataIndex != 0) Utils::notifyBox(_vm->_text->getTextData(obj->_dataIndex)); else return false; } else { Utils::notifyBox(_vm->_text->getTextParser(kTBUnusual)); } } } else if (isWordPresent(_vm->_text->getVerbArray(_vm->_take)) && isNear_v3(obj, _vm->_text->getVerb(_vm->_take, 0), comment)) { if (obj->_carriedFl) Utils::notifyBox(_vm->_text->getTextParser(kTBHave)); else if ((TAKE & obj->_genericCmd) == TAKE) takeObject(obj); else if (obj->_cmdIndex) // No comment if possible commands return false; else if (!obj->_verbOnlyFl && (TAKE & obj->_genericCmd) == TAKE) // Make sure not taking object in context! Utils::notifyBox(_vm->_text->getTextParser(kTBNoUse)); else return false; } else if (isWordPresent(_vm->_text->getVerbArray(_vm->_drop))) { if (!obj->_carriedFl && ((DROP & obj->_genericCmd) == DROP)) Utils::notifyBox(_vm->_text->getTextParser(kTBDontHave)); else if (obj->_carriedFl && ((DROP & obj->_genericCmd) == DROP)) dropObject(obj); else if (obj->_cmdIndex == 0) Utils::notifyBox(_vm->_text->getTextParser(kTBNeed)); else return false; } else { // It was not a generic cmd return false; } return true; }
//Clear out the list, point afresh void MicroLL::clear( void ) { //Drop it like it's NOT while( currentPosition > 0 ) { dropObject( 0 ); } //Account for all initial conditions //This is controlled by the drop and clear functions: // startObjectPtr = &nullObject; // currentPosition = 0; //Don't change this: // maxLength = 1000; // nullObject.eventType = 0xAA; // nullObject.nextObject = nullObject; //Points to self. }
bool SQLToolWidget::eventFilter(QObject *object, QEvent *event) { if(object==objects_trw && event->type()==QEvent::KeyPress) { QKeyEvent *k_event=dynamic_cast<QKeyEvent *>(event); if(k_event->key()==Qt::Key_Delete || k_event->key()==Qt::Key_F5) { if(k_event->key()==Qt::Key_F5) updateCurrentItem(); else dropObject(objects_trw->currentItem()); return(true); } else return(false); } return(QWidget::eventFilter(object, event)); }
void base::FrameCameraFPS::dropCamera(){ _camera->drop(); dropObject(); }
void base::FrameAnimatedNode::drop(){ dropObject(); _mesh->drop(); }
void base::FrameSkyBox::drop(){ _skyBox->drop(); dropObject(); }
/* * Apply rule assertions * * mode=0 - assert * mode=1 - alert * mode=2 - default (only set if unknown) */ void nbAssert(nbCELL context,nbSET member,int mode){ //struct ASSERTION *assertion,*target; struct ASSERTION *assertion; NB_Sentence *sentence; NB_Term *term; NB_Node *node,*contextNode; NB_Skill *skill; NB_Facet *facet; NB_List *arglist; NB_Object *object; NB_Link *transientRoot=NULL,*transientLink,**transientLinkP,**transientNextP=&transientRoot; if(trace) outMsg(0,'T',"assert() called"); contextNode=(NB_Node *)((NB_Term *)context)->def; while(member!=NULL){ assertion=(struct ASSERTION *)member->object; object=assertion->object; term=(NB_Term *)assertion->target; if(assertion->target->type==termType){ // 2011-03-19 eat - don't assert if default mode and value is not unknown if(mode&2 && term->def!=nb_Unknown); else if(assertion->cell.object.type==assertTypeDef) nbTermAssign(term,object); else if(object->value==nb_Disabled){ nbTermAssign(term,object->type->compute(object)); dropObject(term->def); /* 2004/08/28 eat */ } else nbTermAssign(term,object->value); //if(mode==1 && term->cell.mode&NB_CELL_MODE_TRANSIENT){ // switch a cell flag to identify transient term if(mode==1 && assertion->cell.mode&NB_CELL_MODE_TRANSIENT){ // Handle transient assertion // remove from old list for(transientLinkP=&contextNode->transientLink;*transientLinkP!=NULL && (*transientLinkP)->object!=(NB_Object *)term;transientLinkP=&(*transientLinkP)->next); if(*transientLinkP!=NULL){ // found it, so remove and reuse transientLink=*transientLinkP; *transientLinkP=transientLink->next; transientLink->next=NULL; } else{ // not found, so create new if((transientLink=nb_LinkFree)==NULL) transientLink=nbAlloc(sizeof(NB_Link)); else nb_LinkFree=transientLink->next; transientLink->next=NULL; transientLink->object=(NB_Object *)term; // we don't grab here, but an undefine of transient term must remove from this list } // insert in new list *transientNextP=transientLink; transientNextP=&(transientLink->next); } } else if(assertion->target->type==nb_SentenceType){ if(assertion->cell.object.type==assertTypeVal){ if(object->value==nb_Disabled) object=object->type->compute(object); else object=(NB_Object *)grabObject(object->value); /* 2004/08/28 eat - grab added */ } //else if(assertion->cell.object.type!=assertTypeDef){ else if(assertion->cell.object.type==assertTypeDef){ outMsg(0,'L',"Cell definition assertion not support for node %s",term->word->value); return; } sentence=(NB_Sentence *)assertion->target; term=sentence->term; node=(NB_Node *)term->def; if(node->cell.object.type!=nb_NodeType){ outMsg(0,'E',"Term %s not defined as node",term->word->value); dropObject(object); /* 2004/08/28 eat */ return; } if((skill=node->skill)==NULL){ outMsg(0,'E',"Node %s does not have an assertion method.",term->word->value); dropObject(object); return; } facet=sentence->facet; if(sentence->args) arglist=(NB_List *)grabObject(sentence->args); else arglist=NULL; if(mode&1)(*facet->alert)(term,skill->handle,node->knowledge,(NB_Cell *)arglist,(NB_Cell *)object); else (*facet->assert)(term,skill->handle,node->knowledge,(NB_Cell *)arglist,(NB_Cell *)object); dropObject(arglist); dropObject(object); /* 2004/08/28 eat */ nbCellPublish((NB_Cell *)term->def); nbCellPublish((NB_Cell *)term); } member=member->next; } if(mode==1){ // for alerts // Reset to Unknown the event transient terms from the last alert not set this time. for(transientLink=contextNode->transientLink;transientLink!=NULL;transientLink=contextNode->transientLink){ term=(NB_Term *)transientLink->object; nbTermAssign(term,nb_Unknown); // reset event cell to Unknown contextNode->transientLink=transientLink->next; transientLink->next=nb_LinkFree; nb_LinkFree=transientLink; } contextNode->transientLink=transientRoot; // Save list of event transient terms in this alert } }