floor_ptr->inside_arena = false;
AngbandSystem::get_instance().set_phase_out(false);
write_level = true;
- w_ptr->seed_flavor = randint0(0x10000000);
- w_ptr->seed_town = randint0(0x10000000);
+ auto &system = AngbandSystem::get_instance();
+ system.seed_flavor = randint0(0x10000000);
+ system.seed_town = randint0(0x10000000);
player_birth(player_ptr);
counts_write(player_ptr, 2, 0);
player_ptr->count = 0;
#include "realm/realm-names-table.h"
#include "spell-realm/spells-hex.h"
#include "status/action-setter.h"
+#include "system/angband-system.h"
#include "system/dungeon-info.h"
#include "system/floor-type-definition.h"
#include "system/grid-type-definition.h"
return;
}
- const auto rng_backup = w_ptr->rng;
- w_ptr->rng.set_state(seed);
+ auto &system = AngbandSystem::get_instance();
+ const auto rng_backup = system.rng;
+ system.rng.set_state(seed);
int table_size = sizeof(terrain_table[0]) / sizeof(int16_t);
if (!corner) {
for (POSITION y1 = 0; y1 < MAX_HGT; y1++) {
floor_ptr->grid_array[MAX_HGT - 2][1].feat = terrain_table[terrain][floor_ptr->grid_array[MAX_HGT - 2][1].feat];
floor_ptr->grid_array[1][MAX_WID - 2].feat = terrain_table[terrain][floor_ptr->grid_array[1][MAX_WID - 2].feat];
floor_ptr->grid_array[MAX_HGT - 2][MAX_WID - 2].feat = terrain_table[terrain][floor_ptr->grid_array[MAX_HGT - 2][MAX_WID - 2].feat];
- w_ptr->rng = rng_backup;
+ system.rng = rng_backup;
return;
}
}
}
- w_ptr->rng = rng_backup;
+ system.rng = rng_backup;
}
/*!
return;
}
- const auto rng_backup = w_ptr->rng;
- w_ptr->rng.set_state(wilderness[y][x].seed);
+ auto &system = AngbandSystem::get_instance();
+ const auto rng_backup = system.rng;
+ system.rng.set_state(wilderness[y][x].seed);
int dy = rand_range(6, floor_ptr->height - 6);
int dx = rand_range(6, floor_ptr->width - 6);
floor_ptr->grid_array[dy][dx].feat = feat_entrance;
floor_ptr->grid_array[dy][dx].special = wilderness[y][x].entrance;
- w_ptr->rng = rng_backup;
+ system.rng = rng_backup;
}
/*!
#include "player-info/race-info.h"
#include "realm/realm-names-table.h"
#include "system/angband-exceptions.h"
+#include "system/angband-system.h"
#include "system/floor-type-definition.h"
#include "system/player-type-definition.h"
#include "util/angband-files.h"
#include "util/string-processor.h"
#include "view/display-messages.h"
-#include "world/world.h"
#include <algorithm>
#include <sstream>
tmp = std::to_string(enum2i(quest_list[i2enum<QuestId>(atoi(b + 6))].status));
v = tmp.data();
} else if (prefix(b + 1, "RANDOM")) {
- tmp = std::to_string((int)(w_ptr->seed_town % atoi(b + 7)));
+ const auto &system = AngbandSystem::get_instance();
+ tmp = std::to_string((int)(system.seed_town % std::stoi(b + 7)));
v = tmp.data();
} else if (streq(b + 1, "VARIANT")) {
v = variant;
#include "item-info/flavor-initializer.h"
#include "object/tval-types.h"
+#include "system/angband-system.h"
#include "system/baseitem-info.h"
-#include "world/world.h"
/*!
* @brief ベースアイテムの未確定名を共通tval間でシャッフルする / Shuffle flavor indices of a group of objects with given tval
*/
void initialize_items_flavor()
{
- const auto rng_backup = w_ptr->rng;
- w_ptr->rng.set_state(w_ptr->seed_flavor);
+ auto &system = AngbandSystem::get_instance();
+ const auto rng_backup = system.rng;
+ system.rng.set_state(system.seed_flavor);
for (auto &baseitem : baseitems_info) {
if (baseitem.flavor_name.empty()) {
continue;
shuffle_flavors(ItemKindType::FOOD);
shuffle_flavors(ItemKindType::POTION);
shuffle_flavors(ItemKindType::SCROLL);
- w_ptr->rng = rng_backup;
+ system.rng = rng_backup;
for (auto &baseitem : baseitems_info) {
if (baseitem.idx == 0 || baseitem.name.empty()) {
continue;
void rd_randomizer(void)
{
strip_bytes(4);
-
Xoshiro128StarStar::state_type state{};
for (auto &s : state) {
s = rd_u32b();
}
- w_ptr->rng.set_state(state);
+ AngbandSystem::get_instance().rng.set_state(state);
strip_bytes(4 * (RAND_DEG - state.size()));
}
#include "load/load-util.h"
#include "load/load-zangband.h"
#include "market/bounty.h"
+#include "system/angband-system.h"
#include "system/building-type-definition.h"
#include "system/dungeon-info.h"
#include "system/floor-type-definition.h"
void rd_global_configurations(PlayerType *player_ptr)
{
- w_ptr->seed_flavor = rd_u32b();
- w_ptr->seed_town = rd_u32b();
+ auto &system = AngbandSystem::get_instance();
+ system.seed_flavor = rd_u32b();
+ system.seed_town = rd_u32b();
player_ptr->panic_save = rd_u16b();
w_ptr->total_winner = rd_u16b();
if (macro_running()) {
return 0;
}
- mousex = std::min(LOWORD(lParam) / td->tile_wid, td->cols - 1);
- mousey = std::min(HIWORD(lParam) / td->tile_hgt, td->rows - 1);
+ mousex = std::min<int>(LOWORD(lParam) / td->tile_wid, td->cols - 1);
+ mousey = std::min<int>(HIWORD(lParam) / td->tile_hgt, td->rows - 1);
mouse_down = true;
oldx = mousex;
oldy = mousey;
}
int dx, dy;
- int cx = std::min(LOWORD(lParam) / td->tile_wid, td->cols - 1);
- int cy = std::min(HIWORD(lParam) / td->tile_hgt, td->rows - 1);
+ auto cx = std::min<int>(LOWORD(lParam) / td->tile_wid, td->cols - 1);
+ auto cy = std::min<int>(HIWORD(lParam) / td->tile_hgt, td->rows - 1);
int ox, oy;
if (paint_rect) {
#include "save/save-util.h"
#include "save/save.h"
#include "store/store-util.h"
+#include "system/angband-system.h"
#include "system/angband.h"
#include "system/item-entity.h"
#include "util/enum-converter.h"
{
wr_u16b(0);
wr_u16b(0);
- const auto &state = w_ptr->rng.get_state();
+ const auto &state = AngbandSystem::get_instance().rng.get_state();
for (const auto s : state) {
wr_u32b(s);
}
wr_u32b(0L);
wr_u32b(0L);
- wr_u32b(w_ptr->seed_flavor);
- wr_u32b(w_ptr->seed_town);
+ const auto &system = AngbandSystem::get_instance();
+ wr_u32b(system.seed_flavor);
+ wr_u32b(system.seed_town);
wr_u16b(player_ptr->panic_save);
wr_u16b(w_ptr->total_winner);
wr_u16b(w_ptr->noscore);
#pragma once
+#include "util/rng-xoshiro.h"
#include <stdint.h>
class AngbandSystem {
uint8_t savefile_key{}; //!< セーブファイルエンコードキー(XOR)
+ Xoshiro128StarStar rng; //!< Uniform random bit generator for <random>
+ uint32_t seed_flavor{}; /* アイテム未鑑定名をシャッフルするための乱数シード */
+ uint32_t seed_town{}; /* ランダム生成される町をレイアウトするための乱数シード */
+
void set_phase_out(bool new_status);
bool is_phase_out() const;
int get_max_range() const;
/* Purpose: a simple random number generator -BEN- */
#include "term/z-rand.h"
-#include "util/rng-xoshiro.h"
-#include "world/world.h"
-
+#include "system/angband-system.h"
#include <algorithm>
#include <cmath>
#include <limits>
std::generate(Rand_state.begin(), Rand_state.end(), [&dist, &rd] { return dist(rd); });
} while (std::all_of(Rand_state.begin(), Rand_state.end(), [](auto s) { return s == 0; }));
- w_ptr->rng.set_state(Rand_state);
+ AngbandSystem::get_instance().rng.set_state(Rand_state);
}
int rand_range(int a, int b)
return a;
}
std::uniform_int_distribution<> d(a, b);
- return d(w_ptr->rng);
+ return d(AngbandSystem::get_instance().rng);
}
/*
return static_cast<int16_t>(mean);
}
std::normal_distribution<> d(mean, stand);
- auto result = std::round(d(w_ptr->rng));
+ auto result = std::round(d(AngbandSystem::get_instance().rng));
return static_cast<int16_t>(result);
}
#include "player-info/class-types.h"
#include "system/angband.h"
#include "util/flag-group.h"
-#include "util/rng-xoshiro.h"
#include <tuple>
constexpr auto MAX_BOUNTY = 20;
uint32_t play_time{}; /*!< 実プレイ時間 */
- Xoshiro128StarStar rng; //!< Uniform random bit generator for <random>
-
- uint32_t seed_flavor{}; /* Hack -- consistent object colors */
- uint32_t seed_town{}; /* Hack -- consistent town layout */
-
bool is_loading_now{}; /*!< ロード処理中フラグ...ロード直後にcalc_bonus()時の徳変化、及びsanity_blast()による異常を抑止する */
uint32_t sf_system{}; //!< OS情報 / OS information