private void PlaceTileModifierVariation() { if (EditorCanvasUI.Instance.SelectedTileModifierContainer == null) { if (PersistentGameManager.CurrentSceneType == SceneType.Maze) { EditorModificationPanelContainer.Instance.SelectMazeTileModificationPanel(); } else { EditorModificationPanelContainer.Instance.SelectOverworldTileModificationPanel(); } } EditorTileModifierCategory editorMazeTileModifierCategory = EditorManager.SelectedTileModifierCategory; GameManager.Instance.CurrentEditorLevel.TilesByLocation.TryGetValue(CurrentlySelectedTile.GridLocation, out Tile tile); EditorSelectedTileModifierContainer selectedTileModifierContainer = EditorCanvasUI.Instance.SelectedTileModifierContainer; if (editorMazeTileModifierCategory == EditorTileModifierCategory.Attribute) { List <IEditorTileModifier> attributes = selectedTileModifierContainer.CurrentlyAvailableTileModifiers[EditorTileModifierCategory.Attribute]; EditorTileAttributeModifier attribute = attributes[EditorManager.SelectedTileAttributeModifierIndex] as EditorTileAttributeModifier; PlaceTileAttributeVariation(tile, attribute); } else if (editorMazeTileModifierCategory == EditorTileModifierCategory.Background) { List <IEditorTileModifier> backgrounds = selectedTileModifierContainer.CurrentlyAvailableTileModifiers[EditorTileModifierCategory.Background]; EditorTileBackgroundModifier background = backgrounds[EditorManager.SelectedTileBackgroundModifierIndex] as EditorTileBackgroundModifier; PlaceMazeTileBackgroundVariation(tile, background); } }
public void SetCategoryLabel(EditorTileModifierCategory editorMazeTileModifierType) { string categoryName = editorMazeTileModifierType.ToString(); categoryName = Regex.Replace(categoryName, "([a-z])([A-Z])", "$1 $2"); SelectedTileModifierCategoryLabel.text = categoryName; }
protected void SwitchSelectedModifier(int newIndex, EditorTileModifierCategory currentCategory) { EditorSelectedTileModifierContainer selectedTileModifierContainer = EditorCanvasUI.Instance.SelectedTileModifierContainer; if (EditorModificationPanelContainer.Instance.SelectedPanel is IEditorTileModificationPanel) { IEditorTileModificationPanel selectedPanel = EditorModificationPanelContainer.Instance.SelectedPanel as IEditorTileModificationPanel; selectedPanel.DestroyModifierActions(); } // try previous category if (newIndex < 0) { EditorTileModifierCategory previousEditorTileModifierCategory = PreviousEditorTileModifierCategory(currentCategory); bool landedAtCategory = false; while (!landedAtCategory) { if (selectedTileModifierContainer.CurrentlyAvailableTileModifiers.TryGetValue(previousEditorTileModifierCategory, out List <IEditorTileModifier> editorTileModifiers)) { int modifierCount = editorTileModifiers.Count; int lastAvailableIndex = modifierCount - 1; selectedTileModifierContainer.SetSelectedTileModifierCategory(previousEditorTileModifierCategory); selectedTileModifierContainer.SetSelectedTileModifier(lastAvailableIndex); landedAtCategory = true; } else { // there are no modifiers in the previous category. Try the category before that EditorTileModifierCategory lastQueriedModifierCategory = previousEditorTileModifierCategory; previousEditorTileModifierCategory = PreviousEditorTileModifierCategory(lastQueriedModifierCategory); } } } else if (newIndex >= _editorSelectedModifierContainer.CurrentlyAvailableTileModifiers[currentCategory].Count) // try next category { EditorTileModifierCategory nextEditorTileModifierCategory = NextEditorTileModifierCategory(currentCategory); bool landedAtCategory = false; while (!landedAtCategory) { if (selectedTileModifierContainer.CurrentlyAvailableTileModifiers.TryGetValue(nextEditorTileModifierCategory, out List <IEditorTileModifier> editorTileModifiers)) { selectedTileModifierContainer.SetSelectedTileModifierCategory(nextEditorTileModifierCategory); selectedTileModifierContainer.SetSelectedTileModifier(0); landedAtCategory = true; } else { // there are no modifiers in the next category. Try the category after that EditorTileModifierCategory lastQueriedModifierCategory = nextEditorTileModifierCategory; nextEditorTileModifierCategory = NextEditorTileModifierCategory(lastQueriedModifierCategory); } } } }
public void SetSelectedTileModifierCategory(EditorTileModifierCategory editorMazeTileModifierCategory) { if (EditorManager.SelectedTileModifierCategory == EditorTileModifierCategory.TransformationTriggerer) { EditorTileTransformationModifier editorMazeTileTransformationTriggerer = EditorTileTransformationTriggerers[EditorManager.SelectedTileTransformationTriggererIndex]; editorMazeTileTransformationTriggerer.UnsetSelectedTile(); } EditorManager.SelectedTileModifierCategory = editorMazeTileModifierCategory; EditorSelectedTileModifierCategoryContainer.Instance.SetCategoryLabel(EditorManager.SelectedTileModifierCategory); }
protected EditorTileModifierCategory NextEditorTileModifierCategory(EditorTileModifierCategory currentTileModifierCategory) { EditorSelectedTileModifierContainer selectedTileModifierContainer = EditorCanvasUI.Instance.SelectedTileModifierContainer; int index = selectedTileModifierContainer.UsedTileModifierCategories.IndexOf(currentTileModifierCategory); if (index < selectedTileModifierContainer.UsedTileModifierCategories.Count - 1) { return(selectedTileModifierContainer.UsedTileModifierCategories[index + 1]); } return(selectedTileModifierContainer.UsedTileModifierCategories[0]); }
protected EditorTileModifierCategory NextEditorTileModifierCategory(EditorTileModifierCategory currentTileModifierCategory) { if (_editorSelectedModifierContainer.UsedTileModifierCategories.Count == 1) { return(currentTileModifierCategory); } int index = _editorSelectedModifierContainer.UsedTileModifierCategories.IndexOf(currentTileModifierCategory); if (index < _editorSelectedModifierContainer.UsedTileModifierCategories.Count - 1) { return(_editorSelectedModifierContainer.UsedTileModifierCategories[index + 1]); } return(_editorSelectedModifierContainer.UsedTileModifierCategories[0]); }
protected EditorTileModifierCategory PreviousEditorTileModifierCategory(EditorTileModifierCategory currentTileModifierCategory) { if (_editorSelectedModifierContainer.UsedTileModifierCategories.Count == 1) { return(currentTileModifierCategory); } int index = _editorSelectedModifierContainer.UsedTileModifierCategories.IndexOf(currentTileModifierCategory); if (index > 0) { return(_editorSelectedModifierContainer.UsedTileModifierCategories[index - 1]); } return(_editorSelectedModifierContainer.UsedTileModifierCategories[_editorSelectedModifierContainer.UsedTileModifierCategories.Count - 1]); }
private void PlaceTileModifier() { if (EditorCanvasUI.Instance.SelectedTileModifierContainer == null) { if (PersistentGameManager.CurrentSceneType == SceneType.Maze) { EditorModificationPanelContainer.Instance.SelectMazeTileModificationPanel(); } else { EditorModificationPanelContainer.Instance.SelectOverworldTileModificationPanel(); } } EditorTileModifierCategory editorTileModifierType = EditorManager.SelectedTileModifierCategory; EditorSelectedTileModifierContainer selectedTileModifierContainer = EditorCanvasUI.Instance.SelectedTileModifierContainer; GameManager.Instance.CurrentEditorLevel.TilesByLocation.TryGetValue(CurrentlySelectedTile.GridLocation, out Tile tile); if (editorTileModifierType == EditorTileModifierCategory.Attribute) { List <IEditorTileModifier> attributes = selectedTileModifierContainer.CurrentlyAvailableTileModifiers[EditorTileModifierCategory.Attribute]; EditorTileAttributeModifier attribute = attributes[EditorManager.SelectedTileAttributeModifierIndex] as EditorTileAttributeModifier; PlaceTileAttribute(tile, attribute); } else if (editorTileModifierType == EditorTileModifierCategory.Background) { List <IEditorTileModifier> backgrounds = selectedTileModifierContainer.CurrentlyAvailableTileModifiers[EditorTileModifierCategory.Background]; EditorTileBackgroundModifier background = backgrounds[EditorManager.SelectedTileBackgroundModifierIndex] as EditorTileBackgroundModifier; PlaceTileBackground(tile, background); } else if (editorTileModifierType == EditorTileModifierCategory.TransformationTriggerer) { List <IEditorTileModifier> transformationTriggerers = selectedTileModifierContainer.CurrentlyAvailableTileModifiers[EditorTileModifierCategory.TransformationTriggerer]; EditorTileTransformationModifier transformationTriggerer = transformationTriggerers[EditorManager.SelectedTileTransformationTriggererIndex] as EditorTileTransformationModifier; PlaceTransformationTriggerer(tile, transformationTriggerer); } else if (editorTileModifierType == EditorTileModifierCategory.Area) { List <IEditorTileModifier> areaModifiers = selectedTileModifierContainer.CurrentlyAvailableTileModifiers[EditorTileModifierCategory.Area]; EditorTileAreaModifier tileAreaModifier = areaModifiers[EditorManager.SelectedTileAreaModifierIndex] as EditorTileAreaModifier; AddToSelectedArea(tile, tileAreaModifier); } else { Logger.Error($"EditorMazeTileModifierType {editorTileModifierType} not yet implemented"); } }
private void PerformDeletionAction() { EditorTileModifierCategory editorTileModifierType = EditorManager.SelectedTileModifierCategory; EditorSelectedTileModifierContainer selectedTileModifierContainer = EditorCanvasUI.Instance.SelectedTileModifierContainer; if (editorTileModifierType == EditorTileModifierCategory.TransformationTriggerer) { List <IEditorTileModifier> transformationTriggerers = selectedTileModifierContainer.CurrentlyAvailableTileModifiers[EditorTileModifierCategory.TransformationTriggerer]; EditorTileTransformationModifier transformationTriggerer = transformationTriggerers[EditorManager.SelectedTileTransformationTriggererIndex] as EditorTileTransformationModifier; if (transformationTriggerer == null) { Logger.Error($"Could not find the transformationTriggerer type {transformationTriggerer.GetType()}"); } transformationTriggerer.RemoveAllTriggerersFromTile(); } }
public void SelectNextModifierCategory() { if (EditorCanvasUI.Instance.SelectedTileModifierContainer.UsedTileModifierCategories.Count == 1) { return; } EditorTileModifierCategory currentCategory = EditorManager.SelectedTileModifierCategory; EditorSelectedTileModifierContainer selectedTileModifierContainer = EditorCanvasUI.Instance.SelectedTileModifierContainer; if (EditorModificationPanelContainer.Instance.SelectedPanel is IEditorTileModificationPanel) { IEditorTileModificationPanel selectedPanel = EditorModificationPanelContainer.Instance.SelectedPanel as IEditorTileModificationPanel; selectedPanel.DestroyModifierActions(); } EditorTileModifierCategory nextEditorTileModifierCategory = NextEditorTileModifierCategory(currentCategory); bool landedAtCategory = false; while (!landedAtCategory) { if (selectedTileModifierContainer.CurrentlyAvailableTileModifiers.TryGetValue(nextEditorTileModifierCategory, out List <IEditorTileModifier> editorTileModifiers)) { selectedTileModifierContainer.SetSelectedTileModifierCategory(nextEditorTileModifierCategory); selectedTileModifierContainer.SetSelectedTileModifier(0); landedAtCategory = true; } else { // there are no modifiers in the next category. Try the category after that EditorTileModifierCategory lastQueriedModifierCategory = nextEditorTileModifierCategory; nextEditorTileModifierCategory = NextEditorTileModifierCategory(lastQueriedModifierCategory); } } }