Esempio n. 1
0
 private static bool IsGoodTrade(Trade ptr, IEnumerable<Trade> trs)
 {
     foreach (var tr in trs)
     {
         if (tr.to.Id == ptr.from.Id)
         {
             if (EqualTrCells(tr.get_cells, ptr.give_cells)
                 && ptr.giveMoney >= tr.giveMoney && ptr.getMoney <= tr.getMoney)
                 return true;
         }
     }
     return false;
 }
Esempio n. 2
0
        public bool Equals(Trade tr)
        {
            bool res = false;

            bool pls = from == tr.from && to == tr.to;

            bool lands1 = give_cells.Intersect(tr.give_cells).Count() == give_cells.Count();
            bool lands2 = get_cells.Intersect(tr.get_cells).Count() == get_cells.Count();
            bool money = getMoney == tr.getMoney && giveMoney == tr.giveMoney;

            if (pls && lands1 && lands2 && money) res = true;

            return res;
        }
Esempio n. 3
0
        public static void InitTrade(Game g, string state, int pid)
        {
            state = state.Replace("undefined", "");
            var pst = state.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

            Player from = g.GetPlayer(pid);

            var ss_from = pst.SingleOrDefault(x => x.StartsWith("p" + from.Id));

            var ss_to = pst.Where(x => !x.StartsWith("p" + from.Id)).OrderByDescending(x => x.Length).FirstOrDefault();
            if (ss_to == null)
            {
                return;
            }

            Player to = null;
            var q = ss_from.Length > 1;

            if (q)
            {
                foreach (var pp in g.Players)
                {
                    if (ss_to.StartsWith("p" + pp.Id)) to = pp;
                }

                var from_ids = ss_from.Replace("p" + from.Id, "").Trim('-').Split('-').Where(x => !x.StartsWith("m")).Select(x => Int32.Parse(x)).ToArray();
                var from_money_str = ss_from.Trim('-').Split('-').FirstOrDefault(x => x.StartsWith("m"));
                var from_money = from_money_str != null ? from_money_str.Replace("m", "") : "";

                var to_ids = ss_to.Replace("p" + to.Id, "").Trim('-').Split('-').Where(x => !x.StartsWith("m")).Select(x => Int32.Parse(x)).ToArray();
                var to_money_str = ss_to.Trim('-').Split('-').FirstOrDefault(x => x.StartsWith("m"));
                var to_money = to_money_str != null ? to_money_str.Replace("m", "") : "";

                var trState = new Trade
                {
                    from = from,
                    give_cells = from_ids,
                    giveMoney = string.IsNullOrEmpty(from_money) ? 0 : Int32.Parse(from_money),
                    to = to,
                    get_cells = to_ids,
                    getMoney = string.IsNullOrEmpty(to_money) ? 0 : Int32.Parse(to_money),
                };
                g.CurrTrade = trState;

            }
        }