302 public int[]
floatVs =
new int[10] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
308 public float[]
floatYs =
new float[10] { 0f, 1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f };
340 protected RaycastHit2D[]
rays =
new RaycastHit2D[1];
530 for (
int i = 0; i < 256; i++)
572 subtleHighlightArea = EMono.scene.actionMode.AreaHihlight != 0 && (EMono.scene.actionMode.AreaHihlight == AreaHighlightMode.Build || EMono.scene.actionMode.AreaHihlight !=
AreaHighlightMode.Edit);
590 fogBounds = (EMono._map.config.forceHideOutbounds && (!EMono.debug.godBuild || !
buildMode)) || (EMono.core.config.game.dontRenderOutsideMap && !
buildMode);
618 Fov.nonGradientMod = profile.
global.fovModNonGradient;
626 for (
int i = 0; i <
floatYs.Length; i++)
709 noRoofMode = EMono.game.config.noRoof || screen.focusOption !=
null;
730 currentRoom.data.visited =
true;
734 room.data.visited =
true;
768 Vector3Int vector3Int =
screen.
grid.WorldToCell(mposWorld);
770 mz = vector3Int.x - 1;
775 TestPoint.x =
mx + num3;
776 TestPoint.z =
mz - num3;
780 Physics2D.SyncTransforms();
781 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero,
rays) > 0)
787 TestPoint.x =
mx + num3 - 1;
788 TestPoint.z =
mz - num3;
792 Physics2D.SyncTransforms();
793 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero,
rays) > 0)
799 TestPoint.x =
mx + num3;
800 TestPoint.z =
mz - num3 + 1;
804 Physics2D.SyncTransforms();
805 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero,
rays) > 0)
813 bool flag2 = EMono._zone.UseFog && !
EMono.
scene.
bg.wall;
818 cx = screen.scrollX - screen.scrollY +
x - (
z + 1) / 2;
819 cz = screen.scrollY + screen.scrollX +
x +
z / 2;
824 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)
z *
edgeBlockFix.z;
879 int valueOrDefault = (this.room?.
lot?.
idBGM).GetValueOrDefault();
880 if (valueOrDefault == 0)
886 BGMData data =
EMono.
Sound.plLot.list[0].data;
887 if ((
object)data !=
null && data.id == valueOrDefault)
899 SoundManager.bgmVolumeMod = ((!LayerDrama.maxBGMVolume && !EMono._map.IsIndoor && this.room !=
null && !this.room.data.atrium && this.room.
HasRoof) ? (-0.6f) : 0f);
932 this.room = this.cell.
room;
954 floorDir = this.cell.sourceObj.snowTile - 1;
974 light = (this.cell.pcSync ? this.cell.light : (this.cell.light / 3 * 2));
1012 liquidLv = (param.liquidLv = ((!flag && !
isUnderwater) ? (((this.cell.
liquidLv +
this.cell._bridge != 0) ?
this.cell.sourceBridge.tileType.LiquidLV :
sourceFloor.tileType.LiquidLV) * 10) : 0));
1022 if (effect !=
null && effect.
IsFire)
1032 if (this.room !=
null)
1034 this.room.lot.sync =
true;
1045 if ((this.room !=
null && this.room.
lot ==
currentLot) || flag2)
1064 param.color = (
blockLight = (int)(
blockLight * 50f) * 262144 + ((this.cell.lightR >= 64) ? 63 : this.cell.
lightR) * 4096 + ((this.cell.lightG >= 64) ? 63 : this.cell.
lightG) * 64 + ((this.cell.lightB >= 64) ? 63 : this.cell.
lightB));
1082 bool num = this.room !=
null && sourceBlock.tileType.CastShadowSelf && !this.cell.
hasDoor;
1083 bool flag3 = this.room !=
null &&
showRoof && this.room.lot.idRoofStyle != 0 && !this.room.data.atrium && !
sourceBlock.tileType.Invisible;
1084 if (flag3 && this.cell.
hasDoor &&
this.cell.IsLotEdge)
1088 if (num || !
isSeen || flag3)
1102 param.y += 0.01f *
floatY;
1110 param.x += anime2.
v.x;
1111 param.y += anime2.
v.y;
1112 param.z += anime2.
v.z;
1129 param.dir = this.cell._roofBlockDir % 4;
1139 param.tile = row.
_tiles[param.dir % row.
_tiles.Length];
1147 if (dir == 0 || dir == 2)
1164 if (dir == 1 || dir == 2)
1187 param.halfBlockColor = ((_sourceBlock.sourceAutoFloor.colorMod == 0) ? 104025 :
GetColorInt(ref row2.
matColor,
_sourceBlock.sourceAutoFloor.colorMod));
1193 param.tile = row.
_tiles[param.dir % row.
_tiles.Length];
1198 int shadow2 = shadowPref.
shadow;
1203 param.tile = row.
_tiles[param.dir % row.
_tiles.Length];
1223 param.matColor = 104025f;
1226 param.y = (float)(
cz -
cx) * screen.tileAlign.y + (float)(
int)this.cell.bridgeHeight * _heightMod.y +
ugFixBridgeBottom.x;
1227 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)(
int)this.cell.bridgeHeight *
_heightMod.z;
1249 float num2 = (float)(
int)this.cell.TopHeight *
_heightMod.y;
1254 param.z += ugFix.z +
slopeFixZ * (float)i;
1314 param.tile = defBlock.
_tiles[this.cell.blockDir % defBlock.
_tiles.Length];
1315 if (defBlock.
id != 1)
1321 param.matColor = 104025f;
1327 param.z += ugFix.z +
slopeFixZ * (float)j;
1341 if (!isWater && (this.cell.
Front.
sourceFloor.tileType.IsWater ||
this.cell.Right.sourceFloor.tileType.IsWater) && this.cell.sourceBlock.tileType.RenderWaterBlock && !flag)
1354 num5 = row3.
_tiles[this.cell.blockDir % row3.
_tiles.Length];
1356 if (((this.cell.
Front.
shore / 12) & 1) == 0 && this.cell.
Front.
sourceFloor.tileType.IsWater &&
this.cell.Front.height <=
height &&
this.cell.Front.sourceBlock.tileType.RenderWaterBlock)
1358 param.y = (float)(
cz -
cx) * screen.tileAlign.y - (this.cell.Front.sourceFloor.tileType.IsDeepWater ? 0.6f : 0.4f) + (
float)(int)this.cell.
Front.
height *
_heightMod.y;
1360 param.
tile = num5 + ((!
this.cell.Front.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
1363 if (((this.cell.
Right.
shore / 12) & 8) == 0 && this.cell.
Right.
sourceFloor.tileType.IsWater &&
this.cell.Right.height <=
height &&
this.cell.Right.sourceBlock.tileType.RenderWaterBlock)
1365 param.y = (float)(
cz -
cx) * screen.tileAlign.y - (this.cell.Right.sourceFloor.tileType.IsDeepWater ? 0.6f : 0.4f) + (
float)(int)this.cell.
Right.
height *
_heightMod.y;
1367 param.
tile = num5 + ((!
this.cell.Right.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
1375 param.matColor = 104025f;
1399 param.tile = defBlock2.
_tiles[this.cell.blockDir % defBlock2.
_tiles.Length];
1400 if (defBlock2.
id != 1)
1406 param.matColor = 104025f;
1411 param.z += ugFix.z +
slopeFixZ * (float)k;
1428 floorLight2 = (int)(
floorLight2 * 50f) * 262144 + ((this.cell.lightR >= 64) ? 63 : this.cell.
lightR) * 4096 + ((this.cell.lightG >= 64) ? 63 : this.cell.
lightG) * 64 + ((this.cell.lightB >= 64) ? 63 : this.cell.
lightB);
1437 if (isWater && flag)
1439 param.y -= 0.01f *
floatY;
1449 int num6 = (int)(Time.realtimeSinceStartup * 1000f / (
float)
sourceFloor.anime[1] % (float)
sourceFloor.anime[0]);
1473 if (!this.cell.
Right.
IsSnowTile &&
this.cell.Right.topHeight ==
this.cell.topHeight)
1477 if (!this.cell.
Front.
IsSnowTile &&
this.cell.Front.topHeight ==
this.cell.topHeight)
1483 param.tile = 448 + num7 + 12;
1495 param.tile = 448 + this.cell.shadow + 8 + (this.cell.HasFence ? 4 : 0);
1519 if (
back.sourceBlock.transition[0] != -1 &&
back.isSeen && !
back.hasDoor)
1536 if (
back.sourceBlock.transition[0] != -1 &&
back.isSeen && !
back.hasDoor)
1554 if (this.cell.
autotile != 0 &&
sourceFloor.autotile != 0 && (!
hasBridge ||
this.cell.bridgeHeight -
this.cell.height > 3) && !
this.cell.skipRender && num7 == 0)
1574 int num9 = this.cell.shore / num8;
1575 int num10 = this.cell.shore % num8;
1577 if (this.cell.
shore != 0)
1579 Cell cell = ((((uint)num9 & (
true ? 1u : 0u)) != 0) ? this.cell.Back : ((((uint)num9 & 2u) != 0) ? this.cell.
Right : ((((uint)num9 & 4u) != 0) ? this.cell.Front : this.cell.
Left)));
1582 cell = ((((uint)num9 & 8u) != 0) ? this.cell.
Left : ((((uint)num9 & 4u) != 0) ? this.cell.Front : ((((uint)num9 & 2u) != 0) ? this.cell.
Right :
this.cell.
Back)));
1608 param.tile = (24 + num10 / 2) * 32 + num10 % 2 * 16 + num9;
1612 if (this.cell.
Back.
isShoreSand && ((uint)(
this.cell.Back.shore / num8) & 8u) != 0 && this.cell.Left.isShoreSand && ((uint)(this.cell.
Left.
shore / num8) & (
true ? 1u : 0u)) != 0)
1619 if (this.cell.
Back.
isShoreSand && ((uint)(
this.cell.Back.shore / num8) & 2u) != 0 &&
this.cell.Right.isShoreSand && ((uint)(
this.cell.Right.shore / num8) & (
true ? 1u : 0u)) != 0)
1626 if (this.cell.
Front.
isShoreSand && ((uint)(
this.cell.Front.shore / num8) & 2u) != 0 &&
this.cell.Right.isShoreSand && ((uint)(
this.cell.Right.shore / num8) & 4u) != 0)
1633 if (this.cell.
Front.
isShoreSand && ((uint)(
this.cell.Front.shore / num8) & 8u) != 0 &&
this.cell.Left.isShoreSand && ((uint)(
this.cell.Left.shore / num8) & 4u) != 0)
1640 if (this.cell.
_bridge != 0 &&
this.cell.isBridgeEdge &&
this.cell.bridgePillar !=
byte.MaxValue)
1659 if (((uint)num9 & (
true ? 1u : 0u)) != 0)
1661 if (((uint)num9 & 8u) != 0)
1663 if ((num9 & 2) == 0 && (num9 & 4) == 0)
1669 if (((uint)num9 & 2u) != 0)
1671 if ((num9 & 8) == 0 && (num9 & 4) == 0)
1678 if (((uint)num9 & 4u) != 0)
1680 if (((uint)num9 & 8u) != 0)
1682 if ((num9 & 2) == 0 && (num9 & 1) == 0)
1688 if (((uint)num9 & 2u) != 0)
1690 if ((num9 & 8) == 0 && (num9 & 1) == 0)
1699 if (!this.cell.
Front.
sourceFloor.tileType.IsWater && !
this.cell.Front.isDeck)
1703 if (!this.cell.
Right.
sourceFloor.tileType.IsWater && !
this.cell.Right.isDeck)
1711 if (!this.cell.
Back.
sourceFloor.tileType.IsWater && !
this.cell.Back.isDeck)
1717 if (((uint)(this.cell.
shore / num8) & (
true ? 1u : 0u)) != 0)
1749 if (!this.cell.
Left.
sourceFloor.tileType.IsWater && !
this.cell.Left.isDeck)
1755 if (((uint)(this.cell.
shore / num8) & 8u) != 0)
1790 param.y += 0.01f *
floatY;
1809 param.y = (float)(
cz -
cx) * screen.tileAlign.y + (float)(
int)this.cell.bridgeHeight *
_heightMod.y;
1810 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)(
int)this.cell.bridgeHeight *
_heightMod.z;
1813 param.y += 0.01f *
floatY;
1838 if (this.cell.
shadow != 0)
1842 param.tile = 448 + this.cell.shadow + 8 + (this.cell.HasFence ? 4 : 0);
1863 if (this.cell.
isBridgeEdge &&
this.cell.bridgeHeight -
this.cell.height >= 3 &&
this.cell.bridgePillar !=
byte.MaxValue && !
noSlopMode)
1880 param.tile = row4.
_tiles[0] + ((num12 == 2) ? 32 : 0);
1887 param.tile = row4.
_tiles[0] + 32;
1892 for (
int l = 0; l < num12; l++)
1910 if (this.cell.
_deco != 0)
1919 param.tile = (26 + sourceDeco.autotile / 2) * 32 +
sourceDeco.autotile % 2 * 16 +
this.cell.autotileDeco;
1932 if (this.cell.
_block != 0 && !
this.cell.hasDoor)
1965 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.
FrontRight.
room;
1978 else if (this.tileType.
IsFullBlock &&
this.room !=
this.cell.FrontRight.room && (
this.cell.FrontRight.room ==
currentRoom || (
this.room?.lot !=
currentLot &&
this.cell.FrontRight.room?.lot ==
currentLot)))
1985 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.
FrontRight.
room;
2009 if (this.room !=
null)
2022 int num15 = ((this.room.data.maxHeight == 0) ? 2 : this.room.
data.
maxHeight);
2023 roomHeight = EMono.setting.render.roomHeightMod * (float)((this.room.
lot.
height < num15) ? this.room.lot.height : num15) + 0.01f * (
float)this.room.
lot.
heightFix;
2042 if (this.cell.
Back.
IsRoomEdge &&
this.cell.Right.IsRoomEdge &&
this.cell.Back.room ==
null &&
this.cell.Right.room ==
null &&
this.cell.Right.Front.room?.lot ==
this.room?.lot)
2047 else if (this.cell.
Back.
room !=
null &&
this.cell.Back.room.
lot == (
this.cell.Front.room ??
this.cell.Right.room)?.lot)
2058 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.
FrontRight.
room;
2095 param.color = (int)(50f *
blockLight) * 262144;
2096 param.matColor = 104025f;
2138 if (this.cell.
Things.Count > 0)
2160 if (!invisible &&
room !=
null)
2184 room = this.cell.Right.room ?? this.cell.
room;
2189 if (!invisible &&
room !=
null)
2225 bool flag8 = blockDir == 1 ||
_lowblock || flag7;
2226 bool flag9 = blockDir == 0 ||
_lowblock || flag7;
2233 if (!this.cell.
IsRoomEdge || (
this.cell.Front.room !=
this.cell.room &&
this.cell.FrontRight.room !=
this.cell.room))
2247 if (!this.cell.
IsRoomEdge || (
this.cell.Right.room !=
this.cell.room &&
this.cell.FrontRight.room !=
this.cell.room))
2258 if (blockDir == 0 || blockDir == 2)
2261 Room room2 = this.cell.Front.room ?? this.cell.
room;
2262 if (room2 !=
null && this.tileType.
IsWall)
2264 if (room2.
lot.
idDeco != 0 && !
this.cell.hasDoor)
2284 if (blockDir == 2 &&
left.sourceBlock.tileType.IsWallOrFence && !
this.cell.crossWall)
2287 param.mat =
left.matBlock;
2322 param.tile =
_sourceBlock._tiles[0] + ((flag8 && flag9 && this.tileType.UseLowBlock && !flag7) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
2332 if (!flag8 && !
showRoof && this.cell.
Left.
HasWallOrFence &&
this.cell.Left.blockDir != 0 && !
this.cell.Left.isToggleWallPillar)
2335 param.tile =
_sourceBlock._tiles[0] + ((flag8 && this.tileType.UseLowBlock && !flag7) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
2352 param.tile =
_sourceBlock._tiles[0] + ((flag8 && this.tileType.UseLowBlock && !flag7) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
2367 if (blockDir == 1 || blockDir == 2)
2372 Room room3 = this.cell.Right.room ?? this.cell.
room;
2373 if (room3 !=
null && this.tileType.
IsWall)
2375 if (room3.
lot.
idDeco != 0 && !
this.cell.hasDoor)
2394 if (blockDir == 2 && this.cell.
room ==
null &&
this.cell.Right.room !=
null)
2408 int num20 = ((room4.data.maxHeight == 0) ? 2 : room4.
data.
maxHeight);
2409 roomHeight = EMono.setting.render.roomHeightMod * (float)((room4.
lot.
height < num20) ? room4.lot.height : num20) + 0.01f * (
float)room4.
lot.
heightFix;
2413 if (blockDir == 2 && back2.
sourceBlock.tileType.IsWallOrFence && !
this.cell.crossWall)
2452 param.tile =
_sourceBlock._tiles[0] + ((flag9 && this.tileType.UseLowBlock && !flag7) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
2474 param.halfBlockColor = ((_sourceBlock.sourceAutoFloor.colorMod == 0) ? 104025 :
GetColorInt(ref
matBlock.matColor,
_sourceBlock.sourceAutoFloor.colorMod));
2482 int num16 = this.cell.objDir + ((this.cell.objDir >= 7) ? this.cell.
objDir : 0) + 1;
2493 int shadow3 = shadowPref2.
shadow;
2520 if (this.cell.
room !=
null || !
this.cell.IsRoomEdge || !
showRoof)
2524 if (this.cell.
_block == 0 || !
this.cell.sourceBlock.tileType.RepeatBlock)
2527 if (obj ==
null || !obj.
HasRoof)
2535 if (!
showRoof || !
roof || this.cell.
room ==
null ||
this.cell.Front.room ==
null ||
this.cell.Right.room ==
null)
2550 freePos.x = (freePos.y = (freePos.z = 0f));
2554 param.x += rampFix.x;
2555 param.y += rampFix.y;
2556 param.z += rampFix.z;
2557 freePos.x += rampFix.x;
2558 freePos.y += rampFix.y;
2559 freePos.z += rampFix.z;
2561 param.y += (flag ? 0f : ((this.cell._bridge != 0) ? this.cell.
sourceBridge.tileType.FloorHeight :
sourceFloor.tileType.FloorHeight));
2569 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
2581 bool flag10 =
false;
2583 bool flag11 =
false;
2599 if (!isInstalled && t.
category.tileDummy != 0)
2603 float num29 = ((tileType.UseMountHeight && isInstalled) ? 0f : ((pref.
height < 0f) ? 0f : ((pref.height == 0f) ? 0.1f : pref.
height)));
2606 thingPos.y -= num22;
2609 shadow = thingPos.y < 0.16f && num27 < 0.16f;
2619 _actorPos.z = param.z + num28;
2620 if (this.room !=
null)
2630 _actorPos.x =
orgX + num25;
2635 if (thing?.
id != t.
id)
2642 thingPos.y -= num22;
2645 _actorPos.z -= 0.2f;
2648 _actorPos.y -= num22;
2650 _actorPos.z += renderSetting.thingZ + (float)m * -0.01f +
zSetting.mod1 *
thingPos.y;
2660 freePos.x += rampFix2.x;
2661 freePos.y += rampFix2.y;
2662 freePos.z += rampFix2.z;
2665 num27 += rampFix2.y;
2667 liquidLv -= (int)(rampFix2.y * 150f);
2682 _actorPos.x += pref.x * (float)((!t.
flipX) ? 1 : (-1));
2683 _actorPos.z += pref.
z;
2684 thingPos.z += pref.
z;
2693 thingPos.y += num29;
2704 Room room5 = ((t.dir == 0) ? this.cell.
Back.
room :
this.cell.Left.room);
2727 _actorPos.x += t.
fx;
2728 _actorPos.y += t.
fy;
2736 _actorPos.x += pref.x * (float)((!t.
flipX) ? 1 : (-1));
2737 _actorPos.z += pref.
z;
2740 thingPos.z += pref.
z;
2750 thingPos.y += num29;
2751 _actorPos.x += pref.x * (float)((!t.
flipX) ? 1 : (-1));
2752 _actorPos.z += pref.
z;
2753 thingPos.z += pref.
z;
2758 float num30 = ((this.cell._bridge != 0) ?
sourceBridge.tileType.FloorHeight :
sourceFloor.tileType.FloorHeight);
2764 _actorPos.y += 0.01f *
floatY - num30;
2767 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
2814 _actorPos.x += t.
fx;
2825 _actorPos.z += -0.5f;
2866 param.tile += ((param.tile < 0f) ? (-64) : 64);
2875 _actorPos.y = EMono.pc.renderer.position.y - pref.
height;
2876 _actorPos.z = EMono.pc.renderer.position.z + 0.02f;
2887 num25 += pref.stackX * (float)((!t.
flipX) ? 1 : (-1));
2905 param.shadowFix = 0f - num27;
2906 param.color += 1310720f;
2911 if (chara.
host !=
null)
2941 if (restrainer !=
null)
2944 if (getRestrainPos !=
default(Vector3))
2948 float num32 = getRestrainPos.y + defCharaHeight - ((chara.Pref.height == 0f) ? defCharaHeight : chara.
source.pref.height);
2949 _actorPos.x = position.x + getRestrainPos.x * (float)((restrainer.
owner.
dir % 2 == 0) ? 1 : (-1));
2950 _actorPos.y = position.y + num32;
2951 _actorPos.z = position.z + getRestrainPos.z;
2956 param.shadowFix = 0f;
2965 float num33 = chara.renderer.data.size.y * 0.3f;
2970 float num34 = thingPos.y + num33;
2971 float num35 = (float)n * -0.01f;
2978 _actorPos.z += renderSetting.laydownZ + num35;
2979 param.liquidLv = ((thingPos.y == 0f &&
liquidLv > 0) ? 90 : 0);
2980 thingPos.y += num33 * 0.8f;
2990 float num36 = ((this.cell._bridge != 0) ?
sourceBridge.tileType.FloorHeight :
sourceFloor.tileType.FloorHeight);
2991 float num37 =
floatYs[chara.uid % 10] + 10f + (float)(chara.
uid % 30);
2992 orgY += 0.01f * num37 - num36;
2993 _actorPos.y += 0.01f * num37 - num36;
2994 param.shadowFix -= 0.01f * num37 - num36;
3003 float num38 = ((this.cell._bridge != 0) ?
sourceBridge.tileType.FloorHeight :
sourceFloor.tileType.FloorHeight);
3005 _actorPos.y += 0.01f *
floatY - num38;
3006 int num39 = TileType.FloorWaterShallow.LiquidLV * 10;
3007 num39 -= (int)(
floatY * 0.5f);
3008 param.liquidLv = num39;
3012 param.liquidLv -= 20;
3048 if (this.cell.
effect !=
null)
3056 param.mat = defaultMaterial;
3064 if (sourceEffect2.
anime.Length != 0)
3066 if (sourceEffect2.
anime.Length > 2)
3068 float num40 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.
anime[1] % (
float)sourceEffect2.
anime[2];
3069 if (!(num40 >= (
float)sourceEffect2.
anime[0]))
3071 param.tile += num40;
3076 float num41 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.
anime[1] % (
float)sourceEffect2.
anime[0];
3077 param.tile += num41;
3091 if (this.cell.
critter !=
null)
3094 int snowTile = critter.
tile;
3124 param.x += anime4.
v.x;
3125 param.y += anime4.
v.y;
3126 param.z += anime4.
v.z;
3129 if (this.cell.
obj != 0 && !
this.cell.sourceObj.renderData.SkipOnMap)
3135 param.mat = this.cell.
matObj;
3141 param.y += 0.01f *
floatY;
3144 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
3186 param.tile = sourceObj.
_tiles[this.cell.blockDir % sourceObj.
_tiles.Length];
3190 param.tile = sourceObj.
_tiles[this.cell.objDir % sourceObj.
_tiles.Length];
3194 param.tile += ((param.tile > 0f) ? 1 : (-1)) * 3000000;
3198 param.y += sourceObj.
pref.
y;
3199 param.z += sourceObj.
pref.
z;
3258 param.matColor = 104025f;
3282 Vector3 zero = Vector3.zero;
3301 zero.x += rampFix.x;
3302 zero.y += rampFix.y;
3303 zero.z += rampFix.z;
3311 zero.x += pref.x * (float)((!tg.
flipX) ? 1 : (-1));
3344 float num4 = (tileType.UseMountHeight ? 0f : ((pref2.height == 0f) ? 0.1f : pref2.
height));
3352 zero.x += rampFix2.x;
3353 zero.y += rampFix2.y;
3354 zero.z += rampFix2.z;
3363 zero.x += pref2.stackX * (float)((!thing.
flipX) ? 1 : (-1));
3368 num4 += altitudeFix.y * (float)thing.
altitude;
3375 zero.z += renderSetting.thingZ + num + (float)i * -0.01f +
zSetting.mod1 * zero.y;
3395 zero.z += (float)(
detail?.things.Count ?? 0) * -0.01f;
3422 int num2 = (int)(num * 50f) * 262144;
3444 num = lot.z - roofStyle.
h;
3445 num2 = lot.x - roofStyle.
w;
3446 num3 = lot.mz + 1 + roofStyle.
h;
3447 num4 = lot.mx + 1 + roofStyle.
w;
3459 num = lot.x - roofStyle.
w;
3460 num2 = lot.z - roofStyle.
h;
3461 num3 = lot.mx + 1 + roofStyle.
w;
3462 num4 = lot.mz + 1 + roofStyle.
h;
3475 num5 = ((lot.height > 1) ? 1 : 0);
3486 int num6 = num4 + (reverse ? roofStyle.w : roofStyle.
h) * 2 - num2;
3492 num7 = EMono.sources.blocks.rows.Count - 1;
3496 num8 = EMono.sources.floors.rows.Count - 1;
3501 num9 = EMono.sources.blocks.rows.Count - 1;
3504 int num10 = num6 / 2 - roofStyle.
flatW;
3505 int num11 = num6 / 2 + roofStyle.flatW + ((num6 % 2 != 0) ? 1 : 0);
3508 int num13 = ((num5 != 0) ? (-1) : 0);
3510 Vector3 vector = (lot.fullblock ? roofStyle.posFixBlock : roofStyle.
posFix);
3511 switch (roofStyle.
type)
3514 flag = num6 % 2 == 1 && roofStyle.flatW == 0;
3518 num10 = roofStyle.
flatW;
3519 num11 = num6 - roofStyle.
flatW;
3537 for (
cz = num2;
cz < num4;
cz++)
3539 for (
cx = num;
cx < num3;
cx++)
3567 int num17 = num16 - num15;
3580 num14 = ((cell.Left.room !=
null && cell.Left.room.lot == lot) ? ((
cell.
Right.
room !=
null &&
cell.
Right.
room.
lot == lot) ? 1 : ((cell.HasFullBlock && cell.Right.HasFullBlock && cell.Right.room !=
null) ? 1 : 2)) : (
cell.
Left.
HasFullBlock ? 1 : 0));
3600 num14 = ((cell.Front.room !=
null && cell.Front.room.lot == lot) ? ((
cell.
Back.
room !=
null &&
cell.
Back.
room.
lot == lot) ? 1 : (cell.Back.HasFullBlock ? 1 : 2)) : ((cell.HasFullBlock && cell.Front.HasFullBlock && cell.Front.room !=
null) ? 1 : 0));
3621 float num18 = (float)num17 *
screen.
tileAlign.y + (
float)lot.mh * _heightMod.y + lot.realHeight + roofFix.y + vector.y;
3628 param.x = (float)(
cx +
cz) * screen.tileAlign.x + roofFix.x + (float)num13 *
roofFix2.x + vector.x * (
float)(reverse ? 1 : (-1));
3629 param.y = num18 + (float)num13 *
roofFix2.y;
3632 param.snow = idRoofTile == 0 && flag3;
3633 param.shadowFix = 0f;
3655 if (idRoofTile != 0)
3658 int num20 = (reverse ? 1 : 0) + ((!flag) ? 2 : 0);
3673 param.matColor = 104025f;
3676 param.z += roofStyle.
snowZ;
3688 param.matColor = 104025f;
3690 param.x += roofStyle.
snowFix.x;
3691 param.y += roofStyle.
snowFix.y;
3692 param.z += roofStyle.snowZ + roofStyle.
snowFix.z;
3698 if (idRoofTile != 0)
3700 int num21 = ((!reverse) ? ((num14 != 0) ? 2 : 0) : ((num14 != 0) ? 1 : 3));
3703 param.shadowFix = num21 + 1;
3710 param.matColor = 104025f;
3711 param.z += roofStyle.
snowZ;
3717 param.tile += (lot.altRoof ? 8 : 0);
3720 param.shadowFix = 0f;
3745 for (
int i = 0; i < num13; i++)
3747 param.x = (float)(
cx +
cz) * screen.tileAlign.x + roofFix.x + (float)i *
roofFix2.x + vector.x * (
float)(reverse ? 1 : (-1));
3748 param.y = num18 + (float)i *
roofFix2.y;
3774 num13 += num14
switch
3790 return p * 262144 + (int)(matColor.r * 50f) * 4096 + (int)(matColor.g * 50f) * 64 + (int)(matColor.b * 50f);
3796 if (
room ==
null && dirWall != -1)
3798 if (dirWall == 0 && _cell.
Front.
room !=
null)
3801 _cell = _cell.
Front;
3806 _cell = _cell.
Right;
3814 float num2 = 1000f +
param.
x *
screen.
tileWeight.x + (
float)lot.mh * _heightMod.z + lot.realHeight * roofFix3.z + roofFix.z + roofStyle.
posFix.z;
3820 _param.x = (float)(_cx + _cz) * screen.tileAlign.x + roofFix.x + (float)h *
roofFix2.x;
3824 if (!ignoreAltitudeY ||
room !=
null)
static AM_Inspect Inspect
virtual bool IsRoofEditMode(Card c=null)
static AM_ViewMap ViewMap
virtual BaseTileMap.CardIconMode cardIconMode
virtual bool ShowMaskedThings
static AM_FlagCell FlagCell
virtual byte GetTile(int index)
List< Action > actionsLateUpdate
BaseTileSelector tileSelector
virtual void RefreshWeather()
SourceDeco.Row sourceDeco
SourceMaterial.Row matDeco
const int BlocklightToken
int GetRoofLight(Lot lot)
RenderData rendererInnerBlock
SourceFloor.Row sourceBridge
InnerMode defaultInnerMode
ScreenHighlight screenHighlight
SourceMaterial.Row matBridge
RenderData rendererFogRoomSolid
RenderData rendererWaterBlock
Vector3 waterEdgeFixShoreSand
int GetApproximateBlocklight(Cell cell)
Vector3 waterEdgeFixShore
static int GetColorInt(ref Color matColor, int p)
SceneLightProfile lightSetting
void OnActivate(BaseGameScreen _screen)
MeshPass passAutoTileWater
new BaseGameScreen screen
WallClipMode wallClipMode
float floorShadowStrength
RenderData rendererFloorMarker
GameSetting.RenderSetting renderSetting
Vector3 ugFixBridgeBottom
SourceMaterial.Row matBlock
RenderDataEffect rendererEffect
SourceBlock.Row _sourceBlock
RenderData renderFootmark
Vector3[] waterEdgeBlockFix
RenderData rendererBlockMarker
Vector3[] ambientShadowFix
RenderData rendererFogRoomBlockSolid
SourceMaterial.Row matFloor
RenderData rendererWallDeco
SourceBlock.Row sourceBlock
Vector3 waterEdgeBridgeFix
RenderData rendererFogRoomWallSolid
RenderData rendererFogFloorSolid
void SetRoofHeight(MeshPassParam _param, Cell _cell, int _cx, int _cz, int h=0, int altitude=0, int dirWall=-1, bool ignoreAltitudeY=false)
static bool forceShowHang
RenderDataObjDummy rendererObjDummy
BaseTileSelector selector
Vector3 heightModRoofBlock
NoiseLayer layerGroundLights
RenderData rendererFogBlockSolid
GameSetting.RenderSetting.ZSetting zSetting
SourceFloor.Row sourceFloor
Vector3 GetThingPosition(Card tg, Point p)
override void Draw(RenderParam p)
virtual void SetFirst(bool first, Vector3 pos)
TraitShackle GetRestrainer()
virtual CardRow sourceCard
SourceCategory.Row category
TaskDesignation designation
SourceCellEffect.Row source
static List< SourceBlock.Row > blockList
SourceBlock.Row sourceBlock
SourceMaterial.Row matBlock
SourceFloor.Row sourceFloor
SourceMaterial.Row matDeco
SourceMaterial.Row matObj
SourceMaterial.Row matBridge
SourceFloor.Row sourceBridge
SourceMaterial.Row matFloor
SourceCellEffect.Row sourceEffect
static List< SourceMaterial.Row > matList
SourceDeco.Row sourceDeco
override bool IsAliveInCurrentZone
override bool IsDeadOrSleeping
override CardRow sourceCard
override void SetRenderParam(RenderParam p)
ConBaseTransmuteMimic mimicry
static GameSetting setting
static ColorProfile Colors
static SoundManager Sound
static SourceManager sources
static SourceFloor.Row sourceSnow
static SourceFloor.Row sourceSnow2
static SourceFloor.Row sourceIce
virtual void OnRenderTileMap(RenderParam p, bool drawShadow=true)
static Card alwaysVisible
static SourceMaterial.Row sourceSnow
static SourceMaterial.Row sourceGold
static HashSet< int > sunMap
void Add(Point point, float tile=0f, float color=0f)
void AddShadow(MeshPassParam p, ref Vector3 fix)
List< MeshBatch > batches
CinemaConfig cinemaConfig
ref Vector3 Position(int height)
Point Set(int _x, int _z)
Point Clamp(bool useBounds=false)
static void InitBytes(int a)
new void Draw(RenderParam p, int tile=0)
void Draw(RenderParam p, int tile)
void DrawRepeat(RenderParam p, int count, float size, bool skipFirst=false)
int ConvertTile(int tile)
void SetRenderParam(RenderParam p, SourceMaterial.Row mat, int dir)
SourceMaterial.Row DefaultMaterial
AnimationCurve baseBrightnessCurve
float dynamicBrightnessSpeed
AnimationCurve shadowCurveFloor
AnimationCurve dynamicBrightnessCurve2
float dynamicBrightnessLightBonus
AnimationCurve lightLimit
AnimationCurve fogBrightness
AnimationCurve dynamicBrightnessCurve
AnimationCurve shadowCurve
AnimationCurve nightRatioCurve
AnimationCurve lightModCurve
SceneGlobalProfile global
List< ISyncScreen > syncList
GameSetting.RenderSetting.MapBGSetting bg
void DrawWall(Point point, int color, bool useMarkerPass=false, float offsetZ=0f)
static ShadowData Instance
virtual bool IsSnowCovered
virtual void Draw(int x, int z, RenderParam p)
override void SetRenderParam(RenderParam p)
override CardRow sourceCard
override float FloorHeight
virtual bool IsUseBlockDir
virtual void GetMountHeight(ref Vector3 v, Point p, int d, Card target=null)
static TileTypeIllumination Illumination
static TileTypeWaterShallow FloorWaterShallow
static TileTypeObjFloat ObjFloat
virtual bool AlwaysShowShadow
virtual bool ForceRpeatBlock
virtual bool IsSkipLowBlock
virtual bool UseMountHeight
virtual BlockRenderMode blockRenderMode
Vector3 GetRampFix(int dir, SourcePref pref=null)
virtual Vector3 GetRestrainPos
virtual bool IgnoreLastStackHeight
virtual bool AlwaysHideOnLowWall
virtual TileType tileType
virtual bool IsChangeFloorHeight
virtual bool AlwaysLowblock
virtual bool IsUnderwater