123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using CommonLang.Xml;
- using System.Xml;
- using System.IO;
- using CommonLang;
- namespace CommonAI.Zone.ZoneEditor.Plugin
- {
- // 编辑器发送到场景的消息
- namespace EditorToScene
- {
- /// <summary>
- /// 地形数据通知
- /// </summary>
- public class MsgSetScene
- {
- public string ProjectName;
- public string FileName;
- public string ResourceDir;
- public string ResourceProperty;
- public ZoneInfo Data;
- }
- /// <summary>
- /// 增加单位数据,如果单位已存在,则更新信息
- /// </summary>
- public class MsgPutUnit
- {
- public UnitData Data;
- public UnitInfo UnitData;
- }
- /// <summary>
- /// 增加物品数据,如果单位已存在,则更新信息
- /// </summary>
- public class MsgPutItem
- {
- public ItemData Data;
- public ItemTemplate Item;
- }
- /// <summary>
- /// 增加单位数据,如果单位已存在,则更新信息
- /// </summary>
- public class MsgPutPoint
- {
- public PointData Data;
- }
- /// <summary>
- /// 增加单位数据,如果单位已存在,则更新信息
- /// </summary>
- public class MsgPutRegion
- {
- public RegionData Data;
- }
- /// <summary>
- /// 增加装饰物数据,如果单位已存在,则更新信息
- /// </summary>
- public class MsgPutDecoration
- {
- public DecorationData Data;
- }
- /// <summary>
- /// 增加区域数据,如果单位已存在,则更新信息
- /// </summary>
- public class MsgPutArea
- {
- public AreaData Data;
- }
- /// <summary>
- /// 删除一个单位
- /// </summary>
- public class MsgRemoveObject
- {
- public string Name;
- }
- /// <summary>
- /// 单位被重命名
- /// </summary>
- public class MsgRenameObject
- {
- public string SrcName;
- public string DstName;
- }
- /// <summary>
- /// 由编辑器UI层选中一个单位
- /// </summary>
- public class MsgSelectObject
- {
- public string Name;
- /// <summary>
- /// 摄像机是否聚焦此单位
- /// </summary>
- public bool IsLocateCamera;
- }
- /// <summary>
- /// 设置是否显示地形阻挡
- /// </summary>
- public class MsgShowTerrain
- {
- public bool Show;
- }
- /// <summary>
- /// 定位摄像机
- /// </summary>
- public class MsgLocateCamera
- {
- public float X;
- public float Y;
- }
- /// <summary>
- /// 设置笔刷
- /// </summary>
- public class MsgSetTerrainBrush
- {
- public enum BrushType
- {
- Round,
- Rectangle,
- }
- public int ARGB = (int)(0x7F00FF00L);
- public int Size = 1;
- public BrushType Brush = BrushType.Round;
- public static float[] ToARGB_F(int ARGB)
- {
- float[] argb = new float[4];
- argb[0] = ((ARGB >> 24) & 0xFF) / 255f;
- argb[1] = ((ARGB >> 16) & 0xFF) / 255f;
- argb[2] = ((ARGB >> 8 ) & 0xFF) / 255f;
- argb[3] = ((ARGB ) & 0xFF) / 255f;
- return argb;
- }
- public static int FromARGB_F(float[] argb)
- {
- int ARGB = 0;
- ARGB |= ((int)(argb[0] * 255)) << 24;
- ARGB |= ((int)(argb[1] * 255)) << 16;
- ARGB |= ((int)(argb[2] * 255)) << 8;
- ARGB |= ((int)(argb[3] * 255));
- return ARGB;
- }
- public static float[] ToRGBA_F(int ARGB)
- {
- float[] rgba = new float[4];
- rgba[3] = ((ARGB >> 24) & 0xFF) / 255f;
- rgba[0] = ((ARGB >> 16) & 0xFF) / 255f;
- rgba[1] = ((ARGB >> 8 ) & 0xFF) / 255f;
- rgba[2] = ((ARGB) & 0xFF) / 255f;
- return rgba;
- }
- public static int FromRGBA_F(float[] rgba)
- {
- int ARGB = 0;
- ARGB |= ((int)(rgba[3] * 255)) << 24;
- ARGB |= ((int)(rgba[0] * 255)) << 16;
- ARGB |= ((int)(rgba[1] * 255)) << 8;
- ARGB |= ((int)(rgba[2] * 255));
- return ARGB;
- }
- }
- /// <summary>
- /// 设置编辑模式
- /// </summary>
- public class MsgSetEditorMode
- {
- public const int MODE_OBJECT = 0;
- public const int MODE_TERRAIN = 1;
- public int Mode = MODE_OBJECT;
- }
- }
- // 场景发回编辑器的消息
- namespace SceneToEditor
- {
- /// <summary>
- /// 场景初始化状态
- /// </summary>
- public class RspEditorState
- {
- public const int STATE_SUCCEED = 1;
- public int State = STATE_SUCCEED;
- }
- /// <summary>
- /// 设置笔刷
- /// </summary>
- public class RspTerrainBrushChanged
- {
- public int Size = 1;
- }
- /// <summary>
- /// 有单位被选中
- /// </summary>
- public class RspOnObjectSelected
- {
- public string Name;
- public bool Selected;
- }
- /// <summary>
- /// 有单位位置改变
- /// </summary>
- public class RspObjectPositionChanged
- {
- public string Name;
- public float x;
- public float y;
- }
- /// <summary>
- /// 有单位尺寸改变
- /// </summary>
- public class RspObjectSizeChanged
- {
- public string Name;
- public float x;
- public float y;
- }
- /// <summary>
- /// 有单位方向改变
- /// </summary>
- public class RspObjectDirectionChanged
- {
- public string Name;
- public float dir;
- }
- /// <summary>
- /// 路点链接数据改变
- /// </summary>
- public class RspPointLinkChanged
- {
- public string SrcPointName;
- public string DstPointName;
- }
- /// <summary>
- /// 最终回馈场景地形数据
- /// </summary>
- public class RspZoneFlagChanged
- {
- /// <summary>
- /// 场景坐标
- /// </summary>
- public int SceneX;
- /// <summary>
- /// 场景坐标
- /// </summary>
- public int SceneY;
- /// <summary>
- /// 标志
- /// </summary>
- public int Flag;
- public RspZoneFlagChanged() { }
- public RspZoneFlagChanged(int x, int y, int flag)
- {
- this.SceneX = x;
- this.SceneY = y;
- this.Flag = flag;
- }
- public override bool Equals(object obj)
- {
- if (obj is RspZoneFlagChanged)
- {
- RspZoneFlagChanged other = obj as RspZoneFlagChanged;
- return other.Flag == this.Flag && other.SceneX == this.SceneX && other.SceneY == this.SceneY;
- }
- return false;
- }
- public override int GetHashCode()
- {
- return base.GetHashCode();
- }
- }
- /// <summary>
- /// 最终回馈场景地形数据
- /// </summary>
- public class RspZoneFlagBathChanged
- {
- public List<RspZoneFlagChanged> Flags = new List<RspZoneFlagChanged>();
- }
- /// <summary>
- /// 摄像机位置或者尺寸改变
- /// </summary>
- public class RspCameraChanged
- {
- public float X;
- public float Y;
- public float W;
- public float H;
- }
- }
- public class EditorMessageDecoder
- {
- public static object DecodeMessage(string text)
- {
- byte[] buffer = Convert.FromBase64String(text);
- string xml = Encoding.UTF8.GetString(buffer);
- XmlDocument doc = new XmlDocument();
- doc.LoadXml(xml);
- object obj = XmlUtil.XmlToObject(doc);
- return obj;
- }
- public static string EncodeMessage(object msg)
- {
- XmlDocument doc = XmlUtil.ObjectToXml(msg);
- string text = doc.OuterXml;
- string str = Convert.ToBase64String(Encoding.UTF8.GetBytes(text));
- return str;
- }
- }
- }
|