Commit 99e817b3 authored by VanillaSalt's avatar VanillaSalt

use unordered_map/unordered_set instead of map/set

parent 4b2d3158
...@@ -165,8 +165,7 @@ uint32 card::get_infos(byte* buf, int32 query_flag, int32 use_cache) { ...@@ -165,8 +165,7 @@ uint32 card::get_infos(byte* buf, int32 query_flag, int32 use_cache) {
} }
if(query_flag & QUERY_COUNTERS) { if(query_flag & QUERY_COUNTERS) {
*p++ = counters.size(); *p++ = counters.size();
counter_map::iterator cmit; for(auto cmit = counters.begin(); cmit != counters.end(); ++cmit)
for(cmit = counters.begin(); cmit != counters.end(); ++cmit)
*p++ = cmit->first + (cmit->second << 16); *p++ = cmit->first + (cmit->second << 16);
} }
if(query_flag & QUERY_OWNER) if(query_flag & QUERY_OWNER)
...@@ -1408,7 +1407,7 @@ int32 card::add_counter(uint8 playerid, uint16 countertype, uint16 count) { ...@@ -1408,7 +1407,7 @@ int32 card::add_counter(uint8 playerid, uint16 countertype, uint16 count) {
return TRUE; return TRUE;
} }
int32 card::remove_counter(uint16 countertype, uint16 count) { int32 card::remove_counter(uint16 countertype, uint16 count) {
counter_map::iterator cmit = counters.find(countertype); auto cmit = counters.find(countertype);
if(cmit == counters.end()) if(cmit == counters.end())
return FALSE; return FALSE;
if(cmit->second <= count) if(cmit->second <= count)
...@@ -1434,7 +1433,7 @@ int32 card::is_can_add_counter(uint8 playerid, uint16 countertype, uint16 count) ...@@ -1434,7 +1433,7 @@ int32 card::is_can_add_counter(uint8 playerid, uint16 countertype, uint16 count)
return FALSE; return FALSE;
int32 limit = -1; int32 limit = -1;
int32 cur = 0; int32 cur = 0;
counter_map::iterator cmit = counters.find(countertype); auto cmit = counters.find(countertype);
if(cmit != counters.end()) if(cmit != counters.end())
cur = cmit->second; cur = cmit->second;
filter_effect(EFFECT_COUNTER_LIMIT + countertype, &eset); filter_effect(EFFECT_COUNTER_LIMIT + countertype, &eset);
...@@ -1445,7 +1444,7 @@ int32 card::is_can_add_counter(uint8 playerid, uint16 countertype, uint16 count) ...@@ -1445,7 +1444,7 @@ int32 card::is_can_add_counter(uint8 playerid, uint16 countertype, uint16 count)
return TRUE; return TRUE;
} }
int32 card::get_counter(uint16 countertype) { int32 card::get_counter(uint16 countertype) {
counter_map::iterator cmit = counters.find(countertype); auto cmit = counters.find(countertype);
if(cmit == counters.end()) if(cmit == counters.end())
return 0; return 0;
return cmit->second; return cmit->second;
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "effectset.h" #include "effectset.h"
#include <set> #include <set>
#include <map> #include <map>
#include <unordered_map>
class card; class card;
class duel; class duel;
...@@ -80,11 +81,11 @@ public: ...@@ -80,11 +81,11 @@ public:
typedef std::vector<card*> card_vector; typedef std::vector<card*> card_vector;
typedef std::multimap<uint32, effect*> effect_container; typedef std::multimap<uint32, effect*> effect_container;
typedef std::set<card*, card_sort> card_set; typedef std::set<card*, card_sort> card_set;
typedef std::map<effect*, effect_container::iterator> effect_indexer; typedef std::unordered_map<effect*, effect_container::iterator> effect_indexer;
typedef std::map<effect*, uint32> effect_relation; typedef std::unordered_map<effect*, uint32> effect_relation;
typedef std::map<card*, uint32> relation_map; typedef std::unordered_map<card*, uint32> relation_map;
typedef std::map<uint16, uint16> counter_map; typedef std::map<uint16, uint16> counter_map;
typedef std::map<uint16, card*> attacker_map; typedef std::unordered_map<uint16, card*> attacker_map;
int32 scrtype; int32 scrtype;
int32 ref_handle; int32 ref_handle;
duel* pduel; duel* pduel;
......
...@@ -21,21 +21,21 @@ duel::duel() { ...@@ -21,21 +21,21 @@ duel::duel() {
clear_buffer(); clear_buffer();
} }
duel::~duel() { duel::~duel() {
for(std::set<card*>::iterator cit = cards.begin(); cit != cards.end(); ++cit) for(auto cit = cards.begin(); cit != cards.end(); ++cit)
delete *cit; delete *cit;
for(std::set<group*>::iterator git = groups.begin(); git != groups.end(); ++git) for(auto git = groups.begin(); git != groups.end(); ++git)
delete *git; delete *git;
for(std::set<effect*>::iterator eit = effects.begin(); eit != effects.end(); ++eit) for(auto eit = effects.begin(); eit != effects.end(); ++eit)
delete *eit; delete *eit;
delete lua; delete lua;
delete game_field; delete game_field;
} }
void duel::clear() { void duel::clear() {
for(std::set<card*>::iterator cit = cards.begin(); cit != cards.end(); ++cit) for(auto cit = cards.begin(); cit != cards.end(); ++cit)
delete *cit; delete *cit;
for(std::set<group*>::iterator git = groups.begin(); git != groups.end(); ++git) for(auto git = groups.begin(); git != groups.end(); ++git)
delete *git; delete *git;
for(std::set<effect*>::iterator eit = effects.begin(); eit != effects.end(); ++eit) for(auto eit = effects.begin(); eit != effects.end(); ++eit)
delete *eit; delete *eit;
delete game_field; delete game_field;
cards.clear(); cards.clear();
...@@ -98,8 +98,7 @@ int32 duel::read_buffer(byte* buf) { ...@@ -98,8 +98,7 @@ int32 duel::read_buffer(byte* buf) {
return bufferlen; return bufferlen;
} }
void duel::release_script_group() { void duel::release_script_group() {
std::set<group*>::iterator sit; for(auto sit = sgroups.begin(); sit != sgroups.end(); ++sit) {
for(sit = sgroups.begin(); sit != sgroups.end(); ++sit) {
group* pgroup = *sit; group* pgroup = *sit;
if(pgroup->is_readonly == 0) { if(pgroup->is_readonly == 0) {
lua->unregister_group(pgroup); lua->unregister_group(pgroup);
...@@ -110,8 +109,7 @@ void duel::release_script_group() { ...@@ -110,8 +109,7 @@ void duel::release_script_group() {
sgroups.clear(); sgroups.clear();
} }
void duel::restore_assumes() { void duel::restore_assumes() {
std::set<card*>::iterator sit; for(auto sit = assumes.begin(); sit != assumes.end(); ++sit)
for(sit = assumes.begin(); sit != assumes.end(); ++sit)
(*sit)->assume_type = 0; (*sit)->assume_type = 0;
assumes.clear(); assumes.clear();
} }
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "common.h" #include "common.h"
#include "mtrandom.h" #include "mtrandom.h"
#include <set> #include <set>
#include <unordered_set>
class card; class card;
class group; class group;
...@@ -33,12 +34,12 @@ public: ...@@ -33,12 +34,12 @@ public:
interpreter* lua; interpreter* lua;
field* game_field; field* game_field;
mtrandom random; mtrandom random;
std::set<card*> cards; std::unordered_set<card*> cards;
std::set<card*> assumes; std::unordered_set<card*> assumes;
std::set<group*> groups; std::unordered_set<group*> groups;
std::set<group*> sgroups; std::unordered_set<group*> sgroups;
std::set<effect*> effects; std::unordered_set<effect*> effects;
std::set<effect*> uncopy; std::unordered_set<effect*> uncopy;
duel(); duel();
~duel(); ~duel();
......
...@@ -44,7 +44,7 @@ struct optarget { ...@@ -44,7 +44,7 @@ struct optarget {
int32 op_param; int32 op_param;
}; };
struct chain { struct chain {
typedef std::map<uint32, optarget > opmap; typedef std::unordered_map<uint32, optarget> opmap;
uint16 chain_id; uint16 chain_id;
uint8 chain_count; uint8 chain_count;
uint8 triggering_player; uint8 triggering_player;
...@@ -86,9 +86,9 @@ struct player_info { ...@@ -86,9 +86,9 @@ struct player_info {
}; };
struct field_effect { struct field_effect {
typedef std::multimap<uint32, effect*> effect_container; typedef std::multimap<uint32, effect*> effect_container;
typedef std::map<effect*, effect_container::iterator> effect_indexer; typedef std::unordered_map<effect*, effect_container::iterator> effect_indexer;
typedef std::map<effect*, effect*> oath_effects; typedef std::unordered_map<effect*, effect*> oath_effects;
typedef std::set<effect*> effect_collection; typedef std::unordered_set<effect*> effect_collection;
effect_container aura_effect; effect_container aura_effect;
effect_container ignition_effect; effect_container ignition_effect;
...@@ -106,7 +106,7 @@ struct field_effect { ...@@ -106,7 +106,7 @@ struct field_effect {
effect_collection spsummon_count_eff; effect_collection spsummon_count_eff;
std::list<card*> disable_check_list; std::list<card*> disable_check_list;
std::set<card*, card_sort> disable_check_set; std::unordered_set<card*> disable_check_set;
}; };
struct field_info { struct field_info {
int32 field_id; int32 field_id;
...@@ -148,7 +148,6 @@ struct processor { ...@@ -148,7 +148,6 @@ struct processor {
typedef std::vector<chain> chain_array; typedef std::vector<chain> chain_array;
typedef std::list<processor_unit> processor_list; typedef std::list<processor_unit> processor_list;
typedef std::set<card*, card_sort> card_set; typedef std::set<card*, card_sort> card_set;
typedef std::set<effect*> effect_collection;
typedef std::set<std::pair<effect*, tevent> > delayed_effect_collection; typedef std::set<std::pair<effect*, tevent> > delayed_effect_collection;
processor_list units; processor_list units;
...@@ -299,7 +298,6 @@ struct processor { ...@@ -299,7 +298,6 @@ struct processor {
class field { class field {
public: public:
typedef std::multimap<uint32, effect*> effect_container; typedef std::multimap<uint32, effect*> effect_container;
typedef std::map<effect*, effect_container::iterator> effect_indexer;
typedef std::set<card*, card_sort> card_set; typedef std::set<card*, card_sort> card_set;
typedef std::vector<effect*> effect_vector; typedef std::vector<effect*> effect_vector;
typedef std::vector<card*> card_vector; typedef std::vector<card*> card_vector;
...@@ -309,7 +307,6 @@ public: ...@@ -309,7 +307,6 @@ public:
typedef std::map<effect*, chain> instant_f_list; typedef std::map<effect*, chain> instant_f_list;
typedef std::vector<chain> chain_array; typedef std::vector<chain> chain_array;
typedef std::list<processor_unit> processor_list; typedef std::list<processor_unit> processor_list;
typedef std::map<effect*, effect*> oath_effects;
duel* pduel; duel* pduel;
player_info player[2]; player_info player[2];
......
...@@ -743,8 +743,7 @@ int32 scriptlib::card_get_attacked_group(lua_State *L) { ...@@ -743,8 +743,7 @@ int32 scriptlib::card_get_attacked_group(lua_State *L) {
check_param(L, PARAM_TYPE_CARD, 1); check_param(L, PARAM_TYPE_CARD, 1);
card* pcard = *(card**) lua_touserdata(L, 1); card* pcard = *(card**) lua_touserdata(L, 1);
group* pgroup = pcard->pduel->new_group(); group* pgroup = pcard->pduel->new_group();
card::attacker_map::iterator cit; for(auto cit = pcard->attacked_cards.begin(); cit != pcard->attacked_cards.end(); ++cit) {
for(cit = pcard->attacked_cards.begin(); cit != pcard->attacked_cards.end(); ++cit) {
if(cit->second) if(cit->second)
pgroup->container.insert(cit->second); pgroup->container.insert(cit->second);
} }
...@@ -770,8 +769,7 @@ int32 scriptlib::card_get_battled_group(lua_State *L) { ...@@ -770,8 +769,7 @@ int32 scriptlib::card_get_battled_group(lua_State *L) {
check_param(L, PARAM_TYPE_CARD, 1); check_param(L, PARAM_TYPE_CARD, 1);
card* pcard = *(card**) lua_touserdata(L, 1); card* pcard = *(card**) lua_touserdata(L, 1);
group* pgroup = pcard->pduel->new_group(); group* pgroup = pcard->pduel->new_group();
card::attacker_map::iterator cit; for(auto cit = pcard->battled_cards.begin(); cit != pcard->battled_cards.end(); ++cit) {
for(cit = pcard->battled_cards.begin(); cit != pcard->battled_cards.end(); ++cit) {
if(cit->second) if(cit->second)
pgroup->container.insert(cit->second); pgroup->container.insert(cit->second);
} }
......
...@@ -2328,8 +2328,8 @@ int32 scriptlib::duel_set_operation_info(lua_State *L) { ...@@ -2328,8 +2328,8 @@ int32 scriptlib::duel_set_operation_info(lua_State *L) {
opt.op_player = playerid; opt.op_player = playerid;
opt.op_param = param; opt.op_param = param;
if(ct == 0 && pduel->game_field->core.continuous_chain.size()) { if(ct == 0 && pduel->game_field->core.continuous_chain.size()) {
field::chain_list::reverse_iterator clit = pduel->game_field->core.continuous_chain.rbegin(); auto clit = pduel->game_field->core.continuous_chain.rbegin();
chain::opmap::iterator omit = clit->opinfos.find(cate); auto omit = clit->opinfos.find(cate);
if(omit != clit->opinfos.end() && omit->second.op_cards) if(omit != clit->opinfos.end() && omit->second.op_cards)
pduel->delete_group(omit->second.op_cards); pduel->delete_group(omit->second.op_cards);
clit->opinfos[cate] = opt; clit->opinfos[cate] = opt;
...@@ -2337,14 +2337,14 @@ int32 scriptlib::duel_set_operation_info(lua_State *L) { ...@@ -2337,14 +2337,14 @@ int32 scriptlib::duel_set_operation_info(lua_State *L) {
if (pduel->game_field->core.current_chain.size() == 0) if (pduel->game_field->core.current_chain.size() == 0)
return 0; return 0;
if(ct < 1 || ct > pduel->game_field->core.current_chain.size()) { if(ct < 1 || ct > pduel->game_field->core.current_chain.size()) {
field::chain_array::reverse_iterator cait = pduel->game_field->core.current_chain.rbegin(); auto cait = pduel->game_field->core.current_chain.rbegin();
chain::opmap::iterator omit = cait->opinfos.find(cate); auto omit = cait->opinfos.find(cate);
if(omit != cait->opinfos.end() && omit->second.op_cards) if(omit != cait->opinfos.end() && omit->second.op_cards)
pduel->delete_group(omit->second.op_cards); pduel->delete_group(omit->second.op_cards);
cait->opinfos[cate] = opt; cait->opinfos[cate] = opt;
} else { } else {
chain* ch = &pduel->game_field->core.current_chain[ct - 1]; chain* ch = &pduel->game_field->core.current_chain[ct - 1];
chain::opmap::iterator omit = ch->opinfos.find(cate); auto omit = ch->opinfos.find(cate);
if(omit != ch->opinfos.end() && omit->second.op_cards) if(omit != ch->opinfos.end() && omit->second.op_cards)
pduel->delete_group(omit->second.op_cards); pduel->delete_group(omit->second.op_cards);
ch->opinfos[cate] = opt; ch->opinfos[cate] = opt;
......
...@@ -3925,8 +3925,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar ...@@ -3925,8 +3925,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar
case 3: { case 3: {
if(core.continuous_chain.rbegin()->target_cards) if(core.continuous_chain.rbegin()->target_cards)
pduel->delete_group(core.continuous_chain.rbegin()->target_cards); pduel->delete_group(core.continuous_chain.rbegin()->target_cards);
chain::opmap::iterator oit; for(auto oit = core.continuous_chain.rbegin()->opinfos.begin(); oit != core.continuous_chain.rbegin()->opinfos.end(); ++oit) {
for(oit = core.continuous_chain.rbegin()->opinfos.begin(); oit != core.continuous_chain.rbegin()->opinfos.end(); ++oit) {
if(oit->second.op_cards) if(oit->second.op_cards)
pduel->delete_group(oit->second.op_cards); pduel->delete_group(oit->second.op_cards);
} }
...@@ -3995,8 +3994,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar ...@@ -3995,8 +3994,7 @@ int32 field::operation_replace(uint16 step, effect * replace_effect, group * tar
case 8: { case 8: {
if(core.continuous_chain.rbegin()->target_cards) if(core.continuous_chain.rbegin()->target_cards)
pduel->delete_group(core.continuous_chain.rbegin()->target_cards); pduel->delete_group(core.continuous_chain.rbegin()->target_cards);
chain::opmap::iterator oit; for(auto oit = core.continuous_chain.rbegin()->opinfos.begin(); oit != core.continuous_chain.rbegin()->opinfos.end(); ++oit) {
for(oit = core.continuous_chain.rbegin()->opinfos.begin(); oit != core.continuous_chain.rbegin()->opinfos.end(); ++oit) {
if(oit->second.op_cards) if(oit->second.op_cards)
pduel->delete_group(oit->second.op_cards); pduel->delete_group(oit->second.op_cards);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment