import { Button, Form, Icon, Input, Modal, Select, Upload } from "antd"; import { UploadChangeParam } from "antd/lib/upload"; import { UploadFile } from "antd/lib/upload/interface"; import { observer } from "mobx-react"; import React, { ChangeEvent } from "react"; 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 = { saveDialogOpen: false, saveDialogFilename: 'Untitled', }; render() { const quest = questEditorStore.currentQuest; const model = questEditorStore.currentModel; const area = questEditorStore.currentArea; return (
); } private saveAsClicked = (filename?: string) => { const name = filename ? filename.endsWith('.qst') ? filename.slice(0, -4) : filename : this.state.saveDialogFilename; this.setState({ saveDialogOpen: true, saveDialogFilename: name }); } private saveDialogFilenameChanged = (filename: string) => { this.setState({ saveDialogFilename: filename }); } private saveDialogAffirmed = () => { questEditorStore.saveCurrentQuestToFile(this.state.saveDialogFilename); this.setState({ saveDialogOpen: false }); } private saveDialogCancelled = () => { this.setState({ saveDialogOpen: false }); } } @observer class Toolbar extends React.Component<{ onSaveAsClicked: (filename?: string) => void }> { state = { filename: undefined } render() { const quest = questEditorStore.currentQuest; const areas = quest && Array.from(quest.area_variants).map(a => a.area); const area = questEditorStore.currentArea; const areaId = area && area.id; return (
false} > {areas && ( )} {quest && ( )}
); } private setFilename = (info: UploadChangeParam) => { if (info.file.originFileObj) { this.setState({ filename: info.file.name }); questEditorStore.loadFile(info.file.originFileObj); } } private saveAsClicked = () => { this.props.onSaveAsClicked(this.state.filename); } } class SaveAsForm extends React.Component<{ isOpen: boolean, filename: string, onFilenameChange: (name: string) => void, onOk: () => void, onCancel: () => void }> { render() { return ( Save as...} visible={this.props.isOpen} onOk={this.props.onOk} onCancel={this.props.onCancel} >
); } private nameChanged = (e: ChangeEvent) => { this.props.onFilenameChange(e.currentTarget.value); } }