aboutsummaryrefslogtreecommitdiff
path: root/inc/tower.h
blob: da3fb1e698a902e02028dfcdf7b6a63101a7e2c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/* ************************************************************************** */
/*                                                                            */
/*                                                            .               */
/*   tower.h                                                 / \              */
/*                                                          /   \             */
/*   By: charles <charles.cabergs@gmail.com>               /o  o \            */
/*                                                        /  v    \           */
/*   Created: 2020/06/27 14:06:50 by charles             /    _    \          */
/*   Updated: 2020/06/28 08:12:37 by charles            '-----------'         */
/*                                                                            */
/* ************************************************************************** */

#ifndef TOWER_H
# define TOWER_H

# include <stdlib.h>
# include <stdint.h>
# include <stddef.h>
# include <string.h>

# include <ncurses.h>

# define MAX_HEIGHT 128

typedef struct
{
	uint8_t	data[MAX_HEIGHT];
	size_t	len;
}			t_tower;

enum e_highlight
{
	HIGHLIGHT_NONE    = 0,
	HIGHLIGHT_FROM    = 1 << 0,
	HIGHLIGHT_CURRENT = 1 << 1,
};

void	towers_init(t_tower towers[3], size_t disk_num);
void	towers_move(t_tower towers[3], size_t from, size_t to);
void	tower_put(t_tower *tower, WINDOW *win, enum e_highlight highlight_level);
uint8_t	tower_peek(t_tower *tower);

#endif