Exemple #1
0
    private static void TickDump(Context cx, BehTree ai)
    {
        return;

        if (_cw == null || _cw.IsDone)
        {
            /*var theOut = new TheOut
             * {
             * Values = cx.Field.CalcValue(),
             * Infl = cx.Infl.CostMap.ToArray(),
             * Pacs = cx.Pacs,
             * // Predictions = ai.Predictions,
             * };*/
            var theOut = new TheOutState
            {
                // Field = cx.Field,
                Pacs = cx.Pacs,
            };
            theOut.Flags = BuildFlags(cx.Field);
            cx.Writer.Write(theOut);
            _cw = new ConsoleWriter(cx.Writer.Flush());
        }

        _cw?.Tick();
    }
Exemple #2
0
    private static void Main(string[] args)
    {
        var cx = new Context();

        cx.ReadInit();
        // cx.Map.Dump();

        var ai = new BehTree();

        var sw = Stopwatch.StartNew();

        // game loop
        while (true)
        {
            sw.Restart();

            cx.ReadTick();
            cx.UpdateTick();

            // if (cx.Pacs.Any(p=>p.Type == PacType.Dead))
            // throw new Exception("why \n" + string.Join("\n", cx.Pacs));

            //var nearest = cx.Map.FindBestPath(cx.Pacs.FindMin(p=>p.IsMine?p.Id : Int32.MaxValue).Pos, 10, 10);

            // cx.Field.Dump();
            // Print("\nfield\n");
            // cx.Field.DumpValue();
            // Print("\ncost\n");
            // cx.Infl.CostMap.Dump(c=>$"{c:0.0} ");

            TrafficLight.UpdateTick(cx);
            ai.UpdateTick(cx);

            foreach (var pac in cx.Pacs.Where(p => p.IsMine))
            {
                ai.UpdateOrder(cx, pac);
            }

            ai.UpdatePostTick(cx);

            var anyOut = false;
            foreach (var pac in cx.Pacs.Where(p => p.IsMine))
            {
                var hasOut = pac.Order?.Execute(cx) == true;
                anyOut |= hasOut;

                pac.IsInClutch = false;
                // Print($"RE: {pac} ai:{pac.Order?.GetType().Name} hasOut:{hasOut}");
            }

            TickDump(cx, ai);

            Print($"{sw.ElapsedMilliseconds} ms");
            Console.WriteLine();
        }
    }
Exemple #3
0
 public void UpdateTree(ref Twinsanity.Behaviors BHs, uint Index)
 {
     BehTree.BeginUpdate();
     for (int i = 0; i <= BHs._Item.Length - 1; i++)
     {
         BehTree.Nodes.Add("ID: " + BHs._Item[i].ID.ToString());
     }
     BehTree.EndUpdate();
     IISIndex = (int)Index;
 }