//
// Deus Hax (working title)
// Copyright (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
//

#if defined HAVE_CONFIG_H
#   include "config.h"
#endif

#include <cstdio>
#include <cmath>

#include "core.h"
#include "debugboard.h"

/*
 * DebugBoard implementation class
 */

class DebugBoardData
{
    friend class DebugBoard;

private:
    Game *game;
    int tiler;
    float x, y, z;
};

/*
 * Public DebugBoard class
 */

DebugBoard::DebugBoard(Game *game)
{
    data = new DebugBoardData();
    data->game = game;
    Ticker::Ref(game);
    data->tiler = Tiler::Register("monsterz/tiles.png", 48);
    data->x = 32;
    data->y = 0;
    data->z = 112;
}

void DebugBoard::TickGame(float deltams)
{
    Entity::TickGame(deltams);
}

void DebugBoard::TickDraw(float deltams)
{
    Entity::TickDraw(deltams);

    int x = data->x;
    int y = data->y;
    int z = data->z;

    for (int j = 0; j < 8; j++)
        for (int i = 0; i < 8; i++)
    {
        int id = 28 + ((i + 3) * (j + 1) % 10) * 3 + ((i ^ (j + 2)) % 5);
        id += (id % 5) / 4;
        data->game->GetScene()->AddTile((data->tiler << 16) | id,
                                        x + i * 48 - 16, y + j * 48, z, 1);
    }
}

DebugBoard::~DebugBoard()
{
    Ticker::Unref(data->game);
    Tiler::Deregister(data->tiler);
    delete data;
}