246 lines
6.5 KiB
JavaScript
246 lines
6.5 KiB
JavaScript
|
|
var TalkCheckScreen = defineObject(BaseScreen,
|
|
{
|
|
_talkCheckWindow: null,
|
|
|
|
setScreenData: function(screenParam) {
|
|
this._prepareScreenMemberData(screenParam);
|
|
this._completeScreenMemberData(screenParam);
|
|
},
|
|
|
|
moveScreenCycle: function() {
|
|
return this._talkCheckWindow.moveWindow();
|
|
},
|
|
|
|
drawScreenCycle: function() {
|
|
var x = LayoutControl.getCenterX(-1, this._talkCheckWindow.getWindowWidth());
|
|
var y = LayoutControl.getCenterY(-1, this._talkCheckWindow.getWindowHeight());
|
|
|
|
this._talkCheckWindow.drawWindow(x, y);
|
|
},
|
|
|
|
getScreenInteropData: function() {
|
|
return root.queryScreen('TalkCheck');
|
|
},
|
|
|
|
_prepareScreenMemberData: function(screenParam) {
|
|
this._talkCheckWindow = createWindowObject(TalkCheckWindow, this);
|
|
},
|
|
|
|
_completeScreenMemberData: function(screenParam) {
|
|
this._talkCheckWindow.setWindowData();
|
|
}
|
|
}
|
|
);
|
|
|
|
var TalkCheckWindow = defineObject(BaseWindow,
|
|
{
|
|
_scrollbar: null,
|
|
|
|
setWindowData: function() {
|
|
var count = LayoutControl.getObjectVisibleCount(50, 7);
|
|
|
|
this._scrollbar = createScrollbarObject(TalkCheckScrollbar, this);
|
|
this._scrollbar.setScrollFormation(1, count);
|
|
this._scrollbar.setActive(true);
|
|
|
|
this._setTalkEventList();
|
|
},
|
|
|
|
moveWindowContent: function() {
|
|
var input = this._scrollbar.moveInput();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (input === ScrollbarInput.CANCEL) {
|
|
result = MoveResult.END;
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
drawWindowContent: function(x, y) {
|
|
if (this._scrollbar.getObjectCount() === 0) {
|
|
this._drawNoDataText(x, y, this.getWindowWidth(), this.getWindowHeight());
|
|
}
|
|
else {
|
|
this._scrollbar.drawScrollbar(x, y);
|
|
}
|
|
},
|
|
|
|
getWindowWidth: function() {
|
|
return this._scrollbar.getScrollbarWidth() + (this.getWindowXPadding() * 2);
|
|
},
|
|
|
|
getWindowHeight: function() {
|
|
return this._scrollbar.getScrollbarHeight() + (this.getWindowYPadding() * 2);
|
|
},
|
|
|
|
_drawNoDataText: function(x, y, width, height) {
|
|
var range;
|
|
var text = StringTable.Communication_NoData;
|
|
var textui = this.getWindowTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
|
|
range = createRangeObject(x, y, width, height);
|
|
TextRenderer.drawRangeText(range, TextFormat.CENTER, text, -1, color, font);
|
|
},
|
|
|
|
_setTalkEventList: function() {
|
|
var i, event;
|
|
var arr = EventCommonArray.createArray(root.getCurrentSession().getTalkEventList(), EventType.TALK);
|
|
var count = arr.length;
|
|
|
|
for (i = 0; i < count; i++) {
|
|
event = arr[i];
|
|
if (this._isEvent(event)) {
|
|
this._scrollbar.objectSet(event);
|
|
}
|
|
}
|
|
|
|
this._scrollbar.objectSetEnd();
|
|
},
|
|
|
|
_isEvent: function(event) {
|
|
var info = event.getTalkEventInfo();
|
|
|
|
if (!event.isEvent()) {
|
|
return false;
|
|
}
|
|
|
|
if (info.getDestUnit() === null) {
|
|
return false;
|
|
}
|
|
|
|
return info.isSrcActive() || info.getSrcUnit() !== null;
|
|
}
|
|
}
|
|
);
|
|
|
|
var TalkCheckScrollbar = defineObject(BaseScrollbar,
|
|
{
|
|
drawScrollContent: function(x, y, object, isSelect, index) {
|
|
this._drawLeft(x, y, object, isSelect, index);
|
|
this._drawRight(x, y, object, isSelect, index);
|
|
this._drawMiddle(x, y, object, isSelect, index);
|
|
},
|
|
|
|
getObjectWidth: function() {
|
|
return 450;
|
|
},
|
|
|
|
getObjectHeight: function() {
|
|
return 50;
|
|
},
|
|
|
|
_drawLeft: function(x, y, object, isSelect, index) {
|
|
var unit = object.getTalkEventInfo().getSrcUnit();
|
|
var unitRenderParam = StructureBuilder.buildUnitRenderParam();
|
|
var range = this._getTextRange(x, y);
|
|
var alpha = 255;
|
|
var textui = this.getParentTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
var isSrcActive = object.getTalkEventInfo().isSrcActive();
|
|
|
|
if (!this._isSelectable(object)) {
|
|
alpha = 128;
|
|
color = ColorValue.DISABLE;
|
|
}
|
|
|
|
if (!isSrcActive) {
|
|
unitRenderParam.alpha = alpha;
|
|
UnitRenderer.drawDefaultUnit(unit, x + this._getMarginX(), y + 10, unitRenderParam);
|
|
}
|
|
|
|
TextRenderer.drawRangeAlphaText(range, TextFormat.LEFT, isSrcActive ? StringTable.PlayerActive : unit.getName(), -1, color, alpha, font);
|
|
},
|
|
|
|
_drawRight: function(x, y, object, isSelect, index) {
|
|
var unit = object.getTalkEventInfo().getDestUnit();
|
|
var unitRenderParam = StructureBuilder.buildUnitRenderParam();
|
|
var range = this._getTextRange(x, y);
|
|
var alpha = 255;
|
|
var textui = this.getParentTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
|
|
if (!this._isSelectable(object)) {
|
|
alpha = 128;
|
|
color = ColorValue.DISABLE;
|
|
}
|
|
|
|
x += (this.getObjectWidth() + (DefineControl.getWindowXPadding() * 2)) - this._getSize();
|
|
|
|
unitRenderParam.alpha = alpha;
|
|
UnitRenderer.drawDefaultUnit(unit, x - this._getMarginX(), y + 10, unitRenderParam);
|
|
|
|
TextRenderer.drawRangeAlphaText(range, TextFormat.RIGHT, unit.getName(), -1, color, alpha, font);
|
|
},
|
|
|
|
_drawMiddle: function(x, y, object, isSelect, index) {
|
|
var textui, pic;
|
|
var width = TitleRenderer.getTitlePartsWidth();
|
|
|
|
if (object.getTalkEventInfo().isMutual()) {
|
|
textui = root.queryTextUI('bidirectional_title');
|
|
}
|
|
else {
|
|
textui = root.queryTextUI('arrow_title');
|
|
}
|
|
|
|
pic = textui.getUIImage();
|
|
if (pic !== null) {
|
|
x += Math.floor(this.getScrollbarWidth() / 2) - Math.floor((width * 3) / 2);
|
|
y -= 5;
|
|
if (!this._isSelectable(object)) {
|
|
pic.setAlpha(128);
|
|
}
|
|
pic.draw(x, y);
|
|
}
|
|
else {
|
|
// 見出しが設定されていない場合は、コマンド表記になる
|
|
this._drawTalkCommand(x, y, object, isSelect, index);
|
|
}
|
|
},
|
|
|
|
_drawTalkCommand: function(x, y, object, isSelect, index) {
|
|
var text = object.getTalkEventInfo().getCommandText();
|
|
var range = this._getTextRange(x, y);
|
|
var alpha = 255;
|
|
var textui = this.getParentTextUI();
|
|
var color = ColorValue.KEYWORD;
|
|
var font = textui.getFont();
|
|
|
|
if (!this._isSelectable(object)) {
|
|
alpha = 128;
|
|
color = ColorValue.DISABLE;
|
|
}
|
|
|
|
TextRenderer.drawRangeAlphaText(range, TextFormat.CENTER, '<' + text + '>', -1, color, alpha, font);
|
|
},
|
|
|
|
_isSelectable: function(object) {
|
|
if (object === null) {
|
|
return false;
|
|
}
|
|
|
|
return object.getExecutedMark() === EventExecutedType.FREE;
|
|
},
|
|
|
|
_getTextRange: function(x, y) {
|
|
var dx = this._getSize();
|
|
var width = this.getObjectWidth() - (dx * 2) - (this._getMarginX() * 2);
|
|
|
|
return createRangeObject(x + this._getMarginX() + dx, y, width, this.getObjectHeight());
|
|
},
|
|
|
|
_getMarginX: function(x, y) {
|
|
return 20;
|
|
},
|
|
|
|
_getSize: function() {
|
|
return 56;
|
|
}
|
|
}
|
|
);
|