Browse Source

mmo-21344:Editor加一个大地图标注功能,支持选入一张地图png,在其上添加文字,策划新提需求

zhaohua 3 years ago
parent
commit
1ba0e199dd
2 changed files with 60 additions and 25 deletions
  1. 15 1
      Common/CommonAI/Zone/ZoneEditor/EditorDatas.cs
  2. 45 24
      XmdsCommon/EditorData/SnapData.cs

+ 15 - 1
Common/CommonAI/Zone/ZoneEditor/EditorDatas.cs

@@ -60,6 +60,14 @@ namespace CommonAI.Zone.ZoneEditor
         public float LableOffsetX = 0;
         [DescAttribute("坐标LableOffsetY", "地图显示")]
         public float LableOffsetY = 15;
+        [ColorValueAttribute]
+        [DescAttribute("Color(ARGB)", "地图显示", true, null)]
+        public int LableColor = ColorValueAttribute. FromARGB(0xff, 0xff, 0xff, 0xff);
+        [DescAttribute("字号", "地图显示")]
+        public int LableSize = 21;
+        [DescAttribute("是否描边", "地图显示")]
+        public bool LableOutline = false;
+
 
         [DescAttribute("事件", "事件")]
         [SceneScriptIDAttribute]
@@ -107,6 +115,9 @@ namespace CommonAI.Zone.ZoneEditor
             output.PutF32(this.OffsetY);
             output.PutF32(this.LableOffsetX);
             output.PutF32(this.LableOffsetY);
+            output.PutS32(this.LableColor);
+            output.PutS32(this.LableSize);
+            output.PutBool(this.LableOutline);
             output.PutUTF(this.Script);
             output.PutUTF(this.Tag);
         }
@@ -127,7 +138,10 @@ namespace CommonAI.Zone.ZoneEditor
             this.OffsetX = input.GetF32();
             this.OffsetY = input.GetF32();
             this.LableOffsetX = input.GetF32();
-            this.LableOffsetY = input.GetF32();
+            this.LableOffsetY = input.GetF32();
+            this.LableColor = input.GetS32();
+            this.LableSize = input.GetS32();
+            this.LableOutline = input.GetBool();
             this.Script = input.GetUTF();
             this.Tag = input.GetUTF();
         }

+ 45 - 24
XmdsCommon/EditorData/SnapData.cs

@@ -234,33 +234,48 @@ namespace XmdsCommon.EditorData
         public UnitSnapData() { }
         public UnitSnapData(SceneData src)
         {
-			//单位信息
-            foreach (var unit in src.Units)
+            List<SceneObjectData> allList = new List<SceneObjectData>();
+            allList.AddRange(src.Points);
+            allList.AddRange(src.Regions);
+            allList.AddRange(src.Decorations);
+            allList.AddRange(src.Units);
+            allList.AddRange(src.Items);
+            allList.AddRange(src.Areas);
+
+            //单位信息
+            foreach (var unit in allList)
             {
                 try
                 {
-                    UnitSnapDataItem rgs = new UnitSnapDataItem();
-                    rgs.unitID = unit.UnitTemplateID;
-                    rgs.unitName = unit.Name;
-                    rgs.x = unit.X;
-                    rgs.y = unit.Y;
-                    rgs.mapShow = unit.MapShow;
-                    rgs.unitMName = unit.UnitName;
-                    rgs.unitMIcon = unit.UnitIcon;
-                    rgs.offsetX = unit.OffsetX;
-                    rgs.offsetY = unit.OffsetY;
-                    rgs.lableOffsetX = unit.LableOffsetX;
-                    rgs.lableOffsetY = unit.LableOffsetY;
-                    this.units.Add(rgs);
+                    if (unit.MapShow)
+                    {
+                        UnitSnapDataItem rgs = new UnitSnapDataItem();
+                        rgs.unitName = unit.Name;
+                        rgs.x = unit.X;
+                        rgs.y = unit.Y;
+                        rgs.mapShow = unit.MapShow;
+                        rgs.unitMName = unit.UnitName;
+                        rgs.unitMIcon = unit.UnitIcon;
+                        rgs.offsetX = unit.OffsetX;
+                        rgs.offsetY = unit.OffsetY;
+                        rgs.lableOffsetX = unit.LableOffsetX;
+                        rgs.lableOffsetY = unit.LableOffsetY;
+                        rgs.lableColor = unit.LableColor;
+                        rgs.lableSize = unit.LableSize;
+                        rgs.lableOutLine = unit.LableOutline;
+                        this.units.Add(rgs);
+                    }
 				}
                 catch (Exception err)
                 {
                     throw new Exception(string.Format("parse snap unit data error : scene={0} region={1}", src, unit.Name), err);
                 }
-            }
-
-			// 路点信息
-			foreach (var point in src.Points)
+            }
+
+
+
+            // 路点信息
+            foreach (var point in src.Points)
 			{
 				try
 				{
@@ -296,7 +311,6 @@ namespace XmdsCommon.EditorData
     public class UnitSnapDataItem : IExternalizable
     {
         public String unitName;
-        public int unitID;
         public float x, y;
         public bool mapShow;
         public String unitMName;
@@ -305,11 +319,13 @@ namespace XmdsCommon.EditorData
         public float offsetY;
         public float lableOffsetX;
         public float lableOffsetY;
+        public int lableColor;
+        public int lableSize;
+        public bool lableOutLine;
 
         public void ReadExternal(IInputStream input)
         {
             this.unitName = input.GetUTF();
-            this.unitID = input.GetS32();
             this.x = input.GetF32();
             this.y = input.GetF32();
             this.mapShow = input.GetBool();
@@ -318,12 +334,14 @@ namespace XmdsCommon.EditorData
             this.offsetX = input.GetF32();
             this.offsetY = input.GetF32();
             this.lableOffsetX = input.GetF32();
-            this.lableOffsetY = input.GetF32();
+            this.lableOffsetY = input.GetF32();
+            this.lableColor = input.GetS32();
+            this.lableSize = input.GetS32();
+            this.lableOutLine = input.GetBool();
         }
         public void WriteExternal(IOutputStream output)
         {
             output.PutUTF(this.unitName);
-            output.PutS32(this.unitID);
             output.PutF32(this.x);
             output.PutF32(this.y);
             output.PutBool(this.mapShow);
@@ -332,7 +350,10 @@ namespace XmdsCommon.EditorData
             output.PutF32(this.offsetX);
             output.PutF32(this.offsetY);
             output.PutF32(this.lableOffsetX);
-            output.PutF32(this.lableOffsetY);
+            output.PutF32(this.lableOffsetY);
+            output.PutS32(this.lableColor);
+            output.PutS32(this.lableSize);
+            output.PutBool(this.lableOutLine);
         }
     }