#ifndef MAP_H
#define MAP_H

#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include "console.h"
#include "row.h"

extern int DIRX[];
extern int DIRY[];

class map {
  private:
    static int created;
    static int deleted;

    console *c;
    int height;
    int width;
	std::vector<row*> rows;
  public:
    map(int,int);

    void makeborder(sprite* s);
    void scatter(sprite* s, int num=1);

    int getwidth();
    int getheight();

    void extendx(int);
    void extendy(int);

    void addrow(int);
    void addcol(int);
    void remrow(int);
    void remcol(int);
    
    sprite* spriteat(int x, int y);
    void setsprite(int x, int y, sprite* s);

    bool inboundsx(int x);
    bool inboundsy(int y);
    bool inbounds(int x, int y);

    void setcon(console*);
    void printmap();
    void printmap(console *c);

    bool savemap(std::string fname);
	
    static int print();

    ~map();
};
#endif
