示例#1
0
void MessageSendController::addReceiver(RemoteMessageReceiver *receiver) {
    int nameIndex = getNameIndex(receiver->getName());
    if (nameIndex == -1) {
        nameList->add(StaticUtils::copyString(receiver->getName()));
        receiverLists->add((void *) new ZGLinkedList());
        nameIndex = nameList->size() - 1;
    }

    ZGLinkedList *receiverList = (ZGLinkedList *) receiverLists->get(nameIndex);
    receiverList->add(receiver);
}
示例#2
0
文件: gameplay.cpp 项目: bbaksh/pvz
void GamePlay::updateCurrentUser(QString name)//used to save users and update there timestamps,levle etc
{
    if(userTimestamp.size()>0)
    {
        double i=getNameIndex(name);
        currentUser[1]=userPlayer[i];
        currentUser[2]=userLevel[i];
        updateTimestamp(currentUser[1]);
        currentUser[0]=userTimestamp[i];
    }
}
示例#3
0
void MessageSendController::receiveMessage(const char *name, PdMessage *message) {
  int index = getNameIndex(name);
  
  // if the receiver name is not registered, nothing to do
  if (index >= 0) sendMessage(index, message);
  
  // check to see if the receiver name has been registered as an external receiver
  if (externalReceiverSet.find(string(name)) != externalReceiverSet.end()) {
    std::pair<const char *, PdMessage *> pair = make_pair(name, message);
    context->callbackFunction(ZG_RECEIVER_MESSAGE, context->callbackUserData, &pair);
  }
}
示例#4
0
void MessageSendController::removeReceiver(RemoteMessageReceiver *receiver) {
  int nameIndex = getNameIndex(receiver->getName());
  if (nameIndex != -1) {
    set<RemoteMessageReceiver *> *receiverSet = &(sendStack[nameIndex].second);
    receiverSet->erase(receiver);
    // NOTE(mhroth):
    // once the receiver set has been created, it should not be erased anymore from the sendStack.
    // PdContext depends on the nameIndex to be constant for all receiver names once they are
    // defined, as a message destined for that receiver may already be in the message queue
    // with the given index. If the indicies change, then message will be sent to the wrong
    // receiver set. This is a stupid constraint. Fix it.
  }
}
示例#5
0
void MessageSendController::addReceiver(RemoteMessageReceiver *receiver) {
  int nameIndex = getNameIndex(receiver->getName());
  if (nameIndex == -1) {
    set<RemoteMessageReceiver *> remoteSet = set<RemoteMessageReceiver *>();
    remoteSet.insert(receiver);
    std::pair<string, set<RemoteMessageReceiver *> > nameSetPair =
        make_pair(string(receiver->getName()), remoteSet);
    sendStack.push_back(nameSetPair);
    nameIndex = sendStack.size()-1;
  }
  
  set<RemoteMessageReceiver *> *receiverSet = &(sendStack[nameIndex].second);
  receiverSet->insert(receiver);
}
示例#6
0
bool MessageSendController::receiverExists(const char *receiverName) {
  return (getNameIndex(receiverName) >= 0);
}
示例#7
0
void MessageSendController::receiveMessage(char *name, PdMessage *message) {
    processMessage(getNameIndex(name), message);
}