示例#1
0
/**
* 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]);
  }
}
示例#3
0
/**
* 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;
}
示例#4
0
/**
 * 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;
}
示例#5
0
//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.
	
}
示例#6
0
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));
}
示例#7
0
void base::FrameCameraFPS::dropCamera(){
	_camera->drop();
	dropObject();
}
示例#8
0
void base::FrameAnimatedNode::drop(){
	dropObject();
	_mesh->drop();
}
示例#9
0
void base::FrameSkyBox::drop(){
	_skyBox->drop();
	dropObject();
}
示例#10
0
/*
*  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
    }
  }