public virtual void OnGUI() { using (new EditorHelper.Box(true, 10)) { using (new EditorHelper.Horizontal()) { bool existed = Config.conditionFold.ContainsKey(this); if (!existed) { Config.conditionFold[this] = true; } bool foldout = Config.conditionFold[this]; GUIStyle gs = new GUIStyle(EditorStyles.foldout); bool isSelected = this == selectedObject; if (isSelected) { gs.normal.textColor = Color.green; gs.onNormal.textColor = Color.green; gs.onActive.textColor = Color.green; } foldout = GUILayout.Toggle( foldout, "Condition #" + order, gs, GUILayout.ExpandWidth(false), GUILayout.Width(140) ); if (Config.conditionFold[this] != foldout) { Config.ResetCacheRectData(); } Config.conditionFold[this] = foldout; if (!foldout) { return; } IsRemoved = GUILayout.Button("Remove", GUILayout.Width(80)); if (GUILayout.Button("Copy", GUILayout.Width(80))) { copiedCondition = this; } IsPasted = GUILayout.Button("Paste", GUILayout.Width(80)); } using (new EditorHelper.Indent(-2)) { EndConditionName oldConditionName = ShowConditionName(); EndConditionName newConditionName = (EndConditionName)EditorGUILayout.EnumPopup( "Condition Name", oldConditionName); conditionName = newConditionName.ToString(); IsConditionChanged = !oldConditionName.Equals(newConditionName); DrawGUI(); } } }
private EndCondition GenerateEndCondition(EndConditionName conditionName) { EndCondition condition; switch (conditionName) { case EndConditionName.HeroDeath: condition = new HeroDeathCondition(); break; case EndConditionName.KillAllEnemy: condition = new KillAllEnemyCondition(); break; case EndConditionName.ReachCheckpoint: condition = new ReachCheckpointCondition(); break; case EndConditionName.CountdownTime: condition = new CountdownTimeCondition(); break; case EndConditionName.TotalBattleTime: condition = new TotalBattleTimeCondition(); break; default: throw new Exception(string.Format( "Not recognized end condition name of '{0}'", conditionName )); } return(condition); }