public void AddLevel() { EnemyLevel enemyLevel = ScriptableObject.CreateInstance <EnemyLevel>(); ScriptableObjects.Add(enemyLevel, this); levels.Add(enemyLevel); }
public void AddLevel() { ItemLevel itemLevel = ScriptableObject.CreateInstance <ItemLevel>(); ScriptableObjects.Add(itemLevel, this); levels.Add(itemLevel); }
public void AddLevel() { HeroLevel heroLevel = ScriptableObject.CreateInstance <HeroLevel>(); ScriptableObjects.Add(heroLevel, this); levels.Add(heroLevel); }
public void ShowStageDefinitions(Vector3 position) { HideStageDefinitions(); int count = _selectedStageSet.stageDefinitions.Count; Add(_stages = new Layout("StageDefinitionButtons", 4, 1 * (count + 1), 0.25f, 0.1f, count + 1, container)); _stages.SetPosition(position + (Vector3.left * (stageSets.width - 0.5f)) + (Vector3.back * ((count * 0.5f) + (0.25f * 0.5f)))); _stages.Add(new List <RenameableDeletableButton>(RenameableDeletableButton.GetButtons(count, (int index) => new RenameableDeletableButton(GetStageDefinition(index).name, 4, 1, container, fontSize: 20, DeleteStay: (Button b) => { if (Input.GetMouseButtonUp(0)) { _selectedStageSet.Remove(GetStageDefinition(index)); ShowStageDefinitions(position); } }, EndInput: (Field field) => { GetStageDefinition(index).name = field.label.text; field.SetColor(Color.white); }, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (_selectedStageSet != null && Input.GetMouseButtonDown(0)) { selectedStageDefinition = GetStageDefinition(index); HideStageSets(); HideStageDefinitions(); HideStage(); SetStageDefinition(selectedStageDefinition); _editor.testButton.Enable(); _editor.testButton.Show(); ShowStage(); ShowStageSets(); ShowStageEditor(); ShowMissionTimeline(); ShowMissionEditor(); } }, Exit: (Button button) => button.SetColor(Color.white))))); _stages.Add(new Button("Add Stage\nDefinition", 4, 1, container, "AddStageDefinition", fontSize: 20, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (_selectedStageSet != null && Input.GetMouseButtonDown(0)) { ScriptableObjects.Add(StageDefinition.Default(), _selectedStageSet); ShowStageDefinitions(position); } }, Exit: (Button button) => button.SetColor(Color.white)), true); }
private void ShowConnectorAndTerminal(int index, RenameableDeletableButton button) { Button connector = new Button("+", 0.5f, 0.5f, container, "Connector+", Enter: (Button butt) => butt.SetColor(butt.selected ? butt.color : Color.green), Stay: (Button butt) => { if (Input.GetMouseButtonDown(0)) { butt.Select(); butt.SetColor(Color.yellow); _selectedConnectorIndex = index; _dummyContainer = new GameObject("DummyContainer"); _dummyConnector = GameObject.CreatePrimitive(PrimitiveType.Quad); _dummyConnector.transform.SetParent(_dummyContainer.transform); _dummyConnector.transform.localPosition += Vector3.up * 0.5f; _dummyContainer.transform.position = butt.position + Vector3.up; } }, Exit: (Button butt) => butt.SetColor(butt.selected ? butt.color : Color.white), Close: (Button butt) => { if (Input.GetMouseButtonUp(0)) { butt.Deselect(); butt.SetColor(Color.white); if (_dummyContainer != null) { butt.Deselect(); GameObject.Destroy(_dummyContainer); _dummyContainer = null; _dummyConnector = null; } } }); Button terminator = new Button("-", 0.5f, 0.5f, container, "Terminator-", Enter: (Button butt) => butt.SetColor(_selectedConnectorIndex >= 0 ? Color.yellow : Color.green), Stay: (Button butt) => { if (_selectedConnectorIndex >= 0 && _selectedConnectorIndex != index && Input.GetMouseButtonUp(0)) { ScriptableObjects.Add(ScriptableObject.CreateInstance <Connection>().Initialize(_selectedConnectorIndex, index), selectedCampaign); _selectedConnectorIndex = -1; butt.SetColor(Color.white); ShowConnections(); } }, Exit: (Button butt) => butt.SetColor(Color.white)); Add(connector); Add(terminator); _connectorsAndTerminators.Add(connector); _connectorsAndTerminators.Add(terminator); connector.SetPosition(new Vector3(button.rect.xMax + 0.25f, button.position.y, button.rect.center.y)); terminator.SetPosition(new Vector3(button.rect.xMin - 0.25f, button.position.y, button.rect.center.y)); }
public void ShowCampaigns(int index, Vector3 position) { HideCampaigns(); int count = selectedCampaignSet.campaignDefinitions.Count; Add(_campaigns = new Layout("CampaignLayout", 4, count + 1, 0.25f, 0.1f, count + 1, container)); _campaigns.SetPosition(position + (Vector3.left * (campaignSets.width - 0.5f)) + (Vector3.back * ((_campaigns.height * 0.5f) - 0.5f))); _campaigns.Add(new List <RenameableDeletableButton>( RenameableDeletableButton.GetButtons(count, (int capturedIndex) => new RenameableDeletableButton(GetCampaign(capturedIndex).name, 4, 1, container, fontSize: 20, DeleteStay: (Button button) => { if (Input.GetMouseButtonUp(0)) { selectedCampaignSet.Remove(GetCampaign(index)); ShowCampaigns(index, position); ShowCampaignSets(); } }, EndInput: (Field field) => { GetCampaign(capturedIndex).name = field.label.text; field.SetColor(Color.white); }, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { selectedCampaign = GetCampaign(capturedIndex); HideCampaigns(); HideCampaignSets(); ShowCampaignMap(); ShowCampaignSets(); ShowCampaignEditor(); } }, Exit: (Button button) => button.SetColor(Color.white))))); _campaigns.Add(new Button("New Campaign", 4, 1, container, "NewCampaign", fontSize: 20, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { ScriptableObjects.Add(CampaignDefinition.Default(), selectedCampaignSet); ShowCampaigns(index, position); } }, Exit: (Button button) => button.SetColor(Color.white)), true); }
private void ShowWaveDefinitions(Vector3 position, float width = 4, float height = 1, float padding = 0.25f, float spacing = 0.1f) { HideWaveDefinitions(); int count = selectedWaveSet.waveDefinitions.Count; Add(_waveDefinitionLayout = new Layout("WaveDefinitionButtons", width, height * (count + 1), padding, spacing, count + 1, container)); _waveDefinitionLayout.SetPosition(position + (Vector3.right * width) + (Vector3.back * ((count * 0.5f) + (0.25f * 0.5f)))); _waveDefinitionLayout.Add(new List <RenameableDeletableButton>(RenameableDeletableButton.GetButtons(count, (int index) => new RenameableDeletableButton(GetWaveDefinition(index).name, width, height, container, fontSize: 20, DeleteStay: (Button b) => { if (Input.GetMouseButtonUp(0)) { selectedWaveSet.Remove(GetWaveDefinition(index)); ShowWaveDefinitions(position); } }, EndInput: (Field field) => { GetWaveDefinition(index).name = field.label.text; field.SetColor(Color.white); }, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (selectedWaveSet != null && Input.GetMouseButtonDown(0)) { selectedWaveDefinition = selectedWaveSet.waveDefinitions[index]; AddWaveToTimeline(selectedWaveDefinition, _editor.timelineEditor.timelinePosition); ShowWaveEventButtons(); HideWaveDefinitions(); HideWaveSets(); } }, Exit: (Button button) => button.SetColor(Color.white))))); _waveDefinitionLayout.Add(new Button("Add Wave\nDefinition", width, height, container, "AddWaveDefinition", fontSize: 20, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (selectedWaveSet != null && Input.GetMouseButtonDown(0)) { ScriptableObjects.Add(ScriptableObject.CreateInstance <WaveDefinition>(), selectedWaveSet); HideWaveDefinitions(); ShowWaveDefinitions(position); } }, Exit: (Button button) => button.SetColor(Color.white)), true); }
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; } } } }
private void ShowWaveSets(float width = 4, float height = 1, float padding = 0.25f, float spacing = 0.1f) { HideWaveSets(); int count = _editor.waveData.waveSets.Count; Add(waveSets = new Layout("WaveSetButtons", width, height * (count + 1), padding, spacing, count + 1, container)); waveSets.SetLocalPosition(_editor.timelineEditor.indicatorPosition + (Vector3.back * (height * count * 0.5f)) + Vector3.up); waveSets.Add(new List <RenameableDeletableButton>(RenameableDeletableButton.GetButtons(count, (int index) => new RenameableDeletableButton(GetWaveSet(index).name, width, height, container, fontSize: 20, DeleteStay: (Button b) => { if (Input.GetMouseButtonUp(0)) { if (b.selected) { HideWaveDefinitions(); } _editor.waveData.Remove(GetWaveSet(index)); ShowWaveSets(); } }, EndInput: (Field field) => { GetWaveSet(index).name = field.label.text; field.SetColor(Color.white); }, Enter: (Button button) => button.SetColor(selectedWaveSet == GetWaveSet(index) ? button.color : Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { button.Select(); button.SetColor(Color.yellow); selectedWaveSet = GetWaveSet(index); HideWaveDefinitions(); ShowWaveDefinitions(button.position); } }, Exit: (Button button) => button.SetColor(selectedWaveSet == _editor.waveData.waveSets[index] ? button.color : Color.white))))); waveSets.Add(new Button("Add Wave Set", width, height, container, "AddWaveSet", fontSize: 20, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { ScriptableObjects.Add(ScriptableObject.CreateInstance <WaveSet>(), _editor.waveData); Refresh(); } }, Exit: (Button button) => button.SetColor(Color.white), Close: (Button button) => { if (Input.GetMouseButtonDown(0) && !waveSets.containsMouse && (_waveDefinitionLayout == null || !_waveDefinitionLayout.containsMouse)) { button.SetColor(Color.white); HideWaveDefinitions(); HideWaveSets(); } }), true); }
public void ShowStageSets() { HideStageSets(); int count = _editor.stageData.stageSets.Count; Add(stageSets = new Layout("StageSetButtons", 4, (count + 2), 0.25f, 0.1f, count + 2, container)); stageSets.SetViewportPosition(new Vector2(1, 1)); stageSets.SetPosition(stageSets.position + (Vector3.left * stageSets.width) + Vector3.up + (Vector3.back * 0.5f)); stageSets.Add(new List <RenameableDeletableButton>(RenameableDeletableButton.GetButtons(count, (int index) => new RenameableDeletableButton(GetStageSet(index).name, 4, 1, container, fontSize: 20, DeleteStay: (Button b) => { if (Input.GetMouseButtonUp(0)) { if (b.selected) { HideStageDefinitions(); } _editor.stageData.Remove(GetStageSet(index)); ShowStageSets(); } }, EndInput: (Field field) => { GetStageSet(index).name = field.label.text; field.SetColor(Color.white); }, Enter: (Button button) => button.SetColor(_stages != null && _selectedStageSet == GetStageSet(index) ? button.color : Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { _selectedStageSet = GetStageSet(index); ShowStageDefinitions(button.position); button.SetColor(Color.yellow); button.Select(); } }, Exit: (Button button) => button.SetColor(_stages != null && _selectedStageSet == GetStageSet(index) ? button.color : Color.white), Close: (Button button) => { if (button.selected && Input.GetMouseButtonDown(0) && (_stages == null || !_stages.containsMouse)) { HideStageDefinitions(); button.Deselect(); _selectedStageSet = null; button.SetColor(Color.white); } })))); stageSets.Add(new Button("Add Stage Set", 4, 1, container, "AddStageSet", fontSize: 20, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { ScriptableObjects.Add(ScriptableObject.CreateInstance <StageSet>(), _editor.stageData); if (selectedStageDefinition != null) { ShowStageEditor(); } ShowStageSets(); _editor.missionEditor.ShowMissionEditor(); } }, Exit: (Button button) => button.SetColor(Color.white))); stageSets.Add(new Button("Back to Campaign", 4, 1, container, "BackToCampaign", fontSize: 20, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { _selectedStageSet = null; selectedStageDefinition = null; _editor.missionEditor.SetSelectedMission(null); _editor.missionEditor.SetSelectedMissionSet(null); _editor.testButton.Disable(); _editor.testButton.Hide(); _editor.waveEditor.Hide(); _editor.stageEditor.Hide(); _editor.missionEditor.Hide(); _editor.timelineEditor.Hide(); _editor.missionEditor.HideMissionEditor(); _editor.timelineEditor.HideMissionTimeline(); _editor.campaignEditor.ShowCampaignSets(); _editor.campaignEditor.ShowCampaignEditor(); _editor.campaignMapEditor.ShowCampaignMap(); } }, Exit: (Button button) => button.SetColor(Color.white)), true); }
public void ShowMissionSets(int index, Vector3 position) { HideMissionSets(); int count = _editor.campaignData.missionSets.Count; Add(missionSets = new Layout("MissionSets", 4, count + 1, 0.25f, 0.1f, count + 1, container)); missionSets.SetPosition(position + (Vector3.right * missionSets.width * 0.5f) + (Vector3.back * missionSets.height * 0.5f)); missionSets.Add(new List <RenameableDeletableButton>(RenameableDeletableButton.GetButtons(count, (int capturedIndex) => new RenameableDeletableButton(_editor.campaignData.missionSets[capturedIndex].name, 3, 1, container, fontSize: 20, DeleteStay: (Button button) => { if (Input.GetMouseButtonUp(0)) { if (button.selected) { HideMissions(); } _editor.campaignData.Remove(GetMissionSet(capturedIndex)); ShowMissionSets(index, position); } }, EndInput: (Field field) => { GetMissionSet(capturedIndex).name = field.label.text; ShowMissionSets(index, position); }, Enter: (Button button) => button.SetColor(selectedMissionSet == GetMissionSet(capturedIndex) ? button.color : Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { button.SetColor(Color.yellow); selectedMissionSet = GetMissionSet(capturedIndex); ShowMissions(index, button.position + new Vector3(missionSets.width * 0.5f, 0, button.height * 0.5f)); } }, Exit: (Button button) => button.SetColor(selectedMissionSet == GetMissionSet(capturedIndex) ? button.color : Color.white), Close: (Button button) => { if (Input.GetMouseButtonDown(0) && selectedMissionSet == GetMissionSet(capturedIndex) && missions != null && !missions.containsMouse) { HideMissions(); selectedMissionSet = null; button.SetColor(Color.white); } })))); missionSets.Add(new Button("New Set", 4, 1, container, "NewMissionSet", fontSize: 20, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { HideMissions(); ScriptableObjects.Add(ScriptableObject.CreateInstance <MissionSet>(), _editor.campaignData); ShowMissionSets(index, position); } }, Exit: (Button button) => button.SetColor(Color.white)), true); }
public void ShowCampaignSets() { HideCampaignSets(); int count = _editor.campaignData.campaignSets.Count; Add(campaignSets = new Layout("CampaignSets", 4, count + 1, 0.25f, 0.1f, count + 1, container)); campaignSets.SetViewportPosition(new Vector2(1, 1)); campaignSets.SetPosition(campaignSets.position + Vector3.up + (Vector3.left * campaignSets.width) + (Vector3.back * 0.5f)); campaignSets.Add(new List <RenameableDeletableButton>( RenameableDeletableButton.GetButtons(count, (int index) => new RenameableDeletableButton(GetCampaignSet(index).name, 4, 1, container, fontSize: 20, DeleteStay: ( Button button ) => { if (Input.GetMouseButtonUp(0)) { if (button.selected) { HideCampaigns(); } _editor.campaignData.Remove(GetCampaignSet(index)); ShowCampaignSets(); } }, EndInput: (Field field) => { GetCampaignSet(index).name = field.label.text; field.SetColor(Color.white); }, Enter: (Button button) => button.SetColor(_campaigns != null && selectedCampaignSet == GetCampaignSet(index) ? button.color : Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { selectedCampaignSet = GetCampaignSet(index); ShowCampaigns(index, button.position); button.SetColor(Color.yellow); button.Select(); } }, Exit: (Button button) => button.SetColor(_campaigns != null && selectedCampaignSet == GetCampaignSet(index) ? button.color : Color.white), Close: (Button button) => { if (button.selected && Input.GetMouseButtonDown(0) && (_campaigns == null || !_campaigns.containsMouse)) { HideCampaigns(); button.Deselect(); selectedCampaignSet = null; button.SetColor(Color.white); } }) ))); campaignSets.Add(new Button("New Set", 4, 1, container, "NewCampaignSet", fontSize: 20, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { HideCampaigns(); ScriptableObjects.Add(ScriptableObject.CreateInstance <CampaignSet>(), _editor.campaignData); ShowCampaignSets(); if (selectedCampaign != null) { ShowCampaignEditor(); } } }, Exit: (Button button) => button.SetColor(Color.white)), true); }
public Editor(Player player, GameObject parent) : base("Editor", parent) { session = new Session(new Player()); session.Hide(); waveData = Assets.Get(Assets.WaveDataSets.Default); stageData = Assets.Get(Assets.StageDataSets.Default); objectData = Assets.Get(Assets.ObjectDataSets.Default); campaignData = Assets.Get(Assets.CampaignDataSets.Default); if (waveData == null) { waveData = Assets.Create <WaveData>(Assets.waveDataPath); } if (stageData == null) { stageData = Assets.Create <StageData>(Assets.stageDataPath); } if (campaignData == null) { campaignData = Assets.Create <CampaignData>(Assets.campaignDataPath); } if (objectData == null) { objectData = Assets.Create <ObjectData>(Assets.objectDataPath); } if (objectData.enemySets.Count == 0) { ScriptableObjects.Add(ScriptableObject.CreateInstance <EnemySet>(), objectData); } if (objectData.itemSets.Count == 0) { ScriptableObjects.Add(ScriptableObject.CreateInstance <ItemSet>(), objectData); } if (objectData.heroSets.Count == 0) { ScriptableObjects.Add(ScriptableObject.CreateInstance <HeroSet>(), objectData); } for (int i = objectData.enemySets[(int)Assets.ObjectDataSets.Default].enemyDefinitions.Count; (int)Definitions.Enemies.Count > i; i++) { ScriptableObjects.Add(ScriptableObject.CreateInstance <EnemyDefinition>().Initialize(((Definitions.Enemies)i).ToString(), 2, 1, (Definitions.Enemies)i), objectData.enemySets[(int)Assets.ObjectDataSets.Default]); } for (int i = objectData.heroSets[(int)Assets.ObjectDataSets.Default].heroDefinitions.Count; (int)Definitions.Heroes.Count > i; i++) { ScriptableObjects.Add(ScriptableObject.CreateInstance <HeroDefinition>().Initialize(((Definitions.Heroes)i).ToString(), 2, 1, (Definitions.Heroes)i), objectData.heroSets[(int)Assets.ObjectDataSets.Default]); } for (int i = objectData.itemSets[(int)Assets.ObjectDataSets.Default].itemDefinitions.Count; (int)Definitions.Items.Count > i; i++) { ScriptableObjects.Add(ScriptableObject.CreateInstance <ItemDefinition>().Initialize(((Definitions.Items)i).ToString(), 2, 1, (Definitions.Items)i), objectData.itemSets[(int)Assets.ObjectDataSets.Default]); } Definitions.Initialize(objectData); Add(testButton = new Button("Test", 1.5f, 0.5f, container, "Test", fontSize: 20, Enter: (Button button) => button.SetColor(stage != null && missionEditor.selectedMission != null ? Color.green : button.color), Stay: (Button button) => { if (stage != null && missionEditor.selectedMission != null && Input.GetMouseButtonDown(0)) { if (level == null) { stage.conveyor.Show(); session.SetLevel(new Level(missionEditor.selectedMission.duration, showProgress: false)); for (int i = 0; missionEditor.selectedMission.waveDefinitions.Count > i; i++) { Wave wave = new Wave(missionEditor.selectedMission.waveTimes[i] * missionEditor.selectedMission.duration, stage); level.Add(wave); for (int j = 0; missionEditor.selectedMission.waveDefinitions[i].waveEvents.Count > j; j++) { switch ((WaveEvent.Type)missionEditor.selectedMission.waveDefinitions[i].waveEvents[j].type) { case WaveEvent.Type.SpawnEnemy: wave.Add(new SpawnEnemyEvent(Definitions.Enemy((Definitions.Enemies)missionEditor.selectedMission.waveDefinitions[i].waveEvents[j].subType), missionEditor.selectedMission.waveDefinitions[i].waveEvents[j])); break; } } } button.SetLabel("Stop"); button.SetPosition(saveButton.position); saveButton.Hide(); saveButton.Disable(); objectsButton.Hide(); campaignButton.Hide(); stageEditor.HideStageSets(); stageEditor.HideStageEditor(); stageEditor.HideStageDefinitions(); missionEditor.HideMissionEditor(); waveEditor.HideWaveEventButtons(); session.Start(); } else { session.Stop(); stage.ClearLanes(); conveyor.Hide(); conveyor.Clear(); button.SetLabel("Test"); level.DestroyProgress(); session.SetLevel(null); _heldItem = null; _itemTime = 0; saveButton.Show(); saveButton.Enable(); objectsButton.Show(); campaignButton.Show(); stageEditor.ShowStageSets(); stageEditor.ShowStageEditor(); missionEditor.ShowMissionEditor(); testButton.SetPosition(saveButton.position + Vector3.right * (saveButton.width)); if (waveEditor.selectedWaveDefinition != null) { waveEditor.ShowWaveEventButtons(); } } } }, Exit: (Button button) => button.SetColor(Color.white))); Add(saveButton = new Button("Save", 1.5f, 0.5f, container, "Save", fontSize: 20, Enter: (Button button) => button.SetColor(Color.green), Stay: (Button button) => { if (Input.GetMouseButtonDown(0)) { EditorUtility.SetDirty(campaignData); EditorUtility.SetDirty(objectData); EditorUtility.SetDirty(stageData); EditorUtility.SetDirty(waveData); ScriptableObjects.Save(); } }, Exit: (Button button) => button.SetColor(Color.white))); saveButton.SetViewportPosition(new Vector2(0, 1)); saveButton.SetPosition(saveButton.position + Vector3.up); testButton.SetPosition(saveButton.position + Vector3.right * (saveButton.width)); testButton.Disable(); testButton.Hide(); Add(campaignButton = new Button("Campaigns", 2, 0.5f, container, "CampaignsButton", fontSize: 20, Enter: (Button button) => button.SetColor(button.selected ? button.color : Color.green), Stay: (Button button) => { if (!button.selected && Input.GetMouseButtonDown(0)) { ShowCampaignEditor(); } }, Exit: (Button button) => button.SetColor(button.selected ? button.color : Color.white))); campaignButton.SetViewportPosition(new Vector2(1, 1)); campaignButton.SetPosition(campaignButton.position + (Vector3.left * campaignButton.width) + Vector3.up); Add(objectsButton = new Button("Objects", 2, 0.5f, container, "ObjectsButton", fontSize: 20, Enter: (Button button) => button.SetColor(button.selected ? button.color : Color.green), Stay: (Button button) => { if (!button.selected && Input.GetMouseButtonDown(0)) { ShowObjectEditors(); } }, Exit: (Button button) => button.SetColor(button.selected ? button.color : Color.white))); objectsButton.SetPosition(campaignButton.position + Vector3.left * (objectsButton.width)); Add(campaignMapEditor = new CampaignMapEditor(this, container)); Add(campaignEditor = new CampaignEditor(this, Vector3.zero, container)); Add(timelineEditor = new TimelineEditor(this, container)); Add(missionEditor = new MissionEditor(this, container)); Add(stageEditor = new StageEditor(this, container)); Add(enemyEditor = new EnemyEditor(this, container)); Add(waveEditor = new WaveEditor(this, container)); Add(itemEditor = new ItemEditor(this, container)); Add(heroEditor = new HeroEditor(this, container)); ShowCampaignEditor(); }