/**
 * @file gui.h
 * @brief 图形化用户界面头文件
 * @note 使用Raylib库实现五子棋的图形化界面
 * @author 刘航宇
 * @date 2025-01-15
 */

#ifndef GUI_H
#define GUI_H

#include "gobang.h"
#include "config.h"
#include "globals.h"

// GUI函数声明

/**
 * @brief 初始化GUI
 * @details 初始化Raylib图形库和游戏界面组件
 * @return 成功返回0，失败返回-1
 */
int init_gui();

/**
 * @brief 清理GUI资源
 * @details 关闭窗口
 */
void cleanup_gui();

/**
 * @brief 渲染游戏画面
 * @details 完整的游戏画面渲染流程
 */
void render_game();

/**
 * @brief 处理事件
 * @details 处理所有Raylib事件并执行相应操作
 * @return 继续运行返回1，退出返回0
 */
int handle_events();

/**
 * @brief 绘制棋盘
 */
void draw_board();

/**
 * @brief 绘制棋子
 */
void draw_stones();

/**
 * @brief 绘制UI元素
 */
void draw_ui_elements();

/**
 * @brief 屏幕坐标转棋盘坐标
 */
int screen_to_board(int screen_x, int screen_y, int *board_x, int *board_y);

/**
 * @brief 显示消息
 */
void show_message(const char *message);

#endif // GUI_H