123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- using System;
- using System.Collections.Generic;
- using MaidStatus;
- namespace SceneEditWindow
- {
- public class VoiceIconData
- {
- public static Dictionary<int, VoiceIconData.ItemData> itemList { get; private set; }
- public static Dictionary<int, VoiceIconData.ItemData> itemSubList { get; private set; }
- public static VoiceIconData.ItemData GetItemData(Personal.Data data)
- {
- return VoiceIconData.itemList[data.id];
- }
- public static VoiceIconData.ItemData GetItemData(SubMaid.Data data)
- {
- return VoiceIconData.itemSubList[data.id];
- }
- public static VoiceIconData.ItemData.EmotionData GetEmotionData(Personal.Data data, VoiceIconData.ItemData.EmotionType type)
- {
- return VoiceIconData.GetItemData(data).emotionDatas[type];
- }
- public static VoiceIconData.ItemData.EmotionData GetEmotionData(SubMaid.Data data, VoiceIconData.ItemData.EmotionType type)
- {
- return VoiceIconData.GetItemData(data).emotionDatas[type];
- }
- public static VoiceIconData.ItemData.EmotionData GetEmotionData(Maid maid, VoiceIconData.ItemData.EmotionType type)
- {
- return (maid.status.subCharaData == null) ? VoiceIconData.GetEmotionData(maid.status.personal, type) : VoiceIconData.GetEmotionData(maid.status.subCharaData, type);
- }
- public static void Create()
- {
- if (VoiceIconData.itemList != null)
- {
- return;
- }
- VoiceIconData.itemList = new Dictionary<int, VoiceIconData.ItemData>();
- VoiceIconData.itemSubList = new Dictionary<int, VoiceIconData.ItemData>();
- using (AFileBase afileBase = GameUty.FileSystem.FileOpen("edit_voice.nei"))
- {
- using (CsvParser csvParser = new CsvParser())
- {
- bool condition = csvParser.Open(afileBase);
- NDebug.Assert(condition, "edit_voice.nei\nopen failed.");
- for (int i = 1; i < csvParser.max_cell_y; i++)
- {
- if (csvParser.IsCellToExistData(0, i))
- {
- int num = 0;
- VoiceIconData.ItemData.EmotionData emotionData = new VoiceIconData.ItemData.EmotionData();
- string cellAsString = csvParser.GetCellAsString(num++, i);
- if (!string.IsNullOrEmpty(cellAsString))
- {
- try
- {
- emotionData.type = (VoiceIconData.ItemData.EmotionType)Enum.Parse(typeof(VoiceIconData.ItemData.EmotionType), cellAsString);
- }
- catch (Exception e)
- {
- NDebug.AssertParseError("VoiceIconData.ItemData.EmotionsType", e);
- }
- }
- string cellAsString2 = csvParser.GetCellAsString(num++, i);
- if (Personal.Contains(cellAsString2))
- {
- emotionData.personalData = Personal.GetData(cellAsString2);
- }
- else
- {
- emotionData.subMaidData = SubMaid.GetData(cellAsString2);
- }
- emotionData.voiceFileName = csvParser.GetCellAsString(num++, i);
- emotionData.facialExpressions = csvParser.GetCellAsString(num++, i);
- emotionData.addFacialExpressions = csvParser.GetCellAsString(num++, i);
- VoiceIconData.ItemData itemData = new VoiceIconData.ItemData();
- itemData.emotionDatas = new Dictionary<VoiceIconData.ItemData.EmotionType, VoiceIconData.ItemData.EmotionData>();
- if (emotionData.personalData != null)
- {
- if (VoiceIconData.itemList.ContainsKey(emotionData.personalData.id))
- {
- itemData = VoiceIconData.itemList[emotionData.personalData.id];
- }
- else
- {
- VoiceIconData.itemList.Add(emotionData.personalData.id, itemData);
- }
- if (itemData.emotionDatas.ContainsKey(emotionData.type))
- {
- NDebug.Assert("データが重複しています", false);
- }
- itemData.emotionDatas.Add(emotionData.type, emotionData);
- }
- else
- {
- if (VoiceIconData.itemSubList.ContainsKey(emotionData.subMaidData.id))
- {
- itemData = VoiceIconData.itemSubList[emotionData.subMaidData.id];
- }
- else
- {
- VoiceIconData.itemSubList.Add(emotionData.subMaidData.id, itemData);
- }
- if (itemData.emotionDatas.ContainsKey(emotionData.type))
- {
- NDebug.Assert("データが重複しています", false);
- }
- itemData.emotionDatas.Add(emotionData.type, emotionData);
- }
- }
- }
- }
- }
- }
- public class ItemData
- {
- public static readonly string[] EmotionTexFileNames = new string[]
- {
- "cm3d2_voiceicon_joy.tex",
- "cm3d2_voiceicon_anger.tex",
- "cm3d2_voiceicon_comfort.tex",
- "cm3d2_voiceicon_pity.tex"
- };
- public Dictionary<VoiceIconData.ItemData.EmotionType, VoiceIconData.ItemData.EmotionData> emotionDatas;
- public enum EmotionType
- {
- Joy,
- Anger,
- Sorrow,
- Fun
- }
- public class EmotionData
- {
- public void Apply(Maid maid)
- {
- if (maid == null)
- {
- return;
- }
- GameMain.Instance.SoundMgr.VoiceStopAll();
- maid.AudioMan.LoadPlay(this.voiceFileName, 0f, false, false);
- maid.FaceAnime(this.facialExpressions, 1f, 0);
- if (string.IsNullOrEmpty(this.addFacialExpressions))
- {
- maid.FaceBlend("無し");
- }
- else
- {
- maid.FaceBlend(this.addFacialExpressions);
- }
- }
- public Personal.Data personalData;
- public SubMaid.Data subMaidData;
- public string voiceFileName;
- public string facialExpressions;
- public string addFacialExpressions;
- public VoiceIconData.ItemData.EmotionType type;
- }
- }
- }
- }
|