Ignore:
Timestamp:
Jan 24, 2011, 2:45:36 AM (11 years ago)
Author:
sam
Message:

Implement above/below pieces.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/monsterz/piece.cpp

    r271 r274  
    3030private:
    3131    Game *game;
     32    Piece *above, *below;
    3233    int tiler;
    3334    Int2 cell, pos, src, dst;
     
    5758    data->game = game;
    5859    Ticker::Ref(game);
     60    data->above = NULL;
     61    data->below = NULL;
    5962    data->tiler = Tiler::Register(PNG_TILES, 48, 48, 1.0f);
    6063    data->cell = cell;
     
    8790{
    8891    return data->id;
     92}
     93
     94void Piece::SetAbove(Piece *above)
     95{
     96    Piece *old = data->above;
     97
     98    if (above == old)
     99        return;
     100
     101    if (old)
     102        Ticker::Unref(old);
     103    data->above = above;
     104    if (above)
     105        Ticker::Ref(above);
     106
     107    if (old)
     108        old->SetBelow(NULL);
     109    if (above)
     110        above->SetBelow(this);
     111}
     112
     113Piece *Piece::GetAbove() const
     114{
     115    return data->above;
     116}
     117
     118void Piece::SetBelow(Piece *below)
     119{
     120    Piece *old = data->below;
     121
     122    if (below == old)
     123        return;
     124
     125    if (old)
     126        Ticker::Unref(old);
     127    data->below = below;
     128    if (below)
     129        Ticker::Ref(below);
     130
     131    if (old)
     132        old->SetAbove(NULL);
     133    if (below)
     134        below->SetAbove(this);
     135}
     136
     137Piece *Piece::GetBelow() const
     138{
     139    return data->below;
    89140}
    90141
     
    265316Piece::~Piece()
    266317{
     318    if (data->above)
     319        Ticker::Unref(data->above);
     320    if (data->below)
     321        Ticker::Unref(data->below);
    267322    Ticker::Unref(data->game);
    268323    Tiler::Deregister(data->tiler);
Note: See TracChangeset for help on using the changeset viewer.