コード例 #1
0
ファイル: HeldEvent.cs プロジェクト: Slaktus/LaneDefender
    public HeldEvent(Vector3 position, float width, float height, Color color, WaveEventDefinition waveEventDefinition, int laneIndex) : base("Held" + waveEventDefinition.type.ToString(), GameObject.CreatePrimitive(PrimitiveType.Quad))
    {
        container.transform.localRotation = Quaternion.Euler(90, 0, 0);
        body.transform.localScale         = new Vector3(width, height, 1);
        body.transform.localRotation      = Quaternion.identity;
        meshRenderer.material.color       = color;

        label.SetLocalRotation(Quaternion.identity);

        this.position            = position;
        this.laneIndex           = laneIndex;
        this.waveEventDefinition = waveEventDefinition;
    }
コード例 #2
0
ファイル: Editor.cs プロジェクト: Slaktus/LaneDefender
    private void HandleLaneHover()
    {
        if (timelineEditor.heldWave == null && stage != null && (conveyor == null || !conveyor.showing) && waveEditor.selectedWaveDefinition != null && waveEditor.waveSets == null && waveEditor.waveEventEditor == null)
        {
            Lane hoveredLane = stage.GetHoveredLane(mousePos);
            stage.SetLaneColor(Color.black);

            if (hoveredLane != null)
            {
                hoveredLane.color = Color.yellow;
                int laneIndex = stage.IndexOf(hoveredLane);

                if (Input.GetMouseButtonDown(0) && laneIndex >= 0 && waveEditor.waveEventLayouts.Count > laneIndex && !waveEditor.waveEventLayouts[laneIndex].containsMouse)
                {
                    int index = stage.IndexOf(hoveredLane);
                    WaveEventDefinition waveEventDefinition = ScriptableObject.CreateInstance <WaveEventDefinition>();
                    waveEventDefinition.Initialize(0, index, WaveEvent.Type.SpawnEnemy, 0, Helpers.Normalize(mousePos.x, hoveredLane.width, hoveredLane.start.x));
                    ScriptableObjects.Add(waveEventDefinition, waveEditor.selectedWaveDefinition);
                    waveEditor.HideWaveEventButtons();
                    waveEditor.ShowWaveEventButtons();
                }
            }

            if (waveEditor.heldWaveEvent != null)
            {
                waveEditor.heldWaveEvent.SetPosition(mousePos);

                if (Input.GetMouseButtonUp(0))
                {
                    if (hoveredLane != null)
                    {
                        waveEditor.heldWaveEvent.waveEventDefinition.SetLane(stage.IndexOf(hoveredLane));
                        waveEditor.heldWaveEvent.waveEventDefinition.entryPoint = Helpers.Normalize(mousePos.x, hoveredLane.end.x, hoveredLane.start.x);
                        waveEditor.HideWaveEventButtons();
                        waveEditor.ShowWaveEventButtons();
                    }

                    waveEditor.heldWaveEvent.Destroy();
                    waveEditor.heldWaveEvent = null;
                }
            }
        }
    }
コード例 #3
0
ファイル: WaveEditor.cs プロジェクト: Slaktus/LaneDefender
    public void ShowWaveEventButtons()
    {
        HideWaveEventButtons();
        List <List <Button> > waveEventButtons = new List <List <Button> >();

        for (int i = 0; _editor.stage.lanes > i; i++)
        {
            waveEventButtons.Add(new List <Button>());
            Layout layout = new Layout("WaveEvent" + i.ToString() + "Layout", waveEventButtons[i].Count, 1, 0.25f, 0.1f, 1, container, false);
            layout.SetLocalPosition(_editor.stage.LaneBy(i).start + (Vector3.left * layout.width * 0.5f));
            waveEventLayouts.Add(layout);
            Add(layout);
        }

        for (int i = 0; selectedWaveDefinition.waveEvents.Count > i; i++)
        {
            int index     = i;
            int laneIndex = selectedWaveDefinition.waveEvents[index].lane;
            WaveEventDefinition waveEvent = selectedWaveDefinition.waveEvents[index];
            Lane lane = _editor.stage.LaneBy(laneIndex);

            if (waveEventButtons.Count > laneIndex)
            {
                float  width  = 1;
                float  height = 1;
                Color  color  = Color.white;
                string name   = index.ToString();

                switch ((WaveEvent.Type)waveEvent.type)
                {
                case WaveEvent.Type.SpawnEnemy:
                    EnemyDefinition enemyDefinition = Definitions.Enemy((Definitions.Enemies)waveEvent.subType);
                    EnemyLevel      enemyLevel      = enemyDefinition.levels[waveEvent.level];
                    width  = enemyDefinition.width;
                    height = lane.height - enemyDefinition.laneHeightPadding;
                    name   = enemyDefinition.name;
                    color  = enemyLevel.color;
                    break;

                case WaveEvent.Type.SpawnItem:

                    break;
                }

                Button button = new Button(name, width, height, container, "WaveEvent" + index.ToString(),
                                           fontSize: 20,
                                           Enter: (Button butt) => butt.SetColor(Color.green),
                                           Stay: (Button butt) =>
                {
                    if (Input.GetMouseButtonUp(0))
                    {
                        for (int j = 0; waveEventButtons[laneIndex].Count > j; j++)
                        {
                            waveEventButtons[laneIndex][j].Hide();
                        }

                        butt.Select();
                        _selectedWaveEvent = waveEvent;
                        ShowWaveEventEditor(butt, index);
                    }

                    if (Input.GetMouseButtonDown(1))
                    {
                        selectedWaveDefinition.Remove(waveEvent);
                        ShowWaveEventButtons();
                    }
                },
                                           Exit: (Button butt) =>
                {
                    if (_editor.timelineEditor.heldWave == null && heldWaveEvent == null && Input.GetMouseButton(0))
                    {
                        heldWaveEvent = new HeldEvent(butt.rect.position, width, height, color, waveEvent, laneIndex);
                        heldWaveEvent.SetText(name);
                    }

                    butt.SetColor(color);
                },
                                           Close: (Button butt) =>
                {
                    if (Input.GetMouseButtonDown(0) && butt.selected && _waveTypes == null && _enemyLevels == null && _enemyTypes == null && _itemTypes == null && (waveEventEditor == null || !waveEventEditor.containsMouse))
                    {
                        HideWaveEventEditor();
                        butt.Deselect();

                        for (int j = 0; waveEventButtons[selectedWaveDefinition.waveEvents[index].lane].Count > j; j++)
                        {
                            waveEventButtons[selectedWaveDefinition.waveEvents[index].lane][j].Show();
                        }
                    }
                });

                button.SetColor(color);
                waveEventButtons[laneIndex].Add(button);
                waveEventLayouts[laneIndex].Add(button);
                button.SetLocalPosition(new Vector3(waveEvent.entryPoint * lane.width, 1, 0));
            }
        }
    }
コード例 #4
0
ファイル: Wave.cs プロジェクト: Slaktus/LaneDefender
 public WaveEvent(WaveEventDefinition waveEventDefinition) : this(waveEventDefinition.level, waveEventDefinition.delay, waveEventDefinition.lane, ( Type )waveEventDefinition.type, waveEventDefinition.subType, waveEventDefinition.entryPoint)
 {
 }
コード例 #5
0
ファイル: Wave.cs プロジェクト: Slaktus/LaneDefender
 public SpawnEnemyEvent(EnemyDefinition enemyDefinition, WaveEventDefinition waveEventDefinition) : base(waveEventDefinition)
 {
     this.enemyDefinition = enemyDefinition;
 }