162 response.add(ClientFlags(remove_flags(&[Flags::InRoom]), vec![client.nick.clone()]).send_all()); |
162 response.add(ClientFlags(remove_flags(&[Flags::InRoom]), vec![client.nick.clone()]).send_all()); |
163 } |
163 } |
164 |
164 |
165 pub fn change_master( |
165 pub fn change_master( |
166 server: &mut HWServer, |
166 server: &mut HWServer, |
167 from_id: ClientId, |
|
168 to_id: ClientId, |
|
169 room_id: RoomId, |
167 room_id: RoomId, |
170 response: &mut Response, |
168 new_master_id: ClientId, |
171 ) { |
169 response: &mut Response, |
172 server.clients[from_id].set_is_master(false); |
170 ) { |
173 server.clients[to_id].set_is_master(true); |
171 let room = &mut server.rooms[room_id]; |
174 server.rooms[room_id].master_id = Some(to_id); |
172 if let Some(master_id) = room.master_id { |
|
173 server.clients[master_id].set_is_master(false); |
|
174 response.add( |
|
175 ClientFlags( |
|
176 remove_flags(&[Flags::RoomMaster]), |
|
177 vec![server.clients[master_id].nick.clone()], |
|
178 ) |
|
179 .send_all() |
|
180 .in_room(room_id), |
|
181 ) |
|
182 } |
|
183 |
|
184 room.master_id = Some(new_master_id); |
|
185 server.clients[new_master_id].set_is_master(true); |
175 |
186 |
176 response.add( |
187 response.add( |
177 ClientFlags( |
188 ClientFlags( |
178 add_flags(&[Flags::RoomMaster]), |
189 add_flags(&[Flags::RoomMaster]), |
179 vec![server.clients[to_id].nick.clone()], |
190 vec![server.clients[new_master_id].nick.clone()], |
180 ) |
|
181 .send_all() |
|
182 .in_room(room_id), |
|
183 ); |
|
184 response.add( |
|
185 ClientFlags( |
|
186 remove_flags(&[Flags::RoomMaster]), |
|
187 vec![server.clients[from_id].nick.clone()], |
|
188 ) |
191 ) |
189 .send_all() |
192 .send_all() |
190 .in_room(room_id), |
193 .in_room(room_id), |
191 ); |
194 ); |
192 } |
195 } |