Ejemplo n.º 1
0
        // Updates the list of all scripts that should be checked.
        void UpdateYarnScriptList()
        {
            // Clear the list of files
            checkResults.Clear();

            // Clear the list of diagnoses
            diagnoses = new List <Yarn.Analysis.Diagnosis>();

            // Find all TextAssets
            var list = AssetDatabase.FindAssets("t:textasset");

            foreach (var guid in list)
            {
                // Filter the list to only include .json files
                var path = AssetDatabase.GUIDToAssetPath(guid);
                if (path.EndsWith(".json"))
                {
                    var asset = AssetDatabase.LoadAssetAtPath <TextAsset>(path);

                    var newResult = new CheckerResult(asset);

                    checkResults.Add(newResult);
                }
            }
        }
Ejemplo n.º 2
0
 public static ServiceStatus AsServiceStatus(this CheckerResult checkerResult)
 {
     return(checkerResult switch
     {
         CheckerResult.OK => ServiceStatus.OK,
         CheckerResult.MUMBLE => ServiceStatus.MUMBLE,
         CheckerResult.OFFLINE => ServiceStatus.OFFLINE,
         _ => ServiceStatus.INTERNAL_ERROR,
     });
        static void DrawScriptGUI(CheckerResult result)
        {
            EditorGUILayout.BeginHorizontal();

            // What icon should we use for this script?
            Texture image;

            switch (result.state)
            {
            case CheckerResult.State.NotTested:
                image = null;
                break;

            case CheckerResult.State.Ignored:
                image = Icons.ignoredIcon;
                break;

            case CheckerResult.State.Passed:
                image = Icons.successIcon;
                break;

            case CheckerResult.State.Failed:
                image = Icons.failedIcon;
                break;

            default:
                throw new System.ArgumentOutOfRangeException();
            }

            // Draw the image and the label name
            EditorGUILayout.LabelField(new GUIContent(image), GUILayout.Width(20));
            EditorGUILayout.LabelField(result.script.name);

            EditorGUILayout.EndHorizontal();

            // Draw any messages resulting from this script
            if (result.messages.Length > 0)
            {
                EditorGUI.indentLevel += 2;

                foreach (var message in result.messages)
                {
                    EditorGUILayout.HelpBox(message.message, message.type);
                }

                EditorGUI.indentLevel -= 2;
            }
        }
        static void DrawScriptGUI(CheckerResult result)
        {
            EditorGUILayout.BeginHorizontal ();

            // What icon should we use for this script?
            Texture image;
            switch (result.state) {
            case CheckerResult.State.NotTested:
                image = null;
                break;
            case CheckerResult.State.Ignored:
                image = Icons.ignoredIcon;
                break;
            case CheckerResult.State.Passed:
                image = Icons.successIcon;
                break;
            case CheckerResult.State.Failed:
                image = Icons.failedIcon;
                break;
            default:
                throw new System.ArgumentOutOfRangeException ();
            }

            // Draw the image and the label name
            EditorGUILayout.LabelField (new GUIContent (image), GUILayout.Width (20));
            EditorGUILayout.LabelField (result.script.name);

            EditorGUILayout.EndHorizontal ();

            // Draw any messages resulting from this script
            if (result.messages.Length > 0) {

                EditorGUI.indentLevel += 2;

                foreach (var message in result.messages) {

                    EditorGUILayout.HelpBox(message.message, message.type);

                }

                EditorGUI.indentLevel -= 2;
            }
        }
        void UpdateJSONList()
        {
            // Find all TextAssets

            var list = AssetDatabase.FindAssets("t:textasset");

            checkResults.Clear();
            diagnoses = new List <Yarn.Analysis.Diagnosis>();;

            foreach (var guid in list)
            {
                var path = AssetDatabase.GUIDToAssetPath(guid);
                if (path.EndsWith(".json"))
                {
                    var asset = AssetDatabase.LoadAssetAtPath <TextAsset>(path);

                    var newResult = new CheckerResult(asset);

                    checkResults.Add(newResult);
                }
            }
        }
        // Validates a single script.
        ValidationMessage[] ValidateFile(TextAsset script, Analysis.Context analysisContext, out CheckerResult.State result)
        {
            var messageList = new List<ValidationMessage>();

            var variableStorage = new Yarn.MemoryVariableStore();

            var dialog = new Dialogue(variableStorage);

            bool failed = false;

            dialog.LogErrorMessage = delegate (string message) {
                var msg = new ValidationMessage();
                msg.type = MessageType.Error;
                msg.message = message;
                messageList.Add(msg);

                // any errors means this validation failed
                failed = true;
            };

            dialog.LogDebugMessage = delegate (string message) {
                var msg = new ValidationMessage();
                msg.type = MessageType.Info;
                msg.message = message;
                messageList.Add(msg);
            };

            try {
                dialog.LoadString(script.text,script.name);
            } catch (System.Exception e) {
                dialog.LogErrorMessage(e.Message);
            }

            dialog.Analyse(analysisContext);

            if (failed) {
                result = CheckerResult.State.Failed;
            } else {
                result = CheckerResult.State.Passed;
            }

            return messageList.ToArray();
        }
        void UpdateJSONList()
        {
            // Find all TextAssets

            var list = AssetDatabase.FindAssets("t:textasset");

            checkResults.Clear();
            diagnoses = new List<Yarn.Analysis.Diagnosis>();;

            foreach (var guid in list) {

                var path = AssetDatabase.GUIDToAssetPath(guid);
                if (path.EndsWith(".json")) {
                    var asset = AssetDatabase.LoadAssetAtPath<TextAsset>(path);

                    var newResult = new CheckerResult(asset);

                    checkResults.Add(newResult);
                }

            }
        }
Ejemplo n.º 8
0
        CheckerResult CheckCurrentWeatherInfo()
        {
            FeitionPoster poster = new FeitionPoster(this.ReceiverMan.FeitionAccount);
            OWMCurWeather record = null;

            try
            {
                OWMWebRequest <OWMCurWeather> req = new OWMWebRequest <OWMCurWeather>(
                    OWMPublic.OWMRequest(OWMRequestKind.CurrentWeather),
                    this.ReceiverMan.Location.OWM.CityID,
                    this.ReceiverMan.Location.OWM.CityName);
                req.Coordinary = this.ReceiverMan.Location.OWM.Coordinary;
                req.Language   = "zh_cn";
                record         = req.GetResponse();
            }
            catch (Exception ex)
            {
                CheckerLogWrite(string.Format("CheckCurrentWeatherInfo: {0}", ex.ToString()));
            }

            if (record == null)
            {
                CheckerLogWrite("OWMWebRequest<OWMCurWeather>:GetResponse returns null.");
                return(CheckerResult.NetworkIssue);
            }

            if (HRWNRiskDefinition.Instance.IsRiskWeather(record))
            {
                // Maybe the fog weather is fake if there is.
                CheckerResult cResult = CheckChineseSpecialFogWeather(record);
                switch (cResult)
                {
                case CheckerResult.Sent:
                case CheckerResult.Existing:
                case CheckerResult.IsNotRisk:
                {
                    CheckerLogWrite("Current Weather: This is a chinese fake fog, report AQI successfully instead.");
                    // and we just regard it as a good check process is done.
                    return(CheckerResult.Sent);
                }

                case CheckerResult.NetworkIssue:
                case CheckerResult.DataIssue:
                {
                    CheckerLogWrite("Current Weather: Not sure whether this is a chinese fake fog as it failed to get AQI data.");
                    // and we just regard it as a good check process is done.
                    return(CheckerResult.Sent);
                }
                }

                string str = record.GetReadableText(this.ReceiverMan.Location.OWM.CityNickName);
                poster.AppendMessage(str);

                bool fExist = curWeatherHistoryList.Exists(record);
                if (fExist)
                {
                    //ConsoleMe.WriteLine("Existing current weather: {0}.", record.ToString());
                    CheckerLogWrite("Existing current weather.");
                    return(CheckerResult.Existing);
                }

                bool status = poster.Send();
                if (!fExist && status)
                {
                    curWeatherHistoryList.Add(record);
                }
                poster.ResetMessage();
                return(CheckerResult.Sent);
            }
            else
            {
                CheckerLogWrite("OWMCurWeather: isn't a risk.");
                return(CheckerResult.IsNotRisk);
            }
        }