655 lines
14 KiB
JavaScript
655 lines
14 KiB
JavaScript
|
|
var CommandCursor = defineObject(BaseObject,
|
|
{
|
|
_max: 0,
|
|
_col: 0,
|
|
_type: 0,
|
|
_index: 0,
|
|
_counter: null,
|
|
_commandCursorSrcIndex: 0,
|
|
|
|
initialize: function() {
|
|
this._counter = createObject(CycleCounter);
|
|
this._counter.setCounterInfo(20);
|
|
this._counter.disableGameAcceleration();
|
|
},
|
|
|
|
setCursorLeftRight: function(max) {
|
|
this._max = max;
|
|
this._type = 0;
|
|
},
|
|
|
|
setCursorUpDown: function(max) {
|
|
this._max = max;
|
|
this._type = 1;
|
|
},
|
|
|
|
setCursorCross: function(max, col) {
|
|
this._max = max;
|
|
this._col = col;
|
|
this._type = 2;
|
|
},
|
|
|
|
moveCursor: function() {
|
|
var d, inputType;
|
|
|
|
if (this._counter.moveCycleCounter() !== MoveResult.CONTINUE) {
|
|
this._commandCursorSrcIndex++;
|
|
if (this._commandCursorSrcIndex === 2) {
|
|
this._commandCursorSrcIndex = 0;
|
|
}
|
|
}
|
|
|
|
inputType = InputControl.getDirectionState();
|
|
if (inputType === InputType.NONE) {
|
|
return InputType.NONE;
|
|
}
|
|
|
|
if (this._max < 1) {
|
|
return InputType.NONE;
|
|
}
|
|
|
|
d = this._getIntervalValue(inputType);
|
|
|
|
this._changeCursorIndex(d);
|
|
|
|
return inputType;
|
|
},
|
|
|
|
drawCursor: function(x, y, isActive, pic) {
|
|
var xSrc = 0;
|
|
var width = UIFormat.SELECTCURSOR_WIDTH / 2;
|
|
var height = UIFormat.SELECTCURSOR_HEIGHT / 2;
|
|
|
|
if (pic === null) {
|
|
return;
|
|
}
|
|
|
|
x -= 25;
|
|
xSrc = this._commandCursorSrcIndex * width;
|
|
|
|
if (isActive) {
|
|
pic.drawParts(x - 0, y + 0, xSrc, 0, width, height);
|
|
}
|
|
else {
|
|
xSrc = 0;
|
|
pic.drawParts(x - 0, y + 0, xSrc, height, width, height);
|
|
}
|
|
},
|
|
|
|
getCommandCursorIndex: function() {
|
|
return this._index;
|
|
},
|
|
|
|
setCommandCursorIndex: function(index) {
|
|
this._index = index;
|
|
},
|
|
|
|
validate: function() {
|
|
if (this._index < 0) {
|
|
this._index = 0;
|
|
}
|
|
else if (this._index > this._max - 1) {
|
|
this._index = this._max - 1;
|
|
}
|
|
},
|
|
|
|
_getIntervalValue: function(key) {
|
|
var d = 0;
|
|
|
|
if (this._type === 0) {
|
|
if (key === InputType.LEFT) {
|
|
d = -1;
|
|
}
|
|
else if (key === InputType.RIGHT) {
|
|
d = 1;
|
|
}
|
|
}
|
|
else if (this._type === 1) {
|
|
if (key === InputType.UP) {
|
|
d = -1;
|
|
}
|
|
else if (key === InputType.DOWN) {
|
|
d = 1;
|
|
}
|
|
}
|
|
else if (this._type === 2) {
|
|
if (key === InputType.LEFT) {
|
|
d = -1;
|
|
}
|
|
else if (key === InputType.RIGHT) {
|
|
d = 1;
|
|
}
|
|
else if (key === InputType.UP) {
|
|
d = this._col * -1;
|
|
}
|
|
else if (key === InputType.DOWN) {
|
|
d = this._col;
|
|
}
|
|
}
|
|
|
|
return d;
|
|
},
|
|
|
|
_changeCursorIndex: function(d) {
|
|
var prevIndex = this._index;
|
|
|
|
this._index += d;
|
|
if (d < 0) {
|
|
if (this._index < 0) {
|
|
this._index = this._max - 1;
|
|
}
|
|
}
|
|
else if (d > 0) {
|
|
if (this._index > this._max - 1) {
|
|
this._index = 0;
|
|
}
|
|
}
|
|
|
|
if (prevIndex !== this._index) {
|
|
// 位置が変更されたため、音を鳴らす
|
|
this._playMoveCursorSound();
|
|
}
|
|
},
|
|
|
|
_playMoveCursorSound: function() {
|
|
MediaControl.soundDirect('commandcursor');
|
|
}
|
|
}
|
|
);
|
|
|
|
var PageCursor = defineObject(BaseObject,
|
|
{
|
|
_counter: null,
|
|
_cursorIndex: 0,
|
|
|
|
initialize: function() {
|
|
this._counter = createObject(CycleCounter);
|
|
this._counter.setCounterInfo(20);
|
|
this._counter.disableGameAcceleration();
|
|
},
|
|
|
|
moveCursor: function() {
|
|
if (this._counter.moveCycleCounter() !== MoveResult.CONTINUE) {
|
|
if (this._cursorIndex === 0) {
|
|
this._cursorIndex = 1;
|
|
}
|
|
else {
|
|
this._cursorIndex = 0;
|
|
}
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
drawCursor: function(x, y, pic) {
|
|
var n = this._cursorIndex;
|
|
var width = UIFormat.PAGECURSOR_WIDTH / 2;
|
|
var height = UIFormat.PAGECURSOR_HEIGHT;
|
|
|
|
if (pic !== null) {
|
|
pic.drawParts(x, y, width * n, 0, width, height);
|
|
}
|
|
}
|
|
}
|
|
);
|
|
|
|
var PosDoubleCursor = defineObject(BaseObject,
|
|
{
|
|
_counter: null,
|
|
_cursorIndex: 0,
|
|
|
|
initialize: function() {
|
|
this._counter = createObject(CycleCounter);
|
|
this._counter.setCounterInfo(20);
|
|
this._counter.disableGameAcceleration();
|
|
},
|
|
|
|
moveCursor: function() {
|
|
if (this._counter.moveCycleCounter() !== MoveResult.CONTINUE) {
|
|
if (this._cursorIndex === 0) {
|
|
this._cursorIndex = 1;
|
|
}
|
|
else {
|
|
this._cursorIndex = 0;
|
|
}
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
drawCursor: function(xSrc, ySrc, xDest, yDest) {
|
|
var x = LayoutControl.getPixelX(xSrc);
|
|
var y = LayoutControl.getPixelY(ySrc);
|
|
|
|
this.drawSrcCursor(x, y);
|
|
|
|
x = LayoutControl.getPixelX(xDest);
|
|
y = LayoutControl.getPixelY(yDest);
|
|
this.drawDestCursor(x, y);
|
|
},
|
|
|
|
drawSrcCursor: function(x, y) {
|
|
var width = UIFormat.SELECTCURSOR_WIDTH / 2;
|
|
var height = UIFormat.SELECTCURSOR_HEIGHT / 2;
|
|
var xSrc = 0;
|
|
var ySrc = height;
|
|
var pic = root.queryUI('command_poschangecursor');
|
|
|
|
pic.drawParts(x - 10, y, xSrc, ySrc, width, height);
|
|
},
|
|
|
|
drawDestCursor: function(x, y) {
|
|
var width = UIFormat.SELECTCURSOR_WIDTH / 2;
|
|
var height = UIFormat.SELECTCURSOR_HEIGHT / 2;
|
|
var xSrc = this._cursorIndex * width;
|
|
var ySrc = 0;
|
|
var pic = root.queryUI('command_poschangecursor');
|
|
|
|
pic.drawParts(x - 10, y, xSrc, ySrc, width, height);
|
|
}
|
|
}
|
|
);
|
|
|
|
var FocusCursor = defineObject(BaseObject,
|
|
{
|
|
_counter: null,
|
|
_mapCursorSrcIndex: 0,
|
|
|
|
initialize: function() {
|
|
this._counter = createObject(CycleCounter);
|
|
this._counter.setCounterInfo(16);
|
|
this._counter.disableGameAcceleration();
|
|
},
|
|
|
|
setPos: function(x, y) {
|
|
root.getCurrentSession().setMapCursorX(x);
|
|
root.getCurrentSession().setMapCursorY(y);
|
|
},
|
|
|
|
moveCursor: function() {
|
|
if (this._counter.moveCycleCounter() !== MoveResult.CONTINUE) {
|
|
if (this._mapCursorSrcIndex === 0) {
|
|
this._mapCursorSrcIndex = 1;
|
|
}
|
|
else {
|
|
this._mapCursorSrcIndex = 0;
|
|
}
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
drawCursor: function() {
|
|
var session = root.getCurrentSession();
|
|
var width = UIFormat.MAPCURSOR_WIDTH / 2;
|
|
var height = UIFormat.MAPCURSOR_HEIGHT;
|
|
var x = (session.getMapCursorX() * width) - session.getScrollPixelX();
|
|
var y = (session.getMapCursorY() * height) - session.getScrollPixelY();
|
|
var pic = root.queryUI('focuscursor');
|
|
var pic2 = root.queryUI('lockoncursor');
|
|
|
|
if (pic !== null) {
|
|
pic.drawParts(x, y - 40, this._mapCursorSrcIndex * width, 0, width, height);
|
|
}
|
|
|
|
if (pic2 !== null) {
|
|
pic2.drawParts(x, y, this._mapCursorSrcIndex * width, 0, width, height);
|
|
}
|
|
},
|
|
|
|
endCursor: function() {
|
|
}
|
|
}
|
|
);
|
|
|
|
var LockonCursor = defineObject(BaseObject,
|
|
{
|
|
_counter: null,
|
|
_x: 0,
|
|
_y: 0,
|
|
|
|
initialize: function() {
|
|
this._counter = createObject(CycleCounter);
|
|
this._counter.setCounterInfo(30);
|
|
},
|
|
|
|
setPos: function(x, y) {
|
|
var indexArray = [];
|
|
|
|
if (this._isPanel()) {
|
|
indexArray.push(CurrentMap.getIndex(x, y));
|
|
MapLayer.getMapChipLight().setIndexArray(indexArray);
|
|
}
|
|
else {
|
|
this._x = x;
|
|
this._y = y;
|
|
}
|
|
},
|
|
|
|
moveCursor: function() {
|
|
if (this._counter.moveCycleCounter() !== MoveResult.CONTINUE) {
|
|
this.endCursor();
|
|
return MoveResult.END;
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
drawCursor: function() {
|
|
if (!this._isPanel()) {
|
|
this._drawMapCursor();
|
|
}
|
|
},
|
|
|
|
endCursor: function() {
|
|
if (this._isPanel()) {
|
|
MapLayer.getMapChipLight().endLight();
|
|
}
|
|
},
|
|
|
|
_drawMapCursor: function() {
|
|
var session = root.getCurrentSession();
|
|
var width = UIFormat.MAPCURSOR_WIDTH / 2;
|
|
var height = UIFormat.MAPCURSOR_HEIGHT;
|
|
var x = (this._x * width) - session.getScrollPixelX();
|
|
var y = (this._y * height) - session.getScrollPixelY();
|
|
var pic = root.queryUI('lockoncursor');
|
|
var mapCursorSrcIndex = 0;
|
|
|
|
if (pic !== null) {
|
|
pic.drawParts(x, y, mapCursorSrcIndex * width, 0, width, height);
|
|
}
|
|
},
|
|
|
|
_isPanel: function() {
|
|
return true;
|
|
}
|
|
}
|
|
);
|
|
|
|
var MapCursor = defineObject(BaseObject,
|
|
{
|
|
_counter: null,
|
|
_mapCursorSrcIndex: 0,
|
|
_isInputEnabled: true,
|
|
|
|
initialize: function() {
|
|
this._counter = createObject(CycleCounter);
|
|
this._counter.setCounterInfo(22);
|
|
this._counter.disableGameAcceleration();
|
|
},
|
|
|
|
setPos: function(x, y) {
|
|
root.getCurrentSession().setMapCursorX(x);
|
|
root.getCurrentSession().setMapCursorY(y);
|
|
},
|
|
|
|
moveCursor: function() {
|
|
var inputType;
|
|
|
|
this.moveCursorAnimation();
|
|
|
|
inputType = this._getDirectionInputType();
|
|
if (inputType === InputType.NONE) {
|
|
MouseControl.moveMapMouse(this);
|
|
return inputType;
|
|
}
|
|
|
|
this._changeCursorValue(inputType);
|
|
|
|
return inputType;
|
|
},
|
|
|
|
moveCursorAnimation: function() {
|
|
if (this._counter.moveCycleCounter() !== MoveResult.CONTINUE) {
|
|
if (this._mapCursorSrcIndex === 0) {
|
|
this._mapCursorSrcIndex = 1;
|
|
}
|
|
else {
|
|
this._mapCursorSrcIndex = 0;
|
|
}
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
drawCursor: function() {
|
|
var session = root.getCurrentSession();
|
|
var width = UIFormat.MAPCURSOR_WIDTH / 2;
|
|
var height = UIFormat.MAPCURSOR_HEIGHT;
|
|
var x = (session.getMapCursorX() * width) - session.getScrollPixelX();
|
|
var y = (session.getMapCursorY() * height) - session.getScrollPixelY();
|
|
var pic = root.queryUI('mapcursor');
|
|
|
|
if (pic !== null) {
|
|
pic.drawParts(x, y, this._mapCursorSrcIndex * width, 0, width, height);
|
|
}
|
|
},
|
|
|
|
getX: function() {
|
|
return root.getCurrentSession().getMapCursorX();
|
|
},
|
|
|
|
getY: function() {
|
|
return root.getCurrentSession().getMapCursorY();
|
|
},
|
|
|
|
getUnitFromCursor: function() {
|
|
var session = root.getCurrentSession();
|
|
return PosChecker.getUnitFromPos(session.getMapCursorX(), session.getMapCursorY());
|
|
},
|
|
|
|
getMapChipFromCursor: function() {
|
|
var session = root.getCurrentSession();
|
|
return PosChecker.getTerrainFromPos(session.getMapCursorX(), session.getMapCursorY());
|
|
},
|
|
|
|
enableInput: function(enable) {
|
|
this._isInputEnabled = enable;
|
|
},
|
|
|
|
_getDirectionInputType: function() {
|
|
var inputType;
|
|
|
|
if (!this._isInputEnabled) {
|
|
return InputType.NONE;
|
|
}
|
|
|
|
if (this._isAccelerate()) {
|
|
inputType = InputControl.getDirectionStateHigh();
|
|
}
|
|
else {
|
|
inputType = InputControl.getDirectionState();
|
|
}
|
|
|
|
return inputType;
|
|
},
|
|
|
|
_isAccelerate: function() {
|
|
// キャンセルキーが押下されている場合は、カーソル移動を高速化する
|
|
return InputControl.isCancelState();
|
|
},
|
|
|
|
_changeCursorValue: function(input) {
|
|
var session = root.getCurrentSession();
|
|
var xCursor = session.getMapCursorX();
|
|
var yCursor = session.getMapCursorY();
|
|
var n = root.getCurrentSession().getMapBoundaryValue();
|
|
|
|
if (input === InputType.LEFT) {
|
|
xCursor--;
|
|
}
|
|
else if (input === InputType.UP) {
|
|
yCursor--;
|
|
}
|
|
else if (input === InputType.RIGHT) {
|
|
xCursor++;
|
|
}
|
|
else if (input === InputType.DOWN) {
|
|
yCursor++;
|
|
}
|
|
|
|
if (xCursor < n) {
|
|
xCursor = n;
|
|
}
|
|
else if (yCursor < n) {
|
|
yCursor = n;
|
|
}
|
|
else if (xCursor > CurrentMap.getWidth() - 1 - n) {
|
|
xCursor = CurrentMap.getWidth() - 1 - n;
|
|
}
|
|
else if (yCursor > CurrentMap.getHeight() - 1 - n) {
|
|
yCursor = CurrentMap.getHeight() - 1 - n;
|
|
}
|
|
else {
|
|
// カーソルが移動できたため、音を鳴らす
|
|
this._playMovingSound();
|
|
}
|
|
|
|
MapView.setScroll(xCursor, yCursor);
|
|
|
|
session.setMapCursorX(xCursor);
|
|
session.setMapCursorY(yCursor);
|
|
},
|
|
|
|
_playMovingSound: function() {
|
|
MediaControl.soundDirect('mapcursor');
|
|
}
|
|
}
|
|
);
|
|
|
|
var EdgeCursor = defineObject(BaseObject,
|
|
{
|
|
_counter: null,
|
|
_scrollCursorIndex: 0,
|
|
_totalWidth: 0,
|
|
_totalHeight: 0,
|
|
|
|
initialize: function() {
|
|
this._counter = createObject(CycleCounter);
|
|
this._counter.setCounterInfo(20);
|
|
this._counter.disableGameAcceleration();
|
|
},
|
|
|
|
setEdgeRange: function(width, height) {
|
|
this._totalWidth = width;
|
|
this._totalHeight = height;
|
|
},
|
|
|
|
moveCursor: function() {
|
|
if (this._counter.moveCycleCounter() !== MoveResult.CONTINUE) {
|
|
if (this._scrollCursorIndex === 0) {
|
|
this._scrollCursorIndex = 1;
|
|
}
|
|
else {
|
|
this._scrollCursorIndex = 0;
|
|
}
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
drawHorzCursor: function(xStart, yStart, isLeft, isRight) {
|
|
var range;
|
|
var srcWidth = 32;
|
|
var srcHeight = 32;
|
|
var xSrc = this._scrollCursorIndex * srcWidth;
|
|
var ySrc = 0;
|
|
var pic = this._getCursorUI();
|
|
|
|
if (pic === null) {
|
|
return;
|
|
}
|
|
|
|
if (isLeft) {
|
|
ySrc = 0;
|
|
range = this.getLeftEdgeRange(xStart, yStart);
|
|
pic.drawParts(range.x, range.y, xSrc, ySrc, srcWidth, srcHeight);
|
|
}
|
|
|
|
if (isRight) {
|
|
ySrc = 64;
|
|
range = this.getRightEdgeRange(xStart, yStart);
|
|
pic.drawParts(range.x, range.y, xSrc, ySrc, srcWidth, srcHeight);
|
|
}
|
|
},
|
|
|
|
drawVertCursor: function(xStart, yStart, isTop, isBottom) {
|
|
var range;
|
|
var srcWidth = 32;
|
|
var srcHeight = 32;
|
|
var xSrc = this._scrollCursorIndex * srcWidth;
|
|
var ySrc = 0;
|
|
var pic = this._getCursorUI();
|
|
|
|
if (pic === null) {
|
|
return;
|
|
}
|
|
|
|
if (isTop) {
|
|
ySrc = 32;
|
|
range = this.getTopEdgeRange(xStart, yStart);
|
|
pic.drawParts(range.x, range.y, xSrc, ySrc, srcWidth, srcHeight);
|
|
}
|
|
|
|
if (isBottom) {
|
|
ySrc = 96;
|
|
range = this.getBottomEdgeRange(xStart, yStart);
|
|
pic.drawParts(range.x, range.y, xSrc, ySrc, srcWidth, srcHeight);
|
|
}
|
|
},
|
|
|
|
getLeftEdgeRange: function(xStart, yStart) {
|
|
var xHalf = 16;
|
|
var yHalf = 16;
|
|
var x = xStart - xHalf - xHalf;
|
|
var y = Math.floor(((yStart + this._totalHeight) + yStart) / 2) - yHalf;
|
|
|
|
return this._createEdgeRange(x, y);
|
|
},
|
|
|
|
getRightEdgeRange: function(xStart, yStart) {
|
|
var xHalf = 16;
|
|
var yHalf = 16;
|
|
var x = xStart + this._totalWidth - xHalf;
|
|
var y = Math.floor(((yStart + this._totalHeight) + yStart) / 2) - yHalf;
|
|
|
|
return this._createEdgeRange(x, y);
|
|
},
|
|
|
|
getTopEdgeRange: function(xStart, yStart) {
|
|
var xHalf = 16;
|
|
var yHalf = 16;
|
|
var x = Math.floor(((xStart + this._totalWidth) + xStart) / 2) - xHalf;
|
|
var y = yStart - yHalf - yHalf;
|
|
|
|
return this._createEdgeRange(x, y);
|
|
},
|
|
|
|
getBottomEdgeRange: function(xStart, yStart) {
|
|
var xHalf = 16;
|
|
var yHalf = 16;
|
|
var x = Math.floor(((xStart + this._totalWidth) + xStart) / 2) - xHalf;
|
|
var y = yStart + this._totalHeight - yHalf;
|
|
|
|
return this._createEdgeRange(x, y);
|
|
},
|
|
|
|
_getCursorUI: function() {
|
|
return root.queryUI('scrollcursor');
|
|
},
|
|
|
|
_createEdgeRange: function(x, y) {
|
|
return createRangeObject(x, y, 32, 32);
|
|
}
|
|
}
|
|
);
|
|
|
|
var EdgeMapSideCursor = defineObject(EdgeCursor,
|
|
{
|
|
_getCursorUI: function() {
|
|
return root.queryUI('mapscrollcursor');
|
|
}
|
|
}
|
|
);
|