slave-princess-charlotte/data/Plugin/face.js
2025-10-12 13:17:46 -05:00

327 lines
No EOL
9.2 KiB
JavaScript

var actorMap = {};
var actorGameMap = {};
var actor1Map = {};
var actor2Map = {};
var actorEroMap = {};
var actorEro2Map = {};
var actorEro3Map = {};
var clearActorIndex = 0;
function clearActorMap() {
actorMap = {};
actorGameMap = {};
actor1Map = {};
actor2Map = {};
actorEroMap = {};
actorEro2Map = {};
actorEro3Map = {};
setNaked(false);
root.log('clearActorMap' + clearActorIndex++);
}
ContentRenderer.drawUnitFace = function(x, y, unit, isReverse, alpha, isBig) {
var handle = unit.getFaceResourceHandle();
var pic = GraphicsRenderer.getGraphics(handle, GraphicsType.FACE);
if (pic === null) {
return;
}
if (isBig) {
var u;
var val = getNameByVal2(unit.getName());
var switchId = getEroEquipSwitchId(val, -2);
var isOn = root.getMetaSession().getGlobalSwitchTable().isSwitchOn(switchId);
if (isEro() || isOn) {
var session = root.getCurrentSession();
if (root.getCurrentScene() === SceneType.FREE && session != null) {
var mapType = session.getCurrentMapInfo().getMapType();
if (mapType === MapType.NORMAL) {
u = getActorEro3(unit);
} else {
u = getActorEro2(unit);
}
}
else {
u = getActorEro2(unit);
}
} else {
u = getActor2(unit);
}
if (u) {
handle = u.getFaceResourceHandle();
pic = GraphicsRenderer.getGraphics(handle, GraphicsType.FACE);
} else {
x += 20;
y += 12;
}
}
pic.setReverse(isReverse);
pic.setAlpha(alpha);
this._drawShrinkFace(x, y, handle, pic);
};
function getActor1(unit) {
if (! unit) {
return null
}
if (actor1Map[unit.getId()] !== undefined) {
if (actor1Map[unit.getId()] == null) {
return null;
} else {
return actor1Map[unit.getId()];
}
} else {
var list = root.getBaseData().getPlayerList();
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
var name = unit.getName();
if (name.length > 4) {
name = name.substr(0, 4);
}
if ((name + '1') == u.getName()) {
actor1Map[unit.getId()] = u;
return u;
}
}
actor1Map[unit.getId()] = null;
return null;
}
}
function getActorByName2(name) {
if (actorMap[name] !== undefined) {
if (actorMap[name] == null) {
return null;
} else {
return actorMap[name];
}
} else {
var list = root.getBaseData().getPlayerList();
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
if (u.getName() == name) {
actorMap[name] = u;
return u;
}
}
actorMap[name] = null;
return null;
}
}
function getActorByName3(name) {
if (actorGameMap[name] !== undefined) {
if (actorGameMap[name] == null) {
return null;
} else {
return actorGameMap[name];
}
} else {
var list = root.getCurrentSession().getPlayerList();
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
if (u.getName() == name) {
actorGameMap[name] = u;
return u;
}
}
actorGameMap[name] = null;
return null;
}
}
function getActor2(unit) {
if (actor2Map[unit.getId()] !== undefined) {
if (actor2Map[unit.getId()] == null) {
return null;
} else {
return actor2Map[unit.getId()];
}
} else {
var list = root.getBaseData().getPlayerList();
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
var name = unit.getName();
if (name.length > 4) {
name = name.substr(0, 4);
}
if ((name + '2') == u.getName()) {
actor2Map[unit.getId()] = u;
return u;
}
}
actor2Map[unit.getId()] = null;
return null;
}
}
function getActorEro(unit) {
if (! unit) {
return null;
}
if (actorEroMap[unit.getId()] !== undefined) {
if (actorEroMap[unit.getId()] == null) {
return null;
} else {
return actorEroMap[unit.getId()];
}
} else {
var name = getSearchName(unit);
var list = root.getBaseData().getPlayerList();
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
if ((name + '_ero') == u.getName()) {
actorEroMap[unit.getId()] = u;
return u;
}
}
actorEroMap[unit.getId()] = null;
return null;
}
}
function getActorEro2(unit) {
if (actorEro2Map[unit.getId()] !== undefined) {
if (actorEro2Map[unit.getId()] == null) {
return null;
} else {
return actorEro2Map[unit.getId()];
}
} else {
var name = getSearchName(unit);
var list = root.getBaseData().getPlayerList();
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
if ((name + '_ero2') == u.getName()) {
actorEro2Map[unit.getId()] = u;
return u;
}
}
actorEro2Map[unit.getId()] = null;
return null;
}
}
function getActorEro3(unit) {
if (actorEro3Map[unit.getId()] !== undefined) {
if (actorEro3Map[unit.getId()] == null) {
return null;
} else {
return actorEro3Map[unit.getId()];
}
} else {
var name = getSearchName(unit);
var list = root.getBaseData().getPlayerList();
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
if ((name + '_ero3') == u.getName()) {
actorEro3Map[unit.getId()] = u;
return u;
}
}
actorEro3Map[unit.getId()] = null;
return null;
}
}
function getSearchName(unit) {
var name = unit.getName();
if (name.indexOf('_') > 1) {
name = name.substr(0, name.indexOf('_'));
}
if (name.length > 4) {
name = name.substr(0, 4);
}
return name;
}
ContentRenderer._drawShrinkFace = function(xDest, yDest, handle, pic) {
var xSrc, ySrc;
var destWidth = GraphicsFormat.FACE_WIDTH;
var destHeight = GraphicsFormat.FACE_HEIGHT;
var srcWidth = destWidth;
var srcHeight = destHeight;
xSrc = handle.getSrcX() * srcWidth;
if (root.isLargeFaceUse() && pic.isLargeImage()) {
srcWidth = root.getLargeFaceWidth();
srcHeight = root.getLargeFaceHeight();
destWidth = root.getLargeFaceWidth();
destHeight = root.getLargeFaceHeight();
xSrc = handle.getSrcX() * srcWidth;
}
ySrc = handle.getSrcY() * srcHeight;
pic.drawStretchParts(xDest, yDest, destWidth, destHeight, xSrc, ySrc, srcWidth, srcHeight);
};
BaseMessageView.drawFace = function(xDest, yDest) {
var pic, xSrc, ySrc;
var destWidth = GraphicsFormat.FACE_WIDTH;
var destHeight = GraphicsFormat.FACE_HEIGHT;
var srcWidth = destWidth;
var srcHeight = destHeight;
var handle = this._faceHandle;
var facialExpressionId = this._faceId;
if (handle === null) {
return;
}
pic = GraphicsRenderer.getGraphics(handle, GraphicsType.FACE);
if (pic === null) {
return;
}
/*if (root.isLargeFaceUse() && false) {
destWidth = root.getLargeFaceWidth();
destHeight = root.getLargeFaceHeight();
if (pic.isLargeImage()) {
srcWidth = destWidth;
srcHeight = destHeight;
}
}*/
if (facialExpressionId === 0) {
xSrc = handle.getSrcX();
ySrc = handle.getSrcY();
}
else {
xSrc = Math.floor(facialExpressionId % 6);
ySrc = Math.floor(facialExpressionId / 6);
}
if (this._messageLayout.isFaceReverse()) {
pic.setReverse(true);
}
xSrc *= srcWidth;
ySrc *= srcHeight;
pic.drawStretchParts(xDest, yDest, destWidth, destHeight, xSrc, ySrc, srcWidth, srcHeight);
};
BaseMessageView._setupName = function(messageViewParam) {
var name = '';
if (messageViewParam.unit !== null) {
name = messageViewParam.unit.getName();
}
else if (messageViewParam.npc !== null) {
name = messageViewParam.npc.getName();
}
if (name == '_') {
name = '';
}
if (name.indexOf('_') > 1) {
name = name.substr(0, name.indexOf('_'));
}
if (name == 'Char') {
name = 'Charlotte';
}
if (name == 'シャルロ') {
name = 'シャルロット';
}
this._name = name;
};