コード例 #1
0
 public int Translate(out TranslatedMessage translatedMessage, string text,
                      TranslateLanguage destinationLanguage, TranslateLanguage sourceLanguage = TranslateLanguage.None,
                      TranslateType type = TranslateType.Chat, ProfanityType profanity = ProfanityType.Off,
                      bool postProfanity = false, int timeout = 0)
 {
     return(Translate(out translatedMessage, text, GetTranslatedLanguage(destinationLanguage),
                      GetTranslatedLanguage(sourceLanguage), type, profanity, postProfanity, timeout));
 }
コード例 #2
0
        private Vector3 TranslateControl(TranslateType mode, ref float amount, bool multByTime)
        {
            GUIUnstrip.BeginHorizontal(new GUILayoutOption[0]);
            GUILayout.Label($"<color=cyan><b>{(m_localContext ? "Local " : "")}{mode}</b></color>:",
                            new GUILayoutOption[] { GUILayout.Width(m_localContext ? 110 : 65) });

            var transform = TargetGO.transform;

            switch (mode)
            {
            case TranslateType.Position:
                var pos = m_localContext ? transform.localPosition : transform.position;
                GUILayout.Label(pos.ToString(), new GUILayoutOption[] { GUILayout.Width(250) });
                break;

            case TranslateType.Rotation:
                var rot = m_localContext ? transform.localEulerAngles : transform.eulerAngles;
                GUILayout.Label(rot.ToString(), new GUILayoutOption[] { GUILayout.Width(250) });
                break;

            case TranslateType.Scale:
                GUILayout.Label(transform.localScale.ToString(), new GUILayoutOption[] { GUILayout.Width(250) });
                break;
            }
            GUILayout.EndHorizontal();

            Vector3 input = m_cachedInput[(int)mode];

            GUIUnstrip.BeginHorizontal(new GUILayoutOption[0]);
            GUI.skin.label.alignment = TextAnchor.MiddleRight;

            GUILayout.Label("<color=cyan>X:</color>", new GUILayoutOption[] { GUILayout.Width(20) });
            PlusMinusFloat(ref input.x, amount, multByTime);

            GUILayout.Label("<color=cyan>Y:</color>", new GUILayoutOption[] { GUILayout.Width(20) });
            PlusMinusFloat(ref input.y, amount, multByTime);

            GUILayout.Label("<color=cyan>Z:</color>", new GUILayoutOption[] { GUILayout.Width(20) });
            PlusMinusFloat(ref input.z, amount, multByTime);

            GUILayout.Label("+/-:", new GUILayoutOption[] { GUILayout.Width(30) });
            var amountInput = amount.ToString("F3");

            amountInput = GUIUnstrip.TextField(amountInput, new GUILayoutOption[] { GUILayout.Width(60) });
            if (float.TryParse(amountInput, out float f))
            {
                amount = f;
            }

            GUI.skin.label.alignment = TextAnchor.UpperLeft;
            GUILayout.EndHorizontal();

            return(input);
        }
コード例 #3
0
    // 引导
    public virtual Vector3[] Guide(Canvas canvas, RectTransform target, TranslateType translateType = TranslateType.Direct, float time = 1)
    {
        // 初始化材质
        material = transform.GetComponent <Image>().material;

        this.target = target;


        if (target != null)
        {
            //获取中心点
            target.GetWorldCorners(targetCorners);

            //把世界坐标 转成屏幕坐标
            for (int i = 0; i < targetCorners.Length; i++)
            {
                targetCorners[i] = WorldToScreenPoint(canvas, targetCorners[i]);
            }
            // 计算中心点
            center.x = targetCorners[0].x + (targetCorners[3].x - targetCorners[0].x) / 2;
            center.y = targetCorners[0].y + (targetCorners[1].y - targetCorners[0].y) / 2;
            Debug.Log("center x:" + center.x + "y:" + center.y);

            //center.x =

            //Debug.Log(" 移动类型: " + translateType);

            switch (translateType)
            {
            case TranslateType.Direct:
                // 设置中心点
                material.SetVector("_Center", center);
                break;

            case TranslateType.Slow:

                startCenter = material.GetVector("_Center");

                isMoving    = true;
                centerTimer = 0;
                centerTime  = time;
                break;
            }
        }
        else
        {
            center           = Vector3.zero;
            targetCorners[0] = new Vector3(-2000, -2000, 0);
            targetCorners[1] = new Vector3(-2000, 2000, 0);
            targetCorners[2] = new Vector3(2000, 2000, 0);
            targetCorners[3] = new Vector3(2000, -2000, 0);
        }
        return(targetCorners);
    }
コード例 #4
0
    private float scaleHeight;   // 动态变化的高

    // 引导
    public override Vector3[] Guide(Canvas canvas, RectTransform target, TranslateType translateType = TranslateType.Direct, float time = 1)
    {
        base.Guide(canvas, target, translateType, time);

        // 计算宽 和 高
        width  = (targetCorners[3].x - targetCorners[0].x) / 2;
        height = (targetCorners[1].y - targetCorners[0].y) / 2;

        material.SetFloat("_SliderX", width);
        material.SetFloat("_SliderY", height);

        return(targetCorners);
    }
コード例 #5
0
    private float scaleR;   // 变化之后的半径大小



    public override Vector3[] Guide(Canvas canvas, RectTransform target, TranslateType translateType = TranslateType.Direct, float moveTime = 1)
    {
        base.Guide(canvas, target, translateType, moveTime);
        float width  = (targetCorners[3].x - targetCorners[0].x) / 2;
        float height = (targetCorners[1].y - targetCorners[0].y) / 2;

        // 计算半径
        //r  = Mathf.Sqrt( width * width + height * height);
        r = Mathf.Min(width, height);
        //
        this.material.SetFloat("_Slider", r);
        return(targetCorners);
    }
コード例 #6
0
    public Vector3[] Guide(Canvas canvas, RectTransform target, GuideType guideType, TranslateType translateType = TranslateType.Direct, float time = 1)
    {
        Guide(target, guideType);

        switch (guideType)
        {
        case GuideType.Rect:
            return(rectGuide.Guide(canvas, target, translateType, time));

        case GuideType.Circle:
            return(circleGuide.Guide(canvas, target, translateType, time));
        }
        return(null);
    }
コード例 #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="text"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static string Convert(string text, TranslateType type)
        {
            var dictionary = type == TranslateType.Gost ? GostDictionary : IsoDictionary;

            return(new string(text.Select(c =>
            {
                var str = c.ToString();
                var isLower = str.ToLower() == str;
                var key = dictionary.ContainsKey(c) ? c : str.ToUpper()[0];
                var newString = dictionary.ContainsKey(key) ? dictionary[key] : str;

                return isLower ? newString.ToLower() : newString;
            }).SelectMany(i => i).ToArray()));
        }
コード例 #8
0
 private void OnGUI()
 {
     mTranslateType = (TranslateType)EditorGUILayout.EnumPopup("Type", mTranslateType);
     EditorGUILayout.BeginHorizontal();
     EditorGUILayout.TextField("Target Folder", targetFolder);
     if (GUILayout.Button("Browser", GUILayout.Width(100)))
     {
         var newPath = EditorUtility.OpenFolderPanel("Select target folder", targetFolder, null);
         if (newPath.Contains(Application.dataPath))
         {
             targetFolder = newPath.Replace(Application.dataPath, "Assets");
         }
     }
     EditorGUILayout.EndHorizontal();
     EditorGUILayout.BeginHorizontal();
     EditorGUILayout.TextField("Resource Folder", resourceFolder);
     if (GUILayout.Button("Browser", GUILayout.Width(100)))
     {
         var newPath = EditorUtility.OpenFolderPanel("Select resource folder", resourceFolder, null);
         if (newPath.Contains(Application.dataPath))
         {
             resourceFolder = newPath.Replace(Application.dataPath, "Assets");
         }
     }
     EditorGUILayout.EndHorizontal();
     if (mTranslateType == TranslateType.Sprite2Atlas)
     {
         EditorGUILayout.LabelField("Atlas Settings");
         mSetting.maxAtlasSize = EditorGUILayout.IntPopup("Max Size", mSetting.maxAtlasSize, Array.ConvertAll(PackConst.AtlasSizeList, value => value.ToString()), PackConst.AtlasSizeList);
         mSetting.padding      = EditorGUILayout.IntField("Padding", mSetting.padding);
         mSetting.isPOT        = EditorGUILayout.Toggle("Power Of 2", mSetting.isPOT);
         GUI.enabled           = mSetting.isPOT;
         if (!mSetting.isPOT)
         {
             mSetting.forceSquare = false;
         }
         mSetting.forceSquare = EditorGUILayout.Toggle("Force Square", mSetting.forceSquare);
         GUI.enabled          = true;
     }
     if (GUILayout.Button("Pack", GUILayout.MaxWidth(200)))
     {
         SpriteRefCollector.Instance.Translate(targetFolder, mTranslateType == TranslateType.Sprite2Atlas, resourceFolder, mSetting);
     }
 }
コード例 #9
0
        public static async Task TranslateAsync(IPathManager pathManager, IDatabaseManager databaseManager, IPluginManager pluginManager, Site site, int channelId, int contentId, int targetSiteId, int targetChannelId, TranslateType translateType, ICreateManager createManager, int adminId)
        {
            if (site == null || channelId <= 0 || contentId <= 0 || targetSiteId <= 0 || targetChannelId <= 0)
            {
                return;
            }

            var targetSite = await databaseManager.SiteRepository.GetAsync(targetSiteId);

            var targetChannelInfo = await databaseManager.ChannelRepository.GetAsync(targetChannelId);

            var channel = await databaseManager.ChannelRepository.GetAsync(channelId);

            var contentInfo = await databaseManager.ContentRepository.GetAsync(site, channel, contentId);

            if (contentInfo == null)
            {
                return;
            }

            contentInfo = contentInfo.Clone <Content>();

            if (translateType == TranslateType.Copy)
            {
                await pathManager.MoveFileByContentAsync(site, targetSite, contentInfo);

                contentInfo.SiteId    = targetSiteId;
                contentInfo.SourceId  = contentInfo.ChannelId;
                contentInfo.ChannelId = targetChannelId;
                contentInfo.Taxis     = 0;
                var theContentId = await databaseManager.ContentRepository.InsertAsync(targetSite, targetChannelInfo, contentInfo);

                var handlers = pluginManager.GetExtensions <PluginContentHandler>();
                foreach (var handler in handlers)
                {
                    try
                    {
                        handler.OnTranslated(site.Id, channel.Id, contentId, targetSiteId, targetChannelId, theContentId);
                        await handler.OnTranslatedAsync(site.Id, channel.Id, contentId, targetSiteId, targetChannelId, theContentId);
                    }
                    catch (Exception ex)
                    {
                        await databaseManager.ErrorLogRepository.AddErrorLogAsync(ex);
                    }
                }

                //foreach (var plugin in oldPluginManager.GetPlugins())
                //{
                //    try
                //    {
                //        plugin.OnContentTranslateCompleted(new ContentTranslateEventArgs(site.Id, channel.Id, contentId, targetSiteId, targetChannelId, theContentId));
                //    }
                //    catch (Exception ex)
                //    {
                //        await databaseManager.ErrorLogRepository.AddErrorLogAsync(plugin.PluginId, ex, nameof(plugin.OnContentTranslateCompleted));
                //    }
                //}

                await createManager.CreateContentAsync(targetSite.Id, contentInfo.ChannelId, theContentId);

                await createManager.TriggerContentChangedEventAsync(targetSite.Id, contentInfo.ChannelId);
            }
            else if (translateType == TranslateType.Cut)
            {
                await pathManager.MoveFileByContentAsync(site, targetSite, contentInfo);

                contentInfo.SiteId    = targetSiteId;
                contentInfo.SourceId  = contentInfo.ChannelId;
                contentInfo.ChannelId = targetChannelId;
                contentInfo.Taxis     = 0;

                var newContentId = await databaseManager.ContentRepository.InsertAsync(targetSite, targetChannelInfo, contentInfo);

                var handlers = pluginManager.GetExtensions <PluginContentHandler>();
                foreach (var handler in handlers)
                {
                    try
                    {
                        handler.OnTranslated(site.Id, channel.Id, contentId, targetSiteId, targetChannelId, newContentId);
                        await handler.OnTranslatedAsync(site.Id, channel.Id, contentId, targetSiteId, targetChannelId, newContentId);
                    }
                    catch (Exception ex)
                    {
                        await databaseManager.ErrorLogRepository.AddErrorLogAsync(ex);
                    }
                }

                //foreach (var plugin in oldPluginManager.GetPlugins())
                //{
                //    try
                //    {
                //        plugin.OnContentTranslateCompleted(new ContentTranslateEventArgs(site.Id, channel.Id, contentId, targetSiteId, targetChannelId, newContentId));
                //    }
                //    catch (Exception ex)
                //    {
                //        await databaseManager.ErrorLogRepository.AddErrorLogAsync(plugin.PluginId, ex, nameof(plugin.OnContentTranslateCompleted));
                //    }
                //}

                await databaseManager.ContentRepository.TrashContentAsync(site, channel, contentId, adminId);

                //await databaseManager.ContentRepository.DeleteAsync(oldPluginManager, pluginManager, site, channel, contentId);

                //GlobalSettings.ContentRepository.DeleteContents(site.Id, tableName, TranslateUtils.ToIntList(contentId), channelId);

                await createManager.CreateContentAsync(targetSite.Id, contentInfo.ChannelId, newContentId);

                await createManager.TriggerContentChangedEventAsync(targetSite.Id, contentInfo.ChannelId);
            }
            else if (translateType == TranslateType.Reference)
            {
                if (contentInfo.ReferenceId != 0)
                {
                    return;
                }

                contentInfo.SiteId      = targetSiteId;
                contentInfo.SourceId    = contentInfo.ChannelId;
                contentInfo.ChannelId   = targetChannelId;
                contentInfo.ReferenceId = contentId;
                contentInfo.Taxis       = 0;
                int theContentId = await databaseManager.ContentRepository.InsertAsync(targetSite, targetChannelInfo, contentInfo);

                await createManager.CreateContentAsync(targetSite.Id, contentInfo.ChannelId, theContentId);

                await createManager.TriggerContentChangedEventAsync(targetSite.Id, contentInfo.ChannelId);
            }
        }
コード例 #10
0
    public void Guide(Canvas canvas, RectTransform target, GuideType guideType, float scale, float time, TranslateType translateType = TranslateType.Direct, float moveTime = 1)
    {
        Guide(target, guideType);

        switch (guideType)
        {
        case GuideType.Rect:
            rectGuide.Guide(canvas, target, scale, time, translateType, moveTime);
            break;

        case GuideType.Circle:
            circleGuide.Guide(canvas, target, scale, time, translateType, moveTime);
            break;
        }
    }
コード例 #11
0
        private int Translate(out TranslatedMessage translatedMessage, string text,
                              string destinationLanguage, string sourceLanguage = "",
                              TranslateType type = TranslateType.Chat, ProfanityType profanity = ProfanityType.Off,
                              bool postProfanity = false, int timeout = 0)
        {
            translatedMessage = null;

            TCPClient client = GetCoreClient();

            if (client == null)
            {
                return(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION);
            }

            Quest quest = new Quest("translate");

            quest.Param("text", text);
            quest.Param("dst", destinationLanguage);

            if (sourceLanguage.Length > 0)
            {
                quest.Param("src", sourceLanguage);
            }

            if (type == TranslateType.Mail)
            {
                quest.Param("type", "mail");
            }
            else
            {
                quest.Param("type", "chat");
            }

            switch (profanity)
            {
            case ProfanityType.Stop: quest.Param("profanity", "stop"); break;

            case ProfanityType.Censor: quest.Param("profanity", "censor"); break;

            case ProfanityType.Off: quest.Param("profanity", "off"); break;
            }

            quest.Param("postProfanity", postProfanity);

            Answer answer = client.SendQuest(quest, timeout);

            if (answer.IsException())
            {
                return(answer.ErrorCode());
            }

            try
            {
                translatedMessage = new TranslatedMessage
                {
                    source     = answer.Want <string>("source"),
                    target     = answer.Want <string>("target"),
                    sourceText = answer.Want <string>("sourceText"),
                    targetText = answer.Want <string>("targetText")
                };

                return(fpnn.ErrorCode.FPNN_EC_OK);
            }
            catch (Exception)
            {
                return(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE);
            }
        }
コード例 #12
0
        /// <summary>
        /// Represents the HTML attribute "translate".
        /// </summary>
        /// <param name="value">The value.</param>
        /// <returns>The same instance of <see cref="Hex.AttributeBuilders.HtmlAttributeBuilder"/>.</returns>
        public HtmlAttributeBuilder Translate( TranslateType value )
        {
            this.Attributes[ HtmlAttributes.Translate ] = value.ToLowerString();

            return this;
        }
コード例 #13
0
 public virtual void Guide(Canvas canvas, RectTransform target, float scale, float time, TranslateType translateType = TranslateType.Direct, float moveTime = 1)
 {
 }
コード例 #14
0
    public override void Guide(Canvas canvas, RectTransform target, float scale, float time, TranslateType translateType = TranslateType.Direct, float moveTime = 1)
    {
        this.Guide(canvas, target, translateType, moveTime);

        scaleWidth  = width * scale;
        scaleHeight = height * scale;

        isScaling      = true;
        scaleTimer     = 0;
        this.scaleTime = time;
    }
コード例 #15
0
    public override void Guide(Canvas canvas, RectTransform target, float scale, float time, TranslateType translateType = TranslateType.Direct, float moveTime = 1)
    {
        //base.Guide(canvas, target, scale, time);
        this.Guide(canvas, target, translateType, moveTime);

        scaleR = r * scale;
        this.material.SetFloat("_Slider", scaleR);

        this.scaleTime = time;
        isScaling      = true;
        scaleTimer     = 0;
    }
コード例 #16
0
        private static void LoadTranslate(TranslateType TranslateType)
        {
            var Filename = Path.Combine(
                Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),
                "Translations",
                TranslateType.ToString() + ".xml"
                );

            if (!File.Exists(Filename))
            {
                return;
            }

            XmlDocument xml = new XmlDocument();
            XmlNodeList nodes;

            try { xml.Load(Filename); }
            catch { return; }

            switch (TranslateType)
            {
            case TranslateType.ShipTypes:
                Translator.ShipTypeTable.Clear();
                nodes = xml.SelectNodes("/ShipTypes/Type");
                foreach (XmlNode node in nodes)
                {
                    try
                    {
                        int id;
                        if (!int.TryParse(node["ID"].InnerText, out id))
                        {
                            continue;
                        }
                        Translator.ShipTypeTable.AddOrUpdate(id, node["Value"].InnerText, (a, b) => b);
                    }
                    catch { }
                }
                break;

            case TranslateType.ShipNames:
                Translator.ShipNameTable.Clear();
                nodes = xml.SelectNodes("/Ships/Ship");
                foreach (XmlNode node in nodes)
                {
                    try { Translator.ShipNameTable.AddOrUpdate(node["Source"].InnerText, node["Value"].InnerText, (a, b) => b); }
                    catch { }
                }
                break;

            case TranslateType.SlotItemTypes:
                Translator.SlotItemTypeTable.Clear();
                nodes = xml.SelectNodes("/SlotItemTypes/SlotItemType");
                foreach (XmlNode node in nodes)
                {
                    try { Translator.SlotItemTypeTable.AddOrUpdate(node["Source"].InnerText, node["Value"].InnerText, (a, b) => b); }
                    catch { }
                }
                break;

            case TranslateType.SlotItems:
                Translator.SlotItemTable.Clear();
                nodes = xml.SelectNodes("/SlotItems/SlotItem");
                foreach (XmlNode node in nodes)
                {
                    try { Translator.SlotItemTable.AddOrUpdate(node["Source"].InnerText, node["Value"].InnerText, (a, b) => b); }
                    catch { }
                }
                break;

            case TranslateType.Quests:
                Translator.QuestNameTable.Clear();
                Translator.QuestDetailTable.Clear();
                Translator.QuestIdTable.Clear();
                nodes = xml.SelectNodes("/Quests/Quest");
                foreach (XmlNode node in nodes)
                {
                    if (node["NameSource"] != null && node["NameValue"] != null)
                    {
                        try { Translator.QuestNameTable.AddOrUpdate(node["NameSource"].InnerText, node["NameValue"].InnerText, (a, b) => b); }
                        catch { }
                    }

                    if (node["DetailSource"] != null && node["DetailValue"] != null)
                    {
                        try { Translator.QuestDetailTable.AddOrUpdate(node["DetailSource"].InnerText, node["DetailValue"].InnerText, (a, b) => b); }
                        catch { }
                    }

                    if (node["ID"] != null && node["NameValue"] != null && node["DetailValue"] != null)
                    {
                        try
                        {
                            Translator.QuestIdTable.AddOrUpdate(
                                node["ID"].InnerText,
                                new QuestNameDetail
                            {
                                Name   = node["NameValue"].InnerText,
                                Detail = node["DetailValue"].InnerText
                            },
                                (a, b) => b
                                );
                        }
                        catch { }
                    }
                }
                break;

            case TranslateType.Operations:
                Translator.OperationTable.Clear();
                nodes = xml.SelectNodes("/Operations/Map");
                foreach (XmlNode node in nodes)
                {
                    try { Translator.OperationTable.AddOrUpdate(node["Source"].InnerText, node["Value"].InnerText, (a, b) => b); }
                    catch { }
                }
                break;
            }
        }
コード例 #17
0
        //-- Action<TranslatedMessage, errorCode>
        private bool Translate(Action <TranslatedMessage, int> callback, string text,
                               string destinationLanguage, string sourceLanguage = "",
                               TranslateType type = TranslateType.Chat, ProfanityType profanity = ProfanityType.Off,
                               bool postProfanity = false, int timeout = 0)
        {
            TCPClient client = GetCoreClient();

            if (client == null)
            {
                return(false);
            }

            Quest quest = new Quest("translate");

            quest.Param("text", text);
            quest.Param("dst", destinationLanguage);

            if (sourceLanguage.Length > 0)
            {
                quest.Param("src", sourceLanguage);
            }

            if (type == TranslateType.Mail)
            {
                quest.Param("type", "mail");
            }
            else
            {
                quest.Param("type", "chat");
            }

            switch (profanity)
            {
            case ProfanityType.Stop: quest.Param("profanity", "stop"); break;

            case ProfanityType.Censor: quest.Param("profanity", "censor"); break;

            case ProfanityType.Off: quest.Param("profanity", "off"); break;
            }

            quest.Param("postProfanity", postProfanity);

            return(client.SendQuest(quest, (Answer answer, int errorCode) => {
                TranslatedMessage tm = null;

                if (errorCode == fpnn.ErrorCode.FPNN_EC_OK)
                {
                    try
                    {
                        tm = new TranslatedMessage();
                        tm.source = answer.Want <string>("source");
                        tm.target = answer.Want <string>("target");
                        tm.sourceText = answer.Want <string>("sourceText");
                        tm.targetText = answer.Want <string>("targetText");
                    }
                    catch (Exception)
                    {
                        errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE;
                    }
                }
                callback(tm, errorCode);
            }, timeout));
        }
コード例 #18
0
 // everything is enclosed
 var myType      = typeof(Enclosed <>).MakeGenericType(TranslateType(member.Key.Type));