Logo Search packages:      
Sourcecode: vdr-plugin-spider version File versions

history.c

/*
 * Spider-Arachnid: A plugin for the Video Disk Recorder
 *
 * See the README file for copyright information and how to reach the author.
 *
 * $Id: history.c 2 2005-05-14 22:25:56Z tom $
 */

#include "history.h"
#include "deck.h"
#include "heap.h"


/** --- class History ------------------------------------------------------ **/

/** Constructor */
00017 History::History()
{
  executed = 0;
}

/** Destructor */
00023 History::~History()
{
  for (unsigned int pos = history.size(); pos > 0; --pos)
  {
    // Remove object created outside of History
    delete history.back();
    history.pop_back();
  }
}

/** Current move in the history */
00034 Move* History::current()
{
  return history[executed - 1];
}

/** Add a new move */
00040 void History::add(Move* move)
{
  for (unsigned int pos = history.size(); pos > executed; --pos)
  {
    // Remove object created outside of History
    delete history.back();
    history.pop_back();
  }
  history.push_back(move);
  ++executed;
}

/** Set previous move as current */
00053 void History::backward()
{
  if (movesExecuted())
    --executed;
}

/** Set next move as current */
00060 void History::forward()
{
  if (movesToExecute())
    ++executed;
}

/** Are there executed moves in the history */
00067 bool History::movesExecuted()
{
  return executed > 0;
}

/** Are there moves to execute in the history */
00073 bool History::movesToExecute()
{
  return executed < history.size();
}


/** --- class DealMove ----------------------------------------------------- **/

/** Constructor */
00082 DealMove::DealMove(Pack* s, Piles& d) :
  source(s), destination(d)
{
}

/** Do the move */
00088 void DealMove::execute()
{
  source->deal(destination);
}

/** Redo the move */
00094 void DealMove::takeBack()
{
  source->takeBackDeal(destination);
}


/** --- class NormalMove --------------------------------------------------- **/

/** Constructor */
00103 NormalMove::NormalMove(Pile* s, Pile* d, int c, bool t) :
  source(s), destination(d), count(c), turn(t)
{
}

/** Do the move */
00109 void NormalMove::execute()
{
  source->moveTo(destination, count);
  if (turn)
    source->turn();
}

/** Redo the move */
00117 void NormalMove::takeBack()
{
  if (turn)
    source->turn();
  destination->moveTo(source, count);
}


/** --- class FinalMove ---------------------------------------------------- **/

/** Constructor */
00128 FinalMove::FinalMove(Pile* s, FinalHeap* d, int c, bool t, bool b) :
  source(s), destination(d), count(c), turn(t), bonus(b)
{
}

/** Do the move */
00134 void FinalMove::execute()
{
  source->moveTo(destination, count);
  if (turn)
    source->turn();
  destination->setBonus(bonus);
}

/** Redo the move */
00143 void FinalMove::takeBack()
{
  destination->setBonus(false);
  if (turn)
    source->turn();
  destination->moveTo(source, count);
}

Generated by  Doxygen 1.6.0   Back to index