Esempio n. 1
0
void TFrameHandle::setCurrentFrame(int frame) {
  if (m_frameType == LevelFrame) {
    // std::vector<TFrameId> fids;
    // if(!getCurrentLevelFids(fids)) return;

    if (m_fids.size() <= 0) return;
    if (frame - 1 >= (int)m_fids.size())
      setFid(m_fids.back());
    else
      setFid(m_fids[frame - 1]);
  } else
    setFrame(frame - 1);
}
Esempio n. 2
0
void TFrameHandle::setFrameIndexByName(const QString &str) {
  int num = str.toInt();
  if (m_frameType == LevelFrame) {
    setFid(TFrameId(num));
  } else
    setFrame(num - 1);
}
Esempio n. 3
0
void TFrameHandle::setFrameIndex(int index) {
  if (m_frameType == LevelFrame) {
    // std::vector<TFrameId> fids;
    if (m_fids.size() > 0 && 0 <= index && index < (int)m_fids.size())
      setFid(m_fids[index]);
  } else
    setFrame(index);
}
Esempio n. 4
0
void TFrameHandle::prevFrame() {
  if (m_frameType == LevelFrame) {
    // std::vector<TFrameId> fids;
    if (m_fids.size() <= 0) return;
    std::vector<TFrameId>::iterator it;
    it = std::lower_bound(m_fids.begin(), m_fids.end(), m_fid);
    // tornando indietro non vado prima del primo frame del livello
    if (it != m_fids.end() && it != m_fids.begin()) {
      --it;
      setFid(*it);
    } else {
      // se sono dopo l'ultimo, vado all'ultimo
      if (!m_fids.empty() && m_fid > m_fids.back()) setFid(m_fids.back());
    }
  } else {
    if (m_frame > 0) setFrame(m_frame - 1);
  }
}
Esempio n. 5
0
void TFrameHandle::lastFrame() {
  if (m_frameType == LevelFrame) {
    // std::vector<TFrameId> fids;
    if (m_fids.size() <= 0) return;
    setFid(m_fids.back());
  } else {
    /*int r0,r1,step;
getCurrentScenePlayRange(r0,r1,step);*/
    if (m_frame1 > 0) setFrame(m_frame1);
  }
}
Esempio n. 6
0
void TFrameHandle::nextFrame() {
  if (m_frameType == LevelFrame) {
    // std::vector<TFrameId> fids;
    // if(!getCurrentLevelFids(fids)) return;
    if (m_fids.size() <= 0) return;
    std::vector<TFrameId>::iterator it;
    it = std::upper_bound(m_fids.begin(), m_fids.end(), m_fid);
    if (it == m_fids.end()) {
      // non c'e' nessun frame del livello oltre m_fid. Non vado oltre al primo
      // frame dopo l'ultimo.
      // TXshSimpleLevel *sl =
      // TApp::instance()->getCurrentLevel()->getSimpleLevel();
      TFrameId fid = m_fids.back();  // sl->index2fid(sl->getFrameCount());
      setFid(fid);
    } else
      setFid(*it);
  } else {
    setFrame(m_frame + 1);
  }
}
Esempio n. 7
0
bool Astar::checkOpen(int col, int row, int id)
{
    // 检查open列表中是否有更小的步长,并排序
    for(int i = _open->count() - 1; i > 0; i--) {
        auto item = (AstarItem*)_open->getObjectAtIndex(i);
        if(item->getCol() == col && item->getRow() == row) {
            int tempG = getG(col, row, id);
            if(tempG < item->getG()) {
                item->setG(tempG);
                item->setFid(id);
                item->setF(tempG + item->getH());
                resetSort(i);
            }
            return false;
        }
    }

    return true;
}