changes
This commit is contained in:
45
src/main.rs
45
src/main.rs
@@ -290,6 +290,7 @@ impl RoyaltyTree {
|
||||
self.add_royalty(redist);
|
||||
}
|
||||
fn set_location(&mut self, id: usize, index: usize) {
|
||||
self.tree[index].order_id=id;
|
||||
self.order_finder.insert(id,index);
|
||||
}
|
||||
fn add_weight(&mut self, index: usize, weight: FiNum) {
|
||||
@@ -462,28 +463,36 @@ impl Market {
|
||||
let mut sorted=pq.v.clone();
|
||||
sorted.sort_by(|a,b| { (a.sell_qty/a.buy_qty).cmp(&(b.sell_qty/b.buy_qty)) });
|
||||
for off in sorted.iter() {
|
||||
let rt=self.royalties.get_mut(&ap.1).unwrap();
|
||||
let indexr=rt.order_finder.get(&off.order_id).unwrap();
|
||||
let royalty_amt=rt.get_royalty(*indexr);
|
||||
println!(" {} @ {} ({}) OrderID: {} Royalties: {}",
|
||||
off.sell_remain, // off.buy_qty*off.sell_remain/off.sell_qty,
|
||||
(off.buy_qty/off.sell_qty).fmt_recip(),
|
||||
self.traders[off.owner as usize].name,
|
||||
off.order_id,
|
||||
"GetRoyalties Code absent");
|
||||
royalty_amt);
|
||||
}
|
||||
}
|
||||
println!("Royalties accumulated but not captured:");
|
||||
for index in 0..self.assets.len() {
|
||||
let tot=self.royalties.get(&index).unwrap().acc_total();
|
||||
self.royalties.entry(index).or_insert(RoyaltyTree::new());
|
||||
let tot=self.royalties.get(&index).unwrap().acc_total();
|
||||
println!(" For {}: {}",self.number_to_asset(index).name,tot);
|
||||
for indexr in 0..self.royalties.get(&index).unwrap().tree.len() {
|
||||
// let roy=self.royalties.get(&index).unwrap().get_royalty(indexr);
|
||||
println!(" Index {} Count {} Weight {} Lazy {} Acc {} Royalty",
|
||||
indexr,
|
||||
self.royalties.get(&index).unwrap().tree[indexr].count,
|
||||
self.royalties.get(&index).unwrap().tree[indexr].weight,
|
||||
self.royalties.get(&index).unwrap().tree[indexr].lazy,
|
||||
self.royalties.get(&index).unwrap().tree[indexr].acc);
|
||||
// self.royalties.get(&index).unwrap().get_royalty(indexr));
|
||||
let rt=self.royalties.get_mut(&index).unwrap();
|
||||
for indexr in 0..rt.tree.len() {
|
||||
let royalty_amt=rt.get_royalty(indexr);
|
||||
let r=&rt.tree[indexr];
|
||||
let count=r.count;
|
||||
let weight=r.weight;
|
||||
let lazy=r.lazy;
|
||||
let acc=r.acc;
|
||||
if !royalty_amt.is_zero() || count!=0 || !weight.is_zero() || !lazy.is_zero() || !acc.is_zero() {
|
||||
// Heavy Debug println!(" Index {} Count {} Weight {} Lazy {} Acc {} Royalty {} OrderID {}",indexr,r.count,r.weight,r.lazy,r.acc,royalty_amt,r.order_id);
|
||||
println!(" Index {} Weight {} Royalty {} OrderID {}",indexr,r.weight,royalty_amt,r.order_id);
|
||||
}
|
||||
}
|
||||
for (k,v) in &rt.order_finder { println!(" Order ID {} at position {}",k,v); }
|
||||
}
|
||||
println!("Trader Balances:");
|
||||
for t in &self.traders {
|
||||
@@ -756,11 +765,15 @@ impl Market {
|
||||
2 => Command::AddFunds { user_id: self.rng.gen_range(1..self.traders.len()),
|
||||
asset_id: self.rng.gen_range(0..self.assets.len()),
|
||||
amt: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)), },
|
||||
3 => Command::Order { user_id: self.rng.gen_range(1..self.traders.len()),
|
||||
sell_type: self.rng.gen_range(0..self.assets.len()),
|
||||
sell_qty: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)),
|
||||
buy_type: self.rng.gen_range(0..self.assets.len()),
|
||||
buy_qty: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)), },
|
||||
3 => {
|
||||
let a0=self.rng.gen_range(0..self.assets.len());
|
||||
let a1=(a0+self.rng.gen_range(1..self.assets.len()))%self.assets.len();
|
||||
Command::Order { user_id: self.rng.gen_range(1..self.traders.len()),
|
||||
sell_type: a0,
|
||||
sell_qty: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)),
|
||||
buy_type: a1,
|
||||
buy_qty: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)), }
|
||||
},
|
||||
4 => if let Some(id)=self.random_order_id() { Command::RetractOrder { order_id:id } } else { Command::None },
|
||||
_ => Command::Error("This can never happen".to_string()),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user