/// <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); }
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(); }
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; }
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(); } }
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()); }
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(); }
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(); } }
/// <summary> /// 构造指定贴图的边界,为了测试,返回borderMap /// </summary> /// <param name="tex"></param> /// <param name="borderMap"></param> public SpriteBorder ( Texture2D tex, out SpriteBorder.BorderMap borderMap ) : this( tex ) { borderMap = this.borderMap; }
/// <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 ); }
/// <summary> /// 构造指定贴图的边界,为了测试,返回borderMap /// </summary> /// <param name="tex"></param> /// <param name="borderMap"></param> public SpriteBorder(Texture2D tex, out SpriteBorder.BorderMap borderMap) : this( tex ) { borderMap = this.borderMap; }