]>
Commit | Line | Data |
---|---|---|
10a0e290 BB |
1 | #include "stdafx.h"\r |
2 | \r | |
3 | Map::Map(void)\r | |
4 | {\r | |
5 | height = SCREEN_HEIGHT/TILE_HEIGHT;\r | |
6 | width = SCREEN_WIDTH/TILE_WIDTH;\r | |
7 | sx = 0;\r | |
8 | sy = 0;\r | |
9 | \r | |
10 | \r | |
11 | //Passability\r | |
12 | tileset[0] = 0;\r | |
13 | tileset[1] = 0;\r | |
14 | tileset[2] = 0;\r | |
15 | tileset[3] = 0;\r | |
16 | tileset[4] = 0;\r | |
17 | tileset[5] = 0;\r | |
18 | tileset[6] = 1;\r | |
19 | tileset[7] = 1;\r | |
20 | tileset[8] = 1;\r | |
21 | tileset[9] = 1;\r | |
22 | tileset[10] = 1;\r | |
23 | tileset[11] = 1;\r | |
24 | tileset[12] = 1;\r | |
25 | tileset[13] = 1;\r | |
26 | tileset[14] = 1;\r | |
27 | \r | |
28 | //Get the Sheet\r | |
29 | sheet = IMG_Load("./sprites/tilesheet.png");\r | |
30 | // sheet = SDL_DisplayFormat(raw_sprite);\r | |
31 | // SDL_FreeSurface(raw_sprite);\r | |
32 | Uint32 colorkey = SDL_MapRGB(sheet->format, 255, 0, 255);\r | |
33 | SDL_SetColorKey(sheet, SDL_SRCCOLORKEY | SDL_RLEACCEL, colorkey);\r | |
34 | \r | |
35 | std::ifstream in("./map0.bin", std::ios::in | std::ios::binary);\r | |
36 | \r | |
37 | int length;\r | |
38 | \r | |
39 | //get the size\r | |
40 | in.seekg (0, std::ios::end);\r | |
41 | length = in.tellg();\r | |
42 | in.seekg (0, std::ios::beg);\r | |
43 | \r | |
44 | in.read((char *) &tiles, length);\r | |
45 | \r | |
46 | // see how many bytes have been read\r | |
47 | std::cout << in.gcount() << " bytes read\n";\r | |
48 | \r | |
49 | in.close();\r | |
50 | \r | |
51 | }\r | |
52 | \r | |
53 | void Map::drawmap(SDL_Surface *viewport){\r | |
54 | \r | |
55 | int x1, x2, y1, y2, tx, ty;\r | |
56 | tx = sx/TILE_WIDTH;\r | |
57 | ty = sy/TILE_HEIGHT;\r | |
58 | x1 = (sx%TILE_WIDTH) * -1;\r | |
59 | x2 = x1 + SCREEN_WIDTH + (x1 == 0 ? 0 : TILE_WIDTH);\r | |
60 | y1 = (sy%TILE_HEIGHT) * -1;\r | |
61 | y2 = y1 + SCREEN_HEIGHT + (y1 == 0 ? 0 : TILE_WIDTH);\r | |
62 | \r | |
63 | for(int y = y1; y<y2; y+=TILE_HEIGHT){\r | |
64 | tx = sx/TILE_WIDTH;\r | |
65 | for(int x = x1; x<x2; x+=TILE_WIDTH){\r | |
66 | this->draw_tile(viewport, tiles[ty][tx], x, y);\r | |
67 | tx++;\r | |
68 | }\r | |
69 | ty++;\r | |
70 | }\r | |
71 | }\r | |
72 | \r | |
73 | void Map::draw_tile(SDL_Surface *viewport, int type, int x, int y){\r | |
74 | \r | |
75 | if(type > 14 || type < 0){\r | |
76 | type = 0;\r | |
77 | }\r | |
78 | \r | |
79 | int x_tile, y_tile;\r | |
80 | \r | |
81 | x_tile = floor(type / 3) * TILE_HEIGHT;\r | |
82 | y_tile = (type % 3) * TILE_WIDTH;\r | |
83 | \r | |
84 | /*Draws a rectangular surface from sx,sy of swxsh dimensions to dx, dy*/\r | |
85 | Gfx::drawsurface(y_tile, x_tile, TILE_WIDTH, TILE_HEIGHT, this->sheet,\r | |
86 | x, y, viewport);\r | |
87 | \r | |
88 | // switch (type) {\r | |
89 | // \r | |
90 | // \r | |
91 | // \r | |
92 | // case 0:\r | |
93 | // case 1:\r | |
94 | // case 2:\r | |
95 | // /*boxRGBA(viewport,\r | |
96 | // x, y,\r | |
97 | // x+25, y+25,\r | |
98 | // 255, 255, 255, 255);*/\r | |
99 | // break;\r | |
100 | // case 3:\r | |
101 | // case 4:\r | |
102 | // case 5:\r | |
103 | // boxRGBA(viewport,\r | |
104 | // x, y,\r | |
105 | // x+TILE_WIDTH, y+TILE_HEIGHT,\r | |
106 | // 238, 0, 139, 255);\r | |
107 | // break;\r | |
108 | // case 6:\r | |
109 | // case 7:\r | |
110 | // case 8:\r | |
111 | // boxRGBA(viewport,\r | |
112 | // x, y,\r | |
113 | // x+TILE_WIDTH, y+TILE_HEIGHT,\r | |
114 | // 34, 34, 34, 255);\r | |
115 | // break;\r | |
116 | // }\r | |
117 | \r | |
118 | }\r | |
119 | \r | |
120 | int Map::get_passability(int x, int y){\r | |
121 | \r | |
122 | return tileset[tiles[(sy+y)/TILE_HEIGHT][(sx+x)/TILE_WIDTH]];\r | |
123 | }\r | |
124 | \r | |
125 | int Map::get_tile(int x, int y){\r | |
126 | return tiles[(sy+y)/TILE_HEIGHT][(sx+x)/TILE_WIDTH];\r | |
127 | }\r | |
128 | \r | |
129 | int Map::get_sx(){\r | |
130 | return sx;\r | |
131 | }\r | |
132 | \r | |
133 | int Map::get_sy(){\r | |
134 | return sy;\r | |
135 | }\r | |
136 | \r | |
137 | void Map::set_sx(int x){\r | |
138 | sx = x;\r | |
139 | }\r | |
140 | \r | |
141 | void Map::set_sy(int y){\r | |
142 | sy = y;\r | |
143 | }\r | |
144 | \r | |
145 | Map::~Map(void){\r | |
146 | \r | |
147 | } |