feat: finished adding painting features, added eraser

This commit is contained in:
Daniel Ledda
2023-01-04 12:35:02 +01:00
parent bcdebd3372
commit 59f48c8398
11 changed files with 506 additions and 440 deletions

View File

@@ -24,7 +24,6 @@ export default class TrackView extends Rung implements ISubscriber<EventTypeSubs
private title: HTMLHeadingElement;
private trackUnitViews: TrackUnitView[] = [];
private trackUnitViewBlock: HTMLElement | null = null;
private lastHoveredTrackUnitView: TrackUnitView | null = null;
private sub: ISubscription | null = null;
private state: AppState;
static deselectingUnits = false;
@@ -79,8 +78,8 @@ export default class TrackView extends Rung implements ISubscriber<EventTypeSubs
} else {
view = new TrackUnitView({ trackUnit });
this.trackUnitViews.push(view);
view.onHover(() => this.onTrackUnitViewHover(view));
view.onMouseDown((event: MouseEvent) => this.onTrackUnitClick(event.button, i));
view.onHover(() => this.applyCurrentToolToTrackUnit(view));
view.onMouseDown((event: MouseEvent) => this.onTrackUnitClick(event.button, view));
}
}
}
@@ -88,28 +87,32 @@ export default class TrackView extends Rung implements ISubscriber<EventTypeSubs
deadViews.forEach(trackUnitView => trackUnitView.setUnit(null));
}
private onTrackUnitClick(button: number, index: number) {
private onTrackUnitClick(button: number, view: TrackUnitView) {
if (button === 0) {
TrackView.selectingUnits = true;
} else if (button === 2) {
TrackView.deselectingUnits = true;
}
this.applyCurrentToolToTrackUnit(view);
}
private onTrackUnitViewHover(trackUnitView: TrackUnitView) {
this.lastHoveredTrackUnitView = trackUnitView;
if (TrackView.selectingUnits) {
if (this.state.selectedTool === 'sticking') {
this.lastHoveredTrackUnitView.setStickingType(this.state.activeStickingType);
} else if (this.state.selectedTool === 'track-unit-type') {
this.lastHoveredTrackUnitView.turnOn();
this.lastHoveredTrackUnitView.setType(this.state.activeTrackUnitType);
private applyCurrentToolToTrackUnit(trackUnitView: TrackUnitView) {
if (this.state.selectedTool === "sticking") {
if (TrackView.selectingUnits) {
trackUnitView.setStickingType(this.state.activeStickingType);
} else if (TrackView.deselectingUnits) {
trackUnitView.setStickingType("none");
}
} else if (TrackView.deselectingUnits) {
if (this.state.selectedTool === 'sticking') {
this.lastHoveredTrackUnitView.setStickingType("none");
} else if (this.state.selectedTool === 'track-unit-type') {
this.lastHoveredTrackUnitView.turnOff();
} else if (this.state.selectedTool === "track-unit-type") {
if (TrackView.selectingUnits) {
trackUnitView.turnOn();
trackUnitView.setType(this.state.activeTrackUnitType);
} else if (TrackView.deselectingUnits) {
trackUnitView.turnOff();
}
} else if (this.state.selectedTool === "eraser") {
if (TrackView.selectingUnits || TrackView.deselectingUnits) {
trackUnitView.turnOff();
}
}
}