|
本帖最后由 ancientcc 于 2017-3-11 21:30 编辑
tchild、restore_map_from
- struct tchild {
- unit* window;
- std::vector<unit*> rows;
- std::vector<unit*> cols;
- std::vector<unit*> units;
- };
复制代码 rows。网格中各行的配置。
cols。网格中各列的配置。
units。网格中各单元的配置。各单元在units中存储是“Z”序。
功能:在大地图画出child指定的网格。
- void unit_map::restore_map_from(const unit::tchild& child, const int xstart, const int ystart, bool create)
复制代码
child | 此次要加载的网格 | xstart、ystart | 此个网格要加载到的、开始的单元坐标 | create | 是否要把从child解析出的单元写入map_、coor_map_。什么时候用true?内容发生变动,像把占位控件变成列表,于是根网格已被从大地图抽出,用它在大地图重画根网格 |
它会修改child中window的cover_width、cover_height字段。
- struct tcell_setting {
- struct {
- int cover_width;
- int cover_height;
- } window;
- };
复制代码 这两个字段指示要在地图画出此个网格须要的矩形尺寸,单位是栅格。图中第一个3x1网格,它当中有格子含有孩子,它的cover_width=4、cover_height=7 。第二个1x3网格,当中没有格子含有孩子,它的cover_width=4、cover_height=2 。
在恢复时,垂直、水平都有个serial_gap,这个值固定是1。cover_width、cover_height不包含最右、最上那个serial_gap。
- class unit {
- std::vector<tchild> children_;
- };
复制代码 children_是该unit中有子孩子。在图中,一个孩子对应一个网格。tgrid时,children_长度1;listbox时,长度2。
|
|