Skip to content

Commit

Permalink
feat: add and delete zones
Browse files Browse the repository at this point in the history
  • Loading branch information
PeenScreeker committed Jul 26, 2024
1 parent e0e0d28 commit 10b1ecf
Showing 1 changed file with 75 additions and 1 deletion.
76 changes: 75 additions & 1 deletion scripts/pages/zoning/zoning.ts
Original file line number Diff line number Diff line change
Expand Up @@ -612,11 +612,73 @@ class ZoneMenu {
zone: newZone
});
}

static showAddMenu() {
UiToolkitAPI.ShowSimpleContextMenu('NewZoneButton', '', [
{
label: $.Localize('#Zoning_AddBonus'),
jsCallback: () => this.addBonus()
},
{
label: $.Localize('#Zoning_AddSegment'),
jsCallback: () => this.addSegment()
},
{
label: $.Localize('#Zoning_AddCheckpoint'),
jsCallback: () => this.addCheckpoint()
},
{
label: $.Localize('#Zoning_AddEnd'),
jsCallback: () => this.addEndZone()
},
{
label: $.Localize('#Zoning_AddCancel'),
jsCallback: () => this.addCancelZone()
}
]);
}

static showDeletePopup() {
}
UiToolkitAPI.ShowGenericPopupTwoOptionsBgStyle(
$.Localize('#Zoning_Delete') as string,
$.Localize('#Zoning_Delete_Message') as string,
'warning-popup',
$.Localize('#Zoning_Delete') as string,
() => {
this.deleteSelection();
},
$.Localize('#Zoning_Cancel') as string,
() => {},
'none'
);
}

static deleteSelection() {
if (!this.selectedZone || !this.mapZoneData) return;

if (this.selectedZone.track && this.selectedZone.segment && this.selectedZone.zone) {
const checkpointIndex = this.selectedZone.segment.checkpoints.indexOf(this.selectedZone.zone);
if (checkpointIndex === -1) {
const cancelIndex = this.selectedZone.segment.cancel.indexOf(this.selectedZone.zone);
this.selectedZone.segment.cancel.splice(cancelIndex, 1);
} else {
this.selectedZone.segment.checkpoints.splice(checkpointIndex, 1);
}
} else if (this.selectedZone.segment) {
const index = this.mapZoneData.tracks.main.zones.segments.indexOf(this.selectedZone.segment);
this.mapZoneData.tracks.main.zones.segments.splice(index, 1);
} else if (this.selectedZone.track) {
if ('stagesEndAtStageStarts' in this.selectedZone.track) {
$.Msg("Can't delete Main track!!!");
} else {
const trackIndex = this.mapZoneData.tracks.bonuses.indexOf(this.selectedZone.track);
this.mapZoneData.tracks.bonuses.splice(trackIndex, 1);
}
}

//hack: this can be a little more surgical
this.panels.trackList.RemoveAndDeleteChildren();
this.initMenu();
}

static setMaxVelocity() {
Expand Down Expand Up @@ -726,4 +788,16 @@ class ZoneMenu {
this.mapZoneData = null;
this.initMenu();
}

static isSelectionValid() {
return {
track: !!this.selectedZone && !!this.selectedZone.track,
segment: !!this.selectedZone && !!this.selectedZone.track && !!this.selectedZone.segment,
zone:
!!this.selectedZone &&
!!this.selectedZone.track &&
!!this.selectedZone.segment &&
!!this.selectedZone.zone
};
}
}

0 comments on commit 10b1ecf

Please sign in to comment.