Import existing source tree; original VCS history is no longer available. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
70 lines
2.0 KiB
C++
70 lines
2.0 KiB
C++
/*(GPL)
|
|
------------------------------------------------------------
|
|
Kobo Deluxe - An enhanced SDL port of XKobo
|
|
------------------------------------------------------------
|
|
* Copyright (C) 1995, 1996 Akira Higuchi
|
|
* Copyright (C) 2002, 2007 David Olofson
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
#ifndef XKOBO_H_MAP
|
|
#define XKOBO_H_MAP
|
|
|
|
#include "config.h"
|
|
|
|
#define SITE_MAX 1024
|
|
|
|
#define WALL 1
|
|
|
|
// Tile state bits
|
|
#define U_MASK (1<<0)
|
|
#define R_MASK (1<<1)
|
|
#define D_MASK (1<<2)
|
|
#define L_MASK (1<<3)
|
|
#define CORE (1<<4)
|
|
#define HIT_MASK (CORE | U_MASK | R_MASK | D_MASK | L_MASK)
|
|
#define HARD (1<<5)
|
|
#define SPACE (1<<6)
|
|
#define MAP_BITS(x) ((x) & 0xff)
|
|
|
|
#define IS_SPACE(x) ((x) & SPACE)
|
|
|
|
class _map
|
|
{
|
|
public:
|
|
void init();
|
|
void make_maze(int x, int y, int difx, int dify);
|
|
void convert(unsigned ratio); /* ratio < 64 */
|
|
inline unsigned short &pos(int x, int y)
|
|
{
|
|
x &= MAP_SIZEX - 1;
|
|
y &= MAP_SIZEY - 1;
|
|
return data[(y << MAP_SIZEX_LOG2) + x];
|
|
}
|
|
void clearpos(int x, int y);
|
|
protected:
|
|
int sitex[SITE_MAX];
|
|
int sitey[SITE_MAX];
|
|
int site_max;
|
|
unsigned short data[1 << (MAP_SIZEX_LOG2 + MAP_SIZEY_LOG2)];
|
|
int maze_pop();
|
|
void maze_push(int x, int y);
|
|
void maze_move_and_push(int x, int y, int d);
|
|
int maze_judge(int cx, int cy, int dx, int dy, int x, int y);
|
|
};
|
|
|
|
#endif // XKOBO_H_MAP
|