示例#1
0
        /// <summary>
        /// 构造制定贴图的边界。
        /// </summary>
        /// <param name="tex"></param>
        public SpriteBorder(Texture2D tex)
        {
            InitialSurroundPoint();

            borderCircles = new List <BorderCircleList>();
            texData       = new TextureData(tex);
            borderMap     = new BorderMap(tex.Width, tex.Height);

            CreateBorderCircles(tex);
        }
示例#2
0
        private void ShowCurListResult(BorderCircleList result)
        {
            BorderMap map = new BorderMap(borderMap.Width - 4, borderMap.Height - 4);

            foreach (BorderPoint bord in result)
            {
                Point p = bord.p;
                map[p.X, p.Y] = true;
            }
            map.ShowDataToConsole();
            Console.WriteLine();
        }
示例#3
0
 public EditorView(Rectangle location, DockType dockType, CompressedBuilding compressedBuilding, EditorParams editorParams) : base(location, dockType, true)
 {
     this.editorParams = editorParams;
     camera            = new Camera(containerCamera.worldCameraViewport, 4, Vector2.Zero, new Vector2(1000, 1000), false);
     camera.CenterOn(new Vector2(500, 500));
     camera.setZoomIndex(5);
     camera.lockZoom         = false;
     camera.lockKeyMove      = false;
     canChangeFocusOrder     = false;
     borderMap               = new BorderMap(compressedBuilding, editorParams);
     this.compressedBuilding = compressedBuilding;
     inGrid = false;
 }
示例#4
0
 private void ShowCirclesData()
 {
     foreach (BorderCircleList list in borderCircles)
     {
         BorderMap map = new BorderMap(borderMap.Width - 4, borderMap.Height - 4);
         foreach (BorderPoint bord in list)
         {
             Point p = bord.p;
             map[p.X, p.Y] = true;
         }
         map.ShowDataToConsole();
         Console.WriteLine();
     }
 }
示例#5
0
        public string CompileMap(string mapPath)
        {
            MainMap   map;
            BorderMap borderMap;

            try
            {
                string        mapDirectory = Path.GetDirectoryName(mapPath);
                XmlSerializer serializer   = new XmlSerializer(typeof(TiledMap));

                FileStream mapStream = new FileStream(mapPath, FileMode.Open, FileAccess.Read);
                TiledMap   tiledMain = (TiledMap)serializer.Deserialize(mapStream);
                mapStream.Close();
                mapStream.Dispose();
                map = new MainMap(tiledMain, mapDirectory, Context);

                string borderMapPath = Path.Combine(mapDirectory, map.MapLayer.Properties.RetrieveString(Resources.STR_BORDER_MAP_FILE, Context, map.MapLayer));

                /* Load the map representing the border block */


                FileStream borderStream = new FileStream(borderMapPath, FileMode.Open, FileAccess.Read);
                TiledMap   tiledBorder  = (TiledMap)serializer.Deserialize(borderStream);
                borderStream.Close();
                borderStream.Dispose();
                borderMap = new BorderMap(tiledBorder, Context, mapDirectory);
            }
            catch (CompilerErrorException cex)
            {
                throw cex;
            }
            catch (Exception ex)
            {
                Context.ExitError("could not deserialize map file(s): {0}", ex, ex.Message);
                return(null);
            }

            /* Tiled Map is loaded, we need to create libmap2agb maps now */
            MapHeader header = new MapHeader();

            header.ShowName    = (byte)map.MapLayer.Properties.RetrieveFormattedInt(Resources.STR_HEAD_SHOW_NAME, Context, map.MapLayer);
            header.Music       = (ushort)map.MapLayer.Properties.RetrieveFormattedInt(Resources.STR_HEAD_MUSIC, Context, map.MapLayer);
            header.Weather     = (byte)map.MapLayer.Properties.RetrieveFormattedInt(Resources.STR_HEAD_WEATHER, Context, map.MapLayer);
            header.Light       = (byte)map.MapLayer.Properties.RetrieveFormattedInt(Resources.STR_HEAD_LIGHT, Context, map.MapLayer);
            header.BattleStyle = (byte)map.MapLayer.Properties.RetrieveFormattedInt(Resources.STR_HEAD_BATTLETYPE, Context, map.MapLayer);
            header.Cave        = (byte)map.MapLayer.Properties.RetrieveFormattedInt(Resources.STR_HEAD_CAVE, Context, map.MapLayer);
            header.Name        = (byte)map.MapLayer.Properties.RetrieveFormattedInt(Resources.STR_HEAD_NAME, Context, map.MapLayer);
            header.Index       = (ushort)map.MapLayer.Properties.RetrieveFormattedInt(Resources.STR_HEAD_INDEX, Context, map.MapLayer);
            header.Unknown     = (byte)map.MapLayer.Properties.RetrieveFormattedInt(Resources.STR_HEAD_UNKNOWN, Context, map.MapLayer);
            bool escapeRope = map.MapLayer.Properties.RetrieveBoolean(Resources.STR_HEAD_ESCAPEROPE, Context, map.MapLayer);
            bool canDig     = map.MapLayer.Properties.RetrieveBoolean(Resources.STR_HEAD_DIG, Context, map.MapLayer);

            header.EscapeRope = (byte)((escapeRope ? (1 << 1) : 0) | (canDig ? 1 : 0));

            header.Footer = new MapFooter();
            header.Footer.FirstTilesetInternal  = 0x082D49B8;
            header.Footer.SecondTilesetInternal = 0x082D49D0;
            header.Footer.Width  = map.Child.Width;
            header.Footer.Height = map.Child.Height;


            /* Build the border block */
            header.Footer.BorderBlock = Fill2DMap(borderMap.BorderMapTiles, borderMap.Child.Width, borderMap.Child.Height, borderMap.Child);

            header.Footer.BorderHeight = (byte)borderMap.Child.Height;
            header.Footer.BorderWidth  = (byte)borderMap.Child.Width;

            /* Build the map block */
            header.Footer.MapBlock = Fill2DMap(map.MapTiles, map.Child.Width, map.Child.Height, map.Child);
            FillCollisionMap(map.CollisionTiles, map.Child.Width, map.Child.Height, map.Child, header.Footer.MapBlock);

            EventHeader      mapEventHeader = new EventHeader();
            TiledObjectGroup eventGroup     = map.Child.ObjectGroups.GetObjectByMatchingProperties(Resources.STR_OBJLAYER_NAME, Resources.STR_OBJLAYER_EVENT, Context);

            if (eventGroup == null)
            {
                Context.ExitError("could not find entity layer in object layers");
            }
            foreach (TiledObject obj in eventGroup.Objects)
            {
                if (obj.GlobalIdentifier.TileGetTileObject(map.Child.TilesetDefinitions, Context).Type == Resources.STR_EVTTYPE_PERSON)
                {
                    EventEntityPerson person = new EventEntityPerson();
                    person.Id          = (byte)obj.Properties.RetrieveFormattedInt(Resources.STR_EVT_P_NR, Context, obj, false, 0);
                    person.Picture     = (byte)obj.Properties.RetrieveFormattedInt(Resources.STR_EVT_P_IMG, Context, obj, false, 0);
                    person.Field2      = (byte)(obj.Properties.RetrieveBoolean(Resources.STR_EVT_P_RIVAL, Context, obj, false, false) ? 1 : 0);
                    person.Field3      = (byte)obj.Properties.RetrieveFormattedInt(Resources.STR_EVT_P_F3, Context, obj, false, 0);
                    person.X           = (short)(obj.X / 16);
                    person.Y           = (short)(obj.Y / 16);
                    person.Height      = (byte)obj.Properties.RetrieveFormattedInt(Resources.STR_EVT_HEIGHT, Context, obj, false, 0);
                    person.Behaviour   = (byte)obj.Properties.RetrieveFormattedInt(Resources.STR_EVT_P_RUNBEHAV, Context, obj, false, 0);
                    person.Movement    = (byte)obj.Properties.RetrieveFormattedInt(Resources.STR_EVT_P_MOVEMENT, Context, obj, false, 0);
                    person.FieldB      = (byte)obj.Properties.RetrieveFormattedInt(Resources.STR_EVT_P_FB, Context, obj, false, 0);
                    person.IsTrainer   = (byte)(obj.Properties.RetrieveBoolean(Resources.STR_EVT_P_TRAINER, Context, obj, false, false) ? 1 : 0);
                    person.FieldD      = (byte)obj.Properties.RetrieveFormattedInt(Resources.STR_EVT_P_FD, Context, obj, false, 0);
                    person.AlertRadius = (ushort)obj.Properties.RetrieveFormattedInt(Resources.STR_EVT_P_SIGHT, Context, obj, false, 0);
                    person.Script      = obj.Properties.RetrieveString(Resources.STR_EVT_SCRIPT, Context, obj, false, "");
                    person.Flag        = (ushort)obj.Properties.RetrieveFormattedInt(Resources.STR_EVT_P_FLAG, Context, obj, false, 0x200);
                    person.Padding     = 0x0000;

                    mapEventHeader.Persons.Add(person);
                }
            }

            header.Events = mapEventHeader;
            StringBuilder sb = new StringBuilder();

            MapHeaderCompile(Context, header, sb, mapPath);

            Context.ExitCode = CompilerExitCode.EXIT_SUCCESS;

            return(sb.ToString());
        }
示例#6
0
 private void ShowCurListResult ( BorderCircleList result )
 {
     BorderMap map = new BorderMap( borderMap.Width - 4, borderMap.Height - 4 );
     foreach (BorderPoint bord in result)
     {
         Point p = bord.p;
         map[p.X, p.Y] = true;
     }
     map.ShowDataToConsole();
     Console.WriteLine();
 }
示例#7
0
 private void ShowCirclesData ()
 {
     foreach (BorderCircleList list in borderCircles)
     {
         BorderMap map = new BorderMap( borderMap.Width - 4, borderMap.Height - 4 );
         foreach (BorderPoint bord in list)
         {
             Point p = bord.p;
             map[p.X, p.Y] = true;
         }
         map.ShowDataToConsole();
         Console.WriteLine();
     }
 }
示例#8
0
 /// <summary>
 /// 构造指定贴图的边界,为了测试,返回borderMap
 /// </summary>
 /// <param name="tex"></param>
 /// <param name="borderMap"></param>
 public SpriteBorder ( Texture2D tex, out SpriteBorder.BorderMap borderMap )
     : this( tex )
 {
     borderMap = this.borderMap;
 }
示例#9
0
        /// <summary>
        /// 构造制定贴图的边界。
        /// </summary>
        /// <param name="tex"></param>
        public SpriteBorder ( Texture2D tex )
        {
            InitialSurroundPoint();

            borderCircles = new List<BorderCircleList>();
            texData = new TextureData( tex );
            borderMap = new BorderMap( tex.Width, tex.Height );

            CreateBorderCircles( tex );
        }
示例#10
0
 /// <summary>
 /// 构造指定贴图的边界,为了测试,返回borderMap
 /// </summary>
 /// <param name="tex"></param>
 /// <param name="borderMap"></param>
 public SpriteBorder(Texture2D tex, out SpriteBorder.BorderMap borderMap)
     : this( tex )
 {
     borderMap = this.borderMap;
 }