private static void WriteDeserializeVector(ProtocolClassVariable field, StringBuilder init) { init.AppendLine(!string.IsNullOrEmpty(field.VectorFieldRead) ? $" var {field.Name}Count = reader.{field.VectorFieldRead}();" : $" var {field.Name}Count = reader.ReadUShort();"); init.AppendLine($" {field.Name.Capitalize()} = new List<{field.ObjectType}>();"); init.AppendLine( $" for (var {field.Name}Index = 0; {field.Name}Index < {field.Name}Count; {field.Name}Index++)"); init.AppendLine(" {"); switch (field.MethodType) { case ReadMethodType.ProtocolTypeManager: init.AppendLine( $" var objectToAdd = ProtocolTypeManager.GetInstance<{field.ObjectType}>(reader.ReadUShort());"); init.AppendLine(" objectToAdd.Deserialize(reader);"); init.AppendLine($" {field.Name.Capitalize()}.Add(objectToAdd);"); break; case ReadMethodType.SerializeOrDeserialize: init.AppendLine($" var objectToAdd = new {field.ObjectType.Capitalize()}();"); init.AppendLine(" objectToAdd.Deserialize(reader);"); init.AppendLine($" {field.Name.Capitalize()}.Add(objectToAdd);"); break; case ReadMethodType.VectorPrimitive: init.AppendLine($" {field.Name.Capitalize()}.Add(reader.{field.ReadMethod}());"); break; } init.AppendLine(" }"); }
private static void WriteDeserializeVector(ProtocolClassVariable field, StringBuilder init) { init.AppendLine(!string.IsNullOrEmpty(field.VectorFieldRead) ? $"\t\t\tvar {field.Name}Count = reader.{field.VectorFieldRead}();" : $"\t\t\tvar {field.Name}Count = reader.ReadShort();"); init.AppendLine($"\t\t\tvar {field.Name}_ = new {field.ObjectType}[{field.Name}Count];"); init.AppendLine($"\t\t\tfor (var {field.Name}Index = 0; {field.Name}Index < {field.Name}Count; {field.Name}Index++)"); init.AppendLine("\t\t\t{"); switch (field.MethodType) { case ReadMethodType.ProtocolTypeManager: init.AppendLine($"\t\t\t\tvar objectToAdd = ProtocolTypeManager.GetInstance<{field.ObjectType}>(reader.ReadShort());"); init.AppendLine("\t\t\t\tobjectToAdd.Deserialize(reader);"); init.AppendLine($"\t\t\t\t{field.Name}_[{field.Name}Index] = objectToAdd;"); break; case ReadMethodType.SerializeOrDeserialize: init.AppendLine($"\t\t\t\tvar objectToAdd = new {field.ObjectType}();"); init.AppendLine("\t\t\t\tobjectToAdd.Deserialize(reader);"); init.AppendLine($"\t\t\t\t{field.Name}_[{field.Name}Index] = objectToAdd;"); break; case ReadMethodType.VectorPrimitive: init.AppendLine($"\t\t\t\t{field.Name}_[{field.Name}Index] = reader.{field.ReadMethod}();"); break; } init.AppendLine("\t\t\t}"); init.AppendLine($"\t\t\t{field.Name} = {field.Name}_;"); }
private void WriteSerializeVector(ProtocolClassVariable field, StringBuilder init) { init.AppendLine(!string.IsNullOrEmpty(field.VectorFieldWrite) ? $" writer.{field.VectorFieldWrite}({field.VectorFieldWrite.ToConverterCSharp()}{field.Name.Capitalize()}.Count);" : $" writer.WriteShort((short){field.Name.Capitalize()}.Count);"); init.AppendLine( $" for (var {field.Name}Index = 0; {field.Name}Index < {field.Name.Capitalize()}.Count; {field.Name}Index++)"); init.AppendLine(" {"); switch (field.MethodType) { case ReadMethodType.ProtocolTypeManager: init.AppendLine( $" var objectToSend = {field.Name.Capitalize()}[{field.Name}Index];"); init.AppendLine(" writer.WriteUShort(objectToSend.TypeID);"); init.AppendLine(" objectToSend.Serialize(writer);"); break; case ReadMethodType.SerializeOrDeserialize: init.AppendLine( $" var objectToSend = {field.Name.Capitalize()}[{field.Name}Index];"); init.AppendLine(" objectToSend.Serialize(writer);"); break; case ReadMethodType.VectorPrimitive: init.AppendLine( $" writer.{field.WriteMethod}({field.Name.Capitalize()}[{field.Name}Index]);"); break; } init.AppendLine(" }"); }
private static void WriteSerializeVector(ProtocolClassVariable field, StringBuilder init) { init.AppendLine(!string.IsNullOrEmpty(field.VectorFieldWrite) ? $"\t\t\twriter.{field.VectorFieldWrite}({field.VectorFieldWrite.ToConverterCSharp()}{field.Name}.Count());" : $"\t\t\twriter.WriteShort((ushort){field.Name}.Count());"); init.AppendLine( $"\t\t\tforeach (var objectToSend in {field.Name})"); init.AppendLine(" {"); switch (field.MethodType) { case ReadMethodType.ProtocolTypeManager: init.AppendLine("\t\t\t\twriter.WriteShort(objectToSend.TypeId);"); init.AppendLine("\t\t\t\tobjectToSend.Serialize(writer);"); break; case ReadMethodType.SerializeOrDeserialize: init.AppendLine("\t\t\t\tobjectToSend.Serialize(writer);"); break; case ReadMethodType.VectorPrimitive: init.AppendLine( $"\t\t\t\twriter.{field.WriteMethod}(objectToSend);"); break; } init.AppendLine("\t\t\t}"); }
private void ParseClassVars() { Variables = new List <ProtocolClassVariable>(); var m = RegularExpression.GetRegex(RegexEnum.VarObject).Match(FileToTranslate); while (m.Success) { var newVar = new ProtocolClassVariable { Name = m.Groups["name"].Value, TypeOfVar = VarType.Object, MethodType = ReadMethodType.SerializeOrDeserialize, ObjectType = m.Groups["type"].Value, ReadMethod = "Deserialize", WriteMethod = "Serialize", Index = m.Groups["name"].Index }; Variables.Add(newVar); m = m.NextMatch(); } m = RegularExpression.GetRegex(RegexEnum.VarPrimitive).Match(FileToTranslate); while (m.Success) { var newVar = new ProtocolClassVariable { TypeOfVar = VarType.Primitive, Name = m.Groups["name"].Value, ObjectType = m.Groups["type"].Value, Index = m.Groups["name"].Index }; Variables.Add(newVar); m = m.NextMatch(); } m = RegularExpression.GetRegex(RegexEnum.VarVector).Match(FileToTranslate); while (m.Success) { var newVar = new ProtocolClassVariable { TypeOfVar = VarType.Vector, Name = m.Groups["name"].Value, ObjectType = m.Groups["type"].Value, Index = m.Groups["name"].Index }; Variables.Add(newVar); m = m.NextMatch(); } Class.Variables = Variables.ToArray(); }