/// <summary> /// マップキャラID文字列を取得する。 /// </summary> /// <param name="characterId">キャラID</param> /// <param name="type">[NotNull] イベントコマンド種別</param> /// <param name="desc">[Nullable] 付加情報</param> /// <returns> /// マップイベントID文字列。 /// 該当マップがプロジェクト内に読み込まれていない場合、空文字。 /// </returns> public (bool, MapEventName) GetMapEventIdStr(MapCharacterId characterId, EventCommandSentenceType type, EventCommandSentenceResolveDesc desc) { const string notFound = ""; if (characterId == -1) { return(true, "このマップイベント"); } if (characterId == -2) { return(true, "主人公"); } if (characterId < -2) { var memberId = characterId * -1 - 2; return(true, $"仲間{memberId}"); } if (characterId.ToInt().IsNumericVariableAddressSimpleCheck()) { var varName = Master.GetNumericVariableAddressString(characterId, type, desc); return(true, $"キャラ[{varName}]"); } var targetEvent = Master.MapData?.MapEvents.FirstOrDefault(x => x.MapEventId == characterId); if (targetEvent is null) { return(false, notFound); } return(true, $"Ev{characterId}"); }
/// <summary> /// キャラクター名を取得する。 /// </summary> /// <param name="characterId">キャラクターID</param> /// <param name="type">[NotNull] イベントコマンド種別</param> /// <param name="desc">[Nullable] 付加情報</param> /// <returns> /// マップイベント名。 /// 該当マップがプロジェクト内に読み込まれていない場合、空文字。 /// </returns> public MapEventName GetCharacterName(MapCharacterId characterId, EventCommandSentenceType type, EventCommandSentenceResolveDesc desc) { if (characterId == -1) { return("このイベント"); } if (characterId == -2) { return("主人公"); } if (characterId < -2) { return($"仲間{(characterId + 2) * -1}"); } if (!characterId.ToInt().IsVariableAddressSimpleCheck()) { return($"Ev{characterId}"); } var varAddressSentence = Master.GetNumericVariableAddressString(characterId, type, desc); return($"キャラ[{varAddressSentence}]"); }
public static void ToIntTest(int value) { var instance = new MapCharacterId(value); var intValue = instance.ToInt(); // セットした値と取得した値が一致すること Assert.AreEqual(intValue, value); }
/// <summary> /// イベントコマンド文文字列を取得する。 /// </summary> /// <param name="resolver">[NotNull] 名前解決クラスインスタンス</param> /// <param name="type">[NotNull] イベント種別</param> /// <param name="desc">[Nullable] 付加情報</param> /// <param name="characterId">キャラクターID</param> /// <param name="numArg1">引数1(R値またはXシェイク値)</param> /// <param name="numArg2">引数2(G値またはYシェイク値)</param> /// <param name="numArg3">引数3(B値または回数)</param> /// <param name="processTime">フレーム数</param> /// <returns>イベントコマンド文字列</returns> public string GetEventCommandSentence( EventCommandSentenceResolver resolver, EventCommandSentenceType type, EventCommandSentenceResolveDesc desc, MapCharacterId characterId, int numArg1, int numArg2, int numArg3, int processTime) { var eventSentence = resolver.GetCharacterName(characterId, type, desc); var numArg1Sentence = resolver.GetNumericVariableAddressStringIfVariableAddress(numArg1, type, desc); var numArg2Sentence = resolver.GetNumericVariableAddressStringIfVariableAddress(numArg2, type, desc); var numArg3Sentence = resolver.GetNumericVariableAddressStringIfVariableAddress(numArg3, type, desc); var processTimeSentence = resolver.GetNumericVariableAddressStringIfVariableAddress(processTime, type, desc); return(string.Format(EventCommandSentenceFormat, eventSentence, numArg1Sentence, numArg2Sentence, numArg3Sentence, processTimeSentence)); }
public static void ConstructorTest(int value, bool isError) { var errorOccured = false; try { var _ = new MapCharacterId(value); } catch (Exception ex) { logger.Exception(ex); errorOccured = true; } // エラーフラグが一致すること Assert.AreEqual(errorOccured, isError); }
public static void CastToIntTest(int value) { var castValue = 0; var instance = new MapCharacterId(value); var errorOccured = false; try { castValue = instance; } catch (Exception ex) { logger.Exception(ex); errorOccured = true; } // エラーが発生しないこと Assert.IsFalse(errorOccured); // 元の値と一致すること Assert.AreEqual(castValue, value); }