Ejemplo n.º 1
0
        public bool OpcodePartialMatch()
        {
            var opcodeFile = NetworkController.Instance.LoadOpcodeCheck;

            NetworkController.Instance.LoadOpcodeCheck = null;
            var    file = new System.IO.StreamReader(opcodeFile);
            string line;
            bool   matched = true;

            while ((line = file.ReadLine()) != null)
            {
                line = line.Replace("=", "");
                var match = Regex.Match(line, @"(?i)^\s*([a-z_0-9]+)\s+(\d+)\s*$");
                Enum.TryParse(match.Groups[1].Value, out OpcodeEnum opcodeName);
                OpcodeId opcodeId = OpcodeId.Parse(match.Groups[2].Value);

                if (KnownOpcode.ContainsKey(opcodeId) && KnownOpcode[opcodeId] != opcodeName)
                {
                    Console.WriteLine("Incorrect match type 1 for " + KnownOpcode[opcodeId] + " : " + opcodeId);
                    matched = false;
                }
                else if (ReverseKnownOpcode.ContainsKey(opcodeName) && ReverseKnownOpcode[opcodeName] != opcodeId)
                {
                    Console.WriteLine("Incorrect match type 2 for " + opcodeName + " : " + opcodeId);
                    matched = false;
                }
                else if (!ReverseKnownOpcode.ContainsKey(opcodeName) && !KnownOpcode.ContainsKey(opcodeId))
                {
                    // Stay silent if the parser didn't found every opcode.
                    // TODO: add option for strict match: aka -> this case generate error
                    if (NetworkController.Instance.StrictCheck)
                    {
                        Console.WriteLine("Missing match for " + opcodeName + " : " + opcodeId);
                        matched = false;
                    }
                }
                else
                {
                    Console.WriteLine("Correct match for " + KnownOpcode[opcodeId] + " : " + opcodeId);
                }
            }

            file.Close();
            return(matched);
        }
Ejemplo n.º 2
0
        public void OpcodeLoadKnown()
        {
            var opcodeFile = NetworkController.Instance.LoadOpcodeForViewing;

            NetworkController.Instance.LoadOpcodeForViewing = null;
            KnownOpcode.Clear();
            ReverseKnownOpcode.Clear();
            NetworkController.Instance.UiUpdateKnownOpcode.Clear();
            var    file = new System.IO.StreamReader(opcodeFile);
            string line;

            while ((line = file.ReadLine()) != null)
            {
                line = line.Replace("=", "");
                var match = Regex.Match(line, @"(?i)^\s*([a-z_0-9]+)\s+(\d+)\s*$");
                Enum.TryParse(match.Groups[1].Value, out OpcodeEnum opcodeName);
                OpcodeId opcodeId = OpcodeId.Parse(match.Groups[2].Value);
                SetOpcode(opcodeId, opcodeName);
            }
            file.Close();
            _viewOnly = true;
        }