250 lines
6.4 KiB
JavaScript
250 lines
6.4 KiB
JavaScript
|
|
var RecollectionMode = {
|
|
TOP: 0,
|
|
EVENT: 1
|
|
};
|
|
|
|
var RecollectionScreen = defineObject(BaseScreen,
|
|
{
|
|
_eventArray: null,
|
|
_recollectionEvent: null,
|
|
_isAutoBackground: false,
|
|
_scrollbar: null,
|
|
_descriptionChanger: null,
|
|
_isThumbnailMode: false,
|
|
|
|
setScreenData: function(screenParam) {
|
|
this._prepareScreenMemberData(screenParam);
|
|
this._completeScreenMemberData(screenParam);
|
|
},
|
|
|
|
moveScreenCycle: function() {
|
|
var mode = this.getCycleMode();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (mode === RecollectionMode.TOP) {
|
|
result = this._moveTop();
|
|
}
|
|
else if (mode === RecollectionMode.EVENT) {
|
|
result = this._moveEvent();
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
drawScreenCycle: function() {
|
|
this._drawTop();
|
|
},
|
|
|
|
drawScreenTopText: function(textui) {
|
|
TextRenderer.drawScreenTopTextCenter(this.getScreenTitleName(), textui);
|
|
},
|
|
|
|
drawScreenBottomText: function(textui) {
|
|
this._descriptionChanger.drawBottomDescription(textui, this._scrollbar);
|
|
},
|
|
|
|
getScreenInteropData: function() {
|
|
return root.queryScreen('Recollection');
|
|
},
|
|
|
|
getExtraDisplayName: function() {
|
|
return this.getScreenTitleName();
|
|
},
|
|
|
|
getExtraDescription: function() {
|
|
return StringTable.Extra_Recollection;
|
|
},
|
|
|
|
_prepareScreenMemberData: function(screenParam) {
|
|
this._eventArray = this._createEventArray();
|
|
this._recollectionEvent = createObject(RecollectionEvent);
|
|
this._isAutoBackground = false;
|
|
this._scrollbar = createScrollbarObject(this._isThumbnailMode ? ThumbnailScrollbar : DictionaryScrollbar, this);
|
|
this._descriptionChanger = createObject(DescriptionChanger);
|
|
},
|
|
|
|
_completeScreenMemberData: function(screenParam) {
|
|
this._setScrollbarData();
|
|
this._descriptionChanger.setDescriptionData();
|
|
this._descriptionChanger.setDescriptionText(this._scrollbar);
|
|
|
|
this.changeCycleMode(RecollectionMode.TOP);
|
|
},
|
|
|
|
_createEventArray: function() {
|
|
var i, event, handle;
|
|
var list = root.getBaseData().getRecollectionEventList();
|
|
var count = list.getCount();
|
|
var eventArray = [];
|
|
|
|
for (i = 0; i < count; i++) {
|
|
event = list.getData(i);
|
|
if (event.getRecollectionEventInfo().isExtraDisplayable()) {
|
|
eventArray.push(event);
|
|
|
|
handle = event.getRecollectionEventInfo().getThumbnailResourceHandle();
|
|
if (!handle.isNullHandle()) {
|
|
this._isThumbnailMode = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return eventArray;
|
|
},
|
|
|
|
_setScrollbarData: function() {
|
|
var dictionaryScrollbarParam = this._createDictionaryScrollbarParam();
|
|
|
|
this._scrollbar.setDictionaryScrollbarParam(dictionaryScrollbarParam);
|
|
this._scrollbar.setDictionaryFormation();
|
|
this._scrollbar.setActive(true);
|
|
this._scrollbar.setObjectArray(this._eventArray);
|
|
},
|
|
|
|
_createDictionaryScrollbarParam: function() {
|
|
var dictionaryScrollbarParam = StructureBuilder.buildDictionaryScrollbarParam();
|
|
|
|
dictionaryScrollbarParam.isRecollectionMode = true;
|
|
dictionaryScrollbarParam.funcCondition = function(object, index) {
|
|
return object.getExecutedMark() === EventExecutedType.EXECUTED;
|
|
};
|
|
|
|
return dictionaryScrollbarParam;
|
|
},
|
|
|
|
_moveTop: function() {
|
|
var input = this._scrollbar.moveInput();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (input === ScrollbarInput.SELECT) {
|
|
result = this._moveSelect();
|
|
}
|
|
else if (input === ScrollbarInput.CANCEL) {
|
|
result = this._moveCancel();
|
|
}
|
|
else if (input === ScrollbarInput.NONE) {
|
|
result = this._moveNone();
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
_moveSelect: function() {
|
|
var event = this._scrollbar.getObject();
|
|
|
|
if (this._scrollbar.isNameDisplayable(event)) {
|
|
this._recollectionEvent.startRecollectionEvent(event);
|
|
this.changeCycleMode(RecollectionMode.EVENT);
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveCancel: function() {
|
|
this._descriptionChanger.endDescription();
|
|
return MoveResult.END;
|
|
},
|
|
|
|
_moveNone: function() {
|
|
this._descriptionChanger.setDescriptionText(this._scrollbar);
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveEvent: function() {
|
|
if (this._recollectionEvent.moveRecollectionEvent() !== MoveResult.CONTINUE) {
|
|
this.changeCycleMode(RecollectionMode.TOP);
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_drawTop: function() {
|
|
var x = LayoutControl.getCenterX(-1, this._scrollbar.getScrollbarWidth());
|
|
var y = LayoutControl.getCenterY(-1, this._scrollbar.getScrollbarHeight());
|
|
|
|
this._scrollbar.drawScrollbar(x, y);
|
|
},
|
|
|
|
_drawEvent: function() {
|
|
}
|
|
}
|
|
);
|
|
|
|
var RecollectionEventMode = {
|
|
RANDOMBACK: 0,
|
|
EVENT: 1,
|
|
BACKEND: 2
|
|
};
|
|
|
|
var RecollectionEvent = defineObject(BaseObject,
|
|
{
|
|
_event: null,
|
|
|
|
startRecollectionEvent: function(event) {
|
|
var generator;
|
|
|
|
if (event.getRecollectionEventInfo().isRandomBackground()) {
|
|
generator = root.getEventGenerator();
|
|
generator.backgroundChange(BackgroundChangeType.CHANGE, Miscellaneous.getRandomBackgroundHandle(), GraphicsType.EVENTBACK, BackgroundTransitionType.BLACK);
|
|
generator.execute();
|
|
this.changeCycleMode(RecollectionEventMode.RANDOMBACK);
|
|
}
|
|
else {
|
|
event.startEvent();
|
|
this.changeCycleMode(RecollectionEventMode.EVENT);
|
|
}
|
|
|
|
this._event = event;
|
|
},
|
|
|
|
moveRecollectionEvent: function() {
|
|
var mode = this.getCycleMode();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (mode === RecollectionEventMode.RANDOMBACK) {
|
|
result = this._moveRandomBack();
|
|
}
|
|
else if (mode === RecollectionEventMode.EVENT) {
|
|
result = this._moveEvent();
|
|
}
|
|
else if (mode === RecollectionEventMode.BACKEND) {
|
|
result = this._moveBackEnd();
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
_moveRandomBack: function() {
|
|
this._event.startEvent();
|
|
this.changeCycleMode(RecollectionEventMode.EVENT);
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveEvent: function() {
|
|
var generator;
|
|
|
|
if (EventCommandManager.isEventRunning(this._event)) {
|
|
return MoveResult.CONTINUE;
|
|
}
|
|
|
|
if (!root.isEventBackgroundVisible()) {
|
|
return MoveResult.END;
|
|
}
|
|
|
|
// ランダム背景、またはイベント内で表示された背景を消去する
|
|
generator = root.getEventGenerator();
|
|
generator.backgroundChange(BackgroundChangeType.NONE, root.createEmptyHandle(), GraphicsType.EVENTBACK, BackgroundTransitionType.BLACK);
|
|
generator.execute();
|
|
|
|
this.changeCycleMode(RecollectionEventMode.BACKEND);
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveBackEnd: function() {
|
|
return MoveResult.END;
|
|
}
|
|
}
|
|
);
|