創作內容

2 GP

1、scene-rest(據點相關)

作者:水無月冰鏡_水水│2009-06-06 19:53:32│巴幣:0│人氣:449
/*---------------------------據點圖片選項綜合腳本-----------------------------
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』----結束------------
        

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=700906
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

2喜歡★hjklhjklhjka 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:戰極姬之夢-第十話... 後一篇:亂亂的人設...

追蹤私訊切換新版閱覽

作品資料夾

┌───幼獅職訓遊戲開發─── (0)

├Vmware (0)

├Linux系統 (0)

├資料庫系統 (0)

├Windows系統 (0)

├Cisco網路 (0)

├網路概論 (0)

├程式語言 (2)

├遊戲腳本語言 (0)

├AR/VR (0)

├Unity (0)

├架構整合&專題製作 (0)

└───幼獅職訓遊戲開發─── (0)

┌───SrpgStudio─── (0)
├其一、測試製作的進度報告 (11)
├其二、修改的圖片部分素材 (8)
├其三、修改未分類文章 (25)

└───SrpgStudio─── (0)

┌────自創輕小說區──── (0)

├無敵爸媽俏女兒 (0)

├【新】這才不是我想要的異世界之旅! (0)
├其零、前言 (1)
├其一、序章 (2)
├其二、初始之地 (2)

├【再編】魔王與女勇者的前世 (1)
├其一、魔王是神族?勇者是女武神? (8)
├其二、洛基現身?諸神黃昏的前兆? (9)
├其三、新婚鬧劇?女武神們的日常? (8)
├其四、恐怖情人?史維特萊德的戀情? (8)
├其五、新的姿態?歐菲斯的決意? (5)
├其六、新的力量?威德克的抉擇? (0)
├其六、時空之謎?瓦爾特洛德的感情? (9)
├其七、我們的女兒?時空女神的覺醒? (9)
├其八、愉快的家族生活?最後的幸福? (9)
└其九、世界開始崩壞?女武神的試煉? (8)

├魔王與女勇者的前世2 (0)
├其一、序章篇 (9)
├其零、故事大綱與角色設定介紹 (4)
└其二、日常篇其1 (2)

├糟糕魔王與糊塗的公主們 (0)
├其一、序章 (5)
├其二、第一章 (6)
├其三、第二章 (5)

├那天我所遇見的她 (暫停更新) (8)
├其一、序章 (2)

├戰極姬之夢 (暫停更新) (25)

├小說角色設定 (大部分人設置放) (6)

└────自創輕小說區──── (0)

┌────個人興趣區──── (0)

├小屋心得 (6)

├隨時幻想 (16)

├ニコニコ動画相關 (2)

├我所看過的動畫之一 (10)

├隨手練畫塗鴉 (24)

├現實心得 (24)

└────個人興趣區──── (0)

┌────學習區──── (0)

├Java相關 (2)

├Unity相關 (2)

└────學習區──── (0)

未分類 (12)

e12344888各位讀者
都市奇幻懸疑喜劇《魔都妖探》更新!錦懋及賀輔各自對自己的案子展開調查,卻似乎都碰上問題.....看更多我要大聲說昨天16:44


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】