void OnMouseInspector(TutorialCondition nowCondition) { // 1. 텍스트 타입 설정 nowCondition.onMouseType = (TutorialCondition.EnumOnMouse)EditorGUILayout.EnumPopup ("마우스 대상", nowCondition.onMouseType); }
void UseInteractiveInspector(TutorialCondition nowCondition) { nowCondition.interactiveObjectType = (InteractiveState.EnumInteractiveObject)EditorGUILayout.EnumPopup ("상호작용 타입", nowCondition.interactiveObjectType); nowCondition.interactiveMount = EditorGUILayout.IntField("사용횟수", nowCondition.interactiveMount); }
void UseActionInspector(TutorialCondition nowCondition) { nowCondition.activeType = (TutorialCondition.EnumActive)EditorGUILayout.EnumPopup ("액티브 사용/횟수", nowCondition.activeType); nowCondition.activeMount = EditorGUILayout.FloatField("사용 횟수", nowCondition.activeMount); }
void SettingConditionInspector(TutorialCondition nowCondition) { switch (nowCondition.tutorialConditionType) { case TutorialCondition.EnumTutorialCondition.PLACE: PlaceInspector(nowCondition); break; case TutorialCondition.EnumTutorialCondition.ONMOUSE: OnMouseInspector(nowCondition); break; case TutorialCondition.EnumTutorialCondition.USEACTIVE: UseActionInspector(nowCondition); break; case TutorialCondition.EnumTutorialCondition.USEINTERACTIVE: UseInteractiveInspector(nowCondition); break; } }
void PlaceInspector(TutorialCondition nowCondition) { // 1. 위치를 설정 nowCondition.tutorialPlaceType = (TutorialCondition.EnumTutorialPlace)EditorGUILayout.EnumPopup ("원하는 위치 정의", nowCondition.tutorialPlaceType); // 2. enum을 토대로 설정 int tutorialPlaceType = (int)nowCondition.tutorialPlaceType; // 3. enum은 Place가 있을때만 작동하도록, 위치 Object 설정 if (tutorialPlaceType <= tutorialPlace.places.Length - 1) { nowCondition.tutorialPlace = tutorialPlace.places[tutorialPlaceType]; nowCondition.checkTutorialPlace = nowCondition.tutorialPlace.GetComponent <CheckTutorialPlace>(); } }
private bool IsConditionMet(TutorialCondition condition) { if (condition.Type == TutorialConditonType.RootPresent) { return(new TilePoint(map.Hero).Equals(condition.TilePoint) == condition.IsTrue); } if (condition.Type == TutorialConditonType.SubroutinePresent) { return(map.IsJumpable(condition.TilePoint) == condition.IsTrue); } if (condition.Type == TutorialConditonType.PieceSelected) { return(condition.IsTrue ? selectedPiece.Selected.IsPresentAnd(x => new TilePoint(x).Equals(condition.TilePoint)) : !selectedPiece.Selected.IsPresent || !new TilePoint(selectedPiece.Selected.Value).Equals(condition.TilePoint)); } if (condition.Type == TutorialConditonType.LevelHasReset) { return(hasLevelReset.Value == condition.IsTrue); } return(false); }
public override void OnInspectorGUI() { // 임시로 쥐로 설정한다. TutorialElement[] tutorialPlayer = tutorialGuide.mouseTutorialElements; // 1. 쥐 튜토리얼 수 받기 DynamicTutorialElement(); int count = tutorialGuide.maxMouseTutorialCount; EditorGUI.indentLevel++; for (int i = 0; i < count; i++) { EditorGUILayout.Space(); EditorGUILayout.LabelField("--- " + (i + 1) + " 번째 튜토리얼 사항" + " ---"); // 간단하게 튜토리얼 속성 사용 TutorialElement nowElement = tutorialPlayer[i]; // 조건 동적생성 DynamicTutorialCondition(nowElement); // 액션 동적생성 DynamicTutorialAction(nowElement); EditorGUILayout.Space(); EditorGUILayout.Space(); // 조건 설정 int conditionCount = nowElement.maxTutorialCondition; for (int dtc = 0; dtc < conditionCount; dtc++) { // 간단하게 사용하기 위해 정의 TutorialCondition nowCondition = nowElement.tutorialConditions[dtc]; // 1. 타입 지정 nowCondition.tutorialConditionType = (TutorialCondition.EnumTutorialCondition)EditorGUILayout.EnumPopup ("조건 정의", nowCondition.tutorialConditionType); // 2. 타입별로 인스펙터 조절 SettingConditionInspector(nowCondition); EditorGUILayout.Space(); } EditorGUILayout.Space(); EditorGUILayout.LabelField("-------------------"); EditorGUILayout.Space(); int actionCount = nowElement.maxTutorialAction; for (int dta = 0; dta < actionCount; dta++) { // 간단하게 설정하기 TutorialAction nowAction = nowElement.tutorialActions[dta]; // 1. 타입 지정 nowAction.tutorialActionType = (TutorialAction.EnumTutorialAction)EditorGUILayout.EnumPopup ("액션 정의", nowAction.tutorialActionType); // 2. 타입별로 인스펙터 조절 SettingActionInspector(nowAction); EditorGUILayout.Space(); } } EditorGUI.indentLevel--; }
protected override void Start() { base.Start(); graphicalEffects = (GraphicalEffectFactory)FindObjectOfType(typeof(GraphicalEffectFactory)); tutorialPropagator = Tutorial.GetTutorialDescription(this, control); scenarioWindow = new ScenarioDescriptionGUI(tutorialPropagator); conditionChecker = tutorialPropagator.GetCondition(); gui = GameGUIFactory.Create(tutorialPropagator.GetGUIOptions(),(IGUIMessages)this); tutorialPropagator.Start(); }