public Message(EndianBinaryReader reader, int index) { Name = $"msg_{ index }"; IsUsed = "False"; int msgBeginTest = reader.PeekReadInt32(); while (msgBeginTest > (int)TextBoxType.COSMOSPHERE_CENTER_PORTRAIT || msgBeginTest < 0) { msgBeginTest = reader.ReadInt32(); if (msgBeginTest <= (int)TextBoxType.COSMOSPHERE_CENTER_PORTRAIT && msgBeginTest >= 0) { reader.BaseStream.Position -= 4; } } mBoxType = (TextBoxType)reader.ReadInt32(); mCharacterName = (CharacterNameID)reader.ReadInt32(); mCharacterIDOrPortrait = reader.ReadInt32(); mMessageIndex = reader.ReadInt32(); mPortraitPosition = (PortraitPosition)reader.ReadInt16(); mUnknown1 = reader.ReadInt16(); mMessageLength = reader.ReadInt32(); byte[] rawMessageData = reader.ReadBytes(mMessageLength); mMessageData = MessageDataProcessor.DecodeBytes(rawMessageData).Trim(); MessageDataProcessor.PadMessageReader(reader); }
public Message(EndianBinaryReader reader) { boxType = (TextboxType)reader.ReadInt32(); characterName = (NameID)reader.ReadInt32(); characterID = reader.ReadInt32(); index = reader.ReadInt32(); pos = (PortraitPosition)reader.ReadInt16(); unknown1 = reader.ReadInt16(); int messageSize = reader.ReadInt32(); List <byte> chars = new List <byte>(); // Switch endianness because text is stored in big endian reader.CurrentEndian = Endian.Big; for (int i = 0; i < messageSize; i++) { if (reader.PeekReadByte() == (byte)'C' || reader.PeekReadByte() == (byte)'#' || reader.PeekReadByte() == (byte)'I') { long curPos = reader.BaseStream.Position; GetControlCode(reader, chars); i--; i += (int)(reader.BaseStream.Position - curPos); } else { chars.Add(reader.ReadByte()); } } if (chars[chars.Count - 1] != 0) { chars[chars.Count - 1] = 0; } reader.CurrentEndian = Endian.Little; Encoding shiftJis = Encoding.GetEncoding(932); char[] test = shiftJis.GetChars(chars.ToArray()); string testString = new string(test); message = testString.Normalize(NormalizationForm.FormKD).Trim('\0'); PadStream(reader, 4); while (reader.PeekReadUInt32() > 12) { reader.SkipByte(); } }
public PortraitInfo(PortraitPosition portrait, CharacterType character, EmotionType emotion) { portraitType = portrait; characterType = character; emotionType = emotion; }
public void SetPortrait(PortraitPosition position, Texture2D portrait = null) { portraits[position].material.mainTexture = portrait; portraits[position].SetAllDirty(); portraits[position].gameObject.SetActive(portrait != null); }
public DialogueScript(PortraitPosition portrait, CharacterType character, EmotionType emotion, string message) : this(message) { portraitInfo = new PortraitInfo(portrait, character, emotion); }