Skip to content

Commit

Permalink
Merge branch 'develop' into macos-develop
Browse files Browse the repository at this point in the history
  • Loading branch information
backwardsEric committed Nov 22, 2024
2 parents 0c319c7 + 17509ef commit c07c31b
Show file tree
Hide file tree
Showing 32 changed files with 129 additions and 133 deletions.
36 changes: 18 additions & 18 deletions src/floor/cave-generator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ static void reset_lite_area(FloorType *floor_ptr)
floor_ptr->view_n = 0;
}

static dun_data_type *initialize_dun_data_type(dun_data_type *dd_ptr, concptr *why)
static DungeonData *initialize_dun_data_type(DungeonData *dd_ptr, concptr *why)
{
dd_ptr->destroyed = false;
dd_ptr->empty_level = false;
Expand All @@ -49,7 +49,7 @@ static dun_data_type *initialize_dun_data_type(dun_data_type *dd_ptr, concptr *w
return dd_ptr;
}

static void check_arena_floor(PlayerType *player_ptr, dun_data_type *dd_ptr)
static void check_arena_floor(PlayerType *player_ptr, DungeonData *dd_ptr)
{
auto *floor_ptr = player_ptr->current_floor_ptr;
if (!dd_ptr->empty_level) {
Expand Down Expand Up @@ -79,7 +79,7 @@ static void check_arena_floor(PlayerType *player_ptr, dun_data_type *dd_ptr)
}
}

static void place_cave_contents(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_type *d_ptr)
static void place_cave_contents(PlayerType *player_ptr, DungeonData *dd_ptr, dungeon_type *d_ptr)
{
auto *floor_ptr = player_ptr->current_floor_ptr;
if (floor_ptr->dun_level == 1) {
Expand Down Expand Up @@ -109,7 +109,7 @@ static void place_cave_contents(PlayerType *player_ptr, dun_data_type *dd_ptr, d
}
}

static bool decide_tunnel_planned_site(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_type *d_ptr, dt_type *dt_ptr, int i)
static bool decide_tunnel_planned_site(PlayerType *player_ptr, DungeonData *dd_ptr, dungeon_type *d_ptr, dt_type *dt_ptr, int i)
{
dd_ptr->tunn_n = 0;
dd_ptr->wall_n = 0;
Expand All @@ -127,7 +127,7 @@ static bool decide_tunnel_planned_site(PlayerType *player_ptr, dun_data_type *dd
return true;
}

static void make_tunnels(PlayerType *player_ptr, dun_data_type *dd_ptr)
static void make_tunnels(PlayerType *player_ptr, DungeonData *dd_ptr)
{
for (auto i = 0; i < dd_ptr->tunn_n; i++) {
dd_ptr->tunnel_y = dd_ptr->tunn[i].y;
Expand All @@ -141,7 +141,7 @@ static void make_tunnels(PlayerType *player_ptr, dun_data_type *dd_ptr)
}
}

static void make_walls(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_type *d_ptr, dt_type *dt_ptr)
static void make_walls(PlayerType *player_ptr, DungeonData *dd_ptr, dungeon_type *d_ptr, dt_type *dt_ptr)
{
for (int j = 0; j < dd_ptr->wall_n; j++) {
Grid *g_ptr;
Expand All @@ -156,7 +156,7 @@ static void make_walls(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_ty
}
}

static bool make_centers(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_type *d_ptr, dt_type *dt_ptr)
static bool make_centers(PlayerType *player_ptr, DungeonData *dd_ptr, dungeon_type *d_ptr, dt_type *dt_ptr)
{
dd_ptr->tunnel_fail_count = 0;
dd_ptr->door_n = 0;
Expand All @@ -176,7 +176,7 @@ static bool make_centers(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_
return true;
}

static void make_doors(PlayerType *player_ptr, dun_data_type *dd_ptr, dt_type *dt_ptr)
static void make_doors(PlayerType *player_ptr, DungeonData *dd_ptr, dt_type *dt_ptr)
{
for (int i = 0; i < dd_ptr->door_n; i++) {
dd_ptr->tunnel_y = dd_ptr->door[i].y;
Expand All @@ -188,7 +188,7 @@ static void make_doors(PlayerType *player_ptr, dun_data_type *dd_ptr, dt_type *d
}
}

static void make_only_tunnel_points(FloorType *floor_ptr, dun_data_type *dd_ptr)
static void make_only_tunnel_points(FloorType *floor_ptr, DungeonData *dd_ptr)
{
int point_num = (floor_ptr->width * floor_ptr->height) / 200 + randint1(3);
dd_ptr->cent_n = point_num;
Expand All @@ -198,7 +198,7 @@ static void make_only_tunnel_points(FloorType *floor_ptr, dun_data_type *dd_ptr)
}
}

static bool make_one_floor(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_type *d_ptr)
static bool make_one_floor(PlayerType *player_ptr, DungeonData *dd_ptr, dungeon_type *d_ptr)
{
auto *floor_ptr = player_ptr->current_floor_ptr;

Expand Down Expand Up @@ -232,7 +232,7 @@ static bool make_one_floor(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeo
return true;
}

static bool switch_making_floor(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_type *d_ptr)
static bool switch_making_floor(PlayerType *player_ptr, DungeonData *dd_ptr, dungeon_type *d_ptr)
{
if (d_ptr->flags.has(DungeonFeatureType::MAZE)) {
auto *floor_ptr = player_ptr->current_floor_ptr;
Expand All @@ -257,7 +257,7 @@ static bool switch_making_floor(PlayerType *player_ptr, dun_data_type *dd_ptr, d
return true;
}

static void make_aqua_streams(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_type *d_ptr)
static void make_aqua_streams(PlayerType *player_ptr, DungeonData *dd_ptr, dungeon_type *d_ptr)
{
if (dd_ptr->laketype != 0) {
return;
Expand Down Expand Up @@ -315,7 +315,7 @@ static void make_perm_walls(PlayerType *player_ptr)
}
}

static bool check_place_necessary_objects(PlayerType *player_ptr, dun_data_type *dd_ptr)
static bool check_place_necessary_objects(PlayerType *player_ptr, DungeonData *dd_ptr)
{
if (!new_player_spot(player_ptr)) {
*dd_ptr->why = _("プレイヤー配置に失敗", "Failed to place a player");
Expand All @@ -330,7 +330,7 @@ static bool check_place_necessary_objects(PlayerType *player_ptr, dun_data_type
return true;
}

static void decide_dungeon_data_allocation(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_type *d_ptr)
static void decide_dungeon_data_allocation(PlayerType *player_ptr, DungeonData *dd_ptr, dungeon_type *d_ptr)
{
auto *floor_ptr = player_ptr->current_floor_ptr;
dd_ptr->alloc_object_num = floor_ptr->dun_level / 3;
Expand Down Expand Up @@ -359,7 +359,7 @@ static void decide_dungeon_data_allocation(PlayerType *player_ptr, dun_data_type
}
}

static bool allocate_dungeon_data(PlayerType *player_ptr, dun_data_type *dd_ptr, dungeon_type *d_ptr)
static bool allocate_dungeon_data(PlayerType *player_ptr, DungeonData *dd_ptr, dungeon_type *d_ptr)
{
dd_ptr->alloc_monster_num += randint1(8);
for (dd_ptr->alloc_monster_num = dd_ptr->alloc_monster_num + dd_ptr->alloc_object_num; dd_ptr->alloc_monster_num > 0; dd_ptr->alloc_monster_num--) {
Expand Down Expand Up @@ -391,7 +391,7 @@ static bool allocate_dungeon_data(PlayerType *player_ptr, dun_data_type *dd_ptr,
return false;
}

static void decide_grid_glowing(FloorType *floor_ptr, dun_data_type *dd_ptr, dungeon_type *d_ptr)
static void decide_grid_glowing(FloorType *floor_ptr, DungeonData *dd_ptr, dungeon_type *d_ptr)
{
constexpr auto chanle_wholly_dark = 5;
auto is_empty_or_dark = dd_ptr->empty_level;
Expand Down Expand Up @@ -422,8 +422,8 @@ bool cave_gen(PlayerType *player_ptr, concptr *why)
set_floor_and_wall(floor_ptr->dungeon_idx);
get_mon_num_prep(player_ptr, get_monster_hook(player_ptr), nullptr);

dun_data_type tmp_dd;
dun_data_type *dd_ptr = initialize_dun_data_type(&tmp_dd, why);
DungeonData tmp_dd;
DungeonData *dd_ptr = initialize_dun_data_type(&tmp_dd, why);
dd_ptr->row_rooms = floor_ptr->height / BLOCK_HGT;
dd_ptr->col_rooms = floor_ptr->width / BLOCK_WID;
for (POSITION y = 0; y < dd_ptr->row_rooms; y++) {
Expand Down
2 changes: 1 addition & 1 deletion src/floor/floor-streams.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ static void recursive_river(FloorType *floor_ptr, POSITION x1, POSITION y1, POSI
* @param feat1 中央部地形ID
* @param feat2 境界部地形ID
*/
void add_river(FloorType *floor_ptr, dun_data_type *dd_ptr)
void add_river(FloorType *floor_ptr, DungeonData *dd_ptr)
{
short feat1 = 0;
short feat2 = 0;
Expand Down
4 changes: 2 additions & 2 deletions src/floor/floor-streams.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

#include "system/angband.h"

struct dun_data_type;
class DungeonData;
class FloorType;
class PlayerType;
void add_river(FloorType *floor_ptr, dun_data_type *dd_ptr);
void add_river(FloorType *floor_ptr, DungeonData *dd_ptr);
void build_streamer(PlayerType *player_ptr, FEAT_IDX feat, int chance);
void place_trees(PlayerType *player_ptr, POSITION x, POSITION y);
void destroy_level(PlayerType *player_ptr);
10 changes: 5 additions & 5 deletions src/floor/tunnel-generator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ static void correct_dir(POSITION *rdir, POSITION *cdir, POSITION y1, POSITION x1
* @param col2 終点X座標
* @return 生成に成功したらTRUEを返す
*/
bool build_tunnel(PlayerType *player_ptr, dun_data_type *dd_ptr, dt_type *dt_ptr, POSITION row1, POSITION col1, POSITION row2, POSITION col2)
bool build_tunnel(PlayerType *player_ptr, DungeonData *dd_ptr, dt_type *dt_ptr, POSITION row1, POSITION col1, POSITION row2, POSITION col2)
{
POSITION tmp_row, tmp_col;
POSITION row_dir, col_dir;
Expand Down Expand Up @@ -175,7 +175,7 @@ bool build_tunnel(PlayerType *player_ptr, dun_data_type *dd_ptr, dt_type *dt_ptr
* @param affectwall (調査中)
* @todo 特に詳細な処理の意味を調査すべし
*/
static bool set_tunnel(PlayerType *player_ptr, dun_data_type *dd_ptr, POSITION *x, POSITION *y, bool affectwall)
static bool set_tunnel(PlayerType *player_ptr, DungeonData *dd_ptr, POSITION *x, POSITION *y, bool affectwall)
{
auto *floor_ptr = player_ptr->current_floor_ptr;
auto *g_ptr = &floor_ptr->grid_array[*y][*x];
Expand Down Expand Up @@ -254,7 +254,7 @@ static bool set_tunnel(PlayerType *player_ptr, dun_data_type *dd_ptr, POSITION *
* @param x 基準点のX座標
* @param y 基準点のY座標
*/
static void create_cata_tunnel(PlayerType *player_ptr, dun_data_type *dd_ptr, POSITION x, POSITION y)
static void create_cata_tunnel(PlayerType *player_ptr, DungeonData *dd_ptr, POSITION x, POSITION y)
{
POSITION x1 = x - 1;
POSITION y1 = y;
Expand All @@ -279,7 +279,7 @@ static void create_cata_tunnel(PlayerType *player_ptr, dun_data_type *dd_ptr, PO
* @todo 詳細用調査
*/
static void short_seg_hack(
PlayerType *player_ptr, dun_data_type *dd_ptr, const POSITION x1, const POSITION y1, const POSITION x2, const POSITION y2, int type, int count, bool *fail)
PlayerType *player_ptr, DungeonData *dd_ptr, const POSITION x1, const POSITION y1, const POSITION x2, const POSITION y2, int type, int count, bool *fail)
{
if (!(*fail)) {
return;
Expand Down Expand Up @@ -371,7 +371,7 @@ static void short_seg_hack(
* @brief 特定の壁(永久壁など)を避けながら部屋間の通路を作成する / This routine maps a path from (x1, y1) to (x2, y2) avoiding SOLID walls.
* @todo 詳細要調査
*/
bool build_tunnel2(PlayerType *player_ptr, dun_data_type *dd_ptr, POSITION x1, POSITION y1, POSITION x2, POSITION y2, int type, int cutoff)
bool build_tunnel2(PlayerType *player_ptr, DungeonData *dd_ptr, POSITION x1, POSITION y1, POSITION x2, POSITION y2, int type, int cutoff)
{
POSITION x3, y3, dx, dy;
POSITION changex, changey;
Expand Down
6 changes: 3 additions & 3 deletions src/floor/tunnel-generator.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

#include "system/angband.h"

struct dun_data_type;
class DungeonData;
struct dt_type;
class PlayerType;
bool build_tunnel(PlayerType *player_ptr, dun_data_type *dd_ptr, dt_type *dt_ptr, POSITION row1, POSITION col1, POSITION row2, POSITION col2);
bool build_tunnel2(PlayerType *player_ptr, dun_data_type *dd_ptr, POSITION x1, POSITION y1, POSITION x2, POSITION y2, int type, int cutoff);
bool build_tunnel(PlayerType *player_ptr, DungeonData *dd_ptr, dt_type *dt_ptr, POSITION row1, POSITION col1, POSITION row2, POSITION col2);
bool build_tunnel2(PlayerType *player_ptr, DungeonData *dd_ptr, POSITION x1, POSITION y1, POSITION x2, POSITION y2, int type, int cutoff);
4 changes: 2 additions & 2 deletions src/grid/feature-generator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ static int calc_cavern_terrains(const dungeon_type &d_ref)
return count;
}

static bool decide_cavern(const FloorType &floor_ref, const dungeon_type &dungeon_ref, const dun_data_type &dd_ref)
static bool decide_cavern(const FloorType &floor_ref, const dungeon_type &dungeon_ref, const DungeonData &dd_ref)
{
constexpr auto can_become_cavern = 20;
auto should_build_cavern = floor_ref.dun_level > can_become_cavern;
Expand All @@ -60,7 +60,7 @@ static bool decide_cavern(const FloorType &floor_ref, const dungeon_type &dungeo
/*!
* @brief フロアに破壊地形、洞窟、湖、溶岩、森林等を配置する.
*/
void gen_caverns_and_lakes(PlayerType *player_ptr, dungeon_type *dungeon_ptr, dun_data_type *dd_ptr)
void gen_caverns_and_lakes(PlayerType *player_ptr, dungeon_type *dungeon_ptr, DungeonData *dd_ptr)
{
const auto &floor = *player_ptr->current_floor_ptr;
constexpr auto chance_destroyed = 18;
Expand Down
4 changes: 2 additions & 2 deletions src/grid/feature-generator.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
#include "system/angband.h"

struct dungeon_type;
struct dun_data_type;
class DungeonData;
struct dt_type;
class PlayerType;
void gen_caverns_and_lakes(PlayerType *player_ptr, dungeon_type *dungeon_ptr, dun_data_type *dd_ptr);
void gen_caverns_and_lakes(PlayerType *player_ptr, dungeon_type *dungeon_ptr, DungeonData *dd_ptr);
void try_door(PlayerType *player_ptr, dt_type *dt_ptr, POSITION y, POSITION x);
4 changes: 2 additions & 2 deletions src/room/room-generator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
* @note that we restrict the number of "crowded" rooms to reduce the chance of overflowing the monster list during level creation.
* @return 部屋の生成に成功した場合 TRUE を返す。
*/
static bool room_build(PlayerType *player_ptr, dun_data_type *dd_ptr, RoomType typ)
static bool room_build(PlayerType *player_ptr, DungeonData *dd_ptr, RoomType typ)
{
switch (typ) {
case RoomType::NORMAL:
Expand Down Expand Up @@ -87,7 +87,7 @@ static void move_prob_list(RoomType dst, RoomType src, std::map<RoomType, int> &
* @param player_ptr プレイヤーへの参照ポインタ
* @return 部屋生成に成功した場合 TRUE を返す。
*/
bool generate_rooms(PlayerType *player_ptr, dun_data_type *dd_ptr)
bool generate_rooms(PlayerType *player_ptr, DungeonData *dd_ptr)
{
auto *floor_ptr = player_ptr->current_floor_ptr;
int crowded = 0;
Expand Down
4 changes: 2 additions & 2 deletions src/room/room-generator.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#pragma once

struct dun_data_type;
class DungeonData;
class PlayerType;
bool generate_rooms(PlayerType *player_ptr, dun_data_type *dun_data);
bool generate_rooms(PlayerType *player_ptr, DungeonData *dun_data);
2 changes: 1 addition & 1 deletion src/room/rooms-city.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ Rect2D UndergroundBuilding::get_inner_room(const Pos2D &pos_ug) const
* This function does NOT do anything about the owners of the stores,\n
* nor the contents thereof. It only handles the physical layout.\n
*/
bool build_type16(PlayerType *player_ptr, dun_data_type *dd_ptr)
bool build_type16(PlayerType *player_ptr, DungeonData *dd_ptr)
{
const auto town_hgt = rand_range(MIN_TOWN_HGT, MAX_TOWN_HGT);
const auto town_wid = rand_range(MIN_TOWN_WID, MAX_TOWN_WID);
Expand Down
4 changes: 2 additions & 2 deletions src/room/rooms-city.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ class UndergroundBuilding {
Rect2D rectangle; // 地下店舗の領域.
};

struct dun_data_type;
class DungeonData;
class PlayerType;
bool build_type16(PlayerType *player_ptr, dun_data_type *dd_ptr);
bool build_type16(PlayerType *player_ptr, DungeonData *dd_ptr);
2 changes: 1 addition & 1 deletion src/room/rooms-fractal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* @brief タイプ9の部屋…フラクタルカーブによる洞窟生成 / Type 9 -- Driver routine to create fractal grid
* @return なし
*/
bool build_type9(PlayerType *player_ptr, dun_data_type *dd_ptr)
bool build_type9(PlayerType *player_ptr, DungeonData *dd_ptr)
{
/* get size: note 'Evenness'*/
auto width = randint1(22) * 2 + 6;
Expand Down
4 changes: 2 additions & 2 deletions src/room/rooms-fractal.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#pragma once

struct dun_data_type;
class DungeonData;
class PlayerType;
bool build_type9(PlayerType *player_ptr, dun_data_type *dd_ptr);
bool build_type9(PlayerType *player_ptr, DungeonData *dd_ptr);
2 changes: 1 addition & 1 deletion src/room/rooms-nest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ const MonraceDefinition &NestMonsterInfo::get_monrace() const
* @brief タイプ5の部屋…nestを生成する / Type 5 -- Monster nests
* @param player_ptr プレイヤーへの参照ポインタ
*/
bool build_type5(PlayerType *player_ptr, dun_data_type *dd_ptr)
bool build_type5(PlayerType *player_ptr, DungeonData *dd_ptr)
{
auto &floor = *player_ptr->current_floor_ptr;
const auto nest_type = pick_nest_type(floor, nest_types);
Expand Down
4 changes: 2 additions & 2 deletions src/room/rooms-nest.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#pragma once

class PlayerType;
struct dun_data_type;
bool build_type5(PlayerType *player_ptr, dun_data_type *dd_ptr);
class DungeonData;
bool build_type5(PlayerType *player_ptr, DungeonData *dd_ptr);
12 changes: 6 additions & 6 deletions src/room/rooms-normal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* @param player_ptr プレイヤーへの参照ポインタ
* @return 部屋の配置スペースを確保できたか否か
*/
bool build_type1(PlayerType *player_ptr, dun_data_type *dd_ptr)
bool build_type1(PlayerType *player_ptr, DungeonData *dd_ptr)
{
auto &floor = *player_ptr->current_floor_ptr;
const auto &dungeon = floor.get_dungeon_definition();
Expand Down Expand Up @@ -174,7 +174,7 @@ bool build_type1(PlayerType *player_ptr, dun_data_type *dd_ptr)
* @brief タイプ2の部屋…二重長方形の部屋を生成する / Type 2 -- Overlapping rectangular rooms
* @param player_ptr プレイヤーへの参照ポインタ
*/
bool build_type2(PlayerType *player_ptr, dun_data_type *dd_ptr)
bool build_type2(PlayerType *player_ptr, DungeonData *dd_ptr)
{
/* Find and reserve some space in the dungeon. Get center of room. */
auto &floor = *player_ptr->current_floor_ptr;
Expand Down Expand Up @@ -274,7 +274,7 @@ bool build_type2(PlayerType *player_ptr, dun_data_type *dd_ptr)
* the code below will work (with "bounds checking") for 5x5, or even\n
* for unsymetric values like 4x3 or 5x3 or 3x4 or 3x5, or even larger.\n
*/
bool build_type3(PlayerType *player_ptr, dun_data_type *dd_ptr)
bool build_type3(PlayerType *player_ptr, DungeonData *dd_ptr)
{
/* Find and reserve some space in the dungeon. Get center of room. */
auto &floor = *player_ptr->current_floor_ptr;
Expand Down Expand Up @@ -490,7 +490,7 @@ bool build_type3(PlayerType *player_ptr, dun_data_type *dd_ptr)
* 4 - Inner room has a maze\n
* 5 - A set of four inner rooms\n
*/
bool build_type4(PlayerType *player_ptr, dun_data_type *dd_ptr)
bool build_type4(PlayerType *player_ptr, DungeonData *dd_ptr)
{
/* Find and reserve some space in the dungeon. Get center of room. */
auto &floor = *player_ptr->current_floor_ptr;
Expand Down Expand Up @@ -809,7 +809,7 @@ bool build_type4(PlayerType *player_ptr, dun_data_type *dd_ptr)
*\n
* When done fill from the inside to find the walls,\n
*/
bool build_type11(PlayerType *player_ptr, dun_data_type *dd_ptr)
bool build_type11(PlayerType *player_ptr, DungeonData *dd_ptr)
{
/* Occasional light */
auto &floor = *player_ptr->current_floor_ptr;
Expand Down Expand Up @@ -851,7 +851,7 @@ bool build_type11(PlayerType *player_ptr, dun_data_type *dd_ptr)
*\n
* When done fill from the inside to find the walls,\n
*/
bool build_type12(PlayerType *player_ptr, dun_data_type *dd_ptr)
bool build_type12(PlayerType *player_ptr, DungeonData *dd_ptr)
{
/* Make a random metric */
const auto h1 = randint1(32) - 16;
Expand Down
Loading

0 comments on commit c07c31b

Please sign in to comment.