import { Button, Classes, Dialog, FileInput, FormGroup, HTMLSelect, InputGroup, Intent, Navbar, NavbarGroup } from "@blueprintjs/core"; import { observer } from "mobx-react"; import React, { ChangeEvent, KeyboardEvent } from "react"; import { saveCurrentQuestToFile, setCurrentAreaId } from "../../actions/quest-editor/questEditor"; import { loadFile } from "../../actions/quest-editor/loadFile"; import { questEditorStore } from "../../stores/QuestEditorStore"; import { EntityInfoComponent } from "./EntityInfoComponent"; import './QuestEditorComponent.css'; import { QuestInfoComponent } from "./QuestInfoComponent"; import { RendererComponent } from "./RendererComponent"; @observer export class QuestEditorComponent extends React.Component<{}, { filename?: string, saveDialogOpen: boolean, saveDialogFilename: string }> { state = { filename: undefined, saveDialogOpen: false, saveDialogFilename: 'Untitled', }; render() { const quest = questEditorStore.currentQuest; const model = questEditorStore.currentModel; const areas = quest && Array.from(quest.areaVariants).map(a => a.area); const area = questEditorStore.currentArea; const areaId = area && String(area.id); return (
{areas ? ( {areas.map(area => )} ) : null} {quest ? (
); } private onFileChange = (e: ChangeEvent) => { if (e.currentTarget.files) { const file = e.currentTarget.files[0]; if (file) { this.setState({ filename: file.name }); loadFile(file); } } } private onAreaSelectChange = (e: ChangeEvent) => { const areaId = parseInt(e.currentTarget.value, 10); setCurrentAreaId(areaId); } private onSaveAsClick = () => { let name = this.state.filename || 'Untitled'; name = name.endsWith('.qst') ? name.slice(0, -4) : name; this.setState({ saveDialogOpen: true, saveDialogFilename: name }); } private onSaveDialogNameChange = (e: ChangeEvent) => { this.setState({ saveDialogFilename: e.currentTarget.value }); } private onSaveDialogNameKeyUp = (e: KeyboardEvent) => { if (e.key === 'Enter') { this.onSaveDialogSaveClick(); } } private onSaveDialogSaveClick = () => { saveCurrentQuestToFile(this.state.saveDialogFilename); this.setState({ saveDialogOpen: false }); } private onSaveDialogClose = () => { this.setState({ saveDialogOpen: false }); } }