All pastes #747250 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-10-23 21:18 UTC
rendered paste body
public static void LoadDS1()
        {
            Console.WriteLine("Loading DS1 references...");
            foreach (string FilePath in System.IO.Directory.GetFiles(Environment.CurrentDirectory + @"\CATACOMB\"))
            {
                System.IO.Stream myStream = System.IO.File.Open(FilePath, System.IO.FileMode.Open) as System.IO.Stream;
                byte[] buf = new byte[myStream.Length];
                myStream.Read(buf, 0, buf.Length);
                Game.GameInfo.DS1List.Add(new Parser(buf));
            }
            UniqueObjects uObjects = new UniqueObjects();
            foreach (Parser p in Game.GameInfo.DS1List)
            {
                //walkinfo from wall tiles
                WalkabilityInfo walkinfo = new WalkabilityInfo(p);
                Game.GameInfo.WalkInfo.Add(walkinfo);
                uObjects.add(p);
            }
            Console.WriteLine("...DS1 references loaded");
        }

        /*
        static bool RunTest(BotConfig myBotConfig)
        {          
            Console.WriteLine("Running test");
            Test myTest = new Test(myBotConfig,true);
            bool test = myTest.DoRun();
            return test;
        }
         * */
    }
    public class UniqueObjects
    {
        public UniqueObjects()
        {

        }
        public void add(Parser p)
        {
            DS1.Object[] toAdd = new data.DS1.Object[p.Objects.Count];
            int index = 0;
            foreach (data.DS1.Object obj in p.Objects)
            {
                toAdd[index] = obj;
                index++;
            }
            Game.GameInfo.objList.Add(toAdd);
        }
        public void Trim()
        {
            List<DS1.Object[]> tmpFinalList = new List<data.DS1.Object[]>();
            List<DS1.Object> tmpList = new List<data.DS1.Object>();
            for (int i = 0; i < Game.GameInfo.objList.Count; i++)
            {
                tmpList.Clear();
                foreach (DS1.Object obj in Game.GameInfo.objList[i])
                {
                    if (!isDuplicated(obj, i))
                    {
                        tmpList.Add(obj);
                    }
                }
                tmpFinalList.Add(tmpList.ToArray());
            }
            Game.GameInfo.objList = tmpFinalList;
        }
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();
            int index = 0;
            foreach (DS1.Object[] obj1 in Game.GameInfo.objList)
            {
                sb.Append("index=" + index);
                foreach (DS1.Object obj2 in obj1)
                {
                    sb.Append(" " + obj2.Id + "(" + obj2.X + "," + obj2.Y + ") ");
                }
                sb.Append(Environment.NewLine);
                index++;
            }
            return sb.ToString();
        }
        public bool isDuplicated(DS1.Object obj, int index)
        {
            for (int i = 0; i < Game.GameInfo.objList.Count; i++)
            {
                if (i == index)
                    continue;
                foreach (DS1.Object obj2 in Game.GameInfo.objList[i])
                {
                    if (obj.Id == obj2.Id && obj.X == obj2.X && obj.Y == obj2.Y)
                        return true;
                }
            }
            return false;

        }
    }
    //int[] object id, x, y as found on ds1    }
    public class WalkabilityInfo
    {
        public WalkabilityInfo(bool SetAllWalkable)
        {
            this.Walkable = new bool[12, 12];
            if (SetAllWalkable)
            {
                for (int x = 0; x < 12; x++)
                {
                    for (int y = 0; y < 12; y++)
                    {
                        this[x, y] = true;
                    }
                }
            }
        }

        public WalkabilityInfo(Parser p)
        {
            int LayerIndex = p.Layers.Count - 2;
            this.Walkable = new bool[p.Layers[LayerIndex].Property0.GetUpperBound(0)
                , p.Layers[p.Layers.Count - 2].Property0.GetUpperBound(1)];
            for (int y = 0; y < Walkable.GetUpperBound(1); y++)
            {
                for (int x = 0; x < Walkable.GetUpperBound(0); x++)
                {
                    if (p.Layers[LayerIndex].Property0[x, y] == 194)
                        this[x, y] = true;
                    else
                        this[x, y] = false;
                }
            }
        }
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();
            for (int y = 0; y < Walkable.GetUpperBound(1); y++)
            {
                for (int x = 0; x < Walkable.GetUpperBound(0); x++)
                {
                    char c = this[x, y] ? '1' : '0';
                    sb.Append(c);
                }
                sb.Append(Environment.NewLine);
            }
            return sb.ToString();

        }
        private bool[,] Walkable;
        public bool this[int x, int y]
        {
            get
            {
                return this.Walkable[x, y];
            }
            set
            {
                this.Walkable[x, y] = value;
            }
        }
    }