//
// Created by ricardo on 2022/6/11.
//

#ifndef AUTO_BUS_GUI_MAIN_SCENE_H
#define AUTO_BUS_GUI_MAIN_SCENE_H

#include "QGraphicsScene"
#include "QGraphicsPixmapItem"

class PosPair{

public:
    int pos_x;
    int pos_y;

    PosPair();
    /**
     * 获取两个站点之间的距离
     * @param stop_number 站点的数量
     * @return 站点之间的距离
     */
    int GetStopSpaceLength(int stop_number) const;
    /**
     * 加上一定的距离
     * @param length 需要加上的距离
     */
    void AddLength(int length);

private:
    const int stop_begin_x = 100;
    const int stop_begin_y = 80;
    const int stop_rail_width = 300;
    const int stop_rail_height = 200;

    int distance = 0;
};

class SceneManager
{
public:
    QGraphicsScene *scene;

    /**
     * 构造函数,同时生成站点
     * @param stop_node_number 站点的数量
     */
    explicit SceneManager();
    ~SceneManager();

    /**
     * 生成站点画面
     * @param node_number
     */
    void SetStopScene(int node_number);

private:
    /**
     * 显示站点的像素图对象
     */
    QGraphicsPixmapItem *pixmap_items;
    /**
     * 每个站点的所在位置
     */
    PosPair *stop_pos_pairs;

    /**
     * 总共的站点数量
     */
    int stop_node_number;

    /**
     * 一个矩形的边框
     * 使无论中间存在多少站点,这个scene都能在view的中心
     */
    QGraphicsRectItem *rect_item;

    /**
     * 清除画面
     */
    void ClearScene();
};

#endif //AUTO_BUS_GUI_MAIN_SCENE_H