public void ProcessSentences() { Dictionary <uint, NetFriendlySentence> DictionaryStore = new Dictionary <uint, NetFriendlySentence>(); if (Sentences.Length > 0) { //Logger.Log("YOOOOO"); NetFriendlySentence TOPClientFriendlySentence = Sentences[0]; DictionaryStore[Sentences[0].SentenceID] = TOPClientFriendlySentence; //Logger.LogError(JsonConvert.SerializeObject(Sentences)); foreach (var bob in Sentences) { bob.SetSentences(new List <NetFriendlySentence>()); DictionaryStore[bob.SentenceID] = bob; } foreach (var bob in Sentences) { if (bob.SentenceID != 0) { if (DictionaryStore.ContainsKey(bob.HeldBySentenceID)) { //Logger.LogError("added" + bob.ValueVariable); DictionaryStore[bob.HeldBySentenceID].GetSentences().Add(bob); } } } NetFriendlySentence[] _bob = new NetFriendlySentence[1] { TOPClientFriendlySentence }; Sentences = _bob; //Logger.Log("TT > " + JsonConvert.SerializeObject(Sentences)); //Logger.Log(JsonConvert.SerializeObject(Sentences[0].GetSentences())); } }
// public ulong ID; //public string ShelfName; //public bool IsEnabled; //public GameObject Shelf; ////public NetFriendlyBookShelf[] ObscuredBookShelves; //public string ObscuredBookShelves; ////public NetFriendlyBookShelf ObscuredBy; //public string ObscuredBy; //public NetFriendlyBook[] HeldBooks; public static NetFriendlyBook ProcessBook(Librarian.Book _book) { string Classe; Classe = _book.BookClass.GetType().Name; NetFriendlyBook Book = new NetFriendlyBook() { ID = _book.ID, BookClassname = Classe, Title = _book.Title, UnGenerated = _book.UnGenerated }; List <NetFriendlyPage> ListPages = new List <NetFriendlyPage>(); foreach (var bob in _book.GetBindedPages()) { List <NetFriendlySentence> Sentences = new List <NetFriendlySentence>(); NetFriendlyPage Page = new NetFriendlyPage { ID = bob.ID, Variable = bob.Variable.ToString(), VariableName = bob.VariableName, VariableType = bob.VariableType.ToString() }; if (Librarian.UEGetType(Page.VariableType) == null) { Page.VariableType = bob.VariableType.AssemblyQualifiedName; } if (bob.Sentences.Sentences != null && (bob.Sentences.Sentences.Count > 0)) { NetFriendlySentence FriendlySentence = new NetFriendlySentence() { HeldBySentenceID = bob.Sentences.SentenceID }; FriendlySentence.OnPageID = 8888888; Sentences.Add(FriendlySentence); RecursiveSentencePopulate(bob.Sentences, Sentences); } Page.Sentences = Sentences.ToArray(); ListPages.Add(Page); } Book.BindedPages = ListPages.ToArray(); return(Book); }
public static void RecursiveSentencePopulate(Librarian.Sentence LibrarianSentence, List <NetFriendlySentence> Sentences) { if (LibrarianSentence.Sentences != null) { foreach (var _Sentence in LibrarianSentence.Sentences) { NetFriendlySentence FriendlySentence = new NetFriendlySentence() { PagePosition = _Sentence.PagePosition, SentenceID = _Sentence.SentenceID, ValueVariable = VVUIElementHandler.Serialise(_Sentence.ValueVariable, _Sentence.ValueVariableType), ValueVariableType = _Sentence.ValueVariableType.ToString(), OnPageID = _Sentence.OnPageID, HeldBySentenceID = LibrarianSentence.SentenceID }; if (Librarian.UEGetType(FriendlySentence.ValueVariableType) == null) { FriendlySentence.ValueVariableType = _Sentence.ValueVariableType.AssemblyQualifiedName; } if (_Sentence.KeyVariable != null) { FriendlySentence.KeyVariable = VVUIElementHandler.Serialise(_Sentence.KeyVariable, _Sentence.KeyVariableType); FriendlySentence.KeyVariableType = _Sentence.KeyVariableType.ToString(); if ((FriendlySentence.KeyVariableType == null) || (Librarian.UEGetType(FriendlySentence.KeyVariableType) == null)) { FriendlySentence.KeyVariableType = _Sentence.KeyVariableType.AssemblyQualifiedName; } } if (_Sentence.Sentences != null) { RecursiveSentencePopulate(_Sentence, Sentences); } Sentences.Add(FriendlySentence); } } }
public static NetFriendlyBook ProcessBook(Librarian.Book _book) { string Classe; Classe = _book.BookClass.GetType().Name; NetFriendlyBook Book = new NetFriendlyBook() { ID = _book.ID, BookClassname = Classe, Title = _book.Title, UnGenerated = _book.UnGenerated }; // get max possible packet size from current transform int maxPacketSize = Mirror.Transport.activeTransport.GetMaxPacketSize(0); // set currentSize start value to max TCP header size (60b) int currentSize = 60; List <NetFriendlyPage> ListPages = new List <NetFriendlyPage>(); foreach (var bob in _book.GetBindedPages()) { List <NetFriendlySentence> Sentences = new List <NetFriendlySentence>(); NetFriendlyPage Page = new NetFriendlyPage { ID = bob.ID, Variable = VVUIElementHandler.Serialise(bob.Variable, bob.VariableType), VariableName = bob.VariableName, VariableType = bob.VariableType?.ToString(), VVHighlight = bob.VVHighlight }; if (bob.PInfo != null) { Page.CanWrite = bob.PCanWrite; } if (Librarian.UEGetType(Page.VariableType) == null) { Page.VariableType = bob?.VariableType?.AssemblyQualifiedName; } if (bob.Sentences.Sentences != null && (bob.Sentences.Sentences.Count > 0)) { NetFriendlySentence FriendlySentence = new NetFriendlySentence() { HeldBySentenceID = bob.Sentences.SentenceID }; FriendlySentence.OnPageID = 8888888; Sentences.Add(FriendlySentence); RecursiveSentencePopulate(bob.Sentences, Sentences); } Page.Sentences = Sentences.ToArray(); //currentSize += Page.GetSize(); //TODO work out why this causes errors // if currentSize is greater than the maxPacketSize - break loop and send message if (currentSize > maxPacketSize) { Logger.LogError("[VariableViewerNetworking.ProcessBook] - message is to big to send in one packet", Category.VariableViewer); break; } ListPages.Add(Page); } Book.BindedPages = ListPages.ToArray(); return(Book); }