/*---------------------------據點圖片選項綜合腳本-----------------------------
1、scene-rest(據點相關) = 『scene-rest』
注意事項:
if (object.getCommandName() == '角色整備') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None21.Material, None21.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);
.....請將【'角色整備'】的 文字 改成內鍵自定義的文字(但這''符號請別刪掉)
如1樓我說的改名部分
var pic = root.getMaterialManager().createImage(None21.Material, None21.GaugeImg);
None21.Material, None21.GaugeImg = 這之中的"None21"
請改成AddStatusWindow的自定義
-----------------------------據點圖片選項綜合腳本-----------------------------*/
//----------1、scene-rest(據點相關) = 『scene-rest』----開始------------
var RestSceneMode = {
OPENING: 0,
AUTOEVENTCHECK: 1,
SELECT: 2,
ENDING: 3
};
///////////////////////////////////////
var ScrollbarInput = {
SELECT: 0,
CANCEL: 1,
NONE: 2,
OPTION: 3,
START: 4
};
var BaseScrollbar1 = defineObject(BaseObject, //自定義新選項條
{
_col: 0,
_rowCount: 0,
_showRowCount: 0,
_objectWidth: 0,
_objectHeight: 0,
_xScroll: 0,
_yScroll: 0,
_edgeCursor: null,
_commandCursor: null,
_objectArray: null,
_isActive: false,
_forceSelectIndex: -1,
_isPageChange: false,
_inputType: -1,
initialize: function() {
},
moveInput: function() {
var input;
if (root.isInputAction(InputType.BTN1) || this._isScrollbarObjectPressed()) {
this.playSelectSound();
input = ScrollbarInput.SELECT;
}
else if (InputControl.isCancelAction()) {
this.playCancelSound();
input = ScrollbarInput.CANCEL;
}
else if (InputControl.isOptionAction()) {
this.playOptionSound();
input = ScrollbarInput.OPTION;
}
else if (InputControl.isStartAction()) {
this.playStartSound();
input = ScrollbarInput.START;
}
else {
this.moveScrollbarCursor();
input = ScrollbarInput.NONE;
}
return input;
},
moveScrollbarCursor: function() {
var inputType = this._commandCursor.moveCursor();
if (this._rowCount === 1) {
// 横のみ項目が並ぶ場合
this._xScroll = this._changeScrollValue(inputType, this._xScroll, true);
}
else {
// 縦にも項目が並ぶ場合
this._yScroll = this._changeScrollValue(inputType, this._yScroll, false);
}
if (this._isPageChange) {
this._checkPage(inputType);
}
this._edgeCursor.moveCursor();
MouseControl.checkScrollbarEdgeAction(this);
MouseControl.checkScrollbarWheel(this);
this.moveScrollbarContent();
if (inputType === InputType.NONE) {
inputType = MouseControl.moveScrollbarMouse(this);
}
this._inputType = inputType;
return inputType;
},
moveScrollbarContent: function() {
return true;
},
drawScrollbar: function(xStart, yStart) {
var i, j, x, y, isSelect, scrollableData;
var isLast = false;
var objectCount = this.getObjectCount();
var width = this._objectWidth + this.getSpaceX();
var height = this._objectHeight + this.getSpaceY();
var index = (this._yScroll * this._col) + this._xScroll;
xStart += this.getScrollXPadding();
yStart += this.getScrollYPadding();
// draw系でデータの更新はするべきではないが、move系での位置参照のため例外とする
this.xRendering = xStart;
this.yRendering = yStart;
MouseControl.saveRenderingPos(this);
for (i = 0; i < this._rowCount; i++) {
y = yStart + (i * height);
this.drawDescriptionLine(xStart, y);
for (j = 0; j < this._col; j++) {
x = xStart + (j * width);
isSelect = index === this.getIndex();
this.drawScrollContent(x, y, this._objectArray[index], isSelect, index);
if (this._rowCount = 1) { //自定義選項的結果只顯示一個
} //同上是一組語法,請勿刪除。
if (isSelect && this._isActive) {
this.drawCursor(x, y, true);
}
if (index === this._forceSelectIndex) {
this.drawCursor(x, y, false);
}
if (++index === objectCount) {
isLast = true;
break;
}
}
if (isLast) {
break;
}
}
if (this._isActive) {
scrollableData = this.getScrollableData();
this._edgeCursor.drawHorzCursor(xStart - this.getScrollXPadding(), yStart - this.getScrollYPadding(), scrollableData.isLeft, scrollableData.isRight);
this._edgeCursor.drawVertCursor(xStart - this.getScrollXPadding(), yStart - this.getScrollYPadding(), scrollableData.isTop, scrollableData.isBottom);
}
},
getScrollableData: function() {
var d;
var isLeft = false;
var isTop = false;
var isRight = false;
var isBottom = false;
if (this._rowCount === 1) {
d = this._col + this._xScroll;
// 1つでもスクロールしていれば、左向きのカーソルを表示
isLeft = this._xScroll > 0;
isRight = d < this._objectArray.length;
}
else {
// 見えている範囲と、スクロールしないと見れない範囲を加算
d = (this._showRowCount * this._col) + (this._col * this._yScroll);
// 1つでもスクロールしていれば、上向きのカーソルを表示
isTop = this._yScroll > 0;
isBottom = d < this._objectArray.length;
}
return {
isLeft: isLeft,
isTop: isTop,
isRight: isRight,
isBottom: isBottom
};
},
getRecentlyInputType: function() {
return this._inputType;
},
drawCursor: function(x, y, isActive) {
var pic = this.getCursorPicture();
y = y - (32 - this._objectHeight) / 2;
this._commandCursor.drawCursor(x, y, isActive, pic);
},
drawDescriptionLine: function(x, y) {
var count;
var textui = this.getDescriptionTextUI();
var pic = textui.getUIImage();
var width = TitleRenderer.getTitlePartsWidth();
var height = TitleRenderer.getTitlePartsHeight();
if (pic !== null) {
count = Math.floor(this.getScrollbarWidth() / width) - 1;
TitleRenderer.drawTitle(pic, x - 14, y + this._objectHeight - 47, width, height, count);
}
},
drawScrollContent: function(x, y, object, isSelect) {
},
setScrollFormation: function(col, showRowCount) {
this._objectArray = [];
this.setScrollFormationInternal(col, showRowCount);
},
setScrollFormationInternal: function(col, showRowCount) {
this._commandCursor = createObject(CommandCursor);
this._col = col;
this._showRowCount = showRowCount;
this._objectWidth = this.getObjectWidth();
this._objectHeight = this.getObjectHeight();
this._edgeCursor = createObject(EdgeCursor);
this._edgeCursor.setEdgeRange(this.getScrollbarWidth(), this.getScrollbarHeight());
},
resetScrollData: function() {
this._objectArray = [];
this._xScroll = 0;
this._yScroll = 0;
this._rowCount = 0;
},
objectSet: function(obj) {
this._objectArray.push(obj);
},
objectSetEnd: function() {
var objectCount = this._objectArray.length;
if (this._col === 1) {
this._commandCursor.setCursorUpDown(objectCount);
}
else if (this._showRowCount === 1) {
this._commandCursor.setCursorLeftRight(objectCount);
}
else {
this._commandCursor.setCursorCross(objectCount, this._col);
}
this._rowCount = Math.ceil(objectCount / this._col);
if (this._rowCount > this._showRowCount) {
this._rowCount = this._showRowCount;
}
// 以前のインデックス数が新しいカウントを超過していないか検証
this._commandCursor.validate();
},
setObjectArray: function(objectArray) {
var i;
var length = objectArray.length;
this.resetScrollData();
for (i = 0; i < length; i++) {
this.objectSet(objectArray[i]);
}
this.objectSetEnd();
},
setDataList: function(list) {
var i, count, data;
this.resetScrollData();
count = list.getCount();
for (i = 0; i < count; i++) {
data = list.getData(i);
this.objectSet(data);
}
this.objectSetEnd();
},
cut: function(index) {
this._objectArray.splice(index, 1);
},
getIndex: function() {
return this._commandCursor.getCommandCursorIndex();
},
setIndex: function(index) {
var pos;
this._commandCursor.setCommandCursorIndex(index);
if (this._rowCount === 1) {
// 横にのみ項目が並ぶ場合
pos = index + 1;
if (pos > this._col) {
this._xScroll = pos - this._col;
}
else {
this._xScroll = 0;
}
}
else {
// 縦にも項目が並ぶ場合
pos = Math.floor(index / this._col) + 1;
if (pos > this._rowCount) {
this._yScroll = pos - this._rowCount;
}
else {
this._yScroll = 0;
}
}
},
getObject: function() {
return this.getObjectFromIndex(this.getIndex());
},
getObjectFromIndex: function(index) {
if (this._objectArray === null || this._objectArray.length === 0) {
return null;
}
return this._objectArray[index];
},
getIndexFromObject: function(object) {
var i;
var count = this._objectArray.length;
for (i = 0; i < count; i++) {
if (this._objectArray[i] === object) {
return i;
}
}
return -1;
},
getObjectCount: function() {
return this._objectArray.length;
},
getCol: function() {
return this._col;
},
getRowCount: function() {
return this._rowCount;
},
getShowRowCount: function() {
return this._showRowCount;
},
getCursorPicture: function() {
return root.queryUI('menu_selectCursor');
},
enableSelectCursor: function(isActive) {
if (isActive) {
this.setForceSelect(-1);
}
else {
this.setForceSelect(this.getIndex());
}
this.setActive(isActive);
},
setActive: function(isActive) {
if (isActive) {
MouseControl.setActiveScrollbar(this);
}
this._isActive = isActive;
},
setActiveSingle: function(isActive) {
this._isActive = isActive;
},
setForceSelect: function(index) {
this._forceSelectIndex = index;
},
getForceSelectIndex: function() {
return this._forceSelectIndex;
},
enablePageChange: function() {
this._isPageChange = true;
},
getScrollXValue: function() {
return this._xScroll;
},
getScrollYValue: function() {
return this._yScroll;
},
setScrollXValue: function(x) {
this._xScroll = x;
},
setScrollYValue: function(y) {
this._yScroll = y;
},
getScrollXPadding: function() {
return 0;
},
getScrollYPadding: function() {
return 0;
},
getSpaceX: function() {
return 0;
},
getSpaceY: function() {
return 0;
},
getObjectWidth: function() {
return 0;
},
getObjectHeight: function() {
return 0;
},
getScrollbarWidth: function() {
return (this._col * this._objectWidth) + ((this._col - 1) * this.getSpaceX());
},
getScrollbarHeight: function() {
return (this._showRowCount * this._objectHeight) + ((this._showRowCount - 1) * this.getSpaceY());
},
getParentTextUI: function() {
return this.getParentInstance().getWindowTextUI();
},
getDescriptionTextUI: function() {
return root.queryTextUI('description_title');
},
playSelectSound: function() {
MediaControl.soundDirect('commandselect');
},
playCancelSound: function() {
MediaControl.soundDirect('commandcancel');
},
playPageCursorSound: function() {
MediaControl.soundDirect('commandcursor');
},
playOptionSound: function() {
// Option時の効果音はその時々に応じて最適なものあると思われるため、ここで実装しない
},
playStartSound: function() {
// Start時の効果音はその時々に応じて最適なものあると思われるため、ここで実装しない
},
getEdgeCursor: function() {
return this._edgeCursor;
},
getCommandCursor: function() {
return this._commandCursor;
},
saveScroll: function() {
this._saveScrollY = this._yScroll;
},
restoreScroll: function() {
if ((this._saveScrollY - 1) + this._showRowCount <= this.getIndex()) {
// カーソルが見えなくなることを防ぐため、スクロール値を下げない
}
else if (this._saveScrollY > 0) {
this._saveScrollY--;
}
this._yScroll = this._saveScrollY;
},
_changeScrollValue: function(input, scrollValue, isHorz) {
var showRange, div, pos, max;
var objectCount = this._objectArray.length;
if (isHorz) {
showRange = this._col;
div = 1;
pos = this._commandCursor.getCommandCursorIndex();
}
else {
showRange = this._showRowCount;
div = this._col;
pos = Math.floor(this._commandCursor.getCommandCursorIndex() / this._col);
}
if (input === DirectionType.LEFT || input === DirectionType.TOP) {
if (pos + 1 === scrollValue) {
// 表示範囲の最上部に到達したから、スクロールする
scrollValue--;
}
else if (this._commandCursor.getCommandCursorIndex() === objectCount - 1) {
// index値が最大値になったため、スクロール値も最大値にする
max = objectCount - (showRange * div);
if (max < 0) {
scrollValue = 0;
}
else {
scrollValue = Math.ceil(max / div);
}
}
}
else if (input === DirectionType.RIGHT || input === DirectionType.BOTTOM) {
if (pos === showRange + scrollValue) {
// 表示範囲の最下部に到達したから、スクロールする
scrollValue++;
}
else if (this._commandCursor.getCommandCursorIndex() === 0) {
// index値が初期値になったため、スクロール値も初期値にする
scrollValue = 0;
}
}
return scrollValue;
},
_checkPage: function(inputType) {
var d;
var isChange = false;
var index = this.getIndex();
var yScroll = this.getScrollYValue();
var showRowCount = this.getShowRowCount();
if (inputType === InputType.LEFT) {
if (this.getObjectCount() > showRowCount) {
d = this._getPageValue(yScroll, showRowCount * -1);
yScroll -= d;
index -= d;
isChange = true;
}
}
else if (inputType === InputType.RIGHT) {
if (this.getObjectCount() > showRowCount) {
d = this._getPageValue(yScroll, showRowCount);
yScroll += d;
index += d;
isChange = true;
}
}
if (isChange) {
if (index !== this.getIndex()) {
this.setIndex(index);
this.setScrollYValue(yScroll);
this.playPageCursorSound();
}
}
},
_getPageValue: function(yScroll, n) {
var d;
var yMin = 0;
var yMax = this.getObjectCount() - this.getShowRowCount();
if (n < 0 && yScroll === yMin) {
// 最後のページに移動
return -yMax;
}
else if (n > 0 && yScroll === yMax) {
// 最初のページに移動
return -yMax;
}
d = yScroll + n;
if (yMin >= d) {
d = yScroll;
}
else if (yMax < d) {
d = yMax - yScroll;
}
else {
d = this.getShowRowCount();
}
return d;
},
_isScrollbarObjectPressed: function() {
return MouseControl.isScrollbarObjectPressed(this);
}
}
);
///////////////////////////////////////
///////////////////////////////////////
var ListCommandManagerMode = {
TITLE: 0,
OPEN: 1
};
var BaseListCommandManager1 = defineObject(BaseObject, //自定義圖片選項
{
_groupArray: null,
_commandScrollbar: null,
_currentTarget: null,
openListCommandManager: function() {
this._commandScrollbar = createScrollbarObject(ListCommandScrollbar1, this);
this._commandScrollbar.setActive(true);
this.rebuildCommand();
this._playCommandOpenSound();
this.changeCycleMode(ListCommandManagerMode.TITLE);
},
moveListCommandManager: function() {
var mode = this.getCycleMode();
var result = MoveResult.CONTINUE;
if (mode === ListCommandManagerMode.TITLE) {
result = this._moveTitle();
}
else if (mode === ListCommandManagerMode.OPEN) {
result = this._moveOpen();
}
return result;
},
drawListCommandManager: function() {
var mode = this.getCycleMode();
if (mode === ListCommandManagerMode.TITLE) {
this._drawTitle();
}
else if (mode === ListCommandManagerMode.OPEN) {
this._drawOpen();
}
},
rebuildCommand: function() {
var i, count, arr;
this._groupArray = [];
this.configureCommands(this._groupArray);
count = this._groupArray.length;
arr = [];
for (i = 0; i < count; i++) {
this._groupArray[i]._listCommandManager = this;
if (this._groupArray[i].isCommandDisplayable()) {
arr.push(this._groupArray[i]);
}
}
this._commandScrollbar.setScrollFormation(1, arr.length);
this._commandScrollbar.setObjectArray(arr);
this._groupArray = [];
},
rebuildCommandEx: function() {
var prevIndex = this._commandScrollbar.getIndex();
this.rebuildCommand();
if (prevIndex >= this._commandScrollbar.getObjectCount()) {
prevIndex = 0;
}
this._commandScrollbar.setIndex(prevIndex);
},
setListCommandUnit: function(unit) {
this._currentTarget = unit;
},
getListCommandUnit: function() {
return this._currentTarget;
},
getPositionX: function() {
return 0;
},
getPositionY: function() {
return 0;
},
getCommandTextUI: function() {
return root.queryTextUI('mapcommand_title');
},
configureCommands: function(groupArray) {
},
getCommandScrollbar: function() {
return this._commandScrollbar;
},
_moveTitle: function() {
var object;
var result = MoveResult.CONTINUE;
if (InputControl.isSelectAction()) {
object = this._commandScrollbar.getObject();
if (object === null) {
return result;
}
object.openCommand();
this._playCommandSelectSound();
this.changeCycleMode(ListCommandManagerMode.OPEN);
}
else if (InputControl.isCancelAction()) {
this._playCommandCancelSound();
this._checkTracingScroll();
result = MoveResult.END;
}
else {
this._commandScrollbar.moveScrollbarCursor();
}
return result;
},
_moveOpen: function() {
var object = this._commandScrollbar.getObject();
var result = MoveResult.CONTINUE;
if (object.moveCommand() !== MoveResult.CONTINUE) {
this._commandScrollbar.setActive(true);
this.changeCycleMode(ListCommandManagerMode.TITLE);
}
return result;
},
_drawTitle: function() {
var x = this.getPositionX();
var y = this.getPositionY();
this._commandScrollbar.drawScrollbar(x, y);
},
_drawOpen: function() {
var object = this._commandScrollbar.getObject();
object.drawCommand();
},
_checkTracingScroll: function() {
var session = root.getCurrentSession();
var x = session.getMapCursorX();
var y = session.getMapCursorY();
MouseControl.changeCursorFromMap(x, y);
},
_playCommandOpenSound: function() {
MediaControl.soundDirect('commandopen');
},
_playCommandSelectSound: function() {
MediaControl.soundDirect('commandselect');
},
_playCommandCancelSound: function() {
MediaControl.soundDirect('commandcancel');
}
}
);
var BaseCommand1 = defineObject(BaseObject,
{
_commandlayout: null,
setCommandLayout: function(commandlayout) {
this._commandlayout = commandlayout;
},
getCommandLayout: function() {
return this._commandlayout;
},
getCommandName: function() {
if (this._commandlayout === null) {
return '';
}
return this._commandlayout.getName();
}
}
);
var BaseListCommand1 = defineObject(BaseCommand1,
{
_listCommandManager: null,
initialize: function() {
},
openCommand: function() {
},
moveCommand: function() {
return MoveResult.END;
},
drawCommand: function() {
},
isCommandDisplayable: function() {
return true;
}
}
);
var ListCommandScrollbar1 = defineObject(BaseScrollbar1,
{
drawScrollContent: function(x, y, object, isSelect) {
var textui = this.getParentInstance().getCommandTextUI();
var color = textui.getColor();
var font = textui.getFont();
var pic = textui.getUIImage();
if (object.getCommandName() == '角色整備') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None21.Material, None21.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);//角色臉圖大小與位置
}
else if (object.getCommandName() == '情報收集') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None22.Material, None22.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);//角色臉圖大小與位置
}
else if (object.getCommandName() == '角色任務') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None23.Material, None23.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);//角色臉圖大小與位置
}
else if (object.getCommandName() == '對話') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None24.Material, None24.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);//角色臉圖大小與位置
}
else if (object.getCommandName() == '旅途商人') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None25.Material, None25.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);//角色臉圖大小與位置
}
else if (object.getCommandName() == '點數交換') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None26.Material, None26.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);//角色臉圖大小與位置
}
else if (object.getCommandName() == '遊戲設定') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None27.Material, None27.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);//角色臉圖大小與位置
}
else if (object.getCommandName() == '遊戲字典') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None28.Material, None28.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);//角色臉圖大小與位置
}
else if (object.getCommandName() == '遊戲セーブ') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None29.Material, None29.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);//角色臉圖大小與位置
}
else if (object.getCommandName() == '故事模式') {
var xSrc, ySrc;
var destWidth = UIFormat.BIGNUMBER_WIDTH / 10;
var destHeight = UIFormat.BIGNUMBER_HEIGHT / 5;
var srcWidth = destWidth;
var srcHeight = destHeight;
var pic = root.getMaterialManager().createImage(None30.Material, None30.GaugeImg);
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
}
xSrc = srcWidth;
ySrc = srcHeight;
pic.drawStretchParts(x=0,y=0,destWidth=960, destHeight=544, xSrc, ySrc-20, srcWidth=960, srcHeight=544);//角色臉圖大小與位置
}
NumberRenderer.drawNumber(x=900, y=2, root.getMetaSession().getGold()); //資金位置
//TextRenderer.drawFixedTitleText(x, y - 10, object.getCommandName(), color, font, TextFormat.CENTER, pic, this._getPartsCount());
},
drawDescriptionLine: function(x, y) {
},
getObjectWidth: function() {
return (4 + 2) * 30;
},
getObjectHeight: function() {
return 32;
},
_getPartsCount: function() {
return 4;
}
}
);
//////////////////////////////////////
var RestScene = defineObject(BaseScene,
{
_restCommandManager: null,
_eventChecker: null,
_scrollBackground: null,
_straightFlowOpening: null,
_straightFlowEnding: null,
_isRestFinal: false,
_isBackgroundEnabled: false,
setSceneData: function() {
// オープニングイベントのため、画面を塗りつぶしておく
SceneManager.setEffectAllRange(true);
// 前章の音楽が残っているのはよくない
this._prepareSceneMemberData();
this._completeSceneMemberData();
},
moveSceneCycle: function() {
var mode = this.getCycleMode();
var result = MoveResult.CONTINUE;
if (mode === RestSceneMode.OPENING) {
result = this._moveOpening();
}
else if (mode === RestSceneMode.AUTOEVENTCHECK) {
result = this._moveAutoEventCheck();
}
else if (mode === RestSceneMode.SELECT) {
result = this._moveSelect();
}
else if (mode === RestSceneMode.ENDING) {
result = this._moveEnding();
}
this._scrollBackground.moveScrollBackground();
return result;
},
drawSceneCycle: function() {
var mode = this.getCycleMode();
if (this._isBackgroundEnabled) {
this._drawBackground();
this._drawAreaName();
this._drawCommand();
}
if (mode === RestSceneMode.OPENING) {
this._straightFlowOpening.drawStraightFlow();
}
else if (mode === RestSceneMode.ENDING) {
this._straightFlowEnding.drawStraightFlow();
}
},
getRestArea: function() {
return root.getRestPreference().getActiveRestArea();
},
endRest: function() {
this._isRestFinal = true;
},
enableBackground: function() {
this._isBackgroundEnabled = true;
},
_prepareSceneMemberData: function() {
this._restCommandManager = createObject(RestCommand);
this._eventChecker = createObject(RestAutoEventChecker);
this._scrollBackground = createObject(ScrollBackground);
this._straightFlowOpening = createObject(StraightFlow);
this._straightFlowEnding = createObject(StraightFlow);
},
_completeSceneMemberData: function() {
this._restCommandManager.openListCommandManager();
this._straightFlowOpening.setStraightFlowData(this);
this._pushFlowOpeningEntries(this._straightFlowOpening);
this._straightFlowEnding.setStraightFlowData(this);
this._pushFlowEndingEntries(this._straightFlowEnding);
this._changeOpening();
},
_changeOpening: function() {
this._setBackgroundData();
this._straightFlowOpening.enterStraightFlow();
this.changeCycleMode(RestSceneMode.OPENING);
},
_setBackgroundData: function() {
this._scrollBackground.startScrollBackground(this.getRestArea().getBackgroundImage());
},
_moveOpening: function() {
if (this._straightFlowOpening.moveStraightFlow() !== MoveResult.CONTINUE) {
this._changeEventMode();
}
return MoveResult.CONTINUE;
},
_moveAutoEventCheck: function() {
if (this._eventChecker.moveEventChecker() !== MoveResult.CONTINUE) {
this.changeCycleMode(RestSceneMode.SELECT);
}
return MoveResult.CONTINUE;
},
_moveSelect: function() {
var nextmode;
var prevmode = this._restCommandManager.getCycleMode();
this._restCommandManager.moveListCommandManager();
nextmode = this._restCommandManager.getCycleMode();
// 開いたコマンドから戻ってきたかを調べる
if (prevmode === ListCommandManagerMode.OPEN && nextmode === ListCommandManagerMode.TITLE) {
if (this._isRestFinal) {
this._straightFlowEnding.enterStraightFlow();
this.changeCycleMode(RestSceneMode.ENDING);
}
else {
this._changeEventMode();
}
}
return MoveResult.CONTINUE;
},
_moveEnding: function() {
if (this._straightFlowEnding.moveStraightFlow() !== MoveResult.CONTINUE) {
return MoveResult.END;
}
return MoveResult.CONTINUE;
},
_drawBackground: function() {
this._scrollBackground.drawScrollBackground();
},
_drawAreaName: function() {
// 画面の右上に地名の描画が入る可能性
},
_drawCommand: function() {
var mode = this.getCycleMode();
if (mode === RestSceneMode.OPENING || mode === RestSceneMode.SELECT || mode === RestSceneMode.AUTOEVENTCHECK) {
this._restCommandManager.drawListCommandManager();
}
},
_changeEventMode: function() {
var result;
result = this._eventChecker.enterEventChecker(root.getCurrentSession().getAutoEventList(), RestAutoType.TOP);
if (result === EnterResult.NOTENTER) {
this.changeCycleMode(RestSceneMode.SELECT);
}
else {
this.changeCycleMode(RestSceneMode.AUTOEVENTCHECK);
}
},
_pushFlowOpeningEntries: function(straightFlow) {
straightFlow.pushFlowEntry(RestOpeningFlowEntry);
straightFlow.pushFlowEntry(RestMusicFlowEntry);
},
_pushFlowEndingEntries: function(straightFlow) {
straightFlow.pushFlowEntry(RestEndingFlowEntry);
straightFlow.pushFlowEntry(RestNextFlowEntry);
}
}
);
var RestOpeningMode = {
EVENT: 0,
FADEIN: 1
};
var RestOpeningFlowEntry = defineObject(BaseFlowEntry,
{
_evetChecker: null,
_transition: null,
enterFlowEntry: function(restScene) {
this._prepareMemberData(restScene);
return this._completeMemberData(restScene);
},
moveFlowEntry: function() {
var result = MoveResult.END;
var mode = this.getCycleMode();
if (mode === RestOpeningMode.EVENT) {
result = this._moveEvent();
}
else if (mode === RestOpeningMode.FADEIN) {
result = this._moveFadein();
}
return result;
},
drawFlowEntry: function() {
var mode = this.getCycleMode();
if (mode === RestOpeningMode.FADEIN) {
this._drawFadein();
}
},
_prepareMemberData: function(restScene) {
this._eventChecker = createObject(EventChecker);
this._transition = createObject(SystemTransition);
},
_completeMemberData: function(restScene) {
var result;
if (root.isOpeningEventSkip()) {
this._eventChecker.enableAllSkip();
}
result = this._eventChecker.enterEventChecker(root.getCurrentSession().getOpeningEventList(), EventType.OPENING);
if (result === EnterResult.NOTENTER) {
this._doLastAction();
}
else {
this.changeCycleMode(RestOpeningMode.EVENT);
}
return EnterResult.OK;
},
_moveEvent: function() {
if (this._eventChecker.moveEventChecker() !== MoveResult.CONTINUE) {
this._doLastAction();
}
return MoveResult.CONTINUE;
},
_moveFadein: function() {
return this._transition.moveTransition();
},
_drawFadein: function() {
this._transition.drawTransition();
},
_doLastAction: function() {
SceneManager.getActiveScene().enableBackground();
this._resetOpeningEventList();
SceneManager.setEffectAllRange(true);
this._transition.setFadeSpeed(10);
this._transition.setDestIn();
this.changeCycleMode(RestOpeningMode.FADEIN);
},
_resetOpeningEventList: function() {
var i, event;
var list = root.getCurrentSession().getOpeningEventList();
var count = list.getCount();
for (i = 0; i < count; i++) {
event = list.getData(i);
event.setExecutedMark(EventExecutedType.FREE);
}
}
}
);
var RestMusicFlowEntry = defineObject(BaseFlowEntry,
{
enterFlowEntry: function(restScene) {
this._prepareMemberData(restScene);
return this._completeMemberData(restScene);
},
moveFlowEntry: function() {
return MoveResult.END;
},
_prepareMemberData: function(restScene) {
},
_completeMemberData: function(restScene) {
this._playSetupMusic(restScene);
return EnterResult.NOTENTER;
},
_playSetupMusic: function(restScene) {
MediaControl.resetMusicList();
MediaControl.musicPlayNew(restScene.getRestArea().getMusicHandle());
}
}
);
var RestEndingMode = {
FADEOUT: 0,
EVENT: 1
};
var RestEndingFlowEntry = defineObject(BaseFlowEntry,
{
_evetChecker: null,
_transition: null,
enterFlowEntry: function(restScene) {
this._prepareMemberData(restScene);
return this._completeMemberData(restScene);
},
moveFlowEntry: function() {
var result = MoveResult.END;
var mode = this.getCycleMode();
if (mode === RestEndingMode.FADEOUT) {
result = this._moveFadeout();
}
else if (mode === RestEndingMode.EVENT) {
result = this._moveEvent();
}
return result;
},
drawFlowEntry: function() {
var mode = this.getCycleMode();
if (mode === RestEndingMode.FADEOUT) {
this._drawFadeout();
}
},
_prepareMemberData: function(restScene) {
this._eventChecker = createObject(EventChecker);
this._transition = createObject(SystemTransition);
},
_completeMemberData: function(restScene) {
this._transition.setDestOut();
this._transition.setFadeSpeed(5);
this.changeCycleMode(RestEndingMode.FADEOUT);
return EnterResult.OK;
},
_moveFadeout: function() {
var result;
if (this._transition.moveTransition() !== MoveResult.CONTINUE) {
result = this._eventChecker.enterEventChecker(root.getCurrentSession().getEndingEventList(), EventType.ENDING);
if (result === EnterResult.NOTENTER) {
this._doLastAction();
return MoveResult.END;
}
else {
this.changeCycleMode(RestEndingMode.EVENT);
}
}
return MoveResult.CONTINUE;
},
_moveEvent: function() {
if (this._eventChecker.moveEventChecker() !== MoveResult.CONTINUE) {
this._doLastAction();
return MoveResult.END;
}
return MoveResult.CONTINUE;
},
_drawFadeout: function() {
this._transition.drawTransition();
},
_doLastAction: function() {
}
}
);
var RestNextFlowEntry = defineObject(BaseFlowEntry,
{
enterFlowEntry: function(restScene) {
var mapId = root.getSceneController().getNextMapId();
root.getSceneController().startNewMap(mapId);
root.changeScene(SceneType.BATTLESETUP);
return EnterResult.NOTENTER;
}
}
);
var RestSceneScrollbar = defineObject(BaseScrollbar1,
{
drawScrollContent: function(x, y, object, isSelect, index) {
var text = object.getCommandName();
var textui = this.getScrollTextUI();
var color = textui.getColor();
var font = textui.getFont();
var pic = textui.getUIImage();
TextRenderer.drawFixedTitleText(x, y, text, color, font, TextFormat.CENTER, pic, 4);
},
drawDescriptionLine: function(x, y) {
},
playCancelSound: function() {
},
getObjectWidth: function() {
return 220;
},
getObjectHeight: function() {
return 45;
},
getScrollTextUI: function() {
return root.queryTextUI('restcommand_title');
}
}
);
var RestCommand = defineObject(BaseListCommandManager1, //自定義使用圖片選項
{
getPositionX: function() {
return LayoutControl.getRelativeX(8)-400; //故意讓選項字元遠離畫面
},
getPositionY: function() {
return LayoutControl.getRelativeY(12);
},
getCommandTextUI: function() {
return root.queryTextUI('setupcommand_title');
},
configureCommands: function(groupArray) {
var mixer = createObject(CommandMixer);
if (this._isQuestDisplayable()) {
mixer.pushCommand(RestCommand.Quest, CommandActionType.QUEST);
}
if (this._isImageTalkDisplayable()) {
mixer.pushCommand(RestCommand.ImageTalk, CommandActionType.IMAGETALK);
}
if (this._isNextCommandDisplayable()) {
mixer.pushCommand(RestCommand.Next, CommandActionType.NEXT);
}
mixer.mixCommand(CommandLayoutType.REST, groupArray, BaseListCommand1);
},
_checkTracingScroll: function() {
},
_playCommandOpenSound: function() {
},
_isQuestDisplayable: function() {
var i;
var list = root.getBaseData().getRestQuestList();
var count = list.getCount();
for (i = 0; i < count; i++) {
if (list.getData(i).isQuestDisplayable()) {
return true;
}
}
return false;
},
_isImageTalkDisplayable: function() {
var i;
var list = root.getCurrentSession().getTalkEventList();
var count = list.getCount();
for (i = 0; i < count; i++) {
if (list.getData(i).isEvent()) {
return true;
}
}
return false;
},
_isNextCommandDisplayable: function() {
return root.getSceneController().getNextMapId() !== MapIdValue.COMPLETE;
}
}
);
RestCommand.Quest = defineObject(BaseListCommand1,
{
_questScreen: null,
openCommand: function() {
var screenParam = this._createScreenParam();
this._questScreen = createObject(QuestScreen);
SceneManager.addScreen(this._questScreen, screenParam);
},
moveCommand: function() {
if (SceneManager.isScreenClosed(this._questScreen)) {
return MoveResult.END;
}
return MoveResult.CONTINUE;
},
_createScreenParam: function() {
var screenParam = ScreenBuilder.buildQuest();
return screenParam;
}
}
);
RestCommand.ImageTalk = defineObject(BaseListCommand1,
{
_imageTalkScreen: null,
openCommand: function() {
var screenParam = this._createScreenParam();
this._imageTalkScreen = createObject(ImageTalkScreen);
SceneManager.addScreen(this._imageTalkScreen, screenParam);
},
moveCommand: function() {
if (SceneManager.isScreenClosed(this._imageTalkScreen)) {
return MoveResult.END;
}
return MoveResult.CONTINUE;
},
_createScreenParam: function() {
var screenParam = ScreenBuilder.buildImageTalk();
return screenParam;
}
}
);
RestCommand.Next = defineObject(BaseListCommand1,
{
_questionWindow: null,
openCommand: function() {
this._questionWindow = createWindowObject(QuestionWindow, this);
this._questionWindow.setQuestionMessage(StringTable.Rest_Next);
this._questionWindow.setQuestionActive(true);
},
moveCommand: function() {
if (this._questionWindow.moveWindow() !== MoveResult.CONTINUE) {
if (this._questionWindow.getQuestionAnswer() === QuestionAnswer.YES) {
SceneManager.getActiveScene().endRest();
}
return MoveResult.END;
}
return MoveResult.CONTINUE;
},
drawCommand: function() {
var x = LayoutControl.getCenterX(-1, this._questionWindow.getWindowWidth());
var y = LayoutControl.getCenterY(-1, this._questionWindow.getWindowHeight());
this._questionWindow.drawWindow(x, y);
}
}
);
//----------1、scene-rest(據點相關) = 『scene-rest』----結束------------