void tofocus(void *arg)// { Value root; Reader reader; struct user * puser = (struct user*)arg; pthread_mutex_lock(&(puser->msg_lock)); string data = puser->data; pthread_mutex_unlock(&(puser->msg_lock)); if(reader.parse(data,root)) { string username = root["username"].asString(); string focused = root["focused"].asString(); int num = 0; if(add_focus(username, focused, num) == 1) { Value object; FastWriter writer; object["typecode"] = 610; object["num"] = num; string strdata = writer.write(object); pthread_mutex_lock(&(puser->msg_lock)); puser->msg.push_back(strdata); //add data to send vector pthread_mutex_unlock(&(puser->msg_lock)); } } }
void GobGame::add_gobplayer(Control *control) { STACKTRACE; int i = gobplayers; gobplayers += 1; gobplayer = (GobPlayer**) realloc(gobplayer, sizeof(GobPlayer*) * gobplayers); gobplayer[i] = new GobPlayer(); gobplayer[i]->init(control, new_team()); add_focus(control, control->channel); return; }
REGISTER_FILE #include "scp.h" #include "frame.h" #include "mmain.h" #include "mview.h" #include "mcontrol.h" #include "other/planet3d.h" #include "mshppan.h" #include "mship.h" #include "mlog.h" //#include "mnet1.h" #include "mitems.h" #include "mfleet.h" #include "games/gflmelee.h" #include "other/twconfig.h" int NormalGame::add_player (Control *c, int team_index, const char *name, const char *fleet_section, const char *fleet_file) { int i = num_players; num_players += 1; player_control = (Control**) realloc(player_control, sizeof(Control*) * num_players); player_name = (char**) realloc(player_name, sizeof(char*) * num_players); // player_panel = (ShipPanel**) realloc(player_panel, sizeof(ShipPanel*) * num_players); player_fleet = (Fleet**) realloc(player_fleet, sizeof(Fleet *) * num_players); player_team = (TeamCode*) realloc(player_team, sizeof(TeamCode) * num_players); player_control[i] = c; add_focus(c, c->channel); // player_panel[i] = NULL; player_fleet[i] = new Fleet(); player_fleet[i]->reset(); player_name[i] = strdup(name); if (team_index >= team_table_size) { int i = team_table_size; team_table_size = team_index + 1; team_table = (TeamCode*) realloc(team_table, sizeof(TeamCode) * team_table_size); for (; i < team_table_size; i += 1) { if (i) team_table[i] = new_team(); else team_table[i] = 0; } } if (team_index) player_team[i] = team_table[team_index]; else player_team[i] = new_team(); char sect[40]; sprintf(sect, "Player%d", i+1); if (c->channel == channel_none) { tw_error("channel_none not allowed here"); //log_file(fleet_file); //::fleet->load(NULL, fleet_section); } else if (log->get_direction(c->channel) & Log::direction_write) { player_fleet[i]->load(fleet_file, fleet_section); log_fleet(c->channel, player_fleet[i]); c->target_sign_color = ((3+i) % 7) + 1; } else { log_fleet(c->channel, player_fleet[i]); } tw_set_config_file(home_ini_full_path("tmp.ini")); set_config_string(sect, "Name", name); set_config_string(sect, "Type", c->getTypeName()); set_config_int(sect, "Team", team_index); set_config_int(sect, "Channel", c->channel); set_config_int(sect, "StartingFleetCost", player_fleet[i]->getCost()); set_config_int(sect, "StartingFleetSize", player_fleet[i]->getSize()); player_fleet[i]->save(NULL, sect); player_fleet[i]->save("fleets.tmp", sect); return i; }