client niceness"

This commit is contained in:
ntr
2019-04-26 13:08:08 +10:00
parent 471d37c551
commit 95e5d493af
8 changed files with 121 additions and 29 deletions
+6 -4
View File
@@ -17,6 +17,7 @@ use mob::{instance_mobs};
use game::{Game, Phase, Team, game_get, game_write, game_instance_new, game_instance_join, game_global_get, game_global_set};
use vbox::{Var};
use rpc::{RpcResult};
use names::{name};
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
enum InstancePhase {
@@ -94,7 +95,7 @@ impl Instance {
self.players = iter::repeat_with(|| {
let bot_id = Uuid::new_v4();
let cryps = instance_mobs(bot_id);
let mut p = Player::new(bot_id, self.id, &bot_id.to_string(), cryps).set_bot(true);
let mut p = Player::new(bot_id, self.id, &name(), cryps).set_bot(true);
p.set_ready(true);
p
})
@@ -105,7 +106,7 @@ impl Instance {
fn add_player(&mut self, player: Player) -> Result<&mut Instance, Error> {
match self.players.iter().find(|p| p.id == player.id) {
Some(p) => return Err(err_msg("already joined")),
Some(_p) => return Err(err_msg("already joined")),
None => (),
};
@@ -138,11 +139,12 @@ impl Instance {
.position(|p| p.id == player_id)
.ok_or(err_msg("player_id not found"))?;
if self.players[i].cryps.iter().all(|c| c.skills.len() == 0) {
if self.phase != InstancePhase::Lobby && self.players[i].cryps.iter().all(|c| c.skills.len() == 0) {
return Err(err_msg("your cryps have no skills"));
}
self.players[i].set_ready(true);
let v = !self.players[i].ready;
self.players[i].set_ready(v);
if self.phase == InstancePhase::Lobby && self.can_start() {
self.start();
+1
View File
@@ -24,6 +24,7 @@ mod net;
mod skill;
mod spec;
// mod passives;
mod names;
mod rpc;
mod account;
mod instance;
+55
View File
@@ -0,0 +1,55 @@
use rand::prelude::*;
use rand::{thread_rng};
const FIRSTS: [&'static str; 17] = [
"fierce",
"obscure",
"mighty",
"rogue",
"inverted",
"recalcitrant",
"subterranean",
"brewing",
"nocturnal",
"convex",
"concave",
"piscine",
"dub",
"borean",
"lurking",
"leafy",
"nutritious",
];
const LASTS: [&'static str; 16] = [
"kaffe",
"river",
"oak",
"replicant",
"mechanism",
"function",
"shape",
"form",
"poseidon",
"mountain",
"river",
"forest",
"problem",
"warning",
"information",
"witness",
];
pub fn name() -> String {
let mut rng = thread_rng();
let first = rng.gen_range(0, FIRSTS.len() - 1);
let last = rng.gen_range(0, LASTS.len() - 1);
let mut s = String::new();
s.push_str(FIRSTS[first]);
s.push(' ');
s.push_str(LASTS[last]);
s
}