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];
526 for (
int i = 0; i < 256; i++)
568 subtleHighlightArea = EMono.scene.actionMode.AreaHihlight != 0 && (EMono.scene.actionMode.AreaHihlight == AreaHighlightMode.Build || EMono.scene.actionMode.AreaHihlight !=
AreaHighlightMode.Edit);
586 fogBounds = (EMono._map.config.forceHideOutbounds && (!EMono.debug.godBuild || !
buildMode)) || (EMono.core.config.game.dontRenderOutsideMap && !
buildMode);
614 Fov.nonGradientMod = profile.
global.fovModNonGradient;
622 for (
int i = 0; i <
floatYs.Length; i++)
705 noRoofMode = EMono.game.config.noRoof || screen.focusOption !=
null;
726 currentRoom.data.visited =
true;
730 room.data.visited =
true;
764 Vector3Int vector3Int =
screen.
grid.WorldToCell(mposWorld);
766 mz = vector3Int.x - 1;
771 TestPoint.x =
mx + num3;
772 TestPoint.z =
mz - num3;
776 Physics2D.SyncTransforms();
777 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero,
rays) > 0)
783 TestPoint.x =
mx + num3 - 1;
784 TestPoint.z =
mz - num3;
788 Physics2D.SyncTransforms();
789 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero,
rays) > 0)
795 TestPoint.x =
mx + num3;
796 TestPoint.z =
mz - num3 + 1;
800 Physics2D.SyncTransforms();
801 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero,
rays) > 0)
809 bool flag2 = EMono._zone.UseFog && !
EMono.
scene.
bg.wall;
814 cx = screen.scrollX - screen.scrollY +
x - (
z + 1) / 2;
815 cz = screen.scrollY + screen.scrollX +
x +
z / 2;
820 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)
z *
edgeBlockFix.z;
875 int valueOrDefault = (this.room?.
lot?.
idBGM).GetValueOrDefault();
876 if (valueOrDefault == 0)
882 BGMData data =
EMono.
Sound.plLot.list[0].data;
883 if ((
object)data !=
null && data.id == valueOrDefault)
895 SoundManager.bgmVolumeMod = ((!LayerDrama.maxBGMVolume && !EMono._map.IsIndoor && this.room !=
null && !this.room.data.atrium && this.room.
HasRoof) ? (-0.6f) : 0f);
928 this.room = this.cell.
room;
948 floorDir = this.cell.sourceObj.snowTile - 1;
968 light = (this.cell.pcSync ? this.cell.light : (this.cell.light / 3 * 2));
1006 liquidLv = (param.liquidLv = ((!flag && !
isUnderwater) ? (((this.cell.
liquidLv +
this.cell._bridge != 0) ?
this.cell.sourceBridge.tileType.LiquidLV :
sourceFloor.tileType.LiquidLV) * 10) : 0));
1016 if (effect !=
null && effect.
IsFire)
1026 if (this.room !=
null)
1028 this.room.lot.sync =
true;
1039 if ((this.room !=
null && this.room.
lot ==
currentLot) || flag2)
1058 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));
1076 bool num = this.room !=
null && sourceBlock.tileType.CastShadowSelf && !this.cell.
hasDoor;
1077 bool flag3 = this.room !=
null &&
showRoof && this.room.lot.idRoofStyle != 0 && !this.room.data.atrium && !
sourceBlock.tileType.Invisible;
1078 if (flag3 && this.cell.
hasDoor &&
this.cell.IsLotEdge)
1082 if (num || !
isSeen || flag3)
1096 param.y += 0.01f *
floatY;
1104 param.x += anime2.
v.x;
1105 param.y += anime2.
v.y;
1106 param.z += anime2.
v.z;
1123 param.dir = this.cell._roofBlockDir % 4;
1133 param.tile = row.
_tiles[param.dir % row.
_tiles.Length];
1141 if (dir == 0 || dir == 2)
1158 if (dir == 1 || dir == 2)
1181 param.halfBlockColor = ((_sourceBlock.sourceAutoFloor.colorMod == 0) ? 104025 :
GetColorInt(ref row2.
matColor,
_sourceBlock.sourceAutoFloor.colorMod));
1187 param.tile = row.
_tiles[param.dir % row.
_tiles.Length];
1192 int shadow2 = shadowPref.
shadow;
1197 param.tile = row.
_tiles[param.dir % row.
_tiles.Length];
1217 param.matColor = 104025f;
1220 param.y = (float)(
cz -
cx) * screen.tileAlign.y + (float)(
int)this.cell.bridgeHeight * _heightMod.y +
ugFixBridgeBottom.x;
1221 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)(
int)this.cell.bridgeHeight *
_heightMod.z;
1243 float num2 = (float)(
int)this.cell.TopHeight *
_heightMod.y;
1248 param.z += ugFix.z +
slopeFixZ * (float)i;
1290 if (this.cell.
effect !=
null)
1298 param.mat = defaultMaterial;
1306 if (sourceEffect2.
anime.Length != 0)
1308 if (sourceEffect2.
anime.Length > 2)
1310 float num3 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.
anime[1] % (
float)sourceEffect2.
anime[2];
1311 if (!(num3 >= (
float)sourceEffect2.
anime[0]))
1318 float num4 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.
anime[1] % (
float)sourceEffect2.
anime[0];
1333 if (this.cell.
critter !=
null)
1336 int snowTile = critter.
tile;
1366 param.x += anime4.
v.x;
1367 param.y += anime4.
v.y;
1368 param.z += anime4.
v.z;
1371 if (this.cell.
obj != 0 && !
this.cell.sourceObj.renderData.SkipOnMap)
1377 param.mat = this.cell.
matObj;
1383 param.y += 0.01f *
floatY;
1386 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
1433 param.tile = sourceObj.
_tiles[this.cell.blockDir % sourceObj.
_tiles.Length];
1437 param.tile = sourceObj.
_tiles[this.cell.objDir % sourceObj.
_tiles.Length];
1441 param.tile += ((param.tile > 0f) ? 1 : (-1)) * 3000000;
1445 param.y += sourceObj.
pref.
y;
1446 param.z += sourceObj.
pref.
z;
1505 param.matColor = 104025f;
1511 if (!
showRoof || !
roof || this.cell.
room ==
null ||
this.cell.Front.room ==
null ||
this.cell.Right.room ==
null)
1526 freePos.x = (freePos.y = (freePos.z = 0f));
1530 param.x += rampFix.x;
1531 param.y += rampFix.y;
1532 param.z += rampFix.z;
1533 freePos.x += rampFix.x;
1534 freePos.y += rampFix.y;
1535 freePos.z += rampFix.z;
1537 param.y += (flag ? 0f : ((this.cell._bridge != 0) ? this.cell.
sourceBridge.tileType.FloorHeight :
sourceFloor.tileType.FloorHeight));
1545 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
1575 if (!isInstalled && t.
category.tileDummy != 0)
1579 float num14 = ((tileType.UseMountHeight && isInstalled) ? 0f : ((pref.
height < 0f) ? 0f : ((pref.height == 0f) ? 0.1f : pref.
height)));
1585 shadow = thingPos.y < 0.16f && num12 < 0.16f;
1595 _actorPos.z = param.z + num13;
1596 if (this.room !=
null)
1606 _actorPos.x =
orgX + num10;
1611 if (thing?.
id != t.
id)
1621 _actorPos.z -= 0.2f;
1624 _actorPos.y -= num7;
1626 _actorPos.z += renderSetting.thingZ + (float)j * -0.01f +
zSetting.mod1 *
thingPos.y;
1636 freePos.x += rampFix2.x;
1637 freePos.y += rampFix2.y;
1638 freePos.z += rampFix2.z;
1641 num12 += rampFix2.y;
1643 liquidLv -= (int)(rampFix2.y * 150f);
1658 _actorPos.x += pref.x * (float)((!t.
flipX) ? 1 : (-1));
1659 _actorPos.z += pref.
z;
1660 thingPos.z += pref.
z;
1668 thingPos.y += num14;
1702 _actorPos.x += t.
fx;
1703 _actorPos.y += t.
fy;
1711 _actorPos.x += pref.x * (float)((!t.
flipX) ? 1 : (-1));
1712 _actorPos.z += pref.
z;
1715 thingPos.z += pref.
z;
1725 thingPos.y += num14;
1726 _actorPos.x += pref.x * (float)((!t.
flipX) ? 1 : (-1));
1727 _actorPos.z += pref.
z;
1728 thingPos.z += pref.
z;
1733 float num15 = ((this.cell._bridge != 0) ?
sourceBridge.tileType.FloorHeight :
sourceFloor.tileType.FloorHeight);
1739 _actorPos.y += 0.01f *
floatY - num15;
1742 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
1789 _actorPos.x += t.
fx;
1800 _actorPos.z += -0.5f;
1841 param.tile += ((param.tile < 0f) ? (-64) : 64);
1850 _actorPos.y = EMono.pc.renderer.position.y - pref.
height;
1851 _actorPos.z = EMono.pc.renderer.position.z + 0.02f;
1862 num10 += pref.stackX * (float)((!t.
flipX) ? 1 : (-1));
1880 param.shadowFix = 0f - num12;
1881 param.color += 1310720f;
1898 if (restrainer !=
null)
1901 if (getRestrainPos !=
default(Vector3))
1905 float num17 = getRestrainPos.y + defCharaHeight - ((chara.Pref.height == 0f) ? defCharaHeight : chara.
source.pref.height);
1906 _actorPos.x = position.x + getRestrainPos.x * (float)((restrainer.
owner.
dir % 2 == 0) ? 1 : (-1));
1907 _actorPos.y = position.y + num17;
1908 _actorPos.z = position.z + getRestrainPos.z;
1913 param.shadowFix = 0f;
1922 float num18 = chara.renderer.data.size.y * 0.3f;
1927 float num19 = thingPos.y + num18;
1928 float num20 = (float)k * -0.01f;
1935 _actorPos.z += renderSetting.laydownZ + num20;
1936 param.liquidLv = ((thingPos.y == 0f &&
liquidLv > 0) ? 90 : 0);
1937 thingPos.y += num18 * 0.8f;
1947 float num21 = ((this.cell._bridge != 0) ?
sourceBridge.tileType.FloorHeight :
sourceFloor.tileType.FloorHeight);
1948 float num22 =
floatYs[chara.uid % 10] + 10f + (float)(chara.
uid % 30);
1949 orgY += 0.01f * num22 - num21;
1950 _actorPos.y += 0.01f * num22 - num21;
1951 param.shadowFix -= 0.01f * num22 - num21;
1960 float num23 = ((this.cell._bridge != 0) ?
sourceBridge.tileType.FloorHeight :
sourceFloor.tileType.FloorHeight);
1962 _actorPos.y += 0.01f *
floatY - num23;
1963 int num24 = TileType.FloorWaterShallow.LiquidLV * 10;
1964 num24 -= (int)(
floatY * 0.5f);
1965 param.liquidLv = num24;
1969 param.liquidLv -= 20;
2023 param.tile = defBlock.
_tiles[this.cell.blockDir % defBlock.
_tiles.Length];
2024 if (defBlock.
id != 1)
2030 param.matColor = 104025f;
2036 param.z += ugFix.z +
slopeFixZ * (float)l;
2050 if (!isWater && (this.cell.
Front.
sourceFloor.tileType.IsWater ||
this.cell.Right.sourceFloor.tileType.IsWater) && this.cell.sourceBlock.tileType.RenderWaterBlock && !flag)
2063 num27 = row3.
_tiles[this.cell.blockDir % row3.
_tiles.Length];
2065 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)
2067 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;
2069 param.
tile = num27 + ((!
this.cell.Front.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
2072 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)
2074 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;
2076 param.
tile = num27 + ((!
this.cell.Right.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
2084 param.matColor = 104025f;
2108 param.tile = defBlock2.
_tiles[this.cell.blockDir % defBlock2.
_tiles.Length];
2109 if (defBlock2.
id != 1)
2115 param.matColor = 104025f;
2120 param.z += ugFix.z +
slopeFixZ * (float)m;
2137 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);
2146 if (isWater && flag)
2148 param.y -= 0.01f *
floatY;
2177 if (!this.cell.
Right.
IsSnowTile &&
this.cell.Right.topHeight ==
this.cell.topHeight)
2181 if (!this.cell.
Front.
IsSnowTile &&
this.cell.Front.topHeight ==
this.cell.topHeight)
2187 param.tile = 448 + num28 + 12;
2199 param.tile = 448 + this.cell.shadow + 8 + (this.cell.HasFence ? 4 : 0);
2223 if (
back.sourceBlock.transition[0] != -1 &&
back.isSeen && !
back.hasDoor)
2240 if (
back.sourceBlock.transition[0] != -1 &&
back.isSeen && !
back.hasDoor)
2258 if (this.cell.
autotile != 0 &&
sourceFloor.autotile != 0 && (!
hasBridge ||
this.cell.bridgeHeight -
this.cell.height > 3) && !
this.cell.skipRender && num28 == 0)
2278 int num30 = this.cell.shore / num29;
2279 int num31 = this.cell.shore % num29;
2281 if (this.cell.
shore != 0)
2283 Cell cell = ((((uint)num30 & (
true ? 1u : 0u)) != 0) ? this.cell.Back : ((((uint)num30 & 2u) != 0) ? this.cell.
Right : ((((uint)num30 & 4u) != 0) ? this.cell.Front : this.cell.
Left)));
2286 cell = ((((uint)num30 & 8u) != 0) ? this.cell.
Left : ((((uint)num30 & 4u) != 0) ? this.cell.Front : ((((uint)num30 & 2u) != 0) ? this.cell.
Right :
this.cell.
Back)));
2312 param.tile = (24 + num31 / 2) * 32 + num31 % 2 * 16 + num30;
2316 if (this.cell.
Back.
isShoreSand && ((uint)(
this.cell.Back.shore / num29) & 8u) != 0 && this.cell.Left.isShoreSand && ((uint)(this.cell.
Left.
shore / num29) & (
true ? 1u : 0u)) != 0)
2323 if (this.cell.
Back.
isShoreSand && ((uint)(
this.cell.Back.shore / num29) & 2u) != 0 &&
this.cell.Right.isShoreSand && ((uint)(
this.cell.Right.shore / num29) & (
true ? 1u : 0u)) != 0)
2330 if (this.cell.
Front.
isShoreSand && ((uint)(
this.cell.Front.shore / num29) & 2u) != 0 &&
this.cell.Right.isShoreSand && ((uint)(
this.cell.Right.shore / num29) & 4u) != 0)
2337 if (this.cell.
Front.
isShoreSand && ((uint)(
this.cell.Front.shore / num29) & 8u) != 0 &&
this.cell.Left.isShoreSand && ((uint)(
this.cell.Left.shore / num29) & 4u) != 0)
2344 if (this.cell.
_bridge != 0 &&
this.cell.isBridgeEdge &&
this.cell.bridgePillar !=
byte.MaxValue)
2363 if (((uint)num30 & (
true ? 1u : 0u)) != 0)
2365 if (((uint)num30 & 8u) != 0)
2367 if ((num30 & 2) == 0 && (num30 & 4) == 0)
2373 if (((uint)num30 & 2u) != 0)
2375 if ((num30 & 8) == 0 && (num30 & 4) == 0)
2382 if (((uint)num30 & 4u) != 0)
2384 if (((uint)num30 & 8u) != 0)
2386 if ((num30 & 2) == 0 && (num30 & 1) == 0)
2392 if (((uint)num30 & 2u) != 0)
2394 if ((num30 & 8) == 0 && (num30 & 1) == 0)
2403 if (!this.cell.
Front.
sourceFloor.tileType.IsWater && !
this.cell.Front.isDeck)
2407 if (!this.cell.
Right.
sourceFloor.tileType.IsWater && !
this.cell.Right.isDeck)
2415 if (!this.cell.
Back.
sourceFloor.tileType.IsWater && !
this.cell.Back.isDeck)
2421 if (((uint)(this.cell.
shore / num29) & (
true ? 1u : 0u)) != 0)
2453 if (!this.cell.
Left.
sourceFloor.tileType.IsWater && !
this.cell.Left.isDeck)
2459 if (((uint)(this.cell.
shore / num29) & 8u) != 0)
2494 param.y += 0.01f *
floatY;
2513 param.y = (float)(
cz -
cx) * screen.tileAlign.y + (float)(
int)this.cell.bridgeHeight *
_heightMod.y;
2514 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)(
int)this.cell.bridgeHeight *
_heightMod.z;
2517 param.y += 0.01f *
floatY;
2542 if (this.cell.
shadow != 0)
2546 param.tile = 448 + this.cell.shadow + 8 + (this.cell.HasFence ? 4 : 0);
2567 if (this.cell.
isBridgeEdge &&
this.cell.bridgeHeight -
this.cell.height >= 3 &&
this.cell.bridgePillar !=
byte.MaxValue && !
noSlopMode)
2584 param.tile = row4.
_tiles[0] + ((num33 == 2) ? 32 : 0);
2591 param.tile = row4.
_tiles[0] + 32;
2596 for (
int n = 0; n < num33; n++)
2616 if (this.cell.
_block != 0 && !
this.cell.hasDoor)
2646 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.
FrontRight.
room;
2659 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)))
2666 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.
FrontRight.
room;
2690 if (this.room !=
null)
2703 int num34 = ((this.room.data.maxHeight == 0) ? 2 : this.room.
data.
maxHeight);
2704 roomHeight = EMono.setting.render.roomHeightMod * (float)((this.room.
lot.
height < num34) ? this.room.lot.height : num34) + 0.01f * (
float)this.room.
lot.
heightFix;
2723 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)
2728 else if (this.cell.
Back.
room !=
null &&
this.cell.Back.room.
lot == (
this.cell.Front.room ??
this.cell.Right.room)?.lot)
2739 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.
FrontRight.
room;
2775 param.color = (int)(50f *
blockLight) * 262144;
2776 param.matColor = 104025f;
2818 if (this.cell.
Things.Count > 0)
2835 Room room2 = this.cell.Front.room ?? this.cell.
room;
2836 if (room2 ==
null && this.cell.
Right.
room !=
null)
2840 if (!invisible && room2 !=
null)
2842 if (room2.
lot.
idDeco != 0 && !
this.cell.hasDoor)
2864 room2 = this.cell.Right.room ?? this.cell.
room;
2865 if (room2 ==
null && this.cell.
Front.
room !=
null)
2869 if (!invisible && room2 !=
null)
2871 if (room2.
lot.
idDeco != 0 && !
this.cell.hasDoor)
2905 bool flag10 = blockDir == 1 ||
_lowblock || flag9;
2906 bool flag11 = blockDir == 0 ||
_lowblock || flag9;
2913 if (!this.cell.
IsRoomEdge || (
this.cell.Front.room !=
this.cell.room &&
this.cell.FrontRight.room !=
this.cell.room))
2927 if (!this.cell.
IsRoomEdge || (
this.cell.Right.room !=
this.cell.room &&
this.cell.FrontRight.room !=
this.cell.room))
2938 if (blockDir == 0 || blockDir == 2)
2941 Room room3 = this.cell.Front.room ?? this.cell.
room;
2942 if (room3 !=
null && this.tileType.
IsWall)
2944 if (room3.
lot.
idDeco != 0 && !
this.cell.hasDoor)
2964 if (blockDir == 2 &&
left.sourceBlock.tileType.IsWallOrFence && !
this.cell.crossWall)
2967 param.mat =
left.matBlock;
3002 param.tile =
_sourceBlock._tiles[0] + ((flag10 && flag11 && this.tileType.UseLowBlock && !flag9) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
3012 if (!flag10 && !
showRoof && this.cell.
Left.
HasWallOrFence &&
this.cell.Left.blockDir != 0 && !
this.cell.Left.isToggleWallPillar)
3015 param.tile =
_sourceBlock._tiles[0] + ((flag10 && this.tileType.UseLowBlock && !flag9) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
3032 param.tile =
_sourceBlock._tiles[0] + ((flag10 && this.tileType.UseLowBlock && !flag9) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
3047 if (blockDir == 1 || blockDir == 2)
3052 Room room4 = this.cell.Right.room ?? this.cell.
room;
3053 if (room4 !=
null && this.tileType.
IsWall)
3055 if (room4.
lot.
idDeco != 0 && !
this.cell.hasDoor)
3074 if (blockDir == 2 && this.cell.
room ==
null &&
this.cell.Right.room !=
null)
3088 int num38 = ((room5.data.maxHeight == 0) ? 2 : room5.
data.
maxHeight);
3089 roomHeight = EMono.setting.render.roomHeightMod * (float)((room5.
lot.
height < num38) ? room5.lot.height : num38) + 0.01f * (
float)room5.
lot.
heightFix;
3093 if (blockDir == 2 && back2.
sourceBlock.tileType.IsWallOrFence && !
this.cell.crossWall)
3132 param.tile =
_sourceBlock._tiles[0] + ((flag11 && this.tileType.UseLowBlock && !flag9) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
3154 param.halfBlockColor = ((_sourceBlock.sourceAutoFloor.colorMod == 0) ? 104025 :
GetColorInt(ref
matBlock.matColor,
_sourceBlock.sourceAutoFloor.colorMod));
3162 int num39 = this.cell.objDir + ((this.cell.objDir >= 7) ? this.cell.
objDir : 0) + 1;
3173 int shadow4 = shadowPref2.
shadow;
3194 if (this.cell.
room !=
null || !
this.cell.IsRoomEdge || !
showRoof)
3198 if (this.cell.
_block == 0 || !
this.cell.sourceBlock.tileType.RepeatBlock)
3201 if (obj ==
null || !obj.
HasRoof)
3228 Vector3 zero = Vector3.zero;
3247 zero.x += rampFix.x;
3248 zero.y += rampFix.y;
3249 zero.z += rampFix.z;
3257 zero.x += pref.x * (float)((!tg.
flipX) ? 1 : (-1));
3290 float num4 = (tileType.UseMountHeight ? 0f : ((pref2.height == 0f) ? 0.1f : pref2.
height));
3298 zero.x += rampFix2.x;
3299 zero.y += rampFix2.y;
3300 zero.z += rampFix2.z;
3309 zero.x += pref2.stackX * (float)((!thing.
flipX) ? 1 : (-1));
3314 num4 += altitudeFix.y * (float)thing.
altitude;
3321 zero.z += renderSetting.thingZ + num + (float)i * -0.01f +
zSetting.mod1 * zero.y;
3341 zero.z += (float)(
detail?.things.Count ?? 0) * -0.01f;
3368 int num2 = (int)(num * 50f) * 262144;
3390 num = lot.z - roofStyle.
h;
3391 num2 = lot.x - roofStyle.
w;
3392 num3 = lot.mz + 1 + roofStyle.
h;
3393 num4 = lot.mx + 1 + roofStyle.
w;
3405 num = lot.x - roofStyle.
w;
3406 num2 = lot.z - roofStyle.
h;
3407 num3 = lot.mx + 1 + roofStyle.
w;
3408 num4 = lot.mz + 1 + roofStyle.
h;
3421 num5 = ((lot.height > 1) ? 1 : 0);
3432 int num6 = num4 + (reverse ? roofStyle.w : roofStyle.
h) * 2 - num2;
3438 num7 = EMono.sources.blocks.rows.Count - 1;
3442 num8 = EMono.sources.floors.rows.Count - 1;
3447 num9 = EMono.sources.blocks.rows.Count - 1;
3450 int num10 = num6 / 2 - roofStyle.
flatW;
3451 int num11 = num6 / 2 + roofStyle.flatW + ((num6 % 2 != 0) ? 1 : 0);
3454 int num13 = ((num5 != 0) ? (-1) : 0);
3456 Vector3 vector = (lot.fullblock ? roofStyle.posFixBlock : roofStyle.
posFix);
3457 switch (roofStyle.
type)
3460 flag = num6 % 2 == 1 && roofStyle.flatW == 0;
3464 num10 = roofStyle.
flatW;
3465 num11 = num6 - roofStyle.
flatW;
3483 for (
cz = num2;
cz < num4;
cz++)
3485 for (
cx = num;
cx < num3;
cx++)
3513 int num17 = num16 - num15;
3526 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));
3546 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));
3567 float num18 = (float)num17 *
screen.
tileAlign.y + (
float)lot.mh * _heightMod.y + lot.realHeight + roofFix.y + vector.y;
3574 param.x = (float)(
cx +
cz) * screen.tileAlign.x + roofFix.x + (float)num13 *
roofFix2.x + vector.x * (
float)(reverse ? 1 : (-1));
3575 param.y = num18 + (float)num13 *
roofFix2.y;
3578 param.snow = idRoofTile == 0 && flag3;
3579 param.shadowFix = 0f;
3601 if (idRoofTile != 0)
3604 int num20 = (reverse ? 1 : 0) + ((!flag) ? 2 : 0);
3619 param.matColor = 104025f;
3622 param.z += roofStyle.
snowZ;
3634 param.matColor = 104025f;
3636 param.x += roofStyle.
snowFix.x;
3637 param.y += roofStyle.
snowFix.y;
3638 param.z += roofStyle.snowZ + roofStyle.
snowFix.z;
3644 if (idRoofTile != 0)
3646 int num21 = ((!reverse) ? ((num14 != 0) ? 2 : 0) : ((num14 != 0) ? 1 : 3));
3649 param.shadowFix = num21 + 1;
3656 param.matColor = 104025f;
3657 param.z += roofStyle.
snowZ;
3663 param.tile += (lot.altRoof ? 8 : 0);
3666 param.shadowFix = 0f;
3691 for (
int i = 0; i < num13; i++)
3693 param.x = (float)(
cx +
cz) * screen.tileAlign.x + roofFix.x + (float)i *
roofFix2.x + vector.x * (
float)(reverse ? 1 : (-1));
3694 param.y = num18 + (float)i *
roofFix2.y;
3720 num13 += num14
switch
3736 return p * 262144 + (int)(matColor.r * 50f) * 4096 + (int)(matColor.g * 50f) * 64 + (int)(matColor.b * 50f);
3742 if (
room ==
null && dirWall != -1)
3744 if (dirWall == 0 && _cell.
Front.
room !=
null)
3747 _cell = _cell.
Front;
3752 _cell = _cell.
Right;
3760 float num2 = 1000f +
param.
x *
screen.
tileWeight.x + (
float)lot.mh * _heightMod.z + lot.realHeight * roofFix3.z + roofFix.z + roofStyle.
posFix.z;
3766 _param.x = (float)(_cx + _cz) * screen.tileAlign.x + roofFix.x + (float)h *
roofFix2.x;
3770 if (!ignoreAltitudeY ||
room !=
null)
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
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()
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 matObj
SourceMaterial.Row matBridge
SourceFloor.Row sourceBridge
SourceMaterial.Row matFloor
SourceCellEffect.Row sourceEffect
static List< SourceMaterial.Row > matList
override bool IsAliveInCurrentZone
override bool IsDeadOrSleeping
override CardRow sourceCard
override void SetRenderParam(RenderParam p)
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)
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
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