Ejemplo n.º 1
0
    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);
        }
    }
    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);
                }
            }
        }
    }
Ejemplo n.º 3
0
    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]);
    }
Ejemplo n.º 4
0
    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");
        }
    }
Ejemplo n.º 5
0
    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();
        }
    }
Ejemplo n.º 6
0
    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);
            }
        }
    }
 public EditorTileBackgroundSelector(EditorSelectedTileModifierContainer editorSelectedModifierContainer) : base(editorSelectedModifierContainer)
 {
 }
Ejemplo n.º 8
0
 public EditorTileAttributeSelector(EditorSelectedTileModifierContainer editorSelectedModifierContainer) : base(editorSelectedModifierContainer)
 {
 }
 protected EditorTileModifierSelector(EditorSelectedTileModifierContainer editorSelectedModifierContainer)
 {
     _editorSelectedModifierContainer = editorSelectedModifierContainer;
 }
 public EditorTileAreaModifierSelector(EditorSelectedTileModifierContainer editorSelectedModifierContainer) : base(editorSelectedModifierContainer)
 {
 }
Ejemplo n.º 11
0
 public EditorTileTransformationTriggererSelector(EditorSelectedTileModifierContainer editorSelectedModifierContainer) : base(editorSelectedModifierContainer)
 {
 }