Example #1
0
void MockPlugin::onActivate(const char* val)
{
    TEST_ONACTIVATE++;
    super_type::onActivate(val);
    registerObserver("status");
    registerObserver("subnode.*");
}
bool DroidObjectImplementation::sendConversationStartTo(SceneObject* player) {
	if (!player->isPlayerCreature() || isDead())
		return false;

	if (player != getLinkedCreature().get())
		return false;

	BaseDroidModuleComponent* m = getModule("personality_chip");
	if (m == NULL) {
		return false;
	}

	DroidPersonalityModuleDataComponent* personality = dynamic_cast<DroidPersonalityModuleDataComponent*>(m);
	if (personality == NULL) {
		return false;
	}

	if (personality->getPersonalityConversationTemplate() == 0) {
		return false;
	}

	//Face player.
	faceObject(player);

	PatrolPoint current(coordinates.getPosition(), getParent().get());

	broadcastNextPositionUpdate(&current);

	CreatureObject* playerCreature = cast<CreatureObject*>( player);
	StartNpcConversation* conv = new StartNpcConversation(playerCreature, getObjectID(), "");
	player->sendMessage(conv);

	SortedVector<ManagedReference<Observer*> > observers = getObservers(ObserverEventType::STARTCONVERSATION);

	for (int i = 0;  i < observers.size(); ++i) {
		if (dynamic_cast<ConversationObserver*>(observers.get(i).get()) != NULL) {
			return true;
		}
	}
	//Create conversation observer.
	ConversationObserver* conversationObserver = ConversationManager::instance()->getConversationObserver(personality->getPersonalityConversationTemplate());

	if (conversationObserver != NULL) {
		//Register observers.
		registerObserver(ObserverEventType::CONVERSE, conversationObserver);
		registerObserver(ObserverEventType::STARTCONVERSATION, conversationObserver);
		registerObserver(ObserverEventType::SELECTCONVERSATION, conversationObserver);
		registerObserver(ObserverEventType::STOPCONVERSATION, conversationObserver);
	} else {
		error("Could not create conversation observer.");
		return false;
	}

	return true;
}
Example #3
0
void ThreatMap::addDamage(CreatureObject* target, uint32 damage, String xp) {
	Locker locker(&lockMutex);

	ManagedReference<TangibleObject*> strongSelf = self.get();
	if (strongSelf == NULL || strongSelf.get() == target)
		return;

	int idx = find(target);
	String xpToAward = "";

	if (xp == "") {
		WeaponObject* weapon = target->getWeapon();
		xpToAward = weapon->getXpType();
	} else
		xpToAward = xp;

	if (idx == -1) {
		ThreatMapEntry entry;
		entry.addDamage(xpToAward, damage);
		entry.addAggro(1);

		put(target, entry);
		registerObserver(target);

	} else {
		ThreatMapEntry* entry = &elementAt(idx).getValue();
		entry->addDamage(xpToAward, damage);
		entry->addAggro(1);
	}
}
Example #4
0
void ThreatMap::addAggro(CreatureObject* target, int value, uint64 duration) {
	Locker locker(&lockMutex);

	ManagedReference<TangibleObject*> strongSelf = self.get();
	if (strongSelf == NULL || strongSelf.get() == target)
		return;

	int idx = find(target);

	if (idx == -1) {
		ThreatMapEntry entry;
		entry.addAggro(value);
		put(target, entry);
		registerObserver(target);

	} else {
		ThreatMapEntry* entry = &elementAt(idx).getValue();
		entry->addAggro(value);
	}

	if(duration > 0) {
		Reference<RemoveAggroTask*> removeAggroTask = new RemoveAggroTask(self.get(), target, value);
		removeAggroTask->schedule(duration);
	}
}
Example #5
0
    string RepositoryXL::storeObject(
        const string &objectIDRaw,
        const shared_ptr<Object> &object,
        bool overwrite,
        boost::shared_ptr<ValueObject> valueObject) {

            shared_ptr<CallingRange> callingRange = getCallingRange();
            string objectID = callingRange->initializeID(objectIDRaw);
            if (objectIDRaw.empty() && valueObject)
                valueObject->setProperty("OBJECTID", objectID);

            shared_ptr<ObjectWrapperXL> objectWrapperXL;
            ObjectMap::const_iterator result = objectMap_.find(objectID);
            if (result == objectMap_.end()) {
                objectWrapperXL = shared_ptr<ObjectWrapperXL> (
                    new ObjectWrapperXL(objectID, object, callingRange));
                objectMap_[objectID] = objectWrapperXL;
                callingRange->registerObject(objectID, objectWrapperXL);
            } else {
                objectWrapperXL = boost::static_pointer_cast<ObjectWrapperXL>(result->second);
                if (objectWrapperXL->callerKey() != callingRange->key()) {
                    OH_REQUIRE(overwrite, "Cannot create object with ID '" << objectID <<
                        "' in cell " << callingRange->addressString() <<
                        " because an object with that ID already resides in cell " <<
                        objectWrapperXL->callerAddress());
                    objectWrapperXL->resetCaller(callingRange);
                    callingRange->registerObject(objectID, objectWrapperXL);
                }
                objectWrapperXL->reset(object);
            }

            registerObserver(objectWrapperXL);
            return objectWrapperXL->idFull();
    }
Example #6
0
void ThreatMap::addDamage(CreatureObject* target, uint32 damage, String xp) {
	Locker locker(&lockMutex);

	int idx = find(target);
	String xpToAward = "";

	if (xp == "") {
		WeaponObject* weapon = target->getWeapon();
		xpToAward = weapon->getXpType();
	} else
		xpToAward = xp;

	if (idx == -1) {
		ThreatMapEntry entry;
		entry.addDamage(xpToAward, damage);
		entry.addAggro(1);

		put(target, entry);
		registerObserver(target);

	} else {
		ThreatMapEntry* entry = &elementAt(idx).getValue();
		entry->addDamage(xpToAward, damage);
		entry->addAggro(1);
	}

	// randomly change target everytime threatmap is added to, TODO: keep this in mind and perhaps make it slightly more complicated
	if (System::random(5) == 0)
		currentThreat = target;
}
Example #7
0
// hostDiv - the div where the trace data should be displayed
  // showTrace - indicates whether the trace should be shown by default (true) or whether the host will control
  //             when it is shown
processedTraceStream::processedTraceStream(properties::iterator props, std::string hostDiv, bool showTrace) : 
  traceStream(props.next(), hostDiv, showTrace)
{
  // Initialize the directories this processedTraceStream will use for its temporary storage
  static bool initialized=false;
  if(!initialized) {
    // Create the directory that holds the trace-specific scripts
    std::pair<std::string, std::string> dirs = dbg.createWidgetDir("procTS");
    workDir = dirs.first;
    maxFileID = 0;
  }
  
  queue = new traceObserverQueue();
  
  // Add this trace object as a change listener to all the context variables
  long numCmds = properties::getInt(props, "numCmds");
  for(long i=0; i<numCmds; i++) {
    commandProcessors.push_back(new externalTraceProcessor_File(props.get(txt()<<"cmd"<<i), txt()<<workDir<<"/in"<<(maxFileID++)));
    queue->push_back(commandProcessors.back());
  }
  // The final observer in the queue is the original traceStream, which accepts the observations and sends
  // them to be visualized
  queue->push_back(this);

  // Route all of this traceStream's observations through queue
  registerObserver(queue);
}
Example #8
0
 IpccImpl::IpccImpl(
   lmp::DWORD                             localCCId,
   node::NodeApplicationIF&               node,
   NetworkIFSocketIF&                     networkIFSocket,
   boost::asio::io_context&               io_context,
   const boost::asio::ip::udp::endpoint&  remote_endpoint,
   bool                                   isActiveSetup)
   : m_localCCId(localCCId),
     m_node(node),
     m_networkIFSocket(networkIFSocket),
     m_io_context(io_context),
     m_remote_endpoint(remote_endpoint),
     m_remoteNodeId(0),
     m_remoteCCId(0),
     m_isActiveSetup(isActiveSetup),
     m_FSM(*this),
     m_helloInterval(std::chrono::milliseconds(150)),
     m_helloDeadInterval(std::chrono::milliseconds(500)),
     m_configSend_timer(m_io_context,
                        std::chrono::milliseconds(500),
                        3,
                        1,
                        boost::function<bool (bool)>(
                          boost::bind(&IpccImpl::evtConfRet,
                                      this,
                                      _1))),
     m_hello_timer(m_io_context,
                   m_helloInterval,
                   boost::function<bool (void)>(
                     boost::bind(&IpccImpl::evtHelloRet,
                                 this))),
     m_helloDead_timer(m_io_context,
                       m_helloDeadInterval,
                       boost::function<bool (void)>(
                         boost::bind(&IpccImpl::evtHoldTimer,
                                     this))),
     m_goingDown_timer(m_io_context,
                       m_helloDeadInterval,
                       boost::function<bool (void)>(
                         boost::bind(&IpccImpl::evtDownTimer,
                                     this))),
     m_TxSeqNum(0),
     m_RcvSeqNum(0),
     m_Observers(),
     m_neighborAdjacencyObservers(),
     m_fsm_mutex(),
     m_messageId(0),
     m_configMsg()
 {
   std::cout << "Node(" << m_node.getNodeId() << ").IPCC(localCCId = " << getLocalCCId()
             << ", remoteAddress = " << m_remote_endpoint.address().to_v4().to_ulong()
             << ", remotePortNumber = " << m_remote_endpoint.port() << ") ctor" << std::endl;
   {
     boost::unique_lock<boost::shared_mutex> guard(m_fsm_mutex);
     m_FSM.start();
   }
   registerObserver(m_node);
 }
Example #9
0
void ThreatMap::addHeal(CreatureObject* target, int value) {
	Locker locker(&lockMutex);

	int idx = find(target);

	if (idx == -1) {
		ThreatMapEntry entry;
		entry.addHeal(value);
		entry.addAggro(2);
		put(target, entry);
		registerObserver(target);

	} else {
		ThreatMapEntry* entry = &elementAt(idx).getValue();
		entry->addHeal(value);
		entry->addAggro(2);
	}
}
Example #10
0
// Places the given set of traceObservers immediately after this observer and before all of the observers that watch it
void traceObserver::prependObservers(const std::set<traceObserver*>& newObservers) {
  // Back up the original set of observers and remove them
  map<traceObserver*, int> origObservers = observers;
  while(observers.size()>0) {
    // newObservers and origObservers must be disjoint
    assert(newObservers.find(observers.begin()->first) == newObservers.end());
    
    unregisterObserver(observers.begin()->first);
  }

  // Add each new observer to this observer
  for(set<traceObserver*>::const_iterator n=newObservers.begin(); n!=newObservers.end(); n++) {
    registerObserver(*n);
    // And add all of the original observers to watch this current new observer
    for(map<traceObserver*, int>::iterator o=origObservers.begin(); o!=origObservers.end(); o++)
      (*n)->registerObserver(o->first);
  }
}
Example #11
0
void ThreatMap::addHeal(CreatureObject* target, int value) {
	Locker locker(&lockMutex);

	ManagedReference<TangibleObject*> strongSelf = self.get();
	if (strongSelf == NULL || strongSelf.get() == target)
		return;

	int idx = find(target);

	if (idx == -1) {
		ThreatMapEntry entry;
		entry.addHeal(value);
		entry.addAggro(1);
		put(target, entry);
		registerObserver(target);

	} else {
		ThreatMapEntry* entry = &elementAt(idx).getValue();
		entry->addHeal(value);
		entry->addAggro(1);
	}
}
Example #12
0
bool ThreatMap::setThreatState(CreatureObject* target, uint64 state, uint64 duration, uint64 cooldown) {
	Locker locker(&lockMutex);

	if((hasState(state) && isUniqueState(state))
			|| !cooldownTimerMap.isPast(String::valueOf(state)))
		return false;

	int idx = find(target);

	if (idx == -1) {
		ThreatMapEntry entry;
		entry.setThreatState(state);
		put(target, entry);
		registerObserver(target);

	} else {
		ThreatMapEntry* entry = &elementAt(idx).getValue();
		entry->setThreatState(state);
	}

	if(duration > 0) {
		Reference<ClearThreatStateTask*> clearThreat = new ClearThreatStateTask(self.get(), target, state);
		clearThreat->schedule(duration);
	}

	if(cooldown > 0) {
		cooldownTimerMap.updateToCurrentAndAddMili(String::valueOf(state), duration + cooldown);
	}

	if(isUniqueState(state)) {
		cooldownTimerMap.updateToCurrentTime("doEvaluation");
	}

#ifdef DEBUG
	System::out << "Setting threat state on "  << target->getObjectID() << ": " << state << endl;
#endif

	return true;
}
void MLC_SerialTargetPlugin::onActivate(const char * val)
{
    super_type::onActivate(val);
    registerObserver("");
}
Example #14
0
bool CANController::registerObserver(CANObserver *observer)
{
	return registerObserver(observer, 0, 0);
}
/*! Register an observer which gets notified of changed key/value
 *  pairs.
 *  \deprecated Obsolete coding style.
 */
void ConfigManager::RegisterObserver(ConfigObserver *observer, const String &key)
{
  registerObserver(observer, key);
}
Example #16
0
// hostDiv - the div where the trace data should be displayed
  // showTrace - indicates whether the trace should be shown by default (true) or whether the host will control
  //             when it is shown
traceStream::traceStream(properties::iterator props, std::string hostDiv, bool showTrace) : 
  hostDiv(hostDiv), showTrace(showTrace)
{

  static bool initialized = false;
  
  if(!initialized) {
    // Create the directory that holds the trace-specific scripts
    dbg.createWidgetDir("trace");
    pair<string, string> paths = dbg.createWidgetDir("trace");
    outDir = paths.first;
    htmlOutDir = paths.second;
    
    // Table/Lines visualization
    //dbg.includeScript("https://www.google.com/jsapi", "text/javascript");
    //dbg.includeScript("http://yui.yahooapis.com/3.11.0/build/yui/yui-min.js", "text/javascript");
    dbg.includeWidgetScript("yui-min.js", "text/javascript"); dbg.includeFile("yui-min.js");
    
    // JQuery must be loaded before prototype.js. Because we don't have a clean way to guaranteed this, we'll load jquery in sight_layout.C
    //dbg.includeWidgetScript("jquery-1.8.1.min.js", "text/javascript"); dbg.includeFile("jquery-1.8.1.min.js");
    dbg.includeWidgetScript("underscore-min.js",   "text/javascript"); dbg.includeFile("underscore-min.js");
    
    // Three.js
    dbg.includeWidgetScript("Three.js",               "text/javascript"); dbg.includeFile("Three.js");
    dbg.includeWidgetScript("Detector.js",            "text/javascript"); dbg.includeFile("Detector.js");
    dbg.includeWidgetScript("OrbitControls.js",       "text/javascript"); dbg.includeFile("OrbitControls.js");
    dbg.includeWidgetScript("THREEx.WindowResize.js", "text/javascript"); dbg.includeFile("THREEx.WindowResize.js");
    dbg.createWidgetDir("THREE/src/materials");
    dbg.includeWidgetScript("THREE/src/materials/ShaderMaterial.js", "text/javascript"); 
    dbg.includeFile("THREE/src/materials/ShaderMaterial.js");
    dbg.createWidgetDir("THREE/src/extras");
    dbg.includeWidgetScript("THREE/src/extras/ImageUtils.js", "text/javascript"); 
    dbg.includeFile("THREE/src/extras/ImageUtils.js");
    //dbg.includeWidgetScript("Stats.js",   "text/javascript"); dbg.includeFile("Stats.js");
    
    // JQuery
    dbg.includeWidgetScript("jquery-1.9.1.min.js", "text/javascript"); dbg.includeFile("jquery-1.9.1.min.js");
    dbg.includeWidgetScript("jquery-ui.js",        "text/javascript"); dbg.includeFile("jquery-ui.js");
    dbg.includeWidgetScript("jquery-ui.css",       "text/css");        dbg.includeFile("jquery-ui.css");
    
    
    // D3 Widgets
    dbg.includeWidgetScript("d3.v3.min.js", "text/javascript"); dbg.includeFile("d3.v3.min.js");
    //dbg.includeWidgetScript("d3.v3.js", "text/javascript"); dbg.includeFile("d3.v3.js");
    dbg.includeWidgetScript("trace/table.js",     "text/javascript"); dbg.includeFile("trace/table.js");
    dbg.includeWidgetScript("trace/boxplot.js",   "text/javascript"); dbg.includeFile("trace/boxplot.js");
    dbg.includeWidgetScript("trace/gradient.js",  "text/javascript"); dbg.includeFile("trace/gradient.js");
    dbg.includeWidgetScript("trace/scatter.js",   "text/javascript"); dbg.includeFile("trace/scatter.js");
    dbg.includeWidgetScript("trace/scatter3d.js", "text/javascript"); dbg.includeFile("trace/scatter3d.js");
    
    // Decision Trees
    //dbg.includeWidgetScript("ID3-Decision-Tree/js/id3.js", "text/javascript");
    //dbg.includeScript("https://www.google.com/jsapi?autoload={\"modules\":[{\"name\":\"visualization\",\"version\":\"1\",\"packages\":[\"orgchart\"]}]}", "text/javascript");
    //dbg.includeFile("ID3-Decision-Tree");
    dbg.includeWidgetScript("trace/ID3/id3.js", "text/javascript");
    dbg.includeWidgetScript("trace/ID3/dndTree.js", "text/javascript"); 
    dbg.includeWidgetScript("trace/ID3/dndTree.css", "text/css");
    dbg.includeFile("trace/ID3");

    dbg.includeWidgetScript("trace/trace.js", "text/javascript"); dbg.includeFile("trace/trace.js"); 
    
    initialized = true;
  }
  
  traceID = properties::getInt(props, "traceID");
  viz     = (vizT)properties::getInt(props, "viz");

//cout << "ts::ts this="<<this<<" props="<<props.str()<<endl<<"viz="<<viz<<endl;
  
  // Add this trace object as a change listener to all the context variables
  long numCtxtAttrs = properties::getInt(props, "numCtxtAttrs");
  if(numCtxtAttrs > 0) {
    for(long i=0; i<numCtxtAttrs; i++) {
      string ctxtName = properties::get(props, txt()<<"ctxtAttr_"<<i);
      contextAttrs.push_back(ctxtName);
      // Context attributes cannot be repeated
      assert(contextAttrsSet.find(ctxtName) == contextAttrsSet.end());
      contextAttrsSet.insert(ctxtName);
      //attributes.addObs(properties::get(props, txt()<<"ctxtAttr_"<<i), this);
    }
    contextAttrsInitialized = true;
  } else
    contextAttrsInitialized = false;
  
  //traceAttrsInitialized = false;
  registerObserver(new traceFileWriterTSV(txt()<<outDir<<"/data_individual/"<<
                                                 "trace_"<<traceID<<".tsv"));

  active[traceID] = this;
}