From a44741c83773989430f5e3ac4a8a83c93b1341ff Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Sat, 5 Oct 2013 22:15:20 -0700 Subject: Enumify sex It's amazing some of this code ever worked ... --- src/map/chrif.cpp | 11 +++++++---- src/map/clif.cpp | 10 +++++----- src/map/itemdb.cpp | 2 +- src/map/itemdb.hpp | 2 +- src/map/map.hpp | 3 ++- src/map/mob.cpp | 6 ------ src/map/mob.hpp | 2 -- src/map/pc.cpp | 11 ++++++----- src/map/pc.hpp | 2 +- src/map/script.cpp | 12 ++++++------ 10 files changed, 29 insertions(+), 32 deletions(-) (limited to 'src/map') diff --git a/src/map/chrif.cpp b/src/map/chrif.cpp index 1f7d1cc..43608d3 100644 --- a/src/map/chrif.cpp +++ b/src/map/chrif.cpp @@ -219,7 +219,7 @@ int chrif_changemapserver(dumb_ptr sd, WFIFOW(char_fd, 36) = y; WFIFOIP(char_fd, 38) = ip; WFIFOL(char_fd, 42) = port; - WFIFOB(char_fd, 44) = sd->status.sex; + WFIFOB(char_fd, 44) = static_cast(sd->status.sex); WFIFOIP(char_fd, 45) = s_ip; WFIFOSET(char_fd, 49); @@ -604,11 +604,11 @@ void chrif_changedgm(int fd) static void chrif_changedsex(int fd) { - int acc, sex, i; + int acc, i; dumb_ptr sd; acc = RFIFOL(fd, 2); - sex = RFIFOL(fd, 6); + SEX sex = static_cast(RFIFOB(fd, 6)); if (battle_config.etc_log) PRINTF("chrif_changedsex %d.\n", acc); sd = map_id2sd(acc); @@ -616,7 +616,10 @@ void chrif_changedsex(int fd) { if (sd != NULL && sd->status.sex != sex) { - sd->sex = sd->status.sex = !sd->status.sex; + if (sd->status.sex == SEX::MALE) + sd->sex = sd->status.sex = SEX::FEMALE; + else if (sd->status.sex == SEX::FEMALE) + sd->sex = sd->status.sex = SEX::MALE; // to avoid any problem with equipment and invalid sex, equipment is unequiped. for (i = 0; i < MAX_INVENTORY; i++) { diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 45c9c13..c0d4681 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -694,9 +694,9 @@ int clif_set0078(dumb_ptr sd, unsigned char *buf) WBUFL(buf, 34) = 0 /*guild_id*/; WBUFW(buf, 38) = 0 /*guild_emblem_id*/; WBUFW(buf, 40) = sd->status.manner; - WBUFW(buf, 42) = uint16_t(sd->opt3); + WBUFW(buf, 42) = static_cast(sd->opt3); WBUFB(buf, 44) = sd->status.karma; - WBUFB(buf, 45) = sd->sex; + WBUFB(buf, 45) = static_cast(sd->sex); WBUFPOS(buf, 46, sd->bl_x, sd->bl_y); // work around ICE in gcc 4.6 uint8_t dir = static_cast(sd->dir); @@ -750,9 +750,9 @@ int clif_set007b(dumb_ptr sd, unsigned char *buf) WBUFL(buf, 38) = 0/*guild_id*/; WBUFW(buf, 42) = 0/*guild_emblem_id*/; WBUFW(buf, 44) = sd->status.manner; - WBUFW(buf, 46) = uint16_t(sd->opt3); + WBUFW(buf, 46) = static_cast(sd->opt3); WBUFB(buf, 48) = sd->status.karma; - WBUFB(buf, 49) = sd->sex; + WBUFB(buf, 49) = static_cast(sd->sex); WBUFPOS2(buf, 50, sd->bl_x, sd->bl_y, sd->to_x, sd->to_y); WBUFW(buf, 55) = pc_isGM(sd) == 60 ? 0x80 : 0; WBUFB(buf, 57) = 5; @@ -3484,7 +3484,7 @@ void clif_parse_WantToConnection(int fd, dumb_ptr sd) pc_setnewpc(sd, account_id, RFIFOL(fd, 6), RFIFOL(fd, 10), tick_t(static_cast(RFIFOL(fd, 14))), - RFIFOB(fd, 18)); + static_cast(RFIFOB(fd, 18))); map_addiddb(sd); diff --git a/src/map/itemdb.cpp b/src/map/itemdb.cpp index 588acd9..c0d54c9 100644 --- a/src/map/itemdb.cpp +++ b/src/map/itemdb.cpp @@ -84,7 +84,7 @@ struct item_data *itemdb_search(int nameid) id->value_buy = 10; id->value_sell = id->value_buy / 2; id->weight = 10; - id->sex = 2; + id->sex = SEX::SERVER; id->elv = 0; if (nameid > 500 && nameid < 600) diff --git a/src/map/itemdb.hpp b/src/map/itemdb.hpp index 7e5aa34..a08777e 100644 --- a/src/map/itemdb.hpp +++ b/src/map/itemdb.hpp @@ -13,7 +13,7 @@ struct item_data int value_buy; int value_sell; ItemType type; - int sex; + SEX sex; EPOS equip; int weight; int atk; diff --git a/src/map/map.hpp b/src/map/map.hpp index b0e6f18..356e077 100644 --- a/src/map/map.hpp +++ b/src/map/map.hpp @@ -160,7 +160,8 @@ struct map_session_data : block_list, SessionData unsigned unbreakable_armor:1; unsigned deaf:1; } special_state; - int char_id, login_id1, login_id2, sex; + int char_id, login_id1, login_id2; + SEX sex; unsigned char tmw_version; // tmw client version struct mmo_charstatus status; struct item_data *inventory_data[MAX_INVENTORY]; diff --git a/src/map/mob.cpp b/src/map/mob.cpp index ee74b08..09107ed 100644 --- a/src/map/mob.cpp +++ b/src/map/mob.cpp @@ -477,11 +477,6 @@ int mob_once_spawn_area(dumb_ptr sd, } // TODO: deprecate these -int mob_get_sex(int mob_class) -{ - return mob_db[mob_class].sex; -} - short mob_get_hair(int mob_class) { return mob_db[mob_class].hair; @@ -3545,7 +3540,6 @@ int mob_readdb(void) mob_db[mob_class].skills.clear(); - mob_db[mob_class].sex = 0; mob_db[mob_class].hair = 0; mob_db[mob_class].hair_color = 0; mob_db[mob_class].weapon = 0; diff --git a/src/map/mob.hpp b/src/map/mob.hpp index bf53798..2ed4018 100644 --- a/src/map/mob.hpp +++ b/src/map/mob.hpp @@ -52,7 +52,6 @@ struct mob_db_ int nameid; random_::Fixed p; } dropitem[8]; - int sex; short hair, hair_color, weapon, shield, head_top, head_mid, head_buttom, option, clothes_color; // [Valaris] int equip; // [Valaris] std::vector skills; @@ -76,7 +75,6 @@ int mob_stopattack(dumb_ptr); int mob_spawn(int); int mob_damage(dumb_ptr, dumb_ptr, int, int); int mob_heal(dumb_ptr, int); -int mob_get_sex(int); short mob_get_hair(int); short mob_get_hair_color(int); short mob_get_weapon(int); diff --git a/src/map/pc.cpp b/src/map/pc.cpp index b622cc0..cf953aa 100644 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -437,7 +437,7 @@ void pc_makesavestatus(dumb_ptr sd) *------------------------------------------ */ int pc_setnewpc(dumb_ptr sd, int account_id, int char_id, - int login_id1, tick_t client_tick, int sex) + int login_id1, tick_t client_tick, SEX sex) { nullpo_ret(sd); @@ -592,7 +592,7 @@ int pc_isequip(dumb_ptr sd, int n) if (item == NULL) return 0; - if (item->sex != 2 && sd->status.sex != item->sex) + if (item->sex != SEX::SERVER && sd->status.sex != item->sex) return 0; if (item->elv > 0 && sd->status.base_level < item->elv) return 0; @@ -2228,7 +2228,7 @@ int pc_isUseitem(dumb_ptr sd, int n) if (itemdb_type(nameid) != ItemType::USE) return 0; - if (item->sex != 2 && sd->status.sex != item->sex) + if (item->sex != SEX::SERVER && sd->status.sex != item->sex) return 0; if (item->elv > 0 && sd->status.base_level < item->elv) return 0; @@ -3615,7 +3615,7 @@ int pc_readparam(dumb_ptr sd, SP type) val = sd->status.species; break; case SP::SEX: - val = sd->sex; + val = static_cast(sd->sex); break; case SP::WEIGHT: val = sd->weight; @@ -3743,7 +3743,8 @@ int pc_setparam(dumb_ptr sd, SP type, int val) } break; case SP::SEX: - sd->sex = val; + // this is a really bad idea + sd->sex = static_cast(val); break; case SP::WEIGHT: sd->weight = val; diff --git a/src/map/pc.hpp b/src/map/pc.hpp index 77d1288..a2b4aa4 100644 --- a/src/map/pc.hpp +++ b/src/map/pc.hpp @@ -52,7 +52,7 @@ int pc_counttargeted(dumb_ptr sd, dumb_ptr src, ATK target_lv); int pc_setrestartvalue(dumb_ptr sd, int type); void pc_makesavestatus(dumb_ptr); -int pc_setnewpc(dumb_ptr, int, int, int, tick_t, int); +int pc_setnewpc(dumb_ptr, int, int, int, tick_t, SEX); int pc_authok(int, int, TimeT, short tmw_version, const struct mmo_charstatus *); int pc_authfail(int); diff --git a/src/map/script.cpp b/src/map/script.cpp index 2f4d1cb..55e6b53 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -3093,15 +3093,15 @@ void builtin_changesex(ScriptState *st) dumb_ptr sd = NULL; sd = script_rid2sd(st); - if (sd->status.sex == 0) + if (sd->status.sex == SEX::FEMALE) { - sd->status.sex = 1; - sd->sex = 1; + sd->status.sex = SEX::MALE; + sd->sex = SEX::MALE; } - else if (sd->status.sex == 1) + else if (sd->status.sex == SEX::MALE) { - sd->status.sex = 0; - sd->sex = 0; + sd->status.sex = SEX::FEMALE; + sd->sex = SEX::FEMALE; } chrif_char_ask_name(-1, sd->status.name, 5, HumanTimeDiff()); // type: 5 - changesex chrif_save(sd); -- cgit v1.2.3-70-g09d2