コード例 #1
0
        private void _record(OsianLogic logic, SortedDictionary <string, RecordData> put, bool attackFrame = false)
        {
            var left = logic.Players[0];
            var data = logic.Map;

            for (int i = 0; i < OsianLogic.LEN_X; i++)
            {
                for (int j = 0; j < OsianLogic.LEN_Y; j++)
                {
                    if (data.Map[i, j] is BarrackMapObject b)
                    {
                        put.Add("a" + i + "," + j, RecordData.Make(i, j, 1, b.Owner == left ? 0 : 1, "team" + (b.Owner == left ? "l" : (b.Owner == null ? "n" : "r")), ""));
                    }
                    if (data.Map[i, j] is ObstacleMapObject ob)
                    {
                        put.Add("a" + i + "," + j, RecordData.Make(i, j, 1, ob.Owner == left ? 0 : 1, "obstacle", ""));
                    }
                }
            }
            Dictionary <string, string> dup = new Dictionary <string, string> ();

            foreach (var army in data.Army)
            {
                var keystr = _armyStr(army, "");
                keystr = ((int)('e' - keystr[0])) + keystr;
                var key    = "m" + army.Timestamp + "." + keystr;
                var dupkey = keystr + army.PosX + "," + army.PosY;
                if (dup.ContainsKey(dupkey))
                {
                    var v = put[dup[dupkey]];
                    v.c = "x" + (int.Parse(v.c.Substring(1)) + 1);
                    put[dup[dupkey]] = v;
                }
                else
                {
                    var atk = attackFrame;
                    var rd  = RecordData.Make(army.PosX, army.PosY - (atk ? 0.02f : 0.0f), 1, army.Owner == left ? 0 : 1, _armyStr(army, atk ? "a" : ""), "x1");
                    put.Add(key, rd);
                    dup.Add(dupkey, key);
                }
            }
        }