Example #1
0
 private void DeleteMessage()
 {
     File.Delete(m_MessageFilePaths[m_SelectedFile]);
     File.Delete(m_MessageFilePaths[m_SelectedFile] + ".meta");
     m_Message      = null;
     m_MessageItems = null;
     m_SelectedFile = -1;
     ReadMessageFileLists();
     AssetDatabase.Refresh();
     OnGUI();
 }
Example #2
0
        public static ProtobufMessage Copy(ProtobufMessage origin)
        {
            ProtobufMessage newProtobufMessage = new ProtobufMessage
            {
                Name         = origin.Name,
                EnumItems    = new List <EnumItem>(),
                MessageItems = new List <MessageItem>()
            };

            origin.EnumItems.ForEach(i => newProtobufMessage.EnumItems.Add(EnumItem.Copy(i)));
            origin.MessageItems.ForEach(i => newProtobufMessage.MessageItems.Add(MessageItem.Copy(i)));
            return(newProtobufMessage);
        }
Example #3
0
 private void OnEnable()
 {
     if (reset)
     {
         if (m_SelectedFile == -1)
         {
             m_Message = null;
         }
         else
         {
             LoadAndDeserializeFile();
         }
     }
 }
Example #4
0
        private void LoadAndDeserializeFile()
        {
            List <string> lines = new List <string>();

            m_Message = new ProtobufMessage {
                MessageItems = new List <MessageItem>(), EnumItems = new List <EnumItem>()
            };
            StreamReader file = new StreamReader(m_MessageFilePaths[m_SelectedFile]);
            var          line = file.ReadLine();

            while (line != null)
            {
                lines.Add(line);
                line = file.ReadLine();
            }
            file.Close();

            bool     inItem   = false;
            bool     inEnum   = false;
            EnumItem enumItem = null;

            foreach (var line1 in lines)
            {
                if (string.IsNullOrWhiteSpace(line1))
                {
                    continue;
                }
                var words = line1.Trim().Split(' ');

                if (inItem)
                {
                    if (words[0] == "enum")
                    {
                        inEnum   = true;
                        enumItem = new EnumItem {
                            EnumItems = new Dictionary <string, string>()
                        };
                    }

                    if (inEnum)
                    {
                        if (words[0] == "enum")
                        {
                            enumItem.Name = words[1];
                        }
                        else if (words[0] == "}")
                        {
                            inEnum = false;
                            m_Message.EnumItems.Add(enumItem);
                        }
                        else
                        {
                            enumItem.EnumItems[words[0]] = words[2].Substring(0, words[2].Length - 1);
                        }
                        continue;
                    }
                    if (words[0] == "}")
                    {
                        continue;
                    }
                    var messageItem = new MessageItem {
                        Repeated = false, Optional = false
                    };
                    bool hasType = false;
                    bool hasName = false;
                    foreach (var word in words)
                    {
                        switch (word)
                        {
                        case "repeated":
                            messageItem.Repeated = true;
                            break;

                        case "optional":
                            messageItem.Optional = true;
                            break;

                        default:
                            if (!hasType)
                            {
                                messageItem.Type = word;
                                hasType          = true;
                                break;
                            }
                            else if (!hasName)
                            {
                                messageItem.Name = word;
                                hasName          = true;
                                break;
                            }
                            else if (word.EndsWith(";"))
                            {
                                var numStr = word.Substring(0, word.Length - 1);
                                messageItem.Id = numStr;
                                break;
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                    m_Message.MessageItems.Add(messageItem);
                }
                else
                {
                    switch (words[0])
                    {
                    case "message":
                        m_Message.Name = words[1];
                        inItem         = true;
                        break;

                    default:
                        break;
                    }
                }
            }
            m_MessageItems = m_Message.MessageItems;
            m_EnumItems    = m_Message.EnumItems;
            GetAllTypes();
            m_OriginMessage = ProtobufMessage.Copy(m_Message);
        }