⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inventory.cpp

📁 S.C.O.U.R.G.E.是一款类似Rogue的游戏
💻 CPP
📖 第 1 页 / 共 3 页
字号:
  else if(widget == player1Button) setSelectedPlayerAndMode(0, selectedMode);  else if(widget == player2Button) setSelectedPlayerAndMode(1, selectedMode);  else if(widget == player3Button) setSelectedPlayerAndMode(2, selectedMode);  else if(widget == player4Button) setSelectedPlayerAndMode(3, selectedMode);  else if(widget == inventoryButton) setSelectedPlayerAndMode(selected, INVENTORY);  else if(widget == skillsButton) setSelectedPlayerAndMode(selected, CHARACTER);  else if(widget == spellsButton) setSelectedPlayerAndMode(selected, SPELL);  else if(widget == missionButton)  setSelectedPlayerAndMode(selected, MISSION);  else if(widget == openButton) {    int itemIndex = invList->getSelectedLine();      if(itemIndex > -1) {      Item *item = scourge->getParty()->getParty(selected)->getInventory(itemIndex);      if(item->getRpgItem()->getType() == RpgItem::CONTAINER) {        scourge->openContainerGui(item);      }    }  } else if(widget == equipButton) {    equipItem();  } else if(widget == eatDrinkButton) {    if(scourge->getParty()->getParty(selected)->getStateMod(Constants::dead)) {      scourge->showMessageDialog(Constants::getMessage(Constants::DEAD_CHARACTER_ERROR));    } else {      int itemIndex = invList->getSelectedLine();        if(itemIndex > -1 &&          creature->getInventoryCount() > itemIndex) {        // this action will occur in the next battle round        creature->setAction(Constants::ACTION_EAT_DRINK,                             creature->getInventory(itemIndex),                            NULL);        creature->setTargetCreature(creature);        mainWin->setVisible(false);        //		if(scourge->getParty()->getParty(selected)->eatDrink(itemIndex)){        //		  scourge->getParty()->getParty(selected)->removeInventory(itemIndex);                        //		}        // refresh screen        //setSelectedPlayerAndMode(selected, INVENTORY);      }    }  } else if(widget == skillAddButton) {    if(scourge->getParty()->getParty(selected)->getStateMod(Constants::dead) ||        !scourge->getParty()->getParty(selected)->getStateMod(Constants::leveled)) {      error = Constants::getMessage(Constants::LEVEL_UP_ERROR);    } else if(scourge->getParty()->getParty(selected)->getAvailableSkillPoints() <= 0) {      //	  error = Constants::getMessage(Constants::OUT_OF_POINTS_ERROR);    } else {      int itemIndex = skillList->getSelectedLine();        if(itemIndex <= -1) {        error = Constants::getMessage(Constants::NO_SKILL_ERROR);      } else {        scourge->getParty()->getParty(selected)->incSkillMod(itemIndex);        // recreate list strings        int oldLine = skillList->getSelectedLine();        setSelectedPlayerAndMode(selected, selectedMode);        skillList->setSelectedLine(oldLine);      }    }    if(error) {      cerr << error << endl;      scourge->showMessageDialog(error);    }  } else if(widget == skillSubButton) {    if(scourge->getParty()->getParty(selected)->getStateMod(Constants::dead) ||        !scourge->getParty()->getParty(selected)->getStateMod(Constants::leveled)) {      error = Constants::getMessage(Constants::LEVEL_UP_ERROR);    } else if(scourge->getParty()->getParty(selected)->getAvailableSkillPoints() ==               scourge->getParty()->getParty(selected)->getCharacter()->getSkillBonus()) {      //	  error = Constants::getMessage(Constants::OUT_OF_POINTS_ERROR);    } else {      int itemIndex = skillList->getSelectedLine();        if(itemIndex <= -1) {        error = Constants::getMessage(Constants::NO_SKILL_ERROR);      } else {        scourge->getParty()->getParty(selected)->decSkillMod(itemIndex);        // recreate list strings        int oldLine = skillList->getSelectedLine();        setSelectedPlayerAndMode(selected, selectedMode);        skillList->setSelectedLine(oldLine);      }    }    if(error) {      cerr << error << endl;      scourge->showMessageDialog(error);    }  } else if(widget == levelUpButton) {    if(scourge->getParty()->getParty(selected)->getStateMod(Constants::dead) ||        !scourge->getParty()->getParty(selected)->getStateMod(Constants::leveled)) {      error = Constants::getMessage(Constants::LEVEL_UP_ERROR);    } else {      scourge->getParty()->getParty(selected)->applySkillMod();      // recreate list strings      int oldLine = skillList->getSelectedLine();      setSelectedPlayerAndMode(selected, selectedMode);      skillList->setSelectedLine(oldLine);    }    if(error) {      cerr << error << endl;      scourge->showMessageDialog(error);    }  } else if(widget == schoolList) {    int n = schoolList->getSelectedLine();    if(n != -1 && n < MagicSchool::getMagicSchoolCount()) {      showMemorizedSpellsInSchool( scourge->getParty()->getParty(selected),                                    MagicSchool::getMagicSchool(n));    }  } else if(widget == spellList) {    Spell *spell = getSelectedSpell();    if(spell) showSpellDescription(spell);  } else if(widget == castButton) {    Spell *spell = getSelectedSpell();    if(spell) {      if(spell->getMp() > creature->getMp()) {        scourge->showMessageDialog("Not enough Magic Points to cast this spell!");      } else {        creature->setAction(Constants::ACTION_CAST_SPELL,                             NULL,                            spell);        scourge->setTargetSelectionFor(creature);        mainWin->setVisible(false);      }    }  } else if(widget == castScrollButton) {    // no MP-s used when casting from scroll, but the scroll is destroyed.    int itemIndex = invList->getSelectedLine();      if(itemIndex > -1 && creature->getInventoryCount() > itemIndex) {      Item *item = creature->getInventory(itemIndex);      if(item->getSpell()) {        creature->setAction(Constants::ACTION_CAST_SPELL,                             item,                            item->getSpell());        scourge->setTargetSelectionFor(creature);        mainWin->setVisible(false);      } else {        scourge->showMessageDialog("You can only cast objects of magical nature!");      }    }  } else if(widget == transcribeButton) {    int itemIndex = invList->getSelectedLine();      if(itemIndex > -1 && creature->getInventoryCount() > itemIndex) {      Item *item = creature->getInventory(itemIndex);      if(item->getSpell()) {        if(creature->getSkill(item->getSpell()->getSchool()->getSkill()) > item->getSpell()->getLevel() * 5 &&           creature->getMp() > 0) {          bool res = creature->addSpell(item->getSpell());          if(res) {            scourge->showMessageDialog("Spell was entered into your spellbook.");            // destroy the scroll            creature->removeInventory(itemIndex);            setSelectedPlayerAndMode(selected, selectedMode);            char msg[120];            sprintf(msg, "%s crumbles into dust.", item->getItemName());            scourge->getMap()->addDescription(msg);          } else {            scourge->showMessageDialog("You already know this spell");          }        } else {        scourge->showMessageDialog("You are not proficient enough to transcribe this scroll.");        }      } else {        scourge->showMessageDialog("You can only transcribe scrolls!");      }    }  }  return false;}void Inventory::moveItemTo(int playerIndex) {  int itemIndex = invList->getSelectedLine();    if(itemIndex > -1 &&      scourge->getParty()->getParty(selected)->getInventoryCount() > itemIndex) {    if(playerIndex != selected) {      scourge->getParty()->getParty(playerIndex)->      addInventory(scourge->getParty()->getParty(selected)->removeInventory(itemIndex));      // recreate strings in list      setSelectedPlayerAndMode(selected, selectedMode);    }  }}bool Inventory::handleEvent(SDL_Event *event) {  switch(event->type) {  case SDL_MOUSEBUTTONUP:    break;       case SDL_KEYUP:    switch(event->key.keysym.sym) {    //        case SDLK_ESCAPE:     //		  hide();    //		  return true;    default: break;    }  default: break;  }  return false;}void Inventory::setSelectedPlayerAndMode(int player, int mode) {  selected = player;  selectedMode = mode;  player1Button->setSelected(selected == 0);  player2Button->setSelected(selected == 1);  player3Button->setSelected(selected == 2);  player4Button->setSelected(selected == 3);  inventoryButton->setSelected(selectedMode == INVENTORY);  skillsButton->setSelected(selectedMode == CHARACTER);  spellsButton->setSelected(selectedMode == SPELL);  missionButton->setSelected(selectedMode == MISSION);  // show only the ui elements belonging to the current mode  cards->setActiveCard(selectedMode);     // arrange the gui  Creature * selectedP = scourge->getParty()->getParty(selected);  switch(selectedMode) {  case CHARACTER:             sprintf(skillsStr, "Skills: (Available points: %d)", selectedP->getAvailableSkillPoints());    sprintf(nameAndClassStr, "%s, %s (level %d)", selectedP->getName(),             selectedP->getCharacter()->getName(), selectedP->getLevel());    nameAndClassLabel->setText(nameAndClassStr);      stateCount = 0;    for(int t = 0; t < Constants::STATE_MOD_COUNT; t++) {      if(selectedP->getStateMod(t)) {        sprintf(stateLine[stateCount], "%s", Constants::STATE_NAMES[t]);        icons[stateCount] = scourge->getShapePalette()->getStatModIcon(t);        stateCount++;      }    }    stateList->setLines(stateCount, (const char**)stateLine,                         (const Color *)NULL, (stateCount ? (const GLuint*)icons : NULL));    for(int t = 0; t < Constants::SKILL_COUNT; t++) {      sprintf(skillLine[t], "%d(%d) - %s",               selectedP->getSkill(t),               selectedP->getSkillMod(t),               Constants::SKILL_NAMES[t]);    }    skillList->setLines(Constants::SKILL_COUNT, (const char**)skillLine);    break;  case INVENTORY:    sprintf(inventoryWeightStr, " (Total : %2.2fkg / %2.2fkg)",             selectedP->getInventoryWeight(), selectedP->getMaxInventoryWeight());         inventoryWeightLabel->setText(inventoryWeightStr);    sprintf(coinsStr, "Coins: %d", selectedP->getMoney());    coinsLabel->setText(coinsStr);    for(int t = 0; t < selectedP->getInventoryCount(); t++) {      Item *item = selectedP->getInventory(t);      int location = selectedP->getEquippedIndex(t);      char s[100];      item->getDetailedDescription(s);      sprintf(pcInvText[t], "%s %s", (location > -1 ? " *" : "   "), s);    }    for(int t = selectedP->getInventoryCount();        t < MAX_INVENTORY_SIZE; t++) {      strcpy(pcInvText[t], "");    }    invList->setLines(selectedP->getInventoryCount(),                       (const char **)pcInvText);    /*    for(int i = 0; i < Character::INVENTORY_COUNT; i++) {      Item *item = selectedP->getEquippedInventory(i);      invEquipLabel[i]->setText((char *)(item ? item->getItemName() : NULL));    }    */    break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -