#include <stdio.h>
#include "renderer.h"

#define MSG_QUIT 1

struct Core
{
    static IRenderer *Renderer;
};

IRenderer *Core::Renderer = 0;

struct MSG
{
    int key;
};

MSG GetMessage()
{
    MSG msg;
//    msg.key = fgetc(stdin);

    return msg;
}

class Object
{
private:
    int x, y;
public:
    int X()
    {
        return x;
    }
    int Y()
    {
        return y;
    }
    virtual void Render() = 0;
};

class Ship : public Object
{
    void Render()
    {
        Core::Renderer->SetPixel(1,1,0);
    }
};

int main()
{
//    Core::Renderer = new Renderer();
    Renderer renderer;
  
// to sie wypierdala (nie wazne jaka metoda)  
//Renderer* r = &renderer;
//r->Update();

    MSG msg;
    int counter;
    while (1)
    {
        msg = GetMessage();

        if (msg.key == MSG_QUIT)
        {
            break;
        }

        //ProcessMessage(msg);
        
        for (int x=0;x<renderer.Width();x++)
        {
            for (int y=0;y<renderer.Height();y++)
            {
                ((renderer)).SetPixel(x, y, (((counter>>3)&0xff) + ((x&0xff)<<8) + ((y&0xff)<<16)) | 0xE0E0E0);
            }
        }

        renderer.Update();
        counter++;
    }
}
