diff options
Diffstat (limited to 'src/map/globals.cpp')
-rw-r--r-- | src/map/globals.cpp | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/src/map/globals.cpp b/src/map/globals.cpp new file mode 100644 index 0000000..09ff157 --- /dev/null +++ b/src/map/globals.cpp @@ -0,0 +1,147 @@ +#include "globals.hpp" +// globals.cpp - Evil global variables for tmwa-map. +// +// Copyright © 2014 Ben Longbons <b.r.longbons@gmail.com> +// +// This file is part of The Mana World (Athena server) +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + +#include "../generic/intern-pool.hpp" + +#include "../io/write.hpp" + +#include "../proto2/net-Storage.hpp" + +#include "battle_conf.hpp" +#include "itemdb.hpp" +#include "magic-interpreter.hpp" +#include "map_conf.hpp" +#include "mob.hpp" +#include "npc-internal.hpp" +#include "script-parse-internal.hpp" +#include "skill.hpp" + +#include "../poison.hpp" + + +namespace tmwa +{ + namespace map + { + BattleConf battle_config; + MapConf map_conf; + + // only used by intif.cpp + // and clif.cpp for the new on_delete stuff ... + Session *char_session; + int chrif_state; + std::map<MapName, RString> resnametable; + Map<ItemNameId, item_data> item_db; + namespace magic + { + // Global magic conf + magic_conf_t magic_conf; + env_t magic_default_env = { &magic_conf, nullptr }; + namespace magic_v2 + { + std::map<RString, proc_t> procs; + std::map<RString, val_t> const_defm; + } // namespace magic_v2 + } // namespace magic + + DMap<BlockId, dumb_ptr<block_list>> id_db; + UPMap<MapName, map_abstract> maps_db; + DMap<CharName, dumb_ptr<map_session_data>> nick_db; + Map<CharId, charid2nick> charid_db; + int world_user_count = 0; + Array<dumb_ptr<block_list>, unwrap<BlockId>(MAX_FLOORITEM)> object; + BlockId first_free_object_id = BlockId(); + int save_settings = 0xFFFF; + int block_free_lock = 0; + std::vector<dumb_ptr<block_list>> block_free; + /// This is a dummy entry that is shared by all the linked lists, + /// so that any entry can unlink itself without worrying about + /// whether it was the the head of the list. + block_list bl_head; + std::unique_ptr<io::AppendFile> map_logfile; + long map_logfile_index; + mob_db_ mob_db[2001]; + std::list<AString> npc_srcs; + int npc_warp, npc_shop, npc_script, npc_mob; + BlockId npc_id = START_NPC_NUM; + Map<NpcEvent, struct event_data> ev_db; + DMap<NpcName, dumb_ptr<npc_data>> npcs_by_name; + // used for clock-based event triggers + // only tm_min, tm_hour, and tm_mday are used + tm ev_tm_b = + { + .tm_sec= 0, + .tm_min= -1, + .tm_hour= -1, + .tm_mday= -1, + .tm_mon= 0, + .tm_year= 0, + .tm_wday= 0, + .tm_yday= 0, + .tm_isdst= 0, + }; + Map<PartyId, PartyMost> party_db; + std::map<AccountId, GmLevel> gm_accountm; + tick_t natural_heal_tick, natural_heal_prev_tick; + interval_t natural_heal_diff_tick; + int last_save_fd; + bool save_flag; + Map<AccountId, Storage> storage_db; + + Map<RString, str_data_t> str_datam; + str_data_t LABEL_NEXTLINE_; + Map<ScriptLabel, int> scriptlabel_db; + std::set<ScriptLabel> probable_labels; + UPMap<RString, const ScriptBuffer> userfunc_db; + int parse_cmd_if = 0; + Option<Borrowed<str_data_t>> parse_cmdp = None; + InternPool variable_names; + // TODO: replace this whole mess with some sort of input stream that works + // a line at a time. + ZString startptr; + int startline; + int script_errors = 0; + DMap<SIR, int> mapreg_db; + Map<SIR, RString> mapregstr_db; + int mapreg_dirty = -1; + + std::vector<SkillID> skill_pool_skills; + earray<skill_db_, SkillID, SkillID::MAX_SKILL_DB> skill_db; + // these variables are set in the 'else' branches, + // and used in the (recursive) 'if' branch + // TODO kill it, kill it with fire. + BlockId skill_area_temp_id; + int skill_area_temp_hp; + + // Some other globals are not moved here, because they are + // large and initialized in-place and then *mostly* unmodified. + // + // src/map/atcommand.cpp: + // Map<XString, AtCommandInfo> atcommand_info; + // src/map/script-fun.cpp: + // BuiltinFunction builtin_functions[]; + // src/map/clif.cpp: + // func_table clif_parse_func_table[0x0220]; + // src/map/magic-expr.cpp: + // std::map<ZString, fun_t> functions; + // src/map/magic-stmt.cpp: + // std::map<ZString, op_t> operations; + } // namespace map +} // namespace tmwa |