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);
}
}