Exemplo n.º 1
0
        public MapInfo(DataBuffer data)
        {
            int count = data.ReadInt32(4, true);

            Areas = new MapAreaInfo[count];

            for (int i = 0; i < count; i++)
            {
                var area  = new MapAreaInfo();
                int start = data.Position;
                area.Name        = data.ReadUTF8Z();
                area.DisplayName = area.Name;
                data.Position    = start + 32;
                float xLo = data.ReadSingle();
                float yLo = data.ReadSingle();
                float zLo = data.ReadSingle();
                float xHi = data.ReadSingle();
                float yHi = data.ReadSingle();
                float zHi = data.ReadSingle();
                area.LowerBound = new Point3(xLo, yLo, zLo);
                area.UpperBound = new Point3(xHi, yHi, zHi);
                area.Size       = new Point3(xHi - xLo, yHi - yLo, zHi - zLo);
                data.Position   = start + 72;
                Areas[i]        = area;

                if (area.Name.EndsWith("_cave1"))
                {
                    area.Name = "dlc3_" + area.Name.Replace("_cave1", "");
                }
            }
        }
Exemplo n.º 2
0
        public MapInfo(DataBuffer data)
        {
            var count = data.ReadInt32(4, true);

            Areas = new MapAreaInfo[count];

            for (int i = 0; i < count; i++)
            {
                var area  = new MapAreaInfo();
                int start = data.Position;
                area.Name        = data.ReadUTF8Z();
                area.DisplayName = area.Name;
                data.Position    = start + 32;
                var xLo = data.ReadSingle();
                var yLo = data.ReadSingle();
                var zLo = data.ReadSingle();
                var xHi = data.ReadSingle();
                var yHi = data.ReadSingle();
                var zHi = data.ReadSingle();
                area.LowerBound = new Point3(xLo, yLo, zLo);
                area.UpperBound = new Point3(xHi, yHi, zHi);
                area.Size       = new Point3(xHi - xLo, yHi - yLo, zHi - zLo);
                data.Position   = start + 72;
                Areas[i]        = area;
            }
        }
Exemplo n.º 3
0
 public static void AssignGimmickAreas(Dictionary <string, Lvb> set, MapInfo mapInfo)
 {
     mapInfo.Gimmicks = set;
     foreach (var gmkType in set)
     {
         var type = gmkType.Key;
         foreach (var gmk in gmkType.Value.Info)
         {
             MapAreaInfo area = mapInfo.GetContainingArea(gmk.Xfrm.Position);
             area?.AddGimmick(gmk, type);
         }
     }
 }
Exemplo n.º 4
0
        public MapAreaInfo GetContainingArea(Point3 point)
        {
            MapAreaInfo containingArea = null;
            int         minPriority    = int.MaxValue;

            foreach (MapAreaInfo area in Areas)
            {
                if (area.Contains(point) && area.Priority < minPriority)
                {
                    containingArea = area;
                    minPriority    = area.Priority;
                }
            }

            return(containingArea);
        }