示例#1
0
void put_helper(card_t *c) {
  if (c != NULL) {
    if (c->below != NULL) {
      put_helper(c->below);
      printf(" ");
    }
    putCard(c);
  }
}
示例#2
0
 void in_received_handler(DictionaryIterator *received, void *context) {
  Tuple *text_tuple = dict_find(received, 0);
  int valu=text_tuple->value->uint8;
  if(valu==0){
     
     Tuple *index_tuple = dict_find(received, 1);
     Tuple *cards_tuple = dict_find(received, 2);
     Tuple *name_tuple = dict_find(received, 3);
     int inx=index_tuple->value->uint8;
     //APP_LOG(APP_LOG_LEVEL_DEBUG,"Received stack: %d", inx);
     namesdata[inx]=malloc(strlen(name_tuple->value->cstring)+1);
     cardsdata[inx]=malloc(strlen(cards_tuple->value->cstring)+1);
     strcpy(namesdata[inx], name_tuple->value->cstring);
     strcpy(cardsdata[inx], cards_tuple->value->cstring);
     sent_items++;
     if(sent_items==num_items){
      //APP_LOG(APP_LOG_LEVEL_DEBUG,"Received stacks");
      menu_layer_reload_data(menu_layer);
     }
  }else if(valu==2){
    sent_items=0;

    //APP_LOG(APP_LOG_LEVEL_DEBUG,"Received stack primer");
    if(num_items>0){
      for (int i = 0; i < num_items; ++i)
      {
        free(namesdata[i]);
        free(cardsdata[i]);
      }
      free(namesdata);
      free(cardsdata);

    }
    Tuple *index_tuple = dict_find(received, 1);
    int lengt=index_tuple->value->uint8;
    num_items=lengt;
    namesdata=malloc(lengt*sizeof(char*));
    cardsdata=malloc(lengt*sizeof(char*));


  } if(valu==1){
    
    Tuple *index_tuple = dict_find(received, 1);
    Tuple *qa_tuple = dict_find(received, 2);
    int index=qa_tuple->value->uint8;
    if(index==2){
      //Length
      sent_cards=0;
      uint8_t numQs=index_tuple->value->uint8;
      num_cards=numQs;
      cdarray=malloc(numQs*2*sizeof(char*));
      //APP_LOG(APP_LOG_LEVEL_DEBUG,"Allocated array of size: %d", numQs*2*sizeof(char*));
    }else{
    Tuple *text_tuple = dict_find(received, 3);
    //APP_LOG(APP_LOG_LEVEL_DEBUG,"Starting...");
    int indval=index_tuple->value->uint8;

    cdarray[indval]=malloc(strlen(text_tuple->value->cstring)+1);
    sent_cards++;
    strcpy(cdarray[indval],text_tuple->value->cstring);
    //APP_LOG(APP_LOG_LEVEL_DEBUG,"Received text: %s at %d, sentcards=%d", cdarray[indval], indval,sent_cards);

    }
    if(sent_cards>=num_cards*2){
      //APP_LOG(APP_LOG_LEVEL_DEBUG,"Completed!");
      putCard();
    }
  }
 }
示例#3
0
void RedWhite::sendMessageSelf()
{
    for(int i = 0;i < 4;i++)
    {
        if(magicGroup[i]->isClicked)
        {
            informationKind = 200 + i;
        }
    }
    std::vector<int> tempMes;
    if(cancel->isClicked && informationKind < 100)
    {
        if(informationKind == 7)
        {
            tempMes.push_back(-1);
            emit sendMessageSelfSig(tempMes);
            return;
        }
        tempMes.push_back(0);
        emit sendMessageSelfSig(tempMes);
        return;
    }
    if(cancel->isClicked && informationKind > 99 && !ensure->canBeClicked)
    {
        tempMes.push_back(-1);
        emit sendMessageSelfSig(tempMes);
        return;
    }
    if(cancel->isClicked && informationKind > 99 && ensure->canBeClicked)
    {
        tempMes.push_back(0);
        emit sendMessageSelfSig(tempMes);
        return;
    }
    switch(informationKind)
    {
        case 6://血之哀伤
        {
            putCharacter(tempMes);
            emit sendMessageSelfSig(tempMes);
            return;
        }
        case 200://同生共死
        {
            tempMes.push_back(1);
            tempMes.push_back(1);
            putCharacter(tempMes);
            lifeLink = true;
            for(int i = 0;i < 6;i++)
            {
                if(paintStructX->gameCharacter[i]->characterPic->isClicked)
                {
                    lifeLinkCha = i;
                }
            }
            emit sendMessageSelfSig(tempMes);
            return;
        }
        case 201://逆流
        {
            tempMes.push_back(1);
            tempMes.push_back(2);
            putCardCount(tempMes);
            putCard(tempMes);
            emit sendMessageSelfSig(tempMes);
            return;
        }
        case 202://血之悲鸣响应阶段
        {
        //system("pause");
            if(!bloodAsk)
            {
                tempMes.push_back(1);
                tempMes.push_back(3);
                putCharacter(tempMes);
                putCard(tempMes);
                emit sendMessageSelfSig(tempMes);
                return;
            }
            else
            {
                for(int i = 0;i < 5;i++)
                {
                    if(blood->number[i]->isClicked)
                    {
                        tempMes.push_back(i + 1);
                        emit sendMessageSelfSig(tempMes);
                        return;
                    }
                }
            }

        }
        case 203://血之诅咒响应阶段
        {
            tempMes.push_back(1);
            tempMes.push_back(4);
            putCharacter(tempMes);
            putCardCount(tempMes);
            putCard(tempMes);
            emit sendMessageSelfSig(tempMes);
            return;
        }
        default:
        {
            sendMessageIn();
        }
    }
}