Elin Decompiled Documentation EA 23.351.2 Nightly
Loading...
Searching...
No Matches
BaseTileMap Class Reference
Inheritance diagram for BaseTileMap:
EMono TileMap TileMapElona

Public Types

enum  WallClipMode { ByRoom , ByLot }
 
enum  InnerMode { None , InnerBlock , Height , BuildMode }
 
enum  CardIconMode {
  None , Inspect , Deconstruct , State ,
  Visibility
}
 
enum  ScreenHighlight { None , SunMap }
 

Public Member Functions

void OnActivate (BaseGameScreen _screen)
 
virtual void Draw ()
 
void RefreshHeight ()
 
virtual void DrawTile ()
 
Vector3 GetThingPosition (Card tg, Point p)
 
int GetApproximateBlocklight (Cell cell)
 
int GetRoofLight (Lot lot)
 
void DrawRoof (Lot lot)
 
void SetRoofHeight (MeshPassParam _param, Cell _cell, int _cx, int _cz, int h=0, int altitude=0, int dirWall=-1, bool ignoreAltitudeY=false)
 

Static Public Member Functions

static int GetColorInt (ref Color matColor, int p)
 
- Static Public Member Functions inherited from EMono
static int rnd (int a)
 

Public Attributes

int count
 
Collider2D mouseCollider
 
Vector3 colliderFix
 
int maxColliderCheck
 
float heightBlockSize
 
float slopeFixZ
 
float heightModDeco
 
float heightLimitDeco
 
Vector3 heightMod
 
Vector3 ugFix
 
Vector3 ugFixBridge
 
Vector3 ugFixBridgeBottom
 
Vector3 ugFixBridgeTop
 
Vector3 heightModRoofBlock
 
float rightWallShade
 
Vector3 roofRampFix
 
Vector3 roofFix
 
Vector3 roofFix2
 
Vector3 roofFix3
 
float roofLightMod
 
float lotLight
 
float lotLight2
 
float roofLightSnow
 
WallClipMode wallClipMode
 
InnerMode defaultInnerMode
 
Vector3 edgeBlockFix
 
Vector3 bridgeFix
 
Vector3 cornerWallFix
 
Vector3 cornerWallFix2
 
Vector3 cornerWallFix3
 
Vector3 altitudeFix
 
Vector3 waterEdgeFix
 
Vector3 waterEdgeBridgeFix
 
Vector3 waterEdgeFixShore
 
Vector3 waterEdgeFixShoreSand
 
Vector3[] ambientShadowFix
 
Vector3[] transitionFix
 
Vector3[] wallHangFix
 
Vector3[] waterEdgeBlockFix
 
int fogTile
 
float floatSpeed
 
float shadowModStrength
 
int maxFloat
 
int[] seaAnimeIndexes
 
NoiseLayer layerGroundLights
 
MeshPass passShadow
 
MeshPass passLiquid
 
MeshPass passGuideBlock
 
MeshPass passGuideFloor
 
MeshPass passArea
 
MeshPass passRamp
 
MeshPass passFloor
 
MeshPass passBlock
 
MeshPass passObjS
 
MeshPass passObjSS
 
MeshPass passObj
 
MeshPass passObjL
 
MeshPass passDecal
 
MeshPass passRoof
 
MeshPass passBlockEx
 
MeshPass passFloorEx
 
MeshPass passFloorWater
 
MeshPass passInner
 
MeshPass passFog
 
MeshPass passFov
 
MeshPass passEdge
 
MeshPass passAutoTile
 
MeshPass passAutoTileWater
 
MeshPass passBlockMarker
 
MeshPass passFloorMarker
 
MeshPass passWaterBlock
 
MeshPass passIcon
 
MeshPass passChara
 
MeshPass passCharaL
 
MeshPass passCharaLW
 
MeshPass passCharaLL
 
MeshPass passShore
 
RenderData renderFootmark
 
RenderData rendererBlockMarker
 
RenderData rendererFloorMarker
 
RenderData rendererInnerBlock
 
RenderData rendererFov
 
RenderData rendererFov2
 
RenderData rendererShore
 
RenderData renderBorder
 
RenderData rendererFogBlockSolid
 
RenderData rendererFogFloorSolid
 
RenderData rendererFogRoomSolid
 
RenderData rendererFogRoomBlockSolid
 
RenderData rendererFogRoomWallSolid
 
RenderData rendererWallDeco
 
RenderData rendererWaterBlock
 
RenderDataObjDummy rendererObjDummy
 
RenderDataEffect rendererEffect
 
Point TestPoint = new Point()
 
int Size
 
int SizeXZ
 
int mx
 
int mz
 
int x
 
int z
 
int cx
 
int cz
 
int activeCount
 
int floatV = 1
 
byte[] groundLights
 
bool lowBlock
 
bool lowObj
 
bool highlightArea
 
bool subtleHighlightArea
 
bool hideRoomFog
 
bool showRoof
 
bool showFullWall
 
bool hideHang
 
bool usingHouseBoard
 
bool noRoofMode
 
bool fogged
 
int[] floatVs = new int[10] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
 
float[] lightLookUp
 
float[] floatYs = new float[10] { 0f, 1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f }
 
float _lightMod
 
float _baseBrightness
 
float lowblockTimer
 
float heightLightMod
 
float _rightWallShade
 
float roofLightLimitMod
 
float floatY
 
float floorShadowStrength
 
Vector3 _heightMod
 
ScreenHighlight screenHighlight
 
new BaseGameScreen screen
 
RoofStyle[] roofStyles
 

Static Public Attributes

static bool forceShowHang
 
const int DefColor = 104025
 
const int BlocklightToken = 262144
 
const int BlocklightMTP = 50
 
- Static Public Attributes inherited from EMono
static Core core
 

Protected Attributes

InnerMode innerMode
 
RaycastHit2D[] rays = new RaycastHit2D[1]
 
CardIconMode iconMode
 
bool isMining
 
bool buildMode
 
bool hasBridge
 
bool _lowblock
 
bool isIndoor
 
Map map
 
MeshPass pass
 
BaseTileSelector selector
 
GameSetting.RenderSetting renderSetting
 
GameSetting.RenderSetting.ZSetting zSetting
 
int liquidLv
 
int index
 
int totalFire
 
int snowColorToken
 
int waterAnimeIndex
 
int lowWallObjAltitude
 
SourceMaterial.Row matBlock
 
SourceMaterial.Row matFloor
 
SourceMaterial.Row matBridge
 
SourceMaterial.Row matDeco
 
float blockLight
 
float floorLight
 
float floorLight2
 
float light
 
float pcMaxLight
 
float orgX
 
float orgY
 
float orgZ
 
float roomHeight
 
float maxHeight
 
float snowLight
 
float waterAnimeTimer
 
float floatTimer
 
float destBrightness
 
float lightLimit
 
float modSublight1
 
float modSublight2
 
float shadowStrength
 
float _shadowStrength
 
float fogBrightness
 
float defaultBlockHeight
 
float snowLimit
 
float snowColor
 
float snowColor2
 
float nightRatio
 
RenderParam param = new RenderParam()
 
MeshBatch batch
 
Vector3 _actorPos
 
Vector3 freePos
 
int tile
 
int floorMatColor
 
int height
 
int currentHeight
 
int pcX
 
int pcZ
 
int floorDir
 
bool roof
 
bool isSeen
 
bool showAllCards
 
bool fogBounds
 
bool snowed
 
bool isSnowCovered
 
bool highlightCells
 
bool cinemaMode
 
bool alwaysLowblock
 
bool showBorder
 
bool isUnderwater
 
bool darkenOuter
 
Vector3 thingPos
 
Vector3 orgPos
 
Cell cell
 
CellDetail detail
 
SourceBlock.Row sourceBlock
 
SourceFloor.Row sourceFloor
 
SourceFloor.Row sourceBridge
 
SourceDeco.Row sourceDeco
 
Room currentRoom
 
Room lastRoom
 
Room room
 
Lot currentLot
 
SourceBlock.Row _sourceBlock
 
TileType tileType
 
SceneLightProfile lightSetting
 

Properties

Point HitPoint [get]
 
- Properties inherited from EMono
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SoundManager Sound [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static CoreDebug debug [get]
 

Private Attributes

bool noSlopMode
 

Detailed Description

Definition at line 5 of file BaseTileMap.cs.

Member Enumeration Documentation

◆ CardIconMode

Enumerator
None 
Inspect 
Deconstruct 
State 
Visibility 

Definition at line 21 of file BaseTileMap.cs.

◆ InnerMode

Enumerator
None 
InnerBlock 
Height 
BuildMode 

Definition at line 13 of file BaseTileMap.cs.

◆ ScreenHighlight

Enumerator
None 
SunMap 

Definition at line 30 of file BaseTileMap.cs.

◆ WallClipMode

Enumerator
ByRoom 
ByLot 

Definition at line 7 of file BaseTileMap.cs.

Member Function Documentation

◆ Draw()

virtual void BaseTileMap.Draw ( )
inlinevirtual

Reimplemented in TileMapElona.

Definition at line 547 of file BaseTileMap.cs.

548 {
549 Zone zone = EMono._zone;
550 map = zone.map;
551 Size = map.Size;
552 SizeXZ = map.SizeXZ;
554 count = 0;
555 totalFire = 0;
556 pcX = EMono.pc.pos.x;
557 pcZ = EMono.pc.pos.z;
560 lightSetting = profile.light;
563 {
564 buildMode = false;
565 }
567 isMining = EMono.scene.actionMode == ActionMode.Mine;
572 subtleHighlightArea = EMono.scene.actionMode.AreaHihlight != AreaHighlightMode.None && (EMono.scene.actionMode.AreaHihlight == AreaHighlightMode.Build || EMono.scene.actionMode.AreaHihlight != AreaHighlightMode.Edit);
573 highlightArea = EMono.scene.actionMode.AreaHihlight == AreaHighlightMode.Edit || subtleHighlightArea;
575 _rightWallShade = (int)(50f * rightWallShade) * 262144;
578 showBorder = (EMono.core.config.game.showBorder == 1 && EMono._zone is Zone_Field && !EMono._zone.IsPlayerFaction) || (EMono.core.config.game.showBorder == 2 && !EMono._zone.map.IsIndoor && !EMono._zone.IsSkyLevel && !EMono._zone.IsRegion);
579 snowLimit = profile.global.snowLimit.Evaluate(EMono.scene.timeRatio);
580 snowLight = profile.global.snowLight;
581 snowColor = profile.global.snowColor;
582 snowColor2 = profile.global.snowColor2;
583 snowColorToken = (int)((float)profile.global.snowRGB.x * nightRatio) * 4096 + (int)((float)profile.global.snowRGB.y * nightRatio) * 64 + (int)((float)profile.global.snowRGB.z * nightRatio);
586 {
588 }
589 roofLightLimitMod = profile.global.roofLightLimitMod.Evaluate(EMono.scene.timeRatio);
590 fogBounds = (EMono._map.config.forceHideOutbounds && (!EMono.debug.godBuild || !buildMode)) || (EMono.core.config.game.dontRenderOutsideMap && !buildMode);
591 heightLightMod = ((EMono._map.config.heightLightMod == 0f) ? 0.005f : EMono._map.config.heightLightMod);
592 modSublight1 = profile.global.modSublight1;
593 modSublight2 = profile.global.modSublight2 * nightRatio;
594 pcMaxLight = EMono.player.lightPower * 2f * (float)(EMono.player.lightRadius - 2);
597 _lightMod = lightSetting.lightMod * lightSetting.lightModCurve.Evaluate(EMono.scene.timeRatio);
598 destBrightness = lightSetting.baseBrightness * lightSetting.baseBrightnessCurve.Evaluate(EMono.scene.timeRatio);
599 float num = destBrightness;
600 destBrightness = destBrightness * lightSetting.dynamicBrightnessCurve2.Evaluate(EMono.scene.timeRatio) + lightSetting.dynamicBrightnessCurve.Evaluate(EMono.scene.timeRatio) * (float)(int)EMono.pc.pos.cell.light + ((EMono.pc.pos.cell.light == 0) ? 0f : lightSetting.dynamicBrightnessLightBonus);
601 if (destBrightness > num)
602 {
603 destBrightness = num;
604 }
605 if (!Mathf.Approximately(_baseBrightness, destBrightness))
606 {
608 }
609 if (activeCount == 0)
610 {
612 }
613 activeCount++;
615 {
616 _baseBrightness = 0.7f;
617 }
618 Fov.nonGradientMod = profile.global.fovModNonGradient;
621 float num2 = Core.delta * (float)EMono.game.config.animeSpeed * 0.01f;
622 floatTimer += num2;
624 {
626 for (int i = 0; i < floatYs.Length; i++)
627 {
628 floatYs[i] += floatVs[i];
629 if (floatYs[i] >= (float)maxFloat)
630 {
631 floatVs[i] = -1;
632 }
633 if (floatYs[i] < 0f)
634 {
635 floatVs[i] = 1;
636 }
637 }
638 }
639 floatY = floatYs[0];
640 floatV = floatVs[0];
641 waterAnimeTimer += num2;
642 if (waterAnimeTimer > 0.5f)
643 {
644 waterAnimeTimer = 0f;
646 }
647 if (cinemaMode)
648 {
649 CinemaConfig cinemaConfig = EMono.player.cinemaConfig;
650 profile = ActionMode.Cinema.profile;
651 lightSetting = profile.light;
653 _lightMod += lightSetting.lightMod * lightSetting.lightModCurve.Evaluate(EMono.scene.timeRatio) * (0.01f * (float)cinemaConfig.light);
654 destBrightness += 0.01f * (float)cinemaConfig.brightness;
655 EMono.scene.camSupport.grading.cinemaBrightness = 0.01f * (float)cinemaConfig.brightness;
656 EMono.scene.camSupport.grading.SetGrading();
657 heightLightMod = 0f;
658 }
659 map.rooms.Refresh();
664 {
667 }
668 else
669 {
670 currentHeight = 0;
671 currentRoom = null;
672 }
673 lowObj = false;
675 noRoofMode = false;
676 bool flag = !isIndoor || EMono._zone is Zone_Tent;
678 {
679 flag = !flag;
680 }
682 {
683 lowBlock = (hideRoomFog = (hideHang = false));
684 showRoof = (showFullWall = flag);
686 {
687 fogBounds = false;
688 }
689 }
690 else if (buildMode)
691 {
693 if (HitPoint.IsValid)
694 {
696 }
697 hideRoomFog = true;
702 if (cinemaMode)
703 {
705 }
706 }
707 else if (ActionMode.IsAdv)
708 {
709 noRoofMode = EMono.game.config.noRoof || screen.focusOption != null;
711 {
712 if (!EMono.pc.IsMoving)
713 {
714 lowblockTimer = 0.1f;
715 }
716 }
717 else if (!EInput.rightMouse.pressing)
718 {
719 lowblockTimer = 0f;
720 }
721 x = EMono.pc.pos.x;
722 z = EMono.pc.pos.z;
723 Room room = null;
724 if (room != null)
725 {
727 }
728 if (currentRoom != null)
729 {
730 currentRoom.data.visited = true;
731 }
732 if (room != null)
733 {
734 room.data.visited = true;
735 }
736 lowBlock = lowblockTimer > 0f;
737 hideRoomFog = currentRoom != null && (currentRoom.HasRoof || isIndoor);
738 if (hideRoomFog)
739 {
740 lowBlock = true;
741 }
742 if (noRoofMode && (currentRoom == null || currentRoom.lot.idRoofStyle == 0))
743 {
744 hideRoomFog = true;
745 showRoof = (showFullWall = false);
746 }
747 else
748 {
749 showRoof = (showFullWall = flag && !lowBlock && !hideRoomFog);
750 }
752 EMono.game.config.showRoof = !hideRoomFog;
753 if (forceShowHang)
754 {
755 hideHang = false;
756 forceShowHang = false;
757 }
758 }
759 else
760 {
761 lowBlock = (hideRoomFog = (hideHang = false));
762 showRoof = (showFullWall = true);
763 }
764 darkenOuter = !cinemaMode && !ActionMode.Bird.IsActive && !ActionMode.ViewMap.IsActive;
765 currentLot = currentRoom?.lot ?? null;
766 Vector3 mposWorld = EInput.mposWorld;
767 mposWorld.z = 0f;
768 Vector3Int vector3Int = screen.grid.WorldToCell(mposWorld);
769 mx = -vector3Int.y;
770 mz = vector3Int.x - 1;
771 HitPoint.Set(mx, mz);
772 bool isAltDown = EInput.isAltDown;
773 for (int num3 = maxColliderCheck + EMono.core.config.test.screenExtraHeight; num3 >= 0; num3--)
774 {
775 TestPoint.x = mx + num3;
776 TestPoint.z = mz - num3;
777 if (TestPoint.x >= 0 && TestPoint.x < Size && TestPoint.z >= 0 && TestPoint.z < Size)
778 {
779 mouseCollider.transform.position = (isAltDown ? TestPoint.Position(TestPoint.cell.height) : TestPoint.Position()) + colliderFix;
780 Physics2D.SyncTransforms();
781 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero, rays) > 0)
782 {
784 break;
785 }
786 }
787 TestPoint.x = mx + num3 - 1;
788 TestPoint.z = mz - num3;
789 if (TestPoint.x >= 0 && TestPoint.x < Size && TestPoint.z >= 0 && TestPoint.z < Size)
790 {
791 mouseCollider.transform.position = (isAltDown ? TestPoint.Position(TestPoint.cell.height) : TestPoint.Position()) + colliderFix;
792 Physics2D.SyncTransforms();
793 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero, rays) > 0)
794 {
796 break;
797 }
798 }
799 TestPoint.x = mx + num3;
800 TestPoint.z = mz - num3 + 1;
801 if (TestPoint.x >= 0 && TestPoint.x < Size && TestPoint.z >= 0 && TestPoint.z < Size)
802 {
803 mouseCollider.transform.position = (isAltDown ? TestPoint.Position(TestPoint.cell.height) : TestPoint.Position()) + colliderFix;
804 Physics2D.SyncTransforms();
805 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero, rays) > 0)
806 {
808 break;
809 }
810 }
811 }
812 HitPoint.Clamp();
813 bool flag2 = EMono._zone.UseFog && !EMono.scene.bg.wall;
814 for (z = 0; z < screen.height; z++)
815 {
816 for (x = 0; x < screen.width; x++)
817 {
818 cx = screen.scrollX - screen.scrollY + x - (z + 1) / 2;
819 cz = screen.scrollY + screen.scrollX + x + z / 2;
820 if (((cz < 0 && cx >= -cz && cx > 0 && cx < Size - cz) || (cx >= Size && cx < Size * 2 - cz - 1 && cz >= -cx && cz < Size - 1)) && EMono.scene.bg.wall)
821 {
822 param.x = (float)(cx + cz) * screen.tileAlign.x + edgeBlockFix.x;
823 param.y = (float)(cz - cx) * screen.tileAlign.y + edgeBlockFix.y;
824 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)z * edgeBlockFix.z;
825 blockLight = 10485760f;
826 pass = passInner;
828 batch.matrices[pass.idx].m03 = param.x;
829 batch.matrices[pass.idx].m13 = param.y;
830 batch.matrices[pass.idx].m23 = param.z;
831 batch.tiles[pass.idx] = 4 + ((cx >= Size) ? 1 : 0);
833 batch.matColors[pass.idx] = 104025f;
834 pass.idx++;
835 if (pass.idx == pass.batchSize)
836 {
837 pass.NextBatch();
838 }
839 }
840 else if (cx < 0 || cz < 0 || cx >= Size || cz >= Size)
841 {
842 if (flag2)
843 {
844 param.x = (float)(cx + cz) * screen.tileAlign.x;
845 param.y = (float)(cz - cx) * screen.tileAlign.y + (float)height * _heightMod.y;
846 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)height * _heightMod.z;
847 param.tile = 0f;
849 }
850 }
851 else
852 {
853 DrawTile();
854 }
855 }
856 }
857 if (showRoof)
858 {
859 foreach (Lot item in map.rooms.listLot)
860 {
861 if (item.sync)
862 {
863 DrawRoof(item);
864 item.sync = false;
865 item.light = 0f;
866 }
867 }
868 }
869 else
870 {
871 foreach (Lot item2 in map.rooms.listLot)
872 {
873 item2.sync = false;
874 item2.light = 0f;
875 }
876 }
877 EMono.scene.sfxFire.SetVolume(Mathf.Clamp(0.1f * (float)totalFire + ((totalFire != 0) ? 0.2f : 0f), 0f, 1f));
878 this.room = EMono.pc.pos.cell.room;
879 int valueOrDefault = (this.room?.lot?.idBGM).GetValueOrDefault();
880 if (valueOrDefault == 0)
881 {
882 goto IL_172c;
883 }
884 if (!(EMono.Sound.currentPlaylist != EMono.Sound.plLot))
885 {
886 BGMData data = EMono.Sound.plLot.list[0].data;
887 if ((object)data != null && data.id == valueOrDefault)
888 {
889 goto IL_172c;
890 }
891 }
892 goto IL_174b;
893 IL_1755:
894 if (this.room != lastRoom)
895 {
897 lastRoom = this.room;
898 }
899 SoundManager.bgmVolumeMod = ((!LayerDrama.maxBGMVolume && !EMono._map.IsIndoor && this.room != null && !this.room.data.atrium && this.room.HasRoof) ? (-0.6f) : 0f);
901 return;
902 IL_172c:
903 if (valueOrDefault == 0 && EMono.Sound.currentPlaylist == EMono.Sound.plLot)
904 {
905 goto IL_174b;
906 }
907 goto IL_1755;
908 IL_174b:
910 goto IL_1755;
911 }
AreaHighlightMode
if(!match.Success)
SceneProfile profile
Definition: AM_Cinema.cs:5
static bool IsAdv
Definition: ActionMode.cs:117
static AM_ViewMap ViewMap
Definition: ActionMode.cs:63
virtual BaseTileMap.CardIconMode cardIconMode
Definition: ActionMode.cs:229
bool IsActive
Definition: ActionMode.cs:121
static AM_FlagCell FlagCell
Definition: ActionMode.cs:77
virtual bool IsBuildMode
Definition: ActionMode.cs:181
static AM_Cinema Cinema
Definition: ActionMode.cs:73
static AM_Bird Bird
Definition: ActionMode.cs:31
static AM_Mine Mine
Definition: ActionMode.cs:33
Vector3 tileWeight
virtual void RefreshWeather()
float[] floatYs
Definition: BaseTileMap.cs:308
float blockLight
Definition: BaseTileMap.cs:386
bool showAllCards
Definition: BaseTileMap.cs:462
bool highlightArea
Definition: BaseTileMap.cs:275
int maxColliderCheck
Definition: BaseTileMap.cs:45
InnerMode defaultInnerMode
Definition: BaseTileMap.cs:90
Point HitPoint
Definition: BaseTileMap.cs:522
ScreenHighlight screenHighlight
Definition: BaseTileMap.cs:338
float snowLight
Definition: BaseTileMap.cs:406
InnerMode innerMode
Definition: BaseTileMap.cs:233
int[] floatVs
Definition: BaseTileMap.cs:302
float modSublight2
Definition: BaseTileMap.cs:418
float waterAnimeTimer
Definition: BaseTileMap.cs:408
bool showBorder
Definition: BaseTileMap.cs:476
bool isSnowCovered
Definition: BaseTileMap.cs:468
float floatY
Definition: BaseTileMap.cs:329
int lowWallObjAltitude
Definition: BaseTileMap.cs:376
bool cinemaMode
Definition: BaseTileMap.cs:472
bool alwaysLowblock
Definition: BaseTileMap.cs:474
bool hideRoomFog
Definition: BaseTileMap.cs:281
float _lightMod
Definition: BaseTileMap.cs:311
float lightLimit
Definition: BaseTileMap.cs:414
int snowColorToken
Definition: BaseTileMap.cs:372
float modSublight1
Definition: BaseTileMap.cs:416
bool showFullWall
Definition: BaseTileMap.cs:287
SceneLightProfile lightSetting
Definition: BaseTileMap.cs:510
bool isUnderwater
Definition: BaseTileMap.cs:478
bool fogBounds
Definition: BaseTileMap.cs:464
RenderParam param
Definition: BaseTileMap.cs:436
bool noRoofMode
Definition: BaseTileMap.cs:296
new BaseGameScreen screen
Definition: BaseTileMap.cs:354
Vector3 edgeBlockFix
Definition: BaseTileMap.cs:92
bool usingHouseBoard
Definition: BaseTileMap.cs:293
float floorShadowStrength
Definition: BaseTileMap.cs:332
RenderData rendererFov2
Definition: BaseTileMap.cs:207
float _baseBrightness
Definition: BaseTileMap.cs:314
virtual void DrawTile()
Definition: BaseTileMap.cs:925
void RefreshHeight()
Definition: BaseTileMap.cs:913
Room currentRoom
Definition: BaseTileMap.cs:498
bool noSlopMode
Definition: BaseTileMap.cs:512
float rightWallShade
Definition: BaseTileMap.cs:69
bool darkenOuter
Definition: BaseTileMap.cs:480
Vector3 _heightMod
Definition: BaseTileMap.cs:335
float floatTimer
Definition: BaseTileMap.cs:410
float pcMaxLight
Definition: BaseTileMap.cs:394
float lowblockTimer
Definition: BaseTileMap.cs:317
void DrawRoof(Lot lot)
float _rightWallShade
Definition: BaseTileMap.cs:323
float snowLimit
Definition: BaseTileMap.cs:428
float fogBrightness
Definition: BaseTileMap.cs:424
float floatSpeed
Definition: BaseTileMap.cs:122
float nightRatio
Definition: BaseTileMap.cs:434
float destBrightness
Definition: BaseTileMap.cs:412
bool buildMode
Definition: BaseTileMap.cs:346
float defaultBlockHeight
Definition: BaseTileMap.cs:426
bool subtleHighlightArea
Definition: BaseTileMap.cs:278
MeshBatch batch
Definition: BaseTileMap.cs:438
Point TestPoint
Definition: BaseTileMap.cs:231
float snowColor2
Definition: BaseTileMap.cs:432
float heightLightMod
Definition: BaseTileMap.cs:320
float snowColor
Definition: BaseTileMap.cs:430
bool highlightCells
Definition: BaseTileMap.cs:470
RaycastHit2D[] rays
Definition: BaseTileMap.cs:340
int waterAnimeIndex
Definition: BaseTileMap.cs:374
Vector3 colliderFix
Definition: BaseTileMap.cs:43
static bool forceShowHang
Definition: BaseTileMap.cs:36
float roofLightLimitMod
Definition: BaseTileMap.cs:326
MeshPass pass
Definition: BaseTileMap.cs:358
float shadowStrength
Definition: BaseTileMap.cs:420
MeshPass passInner
Definition: BaseTileMap.cs:167
CardIconMode iconMode
Definition: BaseTileMap.cs:342
int currentHeight
Definition: BaseTileMap.cs:450
bool pressing
Definition: ButtonState.cs:35
ScreenGrading grading
Point pos
Definition: Card.cs:60
Room room
Definition: Cell.cs:122
byte TopHeight
Definition: Cell.cs:139
Cell Front
Definition: Cell.cs:151
bool UseLowBlock
Definition: Cell.cs:897
byte height
Definition: Cell.cs:94
bool isWallEdge
Definition: Cell.cs:438
Cell Right
Definition: Cell.cs:163
override bool IsMoving
Definition: Chara.cs:626
bool IsInActiveZone
Definition: Chara.cs:885
new GameConfig game
Definition: CoreConfig.cs:629
Definition: Core.cs:14
static float delta
Definition: Core.cs:17
CoreConfig config
Definition: Core.cs:70
Definition: EInput.cs:8
static bool isAltDown
Definition: EInput.cs:276
static bool isShiftDown
Definition: EInput.cs:272
static ButtonState rightMouse
Definition: EInput.cs:362
static Vector3 mposWorld
Definition: EInput.cs:350
Definition: EMono.cs:4
static Core core
Definition: EMono.cs:5
static Chara pc
Definition: EMono.cs:13
static Player player
Definition: EMono.cs:11
static Zone _zone
Definition: EMono.cs:19
static Game game
Definition: EMono.cs:7
static Scene scene
Definition: EMono.cs:27
static SoundManager Sound
Definition: EMono.cs:39
static Map _map
Definition: EMono.cs:17
bool buildLight
Definition: Game.cs:37
int animeSpeed
Definition: Game.cs:85
bool showRoof
Definition: Game.cs:13
bool showWall
Definition: Game.cs:16
int lowWallObjAltitude
Definition: Game.cs:88
bool reverseSnow
Definition: Game.cs:49
bool slope
Definition: Game.cs:25
Config config
Definition: Game.cs:219
Definition: Lot.cs:5
int idRoofStyle
Definition: Lot.cs:14
int idBGM
Definition: Lot.cs:16
int Size
Definition: MapBounds.cs:20
float heightLightMod
Definition: MapConfig.cs:56
float blockHeight
Definition: MapConfig.cs:71
bool reverseRoof
Definition: MapConfig.cs:47
bool IsIndoor
Definition: Map.cs:136
int SizeXZ
Definition: Map.cs:138
RoomManager rooms
Definition: Map.cs:34
MapConfig config
Definition: Map.cs:40
float[] matColors
Definition: MeshBatch.cs:11
Matrix4x4[] matrices
Definition: MeshBatch.cs:5
float[] tiles
Definition: MeshBatch.cs:7
float[] colors
Definition: MeshBatch.cs:9
int batchIdx
Definition: MeshPass.cs:60
void NextBatch()
Definition: MeshPass.cs:417
int batchSize
Definition: MeshPass.cs:63
List< MeshBatch > batches
Definition: MeshPass.cs:66
int idx
Definition: MeshPass.cs:57
CinemaConfig cinemaConfig
Definition: Player.cs:1182
int lightRadius
Definition: Player.cs:1262
ref Vector3 Position(int height)
Definition: Point.cs:553
Point Set(int _x, int _z)
Definition: Point.cs:503
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
bool IsValid
Definition: Point.cs:88
Point Clamp(bool useBounds=false)
Definition: Point.cs:1014
Cell cell
Definition: Point.cs:51
void Draw(RenderParam p, int tile)
Definition: RenderData.cs:129
List< Lot > listLot
Definition: RoomManager.cs:20
void Refresh()
Definition: RoomManager.cs:52
Definition: Room.cs:4
bool HasRoof
Definition: Room.cs:29
Lot lot
Definition: Room.cs:21
AnimationCurve baseBrightnessCurve
AnimationCurve shadowCurveFloor
AnimationCurve dynamicBrightnessCurve2
float dynamicBrightnessLightBonus
AnimationCurve lightLimit
AnimationCurve fogBrightness
AnimationCurve dynamicBrightnessCurve
AnimationCurve shadowCurve
AnimationCurve nightRatioCurve
AnimationCurve lightModCurve
SceneGlobalProfile global
Definition: SceneProfile.cs:6
SceneLightProfile light
Definition: SceneProfile.cs:10
float timeRatio
Definition: Scene.cs:130
CameraSupport camSupport
Definition: Scene.cs:41
GameSetting.RenderSetting.MapBGSetting bg
Definition: Scene.cs:124
SoundSource sfxFire
Definition: Scene.cs:89
ActionMode actionMode
Definition: Scene.cs:79
SceneProfile profile
Definition: Scene.cs:75
bool IsPlayerFaction
Definition: Spatial.cs:455
virtual bool IsRegion
Definition: Spatial.cs:515
virtual bool IsSnowCovered
Definition: Spatial.cs:545
Definition: Zone.cs:12
virtual bool IsSkyLevel
Definition: Zone.cs:274
void RefreshBGM()
Definition: Zone.cs:3319
virtual bool AlwaysLowblock
Definition: Zone.cs:402
virtual bool IsUnderwater
Definition: Zone.cs:276
Map map
Definition: Zone.cs:66

References _baseBrightness, _heightMod, _lightMod, EMono._map, _rightWallShade, EMono._zone, Scene.actionMode, activeCount, alwaysLowblock, Zone.AlwaysLowblock, Game.Config.animeSpeed, SceneLightProfile.baseBrightnessCurve, batch, MeshPass.batches, MeshPass.batchIdx, MeshPass.batchSize, Scene.bg, ActionMode.Bird, MapConfig.blockHeight, blockLight, CinemaConfig.brightness, Game.Config.buildLight, buildMode, Scene.camSupport, ActionMode.cardIconMode, Point.cell, ActionMode.Cinema, Player.cinemaConfig, cinemaMode, Point.Clamp(), colliderFix, MeshBatch.colors, Core.config, Game.config, Map.config, EMono.core, count, currentHeight, currentLot, currentRoom, cx, cz, darkenOuter, defaultBlockHeight, defaultInnerMode, Core.delta, destBrightness, RenderData.Draw(), DrawRoof(), DrawTile(), SceneLightProfile.dynamicBrightnessCurve, SceneLightProfile.dynamicBrightnessCurve2, SceneLightProfile.dynamicBrightnessLightBonus, SceneLightProfile.dynamicBrightnessSpeed, edgeBlockFix, ActionMode.FlagCell, floatSpeed, floatTimer, floatV, floatVs, floatY, floatYs, floorShadowStrength, fogBounds, fogBrightness, SceneLightProfile.fogBrightness, forceShowHang, Cell.Front, CoreConfig.game, EMono.game, SceneProfile.global, CameraSupport.grading, BaseGameScreen.grid, Room.HasRoof, BaseGameScreen.height, height, Cell.height, heightLightMod, MapConfig.heightLightMod, hideHang, hideRoomFog, highlightArea, highlightCells, HitPoint, iconMode, Lot.idBGM, Lot.idRoofStyle, MeshPass.idx, if(), innerMode, ActionMode.IsActive, ActionMode.IsAdv, EInput.isAltDown, ActionMode.IsBuildMode, Chara.IsInActiveZone, isIndoor, Map.IsIndoor, isMining, Chara.IsMoving, Spatial.IsPlayerFaction, Spatial.IsRegion, EInput.isShiftDown, Zone.IsSkyLevel, isSnowCovered, Spatial.IsSnowCovered, isUnderwater, Zone.IsUnderwater, Point.IsValid, Cell.isWallEdge, item, lastRoom, CinemaConfig.light, SceneProfile.light, lightLimit, SceneLightProfile.lightLimit, SceneLightProfile.lightModCurve, Player.lightRadius, lightSetting, RoomManager.listLot, Room.lot, lowBlock, lowblockTimer, lowObj, lowWallObjAltitude, Game.Config.lowWallObjAltitude, map, Zone.map, MeshBatch.matColors, MeshBatch.matrices, maxColliderCheck, maxFloat, ActionMode.Mine, modSublight1, modSublight2, EInput.mposWorld, mx, mz, MeshPass.NextBatch(), nightRatio, SceneLightProfile.nightRatioCurve, noRoofMode, noSlopMode, param, pass, passInner, EMono.pc, pcMaxLight, pcX, pcZ, EMono.player, Card.pos, Point.Position(), ButtonState.pressing, AM_Cinema.profile, Scene.profile, rays, RoomManager.Refresh(), Zone.RefreshBGM(), RefreshHeight(), BaseGameScreen.RefreshWeather(), rendererFov2, MapConfig.reverseRoof, Game.Config.reverseSnow, Cell.Right, EInput.rightMouse, rightWallShade, roofLightLimitMod, room, Cell.room, Map.rooms, EMono.scene, screen, CoreConfig.Test.screenExtraHeight, screenHighlight, Point.Set(), Scene.sfxFire, SceneLightProfile.shadowCurve, SceneLightProfile.shadowCurveFloor, shadowStrength, showAllCards, showBorder, CoreConfig.GameConfig.showBorder, showFullWall, showRoof, Game.Config.showRoof, Game.Config.showWall, Size, MapBounds.Size, SizeXZ, Map.SizeXZ, Game.Config.slope, snowColor, snowColor2, snowColorToken, snowLight, snowLimit, EMono.Sound, subtleHighlightArea, CoreConfig.test, TestPoint, BaseGameScreen.tileAlign, MeshBatch.tiles, BaseGameScreen.tileWeight, Scene.timeRatio, Cell.TopHeight, totalFire, Cell.UseLowBlock, usingHouseBoard, ActionMode.ViewMap, waterAnimeIndex, waterAnimeTimer, BaseGameScreen.width, x, MeshPassParam.x, Point.x, MeshPassParam.y, z, MeshPassParam.z, Point.z, and CameraSupport.Zoom.

Referenced by BaseGameScreen.Draw(), and DrawTile().

◆ DrawRoof()

void BaseTileMap.DrawRoof ( Lot  lot)
inline

Definition at line 3441 of file BaseTileMap.cs.

3442 {
3443 RoofStyle roofStyle = roofStyles[lot.idRoofStyle];
3444 if (roofStyle.type == RoofStyle.Type.None)
3445 {
3446 return;
3447 }
3448 bool reverse = lot.reverse;
3449 int num;
3450 int num2;
3451 int num3;
3452 int num4;
3453 if (reverse)
3454 {
3455 num = lot.z - roofStyle.h;
3456 num2 = lot.x - roofStyle.w;
3457 num3 = lot.mz + 1 + roofStyle.h;
3458 num4 = lot.mx + 1 + roofStyle.w;
3459 if (num2 > 1 && num > 0 && map.cells[num2 - 1, num].HasFullBlock)
3460 {
3461 num2--;
3462 }
3463 if (num3 < Size && num4 < Size && map.cells[num4 - 1, num3].HasFullBlock)
3464 {
3465 num3++;
3466 }
3467 }
3468 else
3469 {
3470 num = lot.x - roofStyle.w;
3471 num2 = lot.z - roofStyle.h;
3472 num3 = lot.mx + 1 + roofStyle.w;
3473 num4 = lot.mz + 1 + roofStyle.h;
3474 if (num2 > 0 && num > 1 && map.cells[num - 1, num2].HasFullBlock)
3475 {
3476 num--;
3477 }
3478 if (num3 < Size && num4 < Size && map.cells[num3 - 1, num4].HasFullBlock)
3479 {
3480 num4++;
3481 }
3482 }
3483 int num5;
3484 if (roofStyle.wing)
3485 {
3486 num5 = ((lot.height > 1) ? 1 : 0);
3487 if (num5 != 0)
3488 {
3489 num2--;
3490 num4++;
3491 }
3492 }
3493 else
3494 {
3495 num5 = 0;
3496 }
3497 int num6 = num4 + (reverse ? roofStyle.w : roofStyle.h) * 2 - num2;
3498 int idRoofTile = lot.idRoofTile;
3499 int idBlock = lot.idBlock;
3500 int idRamp = lot.idRamp;
3501 bool flag = false;
3502 int num7 = num6 / 2 - roofStyle.flatW;
3503 int num8 = num6 / 2 + roofStyle.flatW + ((num6 % 2 != 0) ? 1 : 0);
3504 SourceBlock.Row row = (roofStyle.useDefBlock ? cell.sourceFloor._defBlock : EMono.sources.blocks[idBlock]);
3505 int num9 = 0;
3506 int num10 = ((num5 != 0) ? (-1) : 0);
3507 int num11 = 0;
3508 Vector3 vector = (lot.fullblock ? roofStyle.posFixBlock : roofStyle.posFix);
3509 switch (roofStyle.type)
3510 {
3511 case RoofStyle.Type.Default:
3512 flag = num6 % 2 == 1 && roofStyle.flatW == 0;
3513 break;
3514 case RoofStyle.Type.Flat:
3515 case RoofStyle.Type.FlatFloor:
3516 num7 = roofStyle.flatW;
3517 num8 = num6 - roofStyle.flatW;
3518 if (num7 == 0)
3519 {
3520 num11 = 1;
3521 }
3522 if (roofStyle.type != RoofStyle.Type.FlatFloor)
3523 {
3524 num--;
3525 num3++;
3526 num2--;
3527 num4++;
3528 }
3529 break;
3530 case RoofStyle.Type.Triangle:
3531 num7 = 999;
3532 num8 = 999;
3533 break;
3534 }
3535 for (cz = num2; cz < num4; cz++)
3536 {
3537 for (cx = num; cx < num3; cx++)
3538 {
3539 if (cx < 0 || cz < 0 || cx >= Size || cz >= Size)
3540 {
3541 continue;
3542 }
3543 int num12;
3544 int num13;
3545 if (reverse)
3546 {
3547 num12 = cz;
3548 num13 = cx;
3549 cell = map.cells[num12, num13];
3550 if (roofStyle.wing && cz == num4 - 1 && cell.Right.Right.room != null && cell.Right.Right.room.lot != lot)
3551 {
3552 continue;
3553 }
3554 }
3555 else
3556 {
3557 num12 = cx;
3558 num13 = cz;
3559 cell = map.cells[num12, num13];
3560 if (roofStyle.wing && cz == 0 && cell.Front.Front.room != null && cell.Front.Front.room.lot != lot)
3561 {
3562 continue;
3563 }
3564 }
3565 int num14 = num13 - num12;
3566 room = cell.room;
3567 if (room != null && room.lot != lot)
3568 {
3569 continue;
3570 }
3571 bool flag2 = false;
3572 if (roofStyle.type == RoofStyle.Type.Flat)
3573 {
3574 if (reverse)
3575 {
3576 if (!cell.HasFullBlock || cell.room != null)
3577 {
3578 num11 = ((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));
3579 }
3580 else if (cell.Left.room?.lot == lot && cell.Right.room != null)
3581 {
3582 num11 = 1;
3583 flag2 = true;
3584 }
3585 else if (cell.Front.room?.lot == lot)
3586 {
3587 num11 = ((cell.FrontRight.room?.lot == lot) ? 1 : 2);
3588 flag2 = true;
3589 }
3590 else if (cell.Right.room?.lot == lot || cell.FrontRight.room?.lot == lot)
3591 {
3592 num11 = 0;
3593 flag2 = true;
3594 }
3595 }
3596 else if (!cell.HasFullBlock || cell.room != null)
3597 {
3598 num11 = ((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));
3599 }
3600 else if (cell.Right.room?.lot == lot)
3601 {
3602 num11 = ((cell.FrontRight.room?.lot == lot) ? 1 : 0);
3603 flag2 = true;
3604 }
3605 else if (cell.Front.room?.lot == lot || cell.FrontRight.room?.lot == lot)
3606 {
3607 num11 = 2;
3608 flag2 = true;
3609 }
3610 num10 = 0;
3611 }
3612 bool flag3 = isSnowCovered && !cell.isClearSnow;
3613 if (room == null && !roofStyle.coverLot && !flag2 && !(cell.HasFullBlock && cell.IsRoomEdge && flag3))
3614 {
3615 continue;
3616 }
3617 index = cx + cz * Size;
3619 float num15 = (float)num14 * screen.tileAlign.y + (float)lot.mh * _heightMod.y + lot.realHeight + roofFix.y + vector.y;
3620 float num16 = 1000f + param.x * screen.tileWeight.x + (float)lot.mh * _heightMod.z + lot.realHeight * roofFix3.z + roofFix.z + vector.z;
3621 if (lot.height == 1 && lot.heightFix < 20)
3622 {
3623 num15 += roofStyle.lowRoofFix.y;
3624 num16 += roofStyle.lowRoofFix.z;
3625 }
3626 param.x = (float)(cx + cz) * screen.tileAlign.x + roofFix.x + (float)num10 * roofFix2.x + vector.x * (float)(reverse ? 1 : (-1));
3627 param.y = num15 + (float)num10 * roofFix2.y;
3628 param.z = num16 + param.y * screen.tileWeight.z + (float)num10 * roofFix2.z;
3629 param.color = GetRoofLight(lot);
3630 param.snow = idRoofTile == 0 && flag3;
3631 param.shadowFix = 0f;
3632 if (num11 == 1)
3633 {
3635 RenderRow renderRow;
3636 if (roofStyle.type == RoofStyle.Type.FlatFloor)
3637 {
3638 if (cell.HasFullBlock && cell.IsRoomEdge && !flag3)
3639 {
3640 continue;
3641 }
3642 renderRow = EMono.sources.floors[idBlock];
3643 renderRow.SetRenderParam(param, mat, 0);
3644 param.matColor = lot.colRoof;
3645 }
3646 else
3647 {
3648 renderRow = row;
3649 renderRow.SetRenderParam(param, mat, 0);
3650 param.matColor = lot.colBlock;
3651 }
3652 renderRow.renderData.Draw(param);
3653 if (idRoofTile != 0)
3654 {
3655 renderRow = EMono.sources.blocks[EMono.sources.objs[idRoofTile].idRoof];
3656 int num17 = (reverse ? 1 : 0) + ((!flag) ? 2 : 0);
3657 renderRow.SetRenderParam(param, MATERIAL.sourceGold, num17);
3658 param.matColor = lot.colRoof;
3659 if (roofStyle.type == RoofStyle.Type.FlatFloor)
3660 {
3661 param.x += roofStyle.posFixBlock.x;
3662 param.y += roofStyle.posFixBlock.y;
3663 param.z += roofStyle.posFixBlock.z;
3664 }
3665 if (!flag)
3666 {
3667 param.z += 0.5f;
3668 }
3669 if (flag3)
3670 {
3671 param.matColor = 104025f;
3672 if (roofStyle.type != RoofStyle.Type.FlatFloor)
3673 {
3674 param.z += roofStyle.snowZ;
3675 }
3676 param.tile = renderRow.renderData.ConvertTile(renderRow.snowTile) + num17;
3677 renderRow.renderData.Draw(param);
3678 }
3679 else
3680 {
3681 renderRow.renderData.Draw(param);
3682 }
3683 }
3684 else if (flag3 && roofStyle.type == RoofStyle.Type.FlatFloor)
3685 {
3686 param.matColor = 104025f;
3687 param.tile = 10f;
3688 param.x += roofStyle.snowFix.x;
3689 param.y += roofStyle.snowFix.y;
3690 param.z += roofStyle.snowZ + roofStyle.snowFix.z;
3691 renderRow.renderData.Draw(param);
3692 }
3693 }
3694 else
3695 {
3696 if (idRoofTile != 0)
3697 {
3698 int num18 = ((!reverse) ? ((num11 != 0) ? 2 : 0) : ((num11 != 0) ? 1 : 3));
3699 if (lot.altRoof && !flag && (roofStyle.type == RoofStyle.Type.Default || roofStyle.type == RoofStyle.Type.DefaultNoTop))
3700 {
3701 param.shadowFix = num18 + 1;
3702 }
3703 RenderRow renderRow = EMono.sources.objs[idRoofTile];
3704 renderRow.SetRenderParam(param, MATERIAL.sourceGold, num18);
3705 param.matColor = lot.colRoof;
3706 if (flag3)
3707 {
3708 param.matColor = 104025f;
3709 param.z += roofStyle.snowZ;
3710 param.tile = renderRow.renderData.ConvertTile(renderRow.snowTile) + num18 + (lot.altRoof ? 8 : 0);
3711 renderRow.renderData.Draw(param);
3712 }
3713 else
3714 {
3715 param.tile += (lot.altRoof ? 8 : 0);
3716 renderRow.renderData.Draw(param);
3717 }
3718 param.shadowFix = 0f;
3719 }
3720 if (num10 >= 0)
3721 {
3722 param.y += roofRampFix.y;
3723 param.z += roofRampFix.z;
3724 RenderRow renderRow = EMono.sources.blocks[idRamp];
3725 renderRow.SetRenderParam(param, MATERIAL.sourceGold, (!reverse) ? ((num11 != 0) ? 2 : 0) : ((num11 != 0) ? 1 : 3));
3726 param.matColor = lot.colBlock;
3727 renderRow.renderData.Draw(param);
3728 }
3729 }
3730 CellEffect effect = cell.effect;
3731 if (effect != null && effect.FireAmount > 0)
3732 {
3734 }
3735 if (num10 < 1)
3736 {
3737 continue;
3738 }
3739 if (roofStyle.type != RoofStyle.Type.Flat)
3740 {
3741 param.snow = false;
3742 }
3743 for (int i = 0; i < num10; i++)
3744 {
3745 param.x = (float)(cx + cz) * screen.tileAlign.x + roofFix.x + (float)i * roofFix2.x + vector.x * (float)(reverse ? 1 : (-1));
3746 param.y = num15 + (float)i * roofFix2.y;
3747 param.z = num16 + param.y * screen.tileWeight.z + (float)i * roofFix2.z;
3748 RenderRow renderRow = row;
3749 renderRow.SetRenderParam(param, MATERIAL.sourceGold, 0);
3750 param.matColor = lot.colBlock;
3751 renderRow.renderData.Draw(param);
3752 index++;
3753 CellEffect effect2 = cell.effect;
3754 if (effect2 != null && effect2.FireAmount > 0 && Rand.bytes[index % Rand.MaxBytes] % 3 == 0)
3755 {
3757 }
3758 }
3759 }
3760 num9++;
3761 if (roofStyle.type != RoofStyle.Type.Flat)
3762 {
3763 if (num9 == num7)
3764 {
3765 num11 = 1;
3766 }
3767 if (num9 == num8)
3768 {
3769 num11 = 2;
3770 num10++;
3771 }
3772 num10 += num11 switch
3773 {
3774 1 => 0,
3775 0 => 1,
3776 _ => -1,
3777 };
3778 }
3779 }
3780 }
Vector3 roofFix2
Definition: BaseTileMap.cs:75
int GetRoofLight(Lot lot)
Vector3 roofFix3
Definition: BaseTileMap.cs:77
Vector3 roofRampFix
Definition: BaseTileMap.cs:71
SourceMaterial.Row matBlock
Definition: BaseTileMap.cs:378
RenderDataEffect rendererEffect
Definition: BaseTileMap.cs:229
Vector3 roofFix
Definition: BaseTileMap.cs:73
RoofStyle[] roofStyles
Definition: BaseTileMap.cs:514
int FireAmount
Definition: CellEffect.cs:162
CellEffect effect
Definition: Cell.cs:114
Cell Back
Definition: Cell.cs:175
bool isClearSnow
Definition: Cell.cs:462
Cell Left
Definition: Cell.cs:187
bool IsRoomEdge
Definition: Cell.cs:904
bool HasFullBlock
Definition: Cell.cs:853
Cell FrontRight
Definition: Cell.cs:199
static SourceManager sources
Definition: EMono.cs:41
bool altRoof
Definition: Lot.cs:46
int colBlock
Definition: Lot.cs:32
int idRamp
Definition: Lot.cs:24
int colRoof
Definition: Lot.cs:30
int mh
Definition: Lot.cs:58
int heightFix
Definition: Lot.cs:18
float realHeight
Definition: Lot.cs:64
int idBlock
Definition: Lot.cs:22
int height
Definition: Lot.cs:12
int idRoofTile
Definition: Lot.cs:20
bool reverse
Definition: Lot.cs:42
static SourceMaterial.Row sourceGold
Definition: MATERIAL.cs:45
Cell[,] cells
Definition: Map.cs:88
Definition: Rand.cs:4
static int MaxBytes
Definition: Rand.cs:5
static byte[] bytes
Definition: Rand.cs:11
new void Draw(RenderParam p, int tile=0)
int ConvertTile(int tile)
Definition: RenderData.cs:111
void SetRenderParam(RenderParam p, SourceMaterial.Row mat, int dir)
Definition: RenderRow.cs:413
RenderData renderData
Definition: RenderRow.cs:71
int snowTile
Definition: RenderRow.cs:28
Vector3 lowRoofFix
Definition: RoofStyle.cs:39
Vector3 posFix
Definition: RoofStyle.cs:35
int flatW
Definition: RoofStyle.cs:23
float snowZ
Definition: RoofStyle.cs:43
bool coverLot
Definition: RoofStyle.cs:33
Vector3 posFixBlock
Definition: RoofStyle.cs:37
bool wing
Definition: RoofStyle.cs:29
Vector3 snowFix
Definition: RoofStyle.cs:41
Type type
Definition: RoofStyle.cs:17
SourceObj objs
SourceBlock blocks
SourceFloor floors

References _heightMod, Lot.altRoof, Cell.Back, SourceManager.blocks, Rand.bytes, cell, Map.cells, Lot.colBlock, Lot.colRoof, RenderData.ConvertTile(), RoofStyle.coverLot, cx, cz, RenderData.Draw(), RenderDataEffect.Draw(), Cell.effect, CellEffect.FireAmount, RoofStyle.flatW, SourceManager.floors, Cell.Front, Cell.FrontRight, GetRoofLight(), RoofStyle.h, Cell.HasFullBlock, height, Lot.height, Lot.heightFix, Lot.idBlock, Lot.idRamp, Lot.idRoofStyle, Lot.idRoofTile, if(), index, Cell.isClearSnow, Cell.IsRoomEdge, isSnowCovered, Cell.Left, Room.lot, RoofStyle.lowRoofFix, map, matBlock, Rand.MaxBytes, Lot.mh, SourceManager.objs, param, RoofStyle.posFix, RoofStyle.posFixBlock, Lot.realHeight, RenderRow.renderData, rendererEffect, Lot.reverse, Cell.Right, roofFix, roofFix2, roofFix3, roofRampFix, roofStyles, room, Cell.room, screen, RenderRow.SetRenderParam(), Size, RoofStyle.snowFix, RenderRow.snowTile, RoofStyle.snowZ, MATERIAL.sourceGold, EMono.sources, BaseGameScreen.tileAlign, BaseGameScreen.tileWeight, Cell.TopHeight, RoofStyle.type, RoofStyle.w, RoofStyle.wing, MeshPassParam.y, and MeshPassParam.z.

Referenced by Draw().

◆ DrawTile()

virtual void BaseTileMap.DrawTile ( )
inlinevirtual

Reimplemented in TileMapElona.

Definition at line 925 of file BaseTileMap.cs.

926 {
927 count++;
928 index = cx + cz * Size;
929 this.cell = (param.cell = map.cells[cx, cz]);
930 detail = this.cell.detail;
931 isSeen = this.cell.isSeen;
932 this.room = this.cell.room;
933 roof = this.cell.HasRoof;
934 matBlock = this.cell.matBlock;
935 matDeco = this.cell.matDeco;
938 bool flag = this.cell.isFloating;
939 snowed = isSnowCovered && !roof && !this.cell.isClearSnow && !this.cell.isDeck && !flag;
941 floorDir = this.cell.floorDir;
942 if (snowed && !this.cell.sourceFloor.ignoreSnow)
943 {
944 if (this.cell.IsFloorWater)
945 {
947 matFloor = this.cell.matFloor;
948 }
949 else
950 {
951 if (this.cell.sourceObj.snowTile > 0)
952 {
954 floorDir = this.cell.sourceObj.snowTile - 1;
955 }
956 else if (index % 3 == 0 && Rand.bytes[index % Rand.MaxBytes] < 8 && !this.cell.HasObj && this.cell.FirstThing == null)
957 {
960 }
961 else
962 {
964 }
966 }
967 }
968 else
969 {
971 matFloor = this.cell.matFloor;
972 }
973 bool isWater = sourceFloor.tileType.IsWater;
974 light = (this.cell.pcSync ? this.cell.light : (this.cell.light / 3 * 2));
976 height = this.cell.height;
977 hasBridge = this.cell._bridge != 0;
979 if (hasBridge)
980 {
982 {
984 }
985 if (snowed && !this.cell.sourceBridge.ignoreSnow)
986 {
987 if (this.cell.IsBridgeWater)
988 {
990 matBridge = this.cell.matBridge;
991 }
992 else
993 {
996 }
997 }
998 else
999 {
1001 matBridge = this.cell.matBridge;
1002 }
1003 }
1004 else if (height < currentHeight)
1005 {
1007 }
1008 if (blockLight < 0f)
1009 {
1010 blockLight = 0f;
1011 }
1012 liquidLv = (param.liquidLv = ((!flag && !isUnderwater) ? (((this.cell.liquidLv + this.cell._bridge != 0) ? this.cell.sourceBridge.tileType.LiquidLV : sourceFloor.tileType.LiquidLV) * 10) : 0));
1013 if (this.cell.shore != 0 && liquidLv > 20)
1014 {
1015 liquidLv = (param.liquidLv = 20);
1016 }
1017 if (liquidLv > 99)
1018 {
1019 liquidLv = (param.liquidLv = 99);
1020 }
1021 CellEffect effect = this.cell.effect;
1022 if (effect != null && effect.IsFire)
1023 {
1024 blockLight += 0.2f;
1025 totalFire++;
1026 }
1027 if (blockLight > lightLimit)
1028 {
1030 }
1031 blockLight += shadowModStrength * (float)(int)this.cell.shadowMod * _heightMod.x * _shadowStrength;
1032 if (this.room != null)
1033 {
1034 this.room.lot.sync = true;
1035 if (this.room.lot.light < blockLight)
1036 {
1037 this.room.lot.light = blockLight;
1038 }
1039 }
1040 if (currentLot != null && currentLot.idRoofStyle != 0)
1041 {
1042 bool flag2 = this.cell.IsRoomEdge && (this.cell.Front.room?.lot == currentLot || this.cell.Right.room?.lot == currentLot || this.cell.FrontRight.room?.lot == currentLot);
1043 if (!buildMode)
1044 {
1045 if ((this.room != null && this.room.lot == currentLot) || flag2)
1046 {
1048 }
1049 else
1050 {
1051 blockLight += (isSnowCovered ? (-0.02f) : lotLight2);
1052 }
1053 }
1054 }
1055 if (this.cell.outOfBounds && darkenOuter)
1056 {
1057 blockLight -= 0.1f;
1058 if (fogBounds)
1059 {
1060 isSeen = false;
1061 }
1062 }
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));
1065 if (snowed)
1066 {
1069 {
1071 }
1072 floorLight = (int)(floorLight * 50f) * 262144 + (int)((float)((this.cell.lightR >= 50) ? 50 : this.cell.lightR) * snowColor) * 4096 + (int)((float)((this.cell.lightG >= 50) ? 50 : this.cell.lightG) * snowColor) * 64 + (int)((float)((this.cell.lightB >= 50) ? 50 : this.cell.lightB) * snowColor) + snowColorToken;
1073 }
1074 else if (isSnowCovered && !roof)
1075 {
1076 floorLight = (int)(floorLight * 50f) * 262144 + (int)((float)((this.cell.lightR >= 50) ? 50 : this.cell.lightR) * snowColor2) * 4096 + (int)((float)((this.cell.lightG >= 50) ? 50 : this.cell.lightG) * snowColor2) * 64 + (int)((float)((this.cell.lightB >= 50) ? 50 : this.cell.lightB) * snowColor2) + snowColorToken;
1077 }
1078 else
1079 {
1081 }
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)
1085 {
1086 flag3 = false;
1087 }
1088 if (num || !isSeen || flag3)
1089 {
1090 floorLight += -3145728f;
1091 }
1092 if (this.cell.isWatered && !snowed)
1093 {
1094 floorLight += -2359296f;
1095 }
1096 param.snow = false;
1097 param.x = (float)(cx + cz) * screen.tileAlign.x;
1098 param.y = (float)(cz - cx) * screen.tileAlign.y + (float)height * _heightMod.y;
1099 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)height * _heightMod.z;
1100 if (flag)
1101 {
1102 param.y += 0.01f * floatY;
1103 }
1104 if (detail != null)
1105 {
1106 TransAnime anime = detail.anime;
1107 if (anime != null && anime.animeBlock)
1108 {
1109 TransAnime anime2 = detail.anime;
1110 param.x += anime2.v.x;
1111 param.y += anime2.v.y;
1112 param.z += anime2.v.z;
1113 }
1114 if (detail.designation != null)
1115 {
1117 }
1118 }
1119 if (screenHighlight != ScreenHighlight.None && screenHighlight == ScreenHighlight.SunMap && Map.sunMap.Contains(index))
1120 {
1122 }
1123 if (this.cell._roofBlock != 0 && (isSeen || !EMono._zone.UseFog) && showRoof && !lowBlock)
1124 {
1127 this.tileType = row.tileType;
1128 param.mat = row2;
1129 param.dir = this.cell._roofBlockDir % 4;
1130 param.snow = isSnowCovered && !this.cell.isClearSnow;
1131 orgX = param.x;
1132 orgY = param.y;
1133 orgZ = param.z;
1134 SetRoofHeight(param, this.cell, cx, cz, 0, this.cell._roofBlockDir / 4, this.tileType.IsWallOrFence ? param.dir : (-1));
1135 switch (this.tileType.blockRenderMode)
1136 {
1137 case BlockRenderMode.FullBlock:
1138 param.color -= (int)(_shadowStrength * 50f) * 262144;
1139 param.tile = row._tiles[param.dir % row._tiles.Length];
1140 param.matColor = ((row.colorMod == 0) ? 104025 : GetColorInt(ref row2.matColor, row.colorMod));
1141 row.renderData.Draw(param);
1142 break;
1143 case BlockRenderMode.WallOrFence:
1144 {
1145 _lowblock = true;
1146 int dir = param.dir;
1147 if (dir == 0 || dir == 2)
1148 {
1149 param.dir = 0;
1150 _sourceBlock = row;
1151 this.tileType = _sourceBlock.tileType;
1152 if (_sourceBlock.useAltColor)
1153 {
1154 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.altColor, _sourceBlock.colorMod));
1155 }
1156 else
1157 {
1158 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, _sourceBlock.colorMod));
1159 }
1160 param.tile = (tile = _sourceBlock._tiles[0] + ((_lowblock && !this.tileType.IsFence) ? 32 : 0));
1161 _sourceBlock.renderData.Draw(param);
1162 param.z -= 0.01f;
1163 }
1164 if (dir == 1 || dir == 2)
1165 {
1166 param.dir = 1;
1167 _sourceBlock = row;
1168 this.tileType = _sourceBlock.tileType;
1169 if (_sourceBlock.useAltColor)
1170 {
1171 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.altColor, _sourceBlock.colorMod));
1172 }
1173 else
1174 {
1175 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, _sourceBlock.colorMod));
1176 }
1177 param.tile = (tile = -_sourceBlock._tiles[0] + ((_lowblock && !this.tileType.IsFence) ? (-32) : 0));
1178 _sourceBlock.renderData.Draw(param);
1179 }
1180 break;
1181 }
1182 case BlockRenderMode.HalfBlock:
1183 _sourceBlock = ((row.id == 5) ? EMono.sources.blocks[row2.defBlock] : row);
1184 param.tile = _sourceBlock._tiles[0];
1185 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref row2.matColor, _sourceBlock.colorMod));
1186 param.tile2 = _sourceBlock.sourceAutoFloor._tiles[0];
1187 param.halfBlockColor = ((_sourceBlock.sourceAutoFloor.colorMod == 0) ? 104025 : GetColorInt(ref row2.matColor, _sourceBlock.sourceAutoFloor.colorMod));
1188 row.renderData.Draw(param);
1189 break;
1190 case BlockRenderMode.Pillar:
1191 {
1192 RenderData renderData = row.renderData;
1193 param.tile = row._tiles[param.dir % row._tiles.Length];
1194 param.matColor = ((row.colorMod == 0) ? 104025 : GetColorInt(ref row2.matColor, row.colorMod));
1195 renderData.Draw(param);
1196 param.tile = renderData.idShadow;
1197 SourcePref shadowPref = renderData.shadowPref;
1198 int shadow = shadowPref.shadow;
1199 passShadow.AddShadow(param.x + renderData.offsetShadow.x, param.y + renderData.offsetShadow.y, param.z + renderData.offsetShadow.z, ShadowData.Instance.items[shadow], shadowPref, 0, param.snow);
1200 break;
1201 }
1202 default:
1203 param.tile = row._tiles[param.dir % row._tiles.Length];
1204 param.matColor = ((row.colorMod == 0) ? 104025 : GetColorInt(ref row2.matColor, row.colorMod));
1205 row.renderData.Draw(param);
1206 break;
1207 }
1208 param.x = orgX;
1209 param.y = orgY;
1210 param.z = orgZ;
1211 param.color = blockLight;
1212 }
1213 fogged = false;
1214 bool flag4 = this.cell.isSurrounded && innerMode != InnerMode.None && sourceBlock.tileType.IsFullBlock;
1215 if (!(!isSeen || flag4))
1216 {
1217 goto IL_16be;
1218 }
1219 bool isRoomEdge = this.cell.IsRoomEdge;
1220 orgY = param.y;
1221 orgZ = param.z;
1222 param.color = (int)(50f * (_baseBrightness + fogBrightness)) * 262144;
1223 param.matColor = 104025f;
1224 if (hasBridge)
1225 {
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;
1228 }
1229 bool flag5 = (!isSeen && EMono._zone.UseFog) || flag4;
1230 if (flag5)
1231 {
1232 param.tile = 7f;
1234 param.tile = 0f;
1236 }
1237 else if (this.cell.HasFloodBlock && isRoomEdge)
1238 {
1239 param.tile = 9f;
1241 }
1242 else
1243 {
1244 param.tile = 8f;
1246 }
1247 if ((this.cell.isSlopeEdge || hasBridge) && (flag5 || !isRoomEdge))
1248 {
1249 float num2 = (float)(int)this.cell.TopHeight * _heightMod.y;
1250 param.tile = 0f;
1251 for (int i = 0; (float)i < num2 / heightBlockSize; i++)
1252 {
1253 param.y += ugFix.y;
1254 param.z += ugFix.z + slopeFixZ * (float)i;
1255 if (flag5)
1256 {
1258 }
1259 else
1260 {
1262 }
1263 }
1264 }
1265 param.y = orgY;
1266 param.z = orgZ;
1267 param.color = blockLight;
1268 if (flag5)
1269 {
1270 if (detail == null || !(EMono.pc.hasTelepathy || flag4))
1271 {
1272 return;
1273 }
1274 }
1275 else
1276 {
1277 if (isRoomEdge)
1278 {
1279 goto IL_16be;
1280 }
1281 if (detail == null || !(EMono.pc.hasTelepathy || flag4))
1282 {
1283 if (noRoofMode || detail == null)
1284 {
1285 return;
1286 }
1287 fogged = true;
1288 }
1289 }
1290 goto IL_7d54;
1291 IL_7d54:
1292 if (detail.things.Count == 0 && detail.charas.Count == 0)
1293 {
1294 return;
1295 }
1296 int num3 = 0;
1297 thingPos.x = 0f;
1298 thingPos.y = 0f;
1299 thingPos.z = 0f;
1300 freePos.x = (freePos.y = (freePos.z = 0f));
1301 if (this.cell.HasRamp)
1302 {
1303 Vector3 rampFix = sourceBlock.tileType.GetRampFix(this.cell.blockDir);
1304 param.x += rampFix.x;
1305 param.y += rampFix.y;
1306 param.z += rampFix.z;
1307 freePos.x += rampFix.x;
1308 freePos.y += rampFix.y;
1309 freePos.z += rampFix.z;
1310 }
1311 param.y += (flag ? 0f : ((this.cell._bridge != 0) ? this.cell.sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight));
1312 orgPos.x = (orgX = param.x);
1313 orgPos.y = (orgY = param.y);
1314 orgPos.z = (orgZ = param.z);
1315 if (flag && liquidLv > 0)
1316 {
1317 if (liquidLv > 10)
1318 {
1319 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
1320 }
1321 liquidLv -= (int)(floatY * 0.5f);
1322 param.liquidLv = liquidLv;
1324 }
1325 Thing thing = null;
1326 bool shadow2 = liquidLv == 0;
1327 float num4 = 0f;
1328 float num5 = 0f;
1329 float num6 = 0f;
1330 float num7 = 0f;
1331 bool flag6 = false;
1332 float num8 = 0f;
1333 bool flag7 = false;
1334 float num9 = 0f;
1335 if (detail.things.Count > 0 && isSeen)
1336 {
1337 _ = zSetting.max1;
1338 float num10 = 0f;
1339 for (int j = 0; j < detail.things.Count; j++)
1340 {
1341 Thing t = detail.things[j];
1342 if ((fogged && !t.isRoofItem) || ((t.isHidden || t.trait.HideInAdv || t.isMasked) && !EMono.scene.actionMode.ShowMaskedThings) || (t.isRoofItem && ((this.room == null && !sourceBlock.tileType.IsFullBlock && !EMono._zone.IsPCFaction && !buildMode) || (lowBlock && !showFullWall && this.room != null) || (noRoofMode && currentRoom == null))) || (flag3 && !t.isRoofItem))
1343 {
1344 continue;
1345 }
1347 bool isInstalled = t.IsInstalled;
1348 SourcePref pref = t.Pref;
1349 if (!isInstalled && t.category.tileDummy != 0)
1350 {
1352 }
1353 float num11 = ((tileType.UseMountHeight && isInstalled) ? 0f : ((pref.height < 0f) ? 0f : ((pref.height == 0f) ? 0.1f : pref.height)));
1354 if (t.ignoreStackHeight)
1355 {
1356 thingPos.y -= num4;
1357 thingPos -= altitudeFix * num5;
1358 }
1359 shadow2 = thingPos.y < 0.16f && num9 < 0.16f && t.altitude >= 0;
1360 if (flag6 && t.altitude > 0)
1361 {
1362 shadow2 = false;
1363 }
1364 _ = pref.bypassShadow;
1365 param.shadowFix = 0f - thingPos.y;
1366 param.liquidLv = ((thingPos.y + (float)t.altitude < 0.1f) ? liquidLv : 0);
1367 if (t.isRoofItem)
1368 {
1369 param.snow = isSnowCovered && !this.cell.isClearSnow;
1370 SetRoofHeight(param, this.cell, cx, cz);
1371 _actorPos.x = param.x;
1372 _actorPos.y = param.y;
1373 _actorPos.z = param.z + num10;
1374 if (this.room != null)
1375 {
1376 param.color = GetRoofLight(this.room.lot);
1377 }
1378 shadow2 = false;
1379 param.liquidLv = 0;
1380 }
1381 else
1382 {
1383 param.snow = snowed;
1384 _actorPos.x = orgX + num7;
1385 _actorPos.y = orgY;
1386 _actorPos.z = orgZ + num10 + thingPos.z;
1387 if (tileType.CanStack || !isInstalled)
1388 {
1389 if (thing?.id != t.id)
1390 {
1391 _actorPos.x += thingPos.x;
1392 }
1393 _actorPos.y += thingPos.y;
1394 if (t.trait.IgnoreLastStackHeight && (thing == null || !thing.trait.IgnoreLastStackHeight))
1395 {
1396 thingPos.y -= num4;
1397 if (thing != null)
1398 {
1399 _actorPos.z -= 0.2f;
1400 thingPos.z -= 0.2f;
1401 }
1402 _actorPos.y -= num4;
1403 }
1404 _actorPos.z += renderSetting.thingZ + (float)j * -0.01f + zSetting.mod1 * thingPos.y;
1405 }
1406 if (isInstalled)
1407 {
1408 if (t.TileType.IsRamp)
1409 {
1410 Vector3 rampFix2 = t.TileType.GetRampFix(t.dir, pref);
1411 orgX += rampFix2.x;
1412 orgY += rampFix2.y;
1413 orgZ += rampFix2.z;
1414 freePos.x += rampFix2.x;
1415 freePos.y += rampFix2.y;
1416 freePos.z += rampFix2.z;
1417 if (!this.cell.IsTopWater || t.altitude > 0)
1418 {
1419 num9 += rampFix2.y;
1420 }
1421 liquidLv -= (int)(rampFix2.y * 150f);
1422 if (liquidLv < 0)
1423 {
1424 liquidLv = 0;
1425 }
1426 }
1427 else if (!flag7 && t.trait.IsChangeFloorHeight && !t.ignoreStackHeight)
1428 {
1429 orgY += num11 + (float)t.altitude * altitudeFix.y;
1430 orgZ += (float)t.altitude * altitudeFix.z;
1431 freePos.y += num11 + (float)t.altitude * altitudeFix.y;
1432 if (!this.cell.IsTopWater || t.altitude > 0)
1433 {
1434 num9 += num11 + (float)t.altitude * altitudeFix.y;
1435 }
1436 _actorPos.x += pref.x * (float)((!t.flipX) ? 1 : (-1));
1437 _actorPos.z += pref.z;
1438 thingPos.z += pref.z;
1439 liquidLv -= (int)(num11 * 150f);
1440 if (liquidLv < 0)
1441 {
1442 liquidLv = 0;
1443 }
1444 }
1445 else
1446 {
1447 thingPos.y += num11;
1449 {
1450 if ((tileType != TileType.Illumination || !this.cell.HasObj) && !tileType.AlwaysShow && !this.cell.toggleOcclusion)
1451 {
1453 {
1454 continue;
1455 }
1456 if (hideHang && (this.cell.room?.lot != currentLot || (!this.cell.lotWall && this.cell.room != currentRoom)))
1457 {
1458 Room room = ((t.dir == 0) ? this.cell.Back.room : this.cell.Left.room);
1460 {
1461 if (room == null || !room.data.showWallItem)
1462 {
1463 continue;
1464 }
1465 }
1466 else if (t.altitude >= lowWallObjAltitude)
1467 {
1468 continue;
1469 }
1470 }
1471 }
1473 {
1474 flag6 = true;
1475 }
1477 shadow2 = false;
1478 param.liquidLv = 0;
1479 if (t.freePos)
1480 {
1481 _actorPos.x += t.fx;
1482 _actorPos.y += t.fy;
1483 }
1484 }
1485 else
1486 {
1487 if ((tileType != TileType.Illumination || !this.cell.HasObj) && !tileType.AlwaysShow && !this.cell.toggleOcclusion && noRoofMode && currentRoom == null && t.altitude >= lowWallObjAltitude && tileType != TileType.ObjFloat)
1488 {
1489 continue;
1490 }
1491 thingPos.y += (float)t.altitude * altitudeFix.y;
1492 thingPos.z += (float)t.altitude * altitudeFix.z;
1493 }
1494 _actorPos.x += pref.x * (float)((!t.flipX) ? 1 : (-1));
1495 _actorPos.z += pref.z;
1496 if (pref.height >= 0f)
1497 {
1498 thingPos.z += pref.z;
1499 }
1500 }
1501 if (!tileType.UseMountHeight && j > 10)
1502 {
1503 flag7 = true;
1504 }
1505 }
1506 else
1507 {
1508 thingPos.y += num11;
1509 _actorPos.x += pref.x * (float)((!t.flipX) ? 1 : (-1));
1510 _actorPos.z += pref.z;
1511 thingPos.z += pref.z;
1512 }
1513 if (t.isFloating && isWater && !hasBridge && !flag)
1514 {
1515 flag = true;
1516 float num12 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight);
1517 orgY += 0.01f * floatY - num12;
1519 {
1520 num8 = num11;
1521 }
1522 _actorPos.y += 0.01f * floatY - num12;
1523 if (liquidLv > 10)
1524 {
1525 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
1526 }
1527 liquidLv -= (int)(floatY * 0.5f);
1528 if (liquidLv < 0)
1529 {
1530 liquidLv = 0;
1531 }
1532 param.liquidLv = liquidLv;
1533 }
1534 num4 = num11;
1535 if (t.sourceCard.multisize && !t.trait.IsGround)
1536 {
1537 num10 += zSetting.multiZ;
1538 }
1539 orgZ += t.renderer.data.stackZ;
1540 if (param.liquidLv > 0)
1541 {
1542 param.liquidLv += pref.liquidMod;
1543 if (param.liquidLv < 1)
1544 {
1545 param.liquidLv = 1;
1546 }
1547 else if (param.liquidLv > 99 + pref.liquidModMax)
1548 {
1549 param.liquidLv = 99 + pref.liquidModMax;
1550 }
1551 }
1552 }
1553 if (!isInstalled || !tileType.UseMountHeight)
1554 {
1555 if (t.altitude != 0)
1556 {
1558 if (!t.isRoofItem)
1559 {
1560 num6 += (float)t.altitude;
1561 num5 = t.altitude;
1562 }
1563 }
1564 if (num6 >= 2f && ((this.cell.Back.room != null && this.cell.Back.IsRoomEdge) || (this.cell.Left.room != null && this.cell.Left.IsRoomEdge)) && hideHang && (this.cell.room?.lot != currentLot || (!this.cell.lotWall && this.cell.room != currentRoom)))
1565 {
1566 continue;
1567 }
1568 if (t.freePos)
1569 {
1570 if (t.isRoofItem)
1571 {
1572 _actorPos.x += t.fx;
1573 _actorPos.y += t.fy - (float)t.altitude * altitudeFix.y;
1574 }
1575 else
1576 {
1577 _actorPos.x = orgX + t.fx - freePos.x;
1578 _actorPos.y = orgY + t.fy - freePos.y;
1579 }
1580 }
1581 if (t.trait is TraitDoor && (t.trait as TraitDoor).IsOpen())
1582 {
1583 _actorPos.z += -0.5f;
1584 }
1585 }
1586 if (!t.sourceCard.multisize || (t.pos.x == cx && t.pos.z == cz))
1587 {
1588 if (iconMode != CardIconMode.None)
1589 {
1590 int num13 = 0;
1591 switch (iconMode)
1592 {
1593 case CardIconMode.Visibility:
1594 if (t.isMasked)
1595 {
1596 num13 = 17;
1597 }
1598 break;
1599 case CardIconMode.State:
1600 if (t.placeState == PlaceState.installed)
1601 {
1602 num13 = 18;
1603 }
1604 break;
1605 case CardIconMode.Deconstruct:
1606 if (t.isDeconstructing)
1607 {
1608 num13 = 14;
1609 }
1610 break;
1611 }
1613 {
1614 num13 = 13;
1615 }
1616 if (num13 != 0)
1617 {
1618 passGuideBlock.Add(_actorPos.x, _actorPos.y, _actorPos.z - 10f, num13);
1619 }
1620 }
1622 if (_lowblock && t.trait.UseLowblock && !this.cell.HasFullBlock)
1623 {
1624 param.tile += ((param.tile < 0f) ? (-64) : 64);
1625 }
1626 if (t.trait is TraitTrolley && EMono.pc.ai is AI_Trolley aI_Trolley && aI_Trolley.trolley.owner == t)
1627 {
1628 RenderParam _param = new RenderParam(param);
1629 EMono.core.actionsLateUpdate.Add(delegate
1630 {
1631 t.SetRenderParam(_param);
1632 _actorPos.x = EMono.pc.renderer.position.x;
1633 _actorPos.y = EMono.pc.renderer.position.y - pref.height;
1634 _actorPos.z = EMono.pc.renderer.position.z + 0.02f;
1635 t.renderer.Draw(_param, ref _actorPos, !t.noShadow && (shadow2 || tileType.AlwaysShowShadow));
1636 });
1637 }
1638 else
1639 {
1640 if (t.trait.UsePositionFix)
1641 {
1643 }
1644 t.renderer.Draw(param, ref _actorPos, !t.noShadow && (shadow2 || tileType.AlwaysShowShadow));
1645 }
1646 }
1647 if (isInstalled)
1648 {
1649 num7 += pref.stackX * (float)((!t.flipX) ? 1 : (-1));
1650 }
1651 param.x = orgX;
1652 param.y = orgY;
1653 param.z = orgZ;
1654 param.color = floorLight;
1655 thing = t;
1656 if (pref.Float)
1657 {
1658 liquidLv = 0;
1659 }
1660 }
1661 }
1662 orgY += num8;
1663 if (detail.charas.Count <= 0)
1664 {
1665 return;
1666 }
1667 param.shadowFix = 0f - num9;
1668 param.color += 1310720f;
1669 float max = zSetting.max2;
1670 for (int num14 = 0; num14 < detail.charas.Count; num14++)
1671 {
1672 Chara chara = detail.charas[num14];
1673 if (chara.host != null)
1674 {
1675 continue;
1676 }
1677 if (chara != EMono.pc && chara != LayerDrama.alwaysVisible)
1678 {
1679 if (chara.mimicry != null && chara.mimicry.IsThing)
1680 {
1681 if (flag3 || fogged || !this.cell.isSeen)
1682 {
1683 continue;
1684 }
1685 }
1686 else if (flag3 || fogged || (!showAllCards && !EMono.player.CanSee(chara)))
1687 {
1688 continue;
1689 }
1690 }
1691 _actorPos.x = orgX;
1692 _actorPos.y = orgY;
1693 _actorPos.z = orgZ;
1694 if (this.cell.IsBlocked && chara.IsAstralBody)
1695 {
1696 _actorPos.z += EMono.setting.render.astralBodyFixZ;
1697 }
1698 chara.SetRenderParam(param);
1699 _ = chara.IsAliveInCurrentZone;
1700 if (chara.isRestrained)
1701 {
1702 TraitShackle restrainer = chara.GetRestrainer();
1703 if (restrainer != null)
1704 {
1705 Vector3 getRestrainPos = restrainer.GetRestrainPos;
1706 if (getRestrainPos != default(Vector3))
1707 {
1708 Vector3 position = restrainer.owner.renderer.position;
1709 float defCharaHeight = EMono.setting.render.defCharaHeight;
1710 float num15 = getRestrainPos.y + defCharaHeight - ((chara.Pref.height == 0f) ? defCharaHeight : chara.source.pref.height);
1711 _actorPos.x = position.x + getRestrainPos.x * (float)((restrainer.owner.dir % 2 == 0) ? 1 : (-1));
1712 _actorPos.y = position.y + num15;
1713 _actorPos.z = position.z + getRestrainPos.z;
1714 param.liquidLv = 0;
1715 param.shadowFix = orgY - _actorPos.y;
1716 chara.renderer.SetFirst(first: true);
1717 chara.renderer.Draw(param, ref _actorPos, drawShadow: true);
1718 param.shadowFix = 0f;
1719 continue;
1720 }
1721 }
1722 }
1723 if (!chara.sourceCard.multisize || (chara.pos.x == cx && chara.pos.z == cz))
1724 {
1725 if (chara.IsDeadOrSleeping && chara.IsPCC)
1726 {
1727 float num16 = chara.renderer.data.size.y * 0.3f;
1728 if (thingPos.y > max)
1729 {
1730 thingPos.y = max;
1731 }
1732 float num17 = thingPos.y + num16;
1733 float num18 = (float)num14 * -0.01f;
1734 if (num17 > zSetting.thresh1)
1735 {
1736 num18 = zSetting.mod1;
1737 }
1738 _actorPos.x += thingPos.x;
1739 _actorPos.y += thingPos.y;
1740 _actorPos.z += renderSetting.laydownZ + num18;
1741 param.liquidLv = ((thingPos.y == 0f && liquidLv > 0) ? 90 : 0);
1742 thingPos.y += num16 * 0.8f;
1743 chara.renderer.Draw(param, ref _actorPos, liquidLv == 0);
1744 }
1745 else
1746 {
1747 param.liquidLv = liquidLv;
1748 if (isUnderwater)
1749 {
1750 if (chara.Pref.FloatUnderwater)
1751 {
1752 float num19 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight);
1753 float num20 = floatYs[chara.uid % 10] + 10f + (float)(chara.uid % 30);
1754 orgY += 0.01f * num20 - num19;
1755 _actorPos.y += 0.01f * num20 - num19;
1756 param.shadowFix -= 0.01f * num20 - num19;
1757 }
1758 }
1759 else if (liquidLv > 0)
1760 {
1761 if (chara.Pref.Float && !flag && !hasBridge)
1762 {
1763 if (liquidLv > 20)
1764 {
1765 float num21 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight);
1766 orgY += 0.01f * floatY - num21;
1767 _actorPos.y += 0.01f * floatY - num21;
1768 int num22 = TileType.FloorWaterShallow.LiquidLV * 10;
1769 num22 -= (int)(floatY * 0.5f);
1770 param.liquidLv = num22;
1771 }
1772 else
1773 {
1774 param.liquidLv -= 20;
1775 }
1776 }
1777 param.liquidLv += chara.Pref.liquidMod;
1778 if (param.liquidLv < 1)
1779 {
1780 param.liquidLv = 1;
1781 }
1782 else if (param.liquidLv > 99 + chara.Pref.liquidModMax)
1783 {
1784 param.liquidLv = 99 + chara.Pref.liquidModMax;
1785 }
1786 }
1787 if (!chara.IsPC && EMono.pc.host != chara && !chara.renderer.IsMoving && detail.charas.Count > 1 && (detail.charas.Count != 2 || !detail.charas[0].IsDeadOrSleeping || !detail.charas[0].IsPCC))
1788 {
1789 _actorPos += renderSetting.charaPos[1 + ((num3 < 4) ? num3 : 3)];
1790 }
1791 _actorPos.z += 0.01f * (float)num14 + renderSetting.charaZ;
1792 num3++;
1793 if (flag6)
1794 {
1795 _actorPos.z += chara.renderer.data.hangedFixZ;
1796 }
1797 chara.renderer.Draw(param, ref _actorPos, liquidLv == 0);
1798 }
1799 }
1800 param.x = orgX;
1801 param.y = orgY;
1802 param.z = orgZ;
1803 }
1804 return;
1805 IL_71ea:
1806 if (isSnowCovered && (sourceBlock.id != 0 || this.cell.hasDoor) && !snowed && !this.cell.isClearSnow && ((!this.cell.Front.HasRoof && !this.cell.Front.HasBlock) || (!this.cell.Right.HasRoof && !this.cell.Right.HasBlock)))
1807 {
1808 snowed = true;
1809 }
1810 if (this.cell.effect != null)
1811 {
1812 if (this.cell.effect.IsLiquid)
1813 {
1814 SourceCellEffect.Row sourceEffect = this.cell.sourceEffect;
1815 SourceMaterial.Row defaultMaterial = sourceEffect.DefaultMaterial;
1816 tile = 4 + Rand.bytes[index % Rand.MaxBytes] % 4;
1817 param.tile = tile + this.cell.sourceEffect._tiles[0];
1818 param.mat = defaultMaterial;
1819 param.matColor = ((this.cell.effect.color == 0) ? GetColorInt(ref defaultMaterial.matColor, sourceEffect.colorMod) : this.cell.effect.color);
1820 sourceEffect.renderData.Draw(param);
1821 }
1822 else
1823 {
1824 param.tile = this.cell.effect.source._tiles[0];
1825 SourceCellEffect.Row sourceEffect2 = this.cell.sourceEffect;
1826 if (sourceEffect2.anime.Length != 0)
1827 {
1828 if (sourceEffect2.anime.Length > 2)
1829 {
1830 float num23 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[2];
1831 if (!(num23 >= (float)sourceEffect2.anime[0]))
1832 {
1833 param.tile += num23;
1834 }
1835 }
1836 else
1837 {
1838 float num24 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[0];
1839 param.tile += num24;
1840 }
1841 }
1842 if (this.cell.effect.IsFire)
1843 {
1845 }
1846 else
1847 {
1848 this.cell.effect.source.renderData.Draw(param);
1849 }
1850 }
1851 }
1852 param.color = floorLight;
1853 if (this.cell.critter != null)
1854 {
1855 Critter critter = this.cell.critter;
1856 int snowTile = critter.tile;
1857 if (snowed && critter.SnowTile != 0)
1858 {
1859 critter.x = 0.06f;
1860 critter.y = -0.06f;
1861 snowTile = critter.SnowTile;
1862 }
1863 else
1864 {
1865 critter.Update();
1866 }
1867 pass = passObjSS;
1869 batch.matrices[pass.idx].m03 = param.x + (float)(int)(critter.x * 100f) * 0.01f;
1870 batch.matrices[pass.idx].m13 = param.y + (float)(int)(critter.y * 100f) * 0.01f;
1871 batch.matrices[pass.idx].m23 = param.z;
1872 batch.tiles[pass.idx] = snowTile * ((!critter.reverse) ? 1 : (-1));
1874 pass.idx++;
1875 if (pass.idx == pass.batchSize)
1876 {
1877 pass.NextBatch();
1878 }
1879 }
1880 if (detail != null)
1881 {
1882 TransAnime anime3 = detail.anime;
1883 if (anime3 != null && !anime3.animeBlock)
1884 {
1885 TransAnime anime4 = detail.anime;
1886 param.x += anime4.v.x;
1887 param.y += anime4.v.y;
1888 param.z += anime4.v.z;
1889 }
1890 }
1891 if (this.cell.obj != 0 && !this.cell.sourceObj.renderData.SkipOnMap)
1892 {
1893 SourceObj.Row sourceObj = this.cell.sourceObj;
1894 if (!snowed || sourceObj.snowTile <= 0)
1895 {
1896 param.snow = snowed;
1897 param.mat = this.cell.matObj;
1898 orgY = param.y;
1899 if (param.liquidLv > 0)
1900 {
1901 if (sourceObj.pref.Float)
1902 {
1903 param.y += 0.01f * floatY;
1904 if (liquidLv > 10)
1905 {
1906 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
1907 }
1908 liquidLv -= (int)(floatY * 0.5f);
1909 param.liquidLv = liquidLv;
1910 }
1911 if (sourceObj.tileType.IsWaterTop)
1912 {
1913 param.liquidLv = 0;
1914 }
1915 else
1916 {
1917 param.liquidLv += sourceObj.pref.liquidMod;
1918 if (param.liquidLv < 1)
1919 {
1920 param.liquid = 1f;
1921 }
1922 else if (param.liquidLv > 99 + sourceObj.pref.liquidModMax)
1923 {
1924 param.liquidLv = 99 + sourceObj.pref.liquidModMax;
1925 }
1926 }
1927 }
1928 if (sourceObj.useAltColor)
1929 {
1930 param.matColor = ((sourceObj.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.altColor, sourceObj.colorMod));
1931 }
1932 else
1933 {
1934 param.matColor = ((sourceObj.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, sourceObj.colorMod));
1935 }
1936 if (sourceObj.HasGrowth)
1937 {
1939 }
1940 else
1941 {
1942 if (this.cell.autotileObj != 0)
1943 {
1944 param.tile = sourceObj._tiles[0] + this.cell.autotileObj;
1945 }
1946 else if (sourceObj.tileType.IsUseBlockDir)
1947 {
1948 param.tile = sourceObj._tiles[this.cell.blockDir % sourceObj._tiles.Length];
1949 }
1950 else
1951 {
1952 param.tile = sourceObj._tiles[this.cell.objDir % sourceObj._tiles.Length];
1953 }
1954 if (_lowblock && sourceObj.tileType.IsSkipLowBlock)
1955 {
1956 param.tile += ((param.tile > 0f) ? 1 : (-1)) * 3000000;
1957 }
1958 orgY = param.y;
1959 orgZ = param.z;
1960 param.y += sourceObj.pref.y;
1961 param.z += sourceObj.pref.z;
1962 sourceObj.renderData.Draw(param);
1963 param.y = orgY;
1964 param.z = orgZ;
1965 int shadow3 = sourceObj.pref.shadow;
1966 if (shadow3 > 1 && !this.cell.ignoreObjShadow)
1967 {
1968 passShadow.AddShadow(param.x + sourceObj.renderData.offsetShadow.x, param.y + sourceObj.renderData.offsetShadow.y, param.z + sourceObj.renderData.offsetShadow.z, ShadowData.Instance.items[shadow3], sourceObj.pref, 0, param.snow);
1969 }
1970 param.y = orgY;
1971 }
1972 }
1973 }
1974 if (this.cell.decal != 0 && sourceFloor.tileType.AllowBlood)
1975 {
1976 passDecal.Add(param, (int)this.cell.decal, floorLight);
1977 }
1978 if (highlightCells)
1979 {
1980 switch (ActionMode.FlagCell.mode)
1981 {
1982 case AM_FlagCell.Mode.flagWallPillar:
1983 if (this.cell.isToggleWallPillar)
1984 {
1985 passArea.Add(param, 34f, 0f);
1986 }
1987 break;
1988 case AM_FlagCell.Mode.flagOcclusion:
1989 if (this.cell.toggleOcclusion)
1990 {
1991 passArea.Add(param, 34f, 0f);
1992 }
1993 break;
1994 case AM_FlagCell.Mode.flagSnow:
1995 if (this.cell.isClearSnow)
1996 {
1997 passArea.Add(param, 34f, 0f);
1998 }
1999 break;
2000 case AM_FlagCell.Mode.flagFloat:
2001 if (this.cell.isForceFloat)
2002 {
2003 passArea.Add(param, 34f, 0f);
2004 }
2005 break;
2006 case AM_FlagCell.Mode.flagClear:
2007 if (this.cell.isClearArea)
2008 {
2009 passArea.Add(param, 34f, 0f);
2010 }
2011 break;
2012 }
2013 }
2014 if (detail == null)
2015 {
2016 return;
2017 }
2018 if (highlightArea && detail.area != null)
2019 {
2020 passArea.Add(param, (int)detail.area.GetTile(index) - ((!subtleHighlightArea) ? 1 : 0), 0f);
2021 }
2022 if (detail.footmark != null && sourceFloor.id != 0)
2023 {
2024 param.tile = detail.footmark.tile;
2025 param.mat = matFloor;
2026 param.matColor = 104025f;
2028 }
2029 goto IL_7d54;
2030 IL_16be:
2031 if (this.cell.isSlopeEdge)
2032 {
2033 float num25 = (float)height * _heightMod.y;
2034 orgY = param.y;
2035 orgZ = param.z;
2036 param.dir = this.cell.blockDir;
2037 if (snowed)
2038 {
2039 param.color = floorLight;
2040 }
2041 SourceBlock.Row defBlock;
2042 if (sourceBlock.tileType.IsFullBlock)
2043 {
2044 defBlock = sourceBlock;
2045 param.mat = matBlock;
2046 param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
2047 param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
2048 }
2049 else
2050 {
2051 defBlock = sourceFloor._defBlock;
2052 param.mat = matFloor;
2053 param.tile = defBlock._tiles[this.cell.blockDir % defBlock._tiles.Length];
2054 if (defBlock.id != 1)
2055 {
2056 param.matColor = ((sourceFloor.colorMod == 0) ? 104025 : GetColorInt(ref matFloor.matColor, sourceFloor.colorMod));
2057 }
2058 else
2059 {
2060 param.matColor = 104025f;
2061 }
2062 }
2063 for (int num26 = 0; (float)num26 < num25 / heightBlockSize; num26++)
2064 {
2065 param.y += ugFix.y;
2066 param.z += ugFix.z + slopeFixZ * (float)num26;
2067 defBlock.renderData.Draw(param);
2068 if (this.cell.pcSync && EMono.player.lightPower > 0f)
2069 {
2070 float num27 = param.tile;
2071 param.tile = 0f;
2073 param.tile = num27;
2074 }
2075 }
2076 param.y = orgY;
2077 param.z = orgZ;
2078 }
2079 param.color = floorLight;
2080 if (!isWater && (this.cell.Front.sourceFloor.tileType.IsWater || this.cell.Right.sourceFloor.tileType.IsWater) && this.cell.sourceBlock.tileType.RenderWaterBlock && !flag)
2081 {
2082 orgY = param.y;
2083 orgZ = param.z;
2084 int num28 = 0;
2085 if (sourceBlock.tileType.IsFullBlock)
2086 {
2088 num28 = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
2089 }
2090 else
2091 {
2092 SourceBlock.Row row3 = sourceFloor._defBlock;
2093 num28 = row3._tiles[this.cell.blockDir % row3._tiles.Length];
2094 }
2095 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)
2096 {
2097 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;
2098 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z;
2099 param.tile = num28 + ((!this.cell.Front.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
2101 }
2102 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)
2103 {
2104 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;
2105 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z;
2106 param.tile = num28 + ((!this.cell.Right.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
2108 }
2109 param.y = orgY;
2110 param.z = orgZ;
2111 }
2112 if (showBorder && !this.cell.outOfBounds)
2113 {
2114 param.matColor = 104025f;
2115 if (cx == EMono._map.bounds.x)
2116 {
2117 renderBorder.Draw(param, 12 + (EMono.world.date.IsNight ? 4 : 0));
2118 }
2119 else if (cx == EMono._map.bounds.maxX)
2120 {
2121 renderBorder.Draw(param, 13 + (EMono.world.date.IsNight ? 4 : 0));
2122 }
2123 if (cz == EMono._map.bounds.z)
2124 {
2125 renderBorder.Draw(param, 14 + (EMono.world.date.IsNight ? 4 : 0));
2126 }
2127 else if (cz == EMono._map.bounds.maxZ)
2128 {
2129 renderBorder.Draw(param, 15 + (EMono.world.date.IsNight ? 4 : 0));
2130 }
2131 }
2132 if (this.cell.isSkyFloor || (detail != null && detail.anime != null && detail.anime.drawBlock))
2133 {
2134 orgY = param.y;
2135 orgZ = param.z;
2136 SourceBlock.Row defBlock2 = sourceFloor._defBlock;
2137 param.mat = matFloor;
2138 param.tile = defBlock2._tiles[this.cell.blockDir % defBlock2._tiles.Length];
2139 if (defBlock2.id != 1)
2140 {
2141 param.matColor = ((sourceFloor.colorMod == 0) ? 104025 : GetColorInt(ref matFloor.matColor, sourceFloor.colorMod));
2142 }
2143 else
2144 {
2145 param.matColor = 104025f;
2146 }
2147 for (int num29 = 0; num29 < ((!this.cell.isSkyFloor) ? 1 : EMono._map.config.skyBlockHeight); num29++)
2148 {
2149 param.y += ugFix.y;
2150 param.z += ugFix.z + slopeFixZ * (float)num29;
2151 defBlock2.renderData.Draw(param);
2152 }
2153 param.y = orgY;
2154 param.z = orgZ;
2155 }
2156 if (!sourceFloor.tileType.IsSkipFloor)
2157 {
2158 if ((hasBridge && sourceBridge.tileType.CastShadowSelf) || this.cell.castFloorShadow)
2159 {
2160 floorLight2 = _lightMod * light * 0.2f + _baseBrightness + _shadowStrength * floorShadowStrength * (isWater ? 0.7f : (hasBridge ? 1f : (0.6f * (1f - nightRatio))));
2161 if (snowed)
2162 {
2163 floorLight2 = (int)((double)floorLight2 * 0.85 * 50.0) * 262144 + snowColorToken;
2164 }
2165 else
2166 {
2167 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);
2168 }
2169 param.color = floorLight2;
2170 if (this.cell.lotShade)
2171 {
2173 }
2174 }
2175 floorMatColor = ((sourceFloor.colorMod == 0) ? 104025 : GetColorInt(ref matFloor.matColor, sourceFloor.colorMod));
2176 if (isWater && flag)
2177 {
2178 param.y -= 0.01f * floatY;
2179 }
2180 if (!sourceBlock.tileType.IsSkipFloor || sourceBlock.transparent || hasBridge || this.cell.hasDoor || this.cell.skipRender)
2181 {
2182 param.mat = matFloor;
2183 param.tile = sourceFloor._tiles[floorDir % sourceFloor._tiles.Length];
2184 param.matColor = floorMatColor;
2185 param.snow = snowed;
2186 if (sourceFloor.anime.Length != 0)
2187 {
2188 int num30 = (int)(Time.realtimeSinceStartup * 1000f / (float)sourceFloor.anime[1] % (float)sourceFloor.anime[0]);
2189 param.tile += num30;
2190 }
2191 if (this.cell.isDeck)
2192 {
2193 param.z += 1f;
2194 if ((bool)sourceFloor.renderData.subData)
2195 {
2196 sourceFloor.renderData.subData.Draw(param);
2197 }
2198 sourceFloor.renderData.Draw(param);
2199 param.z -= 1f;
2200 }
2201 else
2202 {
2203 if ((bool)sourceFloor.renderData.subData)
2204 {
2205 sourceFloor.renderData.subData.Draw(param);
2206 }
2207 sourceFloor.renderData.Draw(param);
2208 }
2209 int num31 = 0;
2210 if (isSnowCovered && sourceFloor == FLOOR.sourceSnow && !this.cell.hasDoor)
2211 {
2212 if (!this.cell.Right.IsSnowTile && this.cell.Right.topHeight == this.cell.topHeight)
2213 {
2214 num31++;
2215 }
2216 if (!this.cell.Front.IsSnowTile && this.cell.Front.topHeight == this.cell.topHeight)
2217 {
2218 num31 += 2;
2219 }
2220 if (num31 != 0)
2221 {
2222 param.tile = 448 + num31 + 12;
2223 param.z -= 0.1f;
2224 sourceFloor.renderData.Draw(param);
2225 param.z += 0.1f;
2226 }
2227 }
2228 if (this.cell.shadow != 0 && !hasBridge && !this.cell.skipRender)
2229 {
2230 if (snowed)
2231 {
2233 {
2234 param.tile = 448 + this.cell.shadow + 8 + (this.cell.HasFence ? 4 : 0);
2235 param.z -= 0.01f;
2236 sourceFloor.renderData.Draw(param);
2237 }
2238 }
2239 else
2240 {
2241 pass = passEdge;
2243 batch.matrices[pass.idx].m03 = param.x + ambientShadowFix[this.cell.shadow].x;
2244 batch.matrices[pass.idx].m13 = param.y + ambientShadowFix[this.cell.shadow].y;
2245 batch.matrices[pass.idx].m23 = param.z + ambientShadowFix[this.cell.shadow].z;
2246 batch.tiles[pass.idx] = 448 + this.cell.shadow;
2248 batch.matColors[pass.idx] = 104025f;
2249 pass.idx++;
2250 if (pass.idx == pass.batchSize)
2251 {
2252 pass.NextBatch();
2253 }
2254 }
2255 if (!sourceFloor.ignoreTransition && !snowed)
2256 {
2257 Cell back = this.cell.Back;
2258 if (back.sourceBlock.transition[0] != -1 && back.isSeen && !back.hasDoor)
2259 {
2260 pass = passFloor;
2262 batch.matrices[pass.idx].m03 = param.x + transitionFix[0].x;
2263 batch.matrices[pass.idx].m13 = param.y + transitionFix[0].y;
2264 batch.matrices[pass.idx].m23 = param.z + transitionFix[0].z;
2265 batch.tiles[pass.idx] = 480 + back.sourceBlock.transition[0] + Rand.bytes[index % Rand.MaxBytes] % back.sourceBlock.transition[1];
2267 batch.matColors[pass.idx] = GetColorInt(ref back.matBlock.matColor, back.sourceBlock.colorMod);
2268 pass.idx++;
2269 if (pass.idx == pass.batchSize)
2270 {
2271 pass.NextBatch();
2272 }
2273 }
2274 back = this.cell.Left;
2275 if (back.sourceBlock.transition[0] != -1 && back.isSeen && !back.hasDoor)
2276 {
2277 pass = passFloor;
2279 batch.matrices[pass.idx].m03 = param.x + transitionFix[1].x;
2280 batch.matrices[pass.idx].m13 = param.y + transitionFix[1].y;
2281 batch.matrices[pass.idx].m23 = param.z + transitionFix[1].z;
2282 batch.tiles[pass.idx] = 512 + back.sourceBlock.transition[0] + Rand.bytes[index % Rand.MaxBytes] % back.sourceBlock.transition[1];
2284 batch.matColors[pass.idx] = GetColorInt(ref back.matBlock.matColor, back.sourceBlock.colorMod);
2285 pass.idx++;
2286 if (pass.idx == pass.batchSize)
2287 {
2288 pass.NextBatch();
2289 }
2290 }
2291 }
2292 }
2293 if (this.cell.autotile != 0 && sourceFloor.autotile != 0 && (!hasBridge || this.cell.bridgeHeight - this.cell.height > 3) && !this.cell.skipRender && num31 == 0)
2294 {
2295 pass = (isWater ? passAutoTileWater : passAutoTile);
2297 batch.matrices[pass.idx].m03 = param.x;
2298 batch.matrices[pass.idx].m13 = param.y;
2299 batch.matrices[pass.idx].m23 = param.z + ((hasBridge || this.cell._block != 0) ? 0.8f : 0f);
2300 batch.tiles[pass.idx] = (26 + sourceFloor.autotile / 2) * 32 + sourceFloor.autotile % 2 * 16 + this.cell.autotile;
2301 batch.colors[pass.idx] = param.color + (float)((int)(sourceFloor.autotileBrightness * 100f) * 262144);
2303 pass.idx++;
2304 if (pass.idx == pass.batchSize)
2305 {
2306 pass.NextBatch();
2307 }
2308 }
2309 }
2310 if (isWater)
2311 {
2312 int num32 = 12;
2313 int num33 = this.cell.shore / num32;
2314 int num34 = this.cell.shore % num32;
2315 bool isShoreSand = this.cell.isShoreSand;
2316 if (this.cell.shore != 0)
2317 {
2318 Cell cell = (((num33 & 1) != 0) ? this.cell.Back : (((num33 & 2) != 0) ? this.cell.Right : (((num33 & 4) != 0) ? this.cell.Front : this.cell.Left)));
2319 if (isShoreSand && !cell.sourceFloor.isBeach)
2320 {
2321 cell = (((num33 & 8) != 0) ? this.cell.Left : (((num33 & 4) != 0) ? this.cell.Front : (((num33 & 2) != 0) ? this.cell.Right : this.cell.Back)));
2322 }
2323 if (!cell.IsSnowTile)
2324 {
2325 param.matColor = GetColorInt(ref cell.matFloor.matColor, cell.sourceFloor.colorMod);
2326 if (isShoreSand)
2327 {
2328 pass = passShore;
2330 batch.matrices[pass.idx].m03 = param.x;
2331 batch.matrices[pass.idx].m13 = param.y;
2332 batch.matrices[pass.idx].m23 = param.z;
2333 batch.tiles[pass.idx] = 768 + this.cell.shore / num32;
2336 pass.idx++;
2337 if (pass.idx == pass.batchSize)
2338 {
2339 pass.NextBatch();
2340 }
2341 num34 = 2;
2342 }
2343 else
2344 {
2345 num34 = cell.sourceFloor.edge;
2346 }
2347 param.tile = (24 + num34 / 2) * 32 + num34 % 2 * 16 + num33;
2349 }
2350 }
2351 if (this.cell.Back.isShoreSand && ((this.cell.Back.shore / num32) & 8) != 0 && this.cell.Left.isShoreSand && ((this.cell.Left.shore / num32) & 1) != 0)
2352 {
2353 param.tile = 785f;
2354 param.matColor = GetColorInt(ref this.cell.BackLeft.matFloor.matColor, this.cell.BackLeft.sourceFloor.colorMod);
2356 Draw(60);
2357 }
2358 if (this.cell.Back.isShoreSand && ((this.cell.Back.shore / num32) & 2) != 0 && this.cell.Right.isShoreSand && ((this.cell.Right.shore / num32) & 1) != 0)
2359 {
2360 param.tile = 786f;
2361 param.matColor = GetColorInt(ref this.cell.BackRight.matFloor.matColor, this.cell.BackRight.sourceFloor.colorMod);
2363 Draw(56);
2364 }
2365 if (this.cell.Front.isShoreSand && ((this.cell.Front.shore / num32) & 2) != 0 && this.cell.Right.isShoreSand && ((this.cell.Right.shore / num32) & 4) != 0)
2366 {
2367 param.tile = 787f;
2368 param.matColor = GetColorInt(ref this.cell.FrontRight.matFloor.matColor, this.cell.FrontRight.sourceFloor.colorMod);
2370 Draw(48);
2371 }
2372 if (this.cell.Front.isShoreSand && ((this.cell.Front.shore / num32) & 8) != 0 && this.cell.Left.isShoreSand && ((this.cell.Left.shore / num32) & 4) != 0)
2373 {
2374 param.tile = 788f;
2375 param.matColor = GetColorInt(ref this.cell.FrontLeft.matFloor.matColor, this.cell.FrontLeft.sourceFloor.colorMod);
2377 Draw(52);
2378 }
2379 if (this.cell._bridge != 0 && this.cell.isBridgeEdge && !this.cell.hidePillar)
2380 {
2381 pass = passEdge;
2383 batch.matrices[pass.idx].m03 = param.x + waterEdgeBridgeFix.x;
2384 batch.matrices[pass.idx].m13 = param.y + waterEdgeBridgeFix.y;
2385 batch.matrices[pass.idx].m23 = param.z + waterEdgeBridgeFix.z;
2386 batch.tiles[pass.idx] = 616 + waterAnimeIndex % 4;
2388 batch.matColors[pass.idx] = 104025f;
2389 pass.idx++;
2390 if (pass.idx == pass.batchSize)
2391 {
2392 pass.NextBatch();
2393 }
2394 }
2395 bool flag8 = false;
2396 if (isShoreSand)
2397 {
2398 if ((num33 & 1) != 0)
2399 {
2400 if ((num33 & 8) != 0)
2401 {
2402 if ((num33 & 2) == 0 && (num33 & 4) == 0)
2403 {
2404 Draw(16);
2405 }
2406 flag8 = true;
2407 }
2408 if ((num33 & 2) != 0)
2409 {
2410 if ((num33 & 8) == 0 && (num33 & 4) == 0)
2411 {
2412 Draw(20);
2413 }
2414 flag8 = true;
2415 }
2416 }
2417 if ((num33 & 4) != 0)
2418 {
2419 if ((num33 & 8) != 0)
2420 {
2421 if ((num33 & 2) == 0 && (num33 & 1) == 0)
2422 {
2423 Draw(24);
2424 }
2425 flag8 = true;
2426 }
2427 if ((num33 & 2) != 0)
2428 {
2429 if ((num33 & 8) == 0 && (num33 & 1) == 0)
2430 {
2431 Draw(28);
2432 }
2433 flag8 = true;
2434 }
2435 }
2436 if (!flag8)
2437 {
2438 if (!this.cell.Front.sourceFloor.tileType.IsWater && !this.cell.Front.isDeck)
2439 {
2440 Draw(8);
2441 }
2442 if (!this.cell.Right.sourceFloor.tileType.IsWater && !this.cell.Right.isDeck)
2443 {
2444 Draw(12);
2445 }
2446 }
2447 }
2448 if (!flag8)
2449 {
2450 if (!this.cell.Back.sourceFloor.tileType.IsWater && !this.cell.Back.isDeck)
2451 {
2452 pass = passEdge;
2454 batch.tiles[pass.idx] = 608 + waterAnimeIndex % 4;
2455 batch.matColors[pass.idx] = 104025f;
2456 if (((this.cell.shore / num32) & 1) != 0)
2457 {
2458 if (isShoreSand)
2459 {
2460 param.matColor = GetColorInt(ref this.cell.Back.matFloor.matColor, this.cell.Back.sourceFloor.colorMod);
2461 batch.matrices[pass.idx].m03 = param.x + waterEdgeFixShoreSand.x;
2462 batch.matrices[pass.idx].m13 = param.y + waterEdgeFixShoreSand.y;
2463 batch.matrices[pass.idx].m23 = param.z + waterEdgeFixShoreSand.z;
2466 }
2467 else
2468 {
2469 batch.matrices[pass.idx].m03 = param.x;
2470 batch.matrices[pass.idx].m13 = param.y;
2471 batch.matrices[pass.idx].m23 = param.z + waterEdgeFixShore.z;
2472 }
2473 }
2474 else
2475 {
2476 batch.matrices[pass.idx].m03 = param.x;
2477 batch.matrices[pass.idx].m13 = param.y;
2478 batch.matrices[pass.idx].m23 = param.z + waterEdgeFix.z;
2479 batch.tiles[pass.idx] += 12f;
2480 }
2482 pass.idx++;
2483 if (pass.idx == pass.batchSize)
2484 {
2485 pass.NextBatch();
2486 }
2487 }
2488 if (!this.cell.Left.sourceFloor.tileType.IsWater && !this.cell.Left.isDeck)
2489 {
2490 pass = passEdge;
2492 batch.tiles[pass.idx] = 612 + waterAnimeIndex % 4;
2493 batch.matColors[pass.idx] = 104025f;
2494 if (((this.cell.shore / num32) & 8) != 0)
2495 {
2496 if (isShoreSand)
2497 {
2498 param.matColor = GetColorInt(ref this.cell.Left.matFloor.matColor, this.cell.Left.sourceFloor.colorMod);
2499 batch.matrices[pass.idx].m03 = param.x + waterEdgeFixShoreSand.x;
2500 batch.matrices[pass.idx].m13 = param.y + waterEdgeFixShoreSand.y;
2501 batch.matrices[pass.idx].m23 = param.z + waterEdgeFixShoreSand.z;
2504 }
2505 else
2506 {
2507 batch.matrices[pass.idx].m03 = param.x;
2508 batch.matrices[pass.idx].m13 = param.y;
2509 batch.matrices[pass.idx].m23 = param.z + waterEdgeFixShore.z;
2510 }
2511 }
2512 else
2513 {
2514 batch.matrices[pass.idx].m03 = param.x;
2515 batch.matrices[pass.idx].m13 = param.y;
2516 batch.matrices[pass.idx].m23 = param.z + waterEdgeFix.z;
2517 batch.tiles[pass.idx] += 12f;
2518 }
2520 pass.idx++;
2521 if (pass.idx == pass.batchSize)
2522 {
2523 pass.NextBatch();
2524 }
2525 }
2526 }
2527 if (flag)
2528 {
2529 param.y += 0.01f * floatY;
2530 }
2531 }
2532 if (flag)
2533 {
2534 param.z -= 1f;
2535 }
2536 }
2537 if (this.cell.skipRender)
2538 {
2539 if (this.cell.pcSync)
2540 {
2541 param.tile = 0f;
2543 }
2544 return;
2545 }
2546 if (hasBridge)
2547 {
2548 param.y = (float)(cz - cx) * screen.tileAlign.y + (float)(int)this.cell.bridgeHeight * _heightMod.y;
2549 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)(int)this.cell.bridgeHeight * _heightMod.z;
2550 if (flag)
2551 {
2552 param.y += 0.01f * floatY;
2553 }
2554 param.color = floorLight;
2555 param.mat = matBridge;
2556 floorMatColor = ((sourceBridge.colorMod == 0) ? 104025 : GetColorInt(ref matBridge.matColor, sourceBridge.colorMod));
2557 param.dir = this.cell.floorDir;
2558 param.tile = sourceBridge._tiles[this.cell.floorDir % sourceBridge._tiles.Length];
2559 param.matColor = floorMatColor;
2560 sourceBridge.renderData.Draw(param);
2561 if (this.cell.autotileBridge != 0 && sourceBridge.autotile != 0)
2562 {
2565 batch.matrices[pass.idx].m03 = param.x;
2566 batch.matrices[pass.idx].m13 = param.y;
2567 batch.matrices[pass.idx].m23 = param.z + ((this.cell._block != 0) ? 0.8f : 0f);
2568 batch.tiles[pass.idx] = (26 + sourceBridge.autotile / 2) * 32 + sourceBridge.autotile % 2 * 16 + this.cell.autotileBridge;
2569 batch.colors[pass.idx] = param.color + (float)((int)(sourceBridge.autotileBrightness * 100f) * 262144);
2571 pass.idx++;
2572 if (pass.idx == pass.batchSize)
2573 {
2574 pass.NextBatch();
2575 }
2576 }
2577 if (this.cell.shadow != 0)
2578 {
2580 {
2581 param.tile = 448 + this.cell.shadow + 8 + (this.cell.HasFence ? 4 : 0);
2582 param.z -= 0.01f;
2583 sourceBridge.renderData.Draw(param);
2584 }
2585 else
2586 {
2587 pass = passEdge;
2589 batch.matrices[pass.idx].m03 = param.x + ambientShadowFix[this.cell.shadow].x;
2590 batch.matrices[pass.idx].m13 = param.y + ambientShadowFix[this.cell.shadow].y;
2591 batch.matrices[pass.idx].m23 = param.z + ambientShadowFix[this.cell.shadow].z;
2592 batch.tiles[pass.idx] = 448 + this.cell.shadow;
2594 batch.matColors[pass.idx] = 104025f;
2595 pass.idx++;
2596 if (pass.idx == pass.batchSize)
2597 {
2598 pass.NextBatch();
2599 }
2600 }
2601 }
2602 if (this.cell.isBridgeEdge && this.cell.bridgeHeight - this.cell.height >= 3 && !this.cell.hidePillar && !noSlopMode)
2603 {
2604 orgY = param.y;
2605 orgZ = param.z;
2606 param.y += bridgeFix.y;
2607 param.z += bridgeFix.z;
2608 param.dir = 0;
2609 SourceBlock.Row row4 = sourceBridge._bridgeBlock;
2610 float num35 = (float)(this.cell.bridgeHeight - this.cell.height) * _heightMod.y;
2611 if (this.cell.sourceFloor.tileType == TileType.Sky)
2612 {
2613 num35 += (float)EMono._map.config.skyBlockHeight;
2614 }
2615 int num36 = (int)(num35 / heightBlockSize) + 2;
2616 if (this.cell.bridgePillar != 0)
2617 {
2618 row4 = EMono.sources.blocks[this.cell.bridgePillar];
2619 param.tile = row4._tiles[0] + ((num36 == 2) ? 32 : 0);
2620 param.mat = ((sourceBridge.DefaultMaterial == row4.DefaultMaterial) ? sourceBridge.DefaultMaterial : row4.DefaultMaterial);
2621 param.matColor = ((row4.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, row4.colorMod));
2622 }
2623 else
2624 {
2625 param.mat = matBlock;
2626 param.tile = row4._tiles[0] + 32;
2627 param.matColor = ((row4.colorMod == 0) ? 104025 : GetColorInt(ref matBridge.matColor, row4.colorMod));
2628 }
2629 param.y += ugFixBridgeTop.y;
2630 param.z += ugFixBridgeTop.z;
2631 for (int num37 = 0; num37 < num36; num37++)
2632 {
2633 if (num37 == num36 - 1)
2634 {
2635 param.y = (float)(cz - cx) * screen.tileAlign.y + (float)height * _heightMod.y + ugFixBridgeBottom.y;
2636 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)height * _heightMod.z + ugFixBridgeBottom.z;
2637 }
2638 else
2639 {
2640 param.y += ugFixBridge.y;
2641 param.z += ugFixBridge.z;
2642 }
2643 row4.renderData.Draw(param);
2644 }
2645 param.y = orgY;
2646 param.z = orgZ;
2647 }
2648 }
2649 if (this.cell._deco != 0)
2650 {
2651 param.mat = matFloor;
2652 param.matColor = ((sourceDeco.colorMod == 0) ? 104025 : GetColorInt(ref matDeco.matColor, sourceDeco.colorMod));
2653 param.snow = snowed;
2654 if (sourceDeco.autotile != 0)
2655 {
2656 if (this.cell.autotileDeco != 0)
2657 {
2658 param.tile = (26 + sourceDeco.autotile / 2) * 32 + sourceDeco.autotile % 2 * 16 + this.cell.autotileDeco;
2659 sourceDeco.renderData.Draw(param);
2660 param.z = orgZ;
2661 }
2662 }
2663 else
2664 {
2665 param.tile = sourceDeco._tiles[floorDir % sourceDeco._tiles.Length];
2666 sourceDeco.renderData.Draw(param);
2667 }
2668 }
2669 if (!buildMode && this.cell.highlight != 0)
2670 {
2671 passGuideFloor.Add(this.cell.GetPoint(), (int)this.cell.highlight);
2672 }
2673 param.color = blockLight;
2674 if (isSnowCovered && (sourceBlock.id != 0 || this.cell.hasDoor) && (snowed || this.cell.isClearSnow) && (this.cell.Front.HasRoof || this.cell.Right.HasRoof))
2675 {
2676 snowed = false;
2677 }
2678 int num38 = 0;
2679 if (sourceBlock.id != 0)
2680 {
2681 this.tileType = sourceBlock.tileType;
2682 roomHeight = 0f;
2683 int blockDir = this.cell.blockDir;
2684 bool num39 = this.tileType.blockRenderMode == BlockRenderMode.Floor;
2685 bool flag9 = false;
2686 if (!num39)
2687 {
2688 switch (wallClipMode)
2689 {
2690 case WallClipMode.ByRoom:
2691 if (!this.tileType.RepeatBlock)
2692 {
2693 break;
2694 }
2695 if (currentRoom == null || showFullWall)
2696 {
2697 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.FrontRight.room;
2699 }
2700 else if (this.room != this.cell.Front.room && (this.cell.Front.room == currentRoom || (this.room?.lot != currentLot && this.cell.Front.room?.lot == currentLot)))
2701 {
2702 this.room = this.cell.Front.room;
2703 _lowblock = !this.cell.Front.lotWall && !this.cell.Front.fullWall;
2704 }
2705 else if (this.room != this.cell.Right.room && (this.cell.Right.room == currentRoom || (this.room?.lot != currentLot && this.cell.Right.room?.lot == currentLot)))
2706 {
2707 this.room = this.cell.Right.room;
2708 _lowblock = !this.cell.Right.lotWall && !this.cell.Right.fullWall;
2709 }
2710 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)))
2711 {
2712 this.room = this.cell.FrontRight.room;
2713 _lowblock = !this.cell.FrontRight.lotWall && !this.cell.FrontRight.fullWall;
2714 }
2715 else
2716 {
2717 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.FrontRight.room;
2718 _lowblock = true;
2719 if (!this.tileType.IsFullBlock)
2720 {
2721 if (this.cell.lotWall)
2722 {
2723 _lowblock = false;
2724 }
2725 else if (this.room == currentRoom)
2726 {
2727 _lowblock = !this.cell.fullWall;
2728 }
2729 }
2730 }
2731 flag9 = (this.room != null && this.room.data.atrium) || (this.cell.room != null && this.cell.room.data.atrium);
2732 if (flag9)
2733 {
2734 _lowblock = false;
2735 }
2736 if (this.room == null && alwaysLowblock)
2737 {
2738 _lowblock = true;
2739 roomHeight = 0f;
2740 }
2741 if (this.room != null)
2742 {
2743 maxHeight = (float)(cz - cx) * screen.tileAlign.y + (float)this.room.lot.mh * _heightMod.y;
2744 if (showRoof)
2745 {
2746 roomHeight = this.room.lot.realHeight;
2747 break;
2748 }
2749 if ((noRoofMode && currentRoom == null) || (_lowblock && !this.tileType.ForceRpeatBlock))
2750 {
2751 roomHeight = 0f;
2752 break;
2753 }
2754 int num40 = ((this.room.data.maxHeight == 0) ? 2 : this.room.data.maxHeight);
2755 roomHeight = EMono.setting.render.roomHeightMod * (float)((this.room.lot.height < num40) ? this.room.lot.height : num40) + 0.01f * (float)this.room.lot.heightFix;
2756 }
2757 break;
2758 case WallClipMode.ByLot:
2759 if (defaultBlockHeight > 0f || isIndoor)
2760 {
2761 _lowblock = cx != 0 && cz != Size - 1 && ((!this.cell.Back.HasBlock && !this.cell.Back.isWallEdge) || (!this.cell.Left.HasBlock && !this.cell.Left.isWallEdge) || !this.cell.Back.Left.HasBlock);
2762 if (!_lowblock)
2763 {
2765 maxHeight = (float)(cz - cx) * screen.tileAlign.y + (float)(int)this.cell.TopHeight * _heightMod.y;
2766 }
2767 break;
2768 }
2769 if (showFullWall)
2770 {
2771 _lowblock = this.room != null;
2772 if (_lowblock)
2773 {
2774 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)
2775 {
2776 _lowblock = false;
2777 }
2778 }
2779 else if (this.cell.Back.room != null && this.cell.Back.room.lot == (this.cell.Front.room ?? this.cell.Right.room)?.lot)
2780 {
2781 _lowblock = true;
2782 }
2783 }
2784 else
2785 {
2787 }
2788 if (this.tileType.RepeatBlock)
2789 {
2790 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.FrontRight.room;
2791 if (this.room != null && (!noRoofMode || currentRoom != null) && (!showFullWall || currentRoom == null || this.room.lot == currentRoom.lot))
2792 {
2793 roomHeight = ((_lowblock && !this.tileType.ForceRpeatBlock) ? 0f : this.room.lot.realHeight);
2794 maxHeight = (float)(cz - cx) * screen.tileAlign.y + (float)this.room.lot.mh * _heightMod.y;
2795 }
2796 }
2797 break;
2798 }
2799 }
2800 if (!_lowblock && (double)roomHeight > 1.2 && this.tileType.RepeatBlock)
2801 {
2802 num38 = 1;
2803 }
2804 else if (lowBlock)
2805 {
2806 num38 = 2;
2807 }
2808 param.mat = matBlock;
2809 param.dir = this.cell.blockDir;
2810 param.snow = snowed;
2811 switch (this.tileType.blockRenderMode)
2812 {
2813 case BlockRenderMode.FullBlock:
2814 {
2815 bool invisible = sourceBlock.tileType.Invisible;
2816 if (invisible && (!buildMode || ActionMode.Cinema.IsActive))
2817 {
2818 break;
2819 }
2820 if (this.cell.isSurrounded)
2821 {
2822 switch (innerMode)
2823 {
2824 case InnerMode.InnerBlock:
2825 case InnerMode.BuildMode:
2827 param.color = (int)(50f * blockLight) * 262144;
2828 param.matColor = 104025f;
2829 param.tile = (buildMode ? 1 : 2) + ((_lowblock || defaultBlockHeight > 0f) ? 3000000 : 0);
2831 return;
2832 case InnerMode.None:
2833 case InnerMode.Height:
2834 param.color = blockLight;
2835 break;
2836 }
2837 }
2838 if (snowed)
2839 {
2840 param.color = floorLight;
2841 }
2842 param.color -= (int)(_shadowStrength * 0.8f * 50f) * 262144;
2843 if (currentRoom != null && !showFullWall)
2844 {
2845 _lowblock = true;
2846 roomHeight = 0f;
2847 if (this.cell.room != currentRoom && (this.cell.Front.room == currentRoom || this.cell.Right.room == currentRoom || this.cell.FrontRight.room == currentRoom) && (this.cell.Back.room != currentRoom || this.cell.Right.room != currentRoom) && (this.cell.Front.room != currentRoom || this.cell.Left.room != currentRoom))
2848 {
2849 _lowblock = false;
2850 }
2851 if (!_lowblock)
2852 {
2853 int num42 = ((currentRoom.data.maxHeight == 0) ? 2 : currentRoom.data.maxHeight);
2854 roomHeight = EMono.setting.render.roomHeightMod * (float)((currentRoom.lot.height < num42) ? currentRoom.lot.height : num42) + 0.01f * (float)currentRoom.lot.heightFix;
2855 }
2856 }
2857 if (flag9)
2858 {
2859 _lowblock = (!this.cell.Front.HasFullBlock || !this.cell.Right.HasFullBlock) && (!this.cell.Front.HasFullBlock || !this.cell.Left.HasFullBlock) && (!this.cell.Back.HasFullBlock || !this.cell.Right.HasFullBlock) && (!this.cell.Back.HasFullBlock || !this.cell.Left.HasFullBlock);
2860 if (_lowblock)
2861 {
2862 roomHeight = 0f;
2863 }
2864 }
2865 if (invisible)
2866 {
2867 roomHeight = 0f;
2868 _lowblock = false;
2869 }
2870 if (this.cell.Things.Count > 0)
2871 {
2872 _lowblock = false;
2873 }
2874 param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length] + (_lowblock ? 3000000 : 0);
2875 param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
2876 if (roomHeight == 0f)
2877 {
2878 if (!this.cell.hasDoor)
2879 {
2880 sourceBlock.renderData.Draw(param);
2881 }
2882 }
2883 else
2884 {
2885 sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFixBlock, this.cell.traitDoor?.height ?? 0, this.cell.effect?.FireAmount ?? 0, isBlock: true);
2886 }
2887 Room room2 = this.cell.Front.room ?? this.cell.room;
2888 if (room2 == null && this.cell.Right.room != null)
2889 {
2890 room2 = this.cell.Right.room;
2891 }
2892 if (!invisible && room2 != null)
2893 {
2894 if (room2.lot.idDeco != 0 && !this.cell.hasDoor)
2895 {
2896 param.tile = EMono.sources.blocks[0].ConvertTile(1000 + room2.lot.idDeco);
2897 param.matColor = room2.lot.colDeco;
2898 float y = param.y;
2899 param.y += (float)room2.lot.decoFix * 0.01f;
2901 param.y = y;
2902 }
2903 if (room2.lot.idDeco2 != 0 && roomHeight != 0f && (float)room2.lot.decoFix2 * 0.01f + heightLimitDeco < roomHeight + maxHeight - param.y)
2904 {
2905 param.tile = EMono.sources.blocks[0].ConvertTile(1000 + room2.lot.idDeco2);
2906 param.matColor = room2.lot.colDeco2;
2907 float y2 = param.y;
2908 float num43 = param.z;
2909 param.y += (float)room2.lot.decoFix2 * 0.01f;
2910 param.z += (float)room2.lot.decoFix2 * 0.01f * heightModDeco;
2912 param.y = y2;
2913 param.z = num43;
2914 }
2915 }
2916 room2 = this.cell.Right.room ?? this.cell.room;
2917 if (room2 == null && this.cell.Front.room != null)
2918 {
2919 room2 = this.cell.Front.room;
2920 }
2921 if (!invisible && room2 != null)
2922 {
2923 if (room2.lot.idDeco != 0 && !this.cell.hasDoor)
2924 {
2925 param.tile = EMono.sources.blocks[0].ConvertTile(1000 + room2.lot.idDeco) * -1;
2926 param.matColor = room2.lot.colDeco;
2927 float y3 = param.y;
2928 param.y += (float)room2.lot.decoFix * 0.01f;
2930 param.y = y3;
2931 }
2932 if (room2.lot.idDeco2 != 0 && roomHeight != 0f && (float)room2.lot.decoFix2 * 0.01f + heightLimitDeco < roomHeight + maxHeight - param.y)
2933 {
2934 param.tile = EMono.sources.blocks[0].ConvertTile(1000 + room2.lot.idDeco2) * -1;
2935 param.matColor = room2.lot.colDeco2;
2936 float y4 = param.y;
2937 float num44 = param.z;
2938 param.y += (float)room2.lot.decoFix2 * 0.01f;
2939 param.z += (float)room2.lot.decoFix2 * 0.01f * heightModDeco;
2941 param.y = y4;
2942 param.z = num44;
2943 }
2944 }
2945 break;
2946 }
2947 case BlockRenderMode.WallOrFence:
2948 {
2950 {
2951 showFullWall = true;
2952 _lowblock = false;
2953 }
2954 orgY = param.y;
2955 orgZ = param.z;
2956 param.color = (this.tileType.IsFence ? (floorLight - (float)((int)(_shadowStrength * 0.8f * 50f) * 262144)) : blockLight);
2957 bool flag10 = blockDir == 1 || _lowblock || flag9;
2958 bool flag11 = blockDir == 0 || _lowblock || flag9;
2959 if (!showFullWall && currentRoom != null)
2960 {
2961 if (!flag10)
2962 {
2963 if (currentRoom == this.cell.room || (this.cell.lotWall && this.cell.room?.lot == currentLot && this.cell.Front.room != currentRoom))
2964 {
2965 if (!this.cell.IsRoomEdge || (this.cell.Front.room != this.cell.room && this.cell.FrontRight.room != this.cell.room))
2966 {
2967 flag10 = true;
2968 }
2969 }
2970 else if ((!this.cell.Front.lotWall || this.cell.Front.room?.lot != currentLot) && this.cell.Front.room != currentRoom)
2971 {
2972 flag10 = true;
2973 }
2974 }
2975 if (!flag11)
2976 {
2977 if (currentRoom == this.cell.room || (this.cell.lotWall && this.cell.room?.lot == currentLot && this.cell.Right.room != currentRoom))
2978 {
2979 if (!this.cell.IsRoomEdge || (this.cell.Right.room != this.cell.room && this.cell.FrontRight.room != this.cell.room))
2980 {
2981 flag11 = true;
2982 }
2983 }
2984 else if ((!this.cell.Right.lotWall || this.cell.Right.room?.lot != currentLot) && this.cell.Right.room != currentRoom)
2985 {
2986 flag11 = true;
2987 }
2988 }
2989 }
2990 if (blockDir == 0 || blockDir == 2)
2991 {
2992 param.dir = 0;
2993 Room room3 = this.cell.Front.room ?? this.cell.room;
2994 if (room3 != null && this.tileType.IsWall)
2995 {
2996 if (room3.lot.idDeco != 0 && !this.cell.hasDoor)
2997 {
2998 param.tile = EMono.sources.blocks[0].ConvertTile(1000 + room3.lot.idDeco);
2999 param.matColor = room3.lot.colDeco;
3000 param.y += (float)room3.lot.decoFix * 0.01f;
3002 param.y = orgY;
3003 }
3004 if (room3.lot.idDeco2 != 0 && roomHeight != 0f && !flag10 && (float)room3.lot.decoFix2 * 0.01f + heightLimitDeco < roomHeight + maxHeight - param.y)
3005 {
3006 param.tile = EMono.sources.blocks[0].ConvertTile(1000 + room3.lot.idDeco2);
3007 param.matColor = room3.lot.colDeco2;
3008 param.y += (float)room3.lot.decoFix2 * 0.01f;
3009 param.z += (float)room3.lot.decoFix2 * 0.01f * heightModDeco;
3011 param.y = orgY;
3012 param.z = orgZ;
3013 }
3014 }
3015 Cell left = this.cell.Left;
3016 if (blockDir == 2 && left.sourceBlock.tileType.IsWallOrFence && !this.cell.crossWall)
3017 {
3018 _sourceBlock = left.sourceBlock;
3019 param.mat = left.matBlock;
3020 }
3021 else
3022 {
3024 param.mat = matBlock;
3025 }
3026 this.tileType = _sourceBlock.tileType;
3027 param.tile = (tile = _sourceBlock._tiles[0] + ((flag10 && this.tileType.UseLowBlock) ? 32 : 0));
3028 if (_sourceBlock.useAltColor)
3029 {
3030 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.altColor, _sourceBlock.colorMod));
3031 }
3032 else
3033 {
3034 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, _sourceBlock.colorMod));
3035 }
3036 if (roomHeight == 0f || flag10 || !this.tileType.RepeatBlock)
3037 {
3038 if (!this.cell.hasDoor)
3039 {
3040 _sourceBlock.renderData.Draw(param);
3041 }
3042 }
3043 else
3044 {
3045 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFix, this.cell.traitDoor?.height ?? 0, this.cell.effect?.FireAmount ?? 0);
3046 }
3047 param.z += cornerWallFix2.z;
3048 if ((blockDir == 2 || (this.cell.Front.HasWallOrFence && this.cell.Front.blockDir != 0)) != this.cell.isToggleWallPillar)
3049 {
3050 if (this.cell.Back.IsSnowTile && this.cell.Right.IsSnowTile)
3051 {
3052 param.snow = true;
3053 }
3054 param.tile = _sourceBlock._tiles[0] + ((flag10 && flag11 && this.tileType.UseLowBlock && !flag9) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
3055 if (roomHeight == 0f || !this.tileType.RepeatBlock || (flag10 && flag11 && !flag9))
3056 {
3057 _sourceBlock.renderData.Draw(param);
3058 }
3059 else
3060 {
3061 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFix);
3062 }
3063 }
3064 if (!flag10 && !showRoof && this.cell.Left.HasWallOrFence && this.cell.Left.blockDir != 0 && !this.cell.Left.isToggleWallPillar)
3065 {
3066 orgX = param.x;
3067 param.tile = _sourceBlock._tiles[0] + ((flag10 && this.tileType.UseLowBlock && !flag9) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
3068 param.x += cornerWallFix3.x;
3069 param.y += cornerWallFix3.y;
3070 param.z += cornerWallFix3.z;
3071 if (!flag9 && (roomHeight == 0f || flag10))
3072 {
3073 _sourceBlock.renderData.Draw(param);
3074 }
3075 else
3076 {
3077 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight + cornerWallFix.y, ref renderSetting.peakFix);
3078 }
3079 param.x = orgX;
3080 }
3081 else if (this.cell.FrontLeft.HasWallOrFence && this.cell.FrontLeft.blockDir != 0 && (!flag10 || !this.cell.Left.HasWall) && !this.cell.isToggleWallPillar && !this.cell.Left.isToggleWallPillar)
3082 {
3083 orgX = param.x;
3084 param.tile = _sourceBlock._tiles[0] + ((flag10 && this.tileType.UseLowBlock && !flag9) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
3085 param.x += cornerWallFix.x;
3086 param.y += cornerWallFix.y;
3087 param.z += cornerWallFix.z;
3088 if (!flag9 && (roomHeight == 0f || flag10))
3089 {
3090 _sourceBlock.renderData.Draw(param);
3091 }
3092 else
3093 {
3094 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight + cornerWallFix.y, ref renderSetting.peakFix);
3095 }
3096 param.x = orgX;
3097 }
3098 }
3099 if (blockDir == 1 || blockDir == 2)
3100 {
3101 param.y = orgY;
3102 param.z = orgZ;
3103 param.dir = 1;
3104 Room room4 = this.cell.Right.room ?? this.cell.room;
3105 if (room4 != null && this.tileType.IsWall)
3106 {
3107 if (room4.lot.idDeco != 0 && !this.cell.hasDoor)
3108 {
3109 param.tile = -EMono.sources.blocks[0].ConvertTile(1000 + room4.lot.idDeco);
3110 param.matColor = room4.lot.colDeco;
3111 param.y += (float)room4.lot.decoFix * 0.01f;
3113 param.y = orgY;
3114 }
3115 if (room4.lot.idDeco2 != 0 && roomHeight != 0f && !flag11 && (float)room4.lot.decoFix2 * 0.01f + heightLimitDeco < roomHeight + maxHeight - param.y)
3116 {
3117 param.tile = -EMono.sources.blocks[0].ConvertTile(1000 + room4.lot.idDeco2);
3118 param.matColor = room4.lot.colDeco2;
3119 param.y += (float)room4.lot.decoFix2 * 0.01f;
3120 param.z += (float)room4.lot.decoFix2 * 0.01f * heightModDeco;
3122 param.y = orgY;
3123 param.z = orgZ;
3124 }
3125 }
3126 if (blockDir == 2 && this.cell.room == null && this.cell.Right.room != null)
3127 {
3128 Room room5 = this.cell.Right.room;
3129 maxHeight = (float)(cz - cx) * screen.tileAlign.y + (float)room5.lot.mh * _heightMod.y;
3130 if (showRoof)
3131 {
3132 roomHeight = room5.lot.realHeight;
3133 }
3134 else if ((noRoofMode && currentRoom == null) || (_lowblock && !this.tileType.ForceRpeatBlock))
3135 {
3136 roomHeight = 0f;
3137 }
3138 else
3139 {
3140 int num45 = ((room5.data.maxHeight == 0) ? 2 : room5.data.maxHeight);
3141 roomHeight = EMono.setting.render.roomHeightMod * (float)((room5.lot.height < num45) ? room5.lot.height : num45) + 0.01f * (float)room5.lot.heightFix;
3142 }
3143 }
3144 Cell back2 = this.cell.Back;
3145 if (blockDir == 2 && back2.sourceBlock.tileType.IsWallOrFence && !this.cell.crossWall)
3146 {
3147 _sourceBlock = back2.sourceBlock;
3148 param.mat = back2.matBlock;
3149 }
3150 else
3151 {
3153 param.mat = matBlock;
3154 }
3155 this.tileType = _sourceBlock.tileType;
3156 param.tile = (tile = -_sourceBlock._tiles[0] + ((flag11 && this.tileType.UseLowBlock) ? (-32) : 0));
3157 if (_sourceBlock.useAltColor)
3158 {
3159 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.altColor, _sourceBlock.colorMod));
3160 }
3161 else
3162 {
3163 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, _sourceBlock.colorMod));
3164 }
3165 param.color += _rightWallShade;
3166 if (roomHeight == 0f || flag11 || !this.tileType.RepeatBlock)
3167 {
3168 if (!this.cell.hasDoor)
3169 {
3170 _sourceBlock.renderData.Draw(param);
3171 }
3172 }
3173 else
3174 {
3175 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFix, this.cell.traitDoor?.height ?? 0, this.cell.effect?.FireAmount ?? 0);
3176 }
3177 if ((this.cell.Right.HasWallOrFence && this.cell.Right.blockDir != 1) != this.cell.isToggleWallPillar && (blockDir != 2 || !this.cell.isToggleWallPillar))
3178 {
3179 if (this.cell.Left.IsSnowTile && this.cell.Front.IsSnowTile)
3180 {
3181 param.snow = true;
3182 }
3183 orgX = param.x;
3184 param.tile = _sourceBlock._tiles[0] + ((flag11 && this.tileType.UseLowBlock && !flag9) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
3185 if (!flag9 && (roomHeight == 0f || !this.tileType.RepeatBlock || flag11))
3186 {
3187 _sourceBlock.renderData.Draw(param);
3188 }
3189 else
3190 {
3191 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFix);
3192 }
3193 param.x = orgX;
3194 }
3195 }
3196 param.y = orgY;
3197 param.z = orgZ;
3198 break;
3199 }
3200 case BlockRenderMode.HalfBlock:
3201 param.color = floorLight;
3202 _sourceBlock = ((sourceBlock.id == 5) ? EMono.sources.blocks[matBlock.defBlock] : sourceBlock);
3203 param.tile = _sourceBlock._tiles[0];
3204 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, _sourceBlock.colorMod));
3205 param.tile2 = _sourceBlock.sourceAutoFloor._tiles[0];
3206 param.halfBlockColor = ((_sourceBlock.sourceAutoFloor.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, _sourceBlock.sourceAutoFloor.colorMod));
3207 sourceBlock.renderData.Draw(param);
3208 break;
3209 case BlockRenderMode.Pillar:
3210 {
3211 RenderData renderData2 = sourceBlock.renderData;
3212 param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
3213 param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
3214 int num41 = this.cell.objDir + ((this.cell.objDir >= 7) ? this.cell.objDir : 0) + 1;
3215 if (num41 == 0)
3216 {
3217 renderData2.Draw(param);
3218 }
3219 else
3220 {
3221 renderData2.DrawRepeat(param, num41, sourceBlock.tileType.RepeatSize);
3222 }
3223 param.tile = renderData2.idShadow;
3224 SourcePref shadowPref2 = renderData2.shadowPref;
3225 int shadow4 = shadowPref2.shadow;
3226 passShadow.AddShadow(param.x + renderData2.offsetShadow.x, param.y + renderData2.offsetShadow.y, param.z + renderData2.offsetShadow.z, ShadowData.Instance.items[shadow4], shadowPref2, 0, param.snow);
3227 break;
3228 }
3229 case BlockRenderMode.Floor:
3230 param.color = floorLight;
3231 param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
3232 param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
3233 sourceBlock.renderData.Draw(param);
3234 break;
3235 default:
3236 param.color = floorLight;
3237 param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length] + ((_lowblock && this.tileType.UseLowBlock) ? 3000000 : 0);
3238 param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
3239 if (roomHeight == 0f)
3240 {
3241 sourceBlock.renderData.Draw(param);
3242 }
3243 else
3244 {
3245 sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFixBlock);
3246 }
3247 break;
3248 }
3249 }
3250 if (this.cell.pcSync && EMono.player.lightPower > 0f && !cinemaMode)
3251 {
3252 if (this.cell.room != null || !this.cell.IsRoomEdge || !showRoof)
3253 {
3254 goto IL_718a;
3255 }
3256 if (this.cell._block == 0 || !this.cell.sourceBlock.tileType.RepeatBlock)
3257 {
3258 Room obj = this.cell.FrontRight.room;
3259 if (obj == null || !obj.HasRoof)
3260 {
3261 goto IL_718a;
3262 }
3263 }
3264 }
3265 goto IL_71ea;
3266 IL_718a:
3267 if (!showRoof || !roof || this.cell.room == null || this.cell.Front.room == null || this.cell.Right.room == null)
3268 {
3269 param.tile = num38;
3271 }
3272 goto IL_71ea;
3273 void Draw(int tile)
3274 {
3275 pass = passEdge;
3278 batch.matrices[pass.idx].m03 = param.x + waterEdgeFixShoreSand.x;
3279 batch.matrices[pass.idx].m13 = param.y + waterEdgeFixShoreSand.y;
3280 batch.matrices[pass.idx].m23 = param.z + waterEdgeFixShoreSand.z;
3283 pass.idx++;
3284 if (pass.idx == pass.batchSize)
3285 {
3286 pass.NextBatch();
3287 }
3288 }
3289 }
BlockRenderMode
PlaceState
Definition: PlaceState.cs:2
TraitTrolley trolley
Definition: AI_Trolley.cs:24
virtual bool ShowMaskedThings
Definition: ActionMode.cs:221
bool showWallItem
Definition: AreaData.cs:54
bool atrium
Definition: AreaData.cs:66
int maxHeight
Definition: AreaData.cs:30
virtual byte GetTile(int index)
Definition: Area.cs:75
AreaData data
Definition: BaseArea.cs:29
List< Action > actionsLateUpdate
Definition: BaseCore.cs:29
ScreenGuide guide
MeshPass passArea
Definition: BaseTileMap.cs:141
SourceDeco.Row sourceDeco
Definition: BaseTileMap.cs:496
SourceMaterial.Row matDeco
Definition: BaseTileMap.cs:384
Vector3 cornerWallFix
Definition: BaseTileMap.cs:96
float maxHeight
Definition: BaseTileMap.cs:404
MeshPass passFloor
Definition: BaseTileMap.cs:145
virtual void Draw()
Definition: BaseTileMap.cs:547
int floorMatColor
Definition: BaseTileMap.cs:446
RenderData rendererInnerBlock
Definition: BaseTileMap.cs:203
float heightModDeco
Definition: BaseTileMap.cs:52
SourceFloor.Row sourceBridge
Definition: BaseTileMap.cs:494
float slopeFixZ
Definition: BaseTileMap.cs:50
Vector3 cornerWallFix2
Definition: BaseTileMap.cs:98
SourceMaterial.Row matBridge
Definition: BaseTileMap.cs:382
RenderData rendererFogRoomSolid
Definition: BaseTileMap.cs:217
RenderData rendererWaterBlock
Definition: BaseTileMap.cs:225
Vector3 waterEdgeFixShoreSand
Definition: BaseTileMap.cs:110
MeshPass passGuideBlock
Definition: BaseTileMap.cs:137
MeshPass passShadow
Definition: BaseTileMap.cs:133
RenderData renderBorder
Definition: BaseTileMap.cs:211
Vector3 waterEdgeFixShore
Definition: BaseTileMap.cs:108
static int GetColorInt(ref Color matColor, int p)
float[] lightLookUp
Definition: BaseTileMap.cs:305
TileType tileType
Definition: BaseTileMap.cs:508
Vector3 ugFix
Definition: BaseTileMap.cs:58
float floorLight
Definition: BaseTileMap.cs:388
float lotLight2
Definition: BaseTileMap.cs:83
MeshPass passAutoTileWater
Definition: BaseTileMap.cs:177
RenderData rendererFov
Definition: BaseTileMap.cs:205
WallClipMode wallClipMode
Definition: BaseTileMap.cs:88
Vector3 altitudeFix
Definition: BaseTileMap.cs:102
Vector3 thingPos
Definition: BaseTileMap.cs:482
MeshPass passDecal
Definition: BaseTileMap.cs:157
Vector3[] transitionFix
Definition: BaseTileMap.cs:114
Vector3 waterEdgeFix
Definition: BaseTileMap.cs:104
float lotLight
Definition: BaseTileMap.cs:81
Vector3 _actorPos
Definition: BaseTileMap.cs:440
GameSetting.RenderSetting renderSetting
Definition: BaseTileMap.cs:362
MeshPass passAutoTile
Definition: BaseTileMap.cs:175
float _shadowStrength
Definition: BaseTileMap.cs:422
RenderData rendererShore
Definition: BaseTileMap.cs:209
Vector3 bridgeFix
Definition: BaseTileMap.cs:94
Vector3 ugFixBridgeBottom
Definition: BaseTileMap.cs:62
bool hasBridge
Definition: BaseTileMap.cs:348
SourceBlock.Row _sourceBlock
Definition: BaseTileMap.cs:506
float heightBlockSize
Definition: BaseTileMap.cs:48
RenderData renderFootmark
Definition: BaseTileMap.cs:197
Vector3 freePos
Definition: BaseTileMap.cs:442
MeshPass passGuideFloor
Definition: BaseTileMap.cs:139
MeshPass passEdge
Definition: BaseTileMap.cs:173
Vector3 ugFixBridgeTop
Definition: BaseTileMap.cs:64
Vector3[] ambientShadowFix
Definition: BaseTileMap.cs:112
float heightLimitDeco
Definition: BaseTileMap.cs:54
MeshPass passObjSS
Definition: BaseTileMap.cs:151
float shadowModStrength
Definition: BaseTileMap.cs:124
RenderData rendererFogRoomBlockSolid
Definition: BaseTileMap.cs:219
MeshPass passShore
Definition: BaseTileMap.cs:195
SourceMaterial.Row matFloor
Definition: BaseTileMap.cs:380
Vector3 ugFixBridge
Definition: BaseTileMap.cs:60
Vector3 cornerWallFix3
Definition: BaseTileMap.cs:100
RenderData rendererWallDeco
Definition: BaseTileMap.cs:223
CellDetail detail
Definition: BaseTileMap.cs:488
SourceBlock.Row sourceBlock
Definition: BaseTileMap.cs:490
int[] seaAnimeIndexes
Definition: BaseTileMap.cs:128
Vector3 waterEdgeBridgeFix
Definition: BaseTileMap.cs:106
RenderData rendererFogRoomWallSolid
Definition: BaseTileMap.cs:221
RenderData rendererFogFloorSolid
Definition: BaseTileMap.cs:215
float roomHeight
Definition: BaseTileMap.cs:402
void SetRoofHeight(MeshPassParam _param, Cell _cell, int _cx, int _cz, int h=0, int altitude=0, int dirWall=-1, bool ignoreAltitudeY=false)
RenderDataObjDummy rendererObjDummy
Definition: BaseTileMap.cs:227
RenderData rendererFogBlockSolid
Definition: BaseTileMap.cs:213
GameSetting.RenderSetting.ZSetting zSetting
Definition: BaseTileMap.cs:364
bool _lowblock
Definition: BaseTileMap.cs:350
SourceFloor.Row sourceFloor
Definition: BaseTileMap.cs:492
float floorLight2
Definition: BaseTileMap.cs:390
override void Draw(RenderParam p)
Definition: CardRenderer.cs:49
Vector3 position
Definition: CardRenderer.cs:21
virtual bool IsMoving
Definition: CardRenderer.cs:31
virtual void SetFirst(bool first, Vector3 pos)
bool isMasked
Definition: Card.cs:593
string id
Definition: Card.cs:36
bool isNPCProperty
Definition: Card.cs:557
bool isFloating
Definition: Card.cs:653
bool isRoofItem
Definition: Card.cs:581
bool isRestrained
Definition: Card.cs:569
float fy
Definition: Card.cs:269
float fx
Definition: Card.cs:257
PlaceState placeState
Definition: Card.cs:86
TileType TileType
Definition: Card.cs:2189
int uid
Definition: Card.cs:125
Trait trait
Definition: Card.cs:54
int altitude
Definition: Card.cs:233
bool isDeconstructing
Definition: Card.cs:449
bool IsInstalled
Definition: Card.cs:2451
TraitShackle GetRestrainer()
Definition: Card.cs:7641
int dir
Definition: Card.cs:149
bool noShadow
Definition: Card.cs:821
SourceCategory.Row category
Definition: Card.cs:2101
bool freePos
Definition: Card.cs:521
CardRenderer renderer
Definition: Card.cs:64
virtual bool flipX
Definition: Card.cs:2168
bool ignoreStackHeight
Definition: Card.cs:641
TaskDesignation designation
Definition: CellDetail.cs:19
List< Thing > things
Definition: CellDetail.cs:11
TransAnime anime
Definition: CellDetail.cs:21
List< Chara > charas
Definition: CellDetail.cs:13
Area area
Definition: CellDetail.cs:15
Footmark footmark
Definition: CellDetail.cs:17
bool IsFire
Definition: CellEffect.cs:147
bool IsLiquid
Definition: CellEffect.cs:150
SourceCellEffect.Row source
Definition: CellEffect.cs:145
Definition: Cell.cs:7
byte autotileDeco
Definition: Cell.cs:84
bool IsBlocked
Definition: Cell.cs:931
bool HasWallOrFence
Definition: Cell.cs:867
SourceBlock.Row sourceBlock
Definition: Cell.cs:1090
Cell BackRight
Definition: Cell.cs:223
bool lotShade
Definition: Cell.cs:546
bool IsSnowTile
Definition: Cell.cs:818
bool castFloorShadow
Definition: Cell.cs:534
SourceMaterial.Row matBlock
Definition: Cell.cs:1066
byte autotile
Definition: Cell.cs:82
static SourceMaterial matSource
Definition: Cell.cs:24
bool HasBlock
Definition: Cell.cs:679
byte shadow
Definition: Cell.cs:92
SourceFloor.Row sourceFloor
Definition: Cell.cs:1092
bool isDeck
Definition: Cell.cs:522
SourceMaterial.Row matDeco
Definition: Cell.cs:1070
bool lotWall
Definition: Cell.cs:498
bool toggleOcclusion
Definition: Cell.cs:666
bool IsBridgeWater
Definition: Cell.cs:806
byte decal
Definition: Cell.cs:70
int obj
Definition: Cell.cs:50
Critter critter
Definition: Cell.cs:116
bool isFloating
Definition: Cell.cs:486
SourceMaterial.Row matObj
Definition: Cell.cs:1074
List< Thing > Things
Definition: Cell.cs:1022
SourceMaterial.Row matBridge
Definition: Cell.cs:1072
bool IsFloorWater
Definition: Cell.cs:763
int _roofBlock
Definition: Cell.cs:58
bool pcSync
Definition: Cell.cs:126
int bridgePillar
Definition: Cell.cs:74
byte shore
Definition: Cell.cs:90
bool skipRender
Definition: Cell.cs:282
ushort lightG
Definition: Cell.cs:108
bool IsTopWater
Definition: Cell.cs:736
byte autotileObj
Definition: Cell.cs:88
GrowSystem growth
Definition: Cell.cs:247
ushort lightB
Definition: Cell.cs:110
bool isWatered
Definition: Cell.cs:354
SourceFloor.Row sourceBridge
Definition: Cell.cs:1094
bool isClearArea
Definition: Cell.cs:618
CellDetail detail
Definition: Cell.cs:112
int _roofBlockMat
Definition: Cell.cs:60
bool isShadowed
Definition: Cell.cs:268
byte _roofBlockDir
Definition: Cell.cs:72
bool HasFloodBlock
Definition: Cell.cs:1053
byte autotileBridge
Definition: Cell.cs:86
bool isToggleWallPillar
Definition: Cell.cs:570
bool HasRoof
Definition: Cell.cs:684
static SourceBlock blockSource
Definition: Cell.cs:26
bool isSkyFloor
Definition: Cell.cs:606
SourceMaterial.Row matFloor
Definition: Cell.cs:1068
int floorDir
Definition: Cell.cs:958
bool isSeen
Definition: Cell.cs:294
bool isSlopeEdge
Definition: Cell.cs:366
bool isShoreSand
Definition: Cell.cs:558
SourceObj.Row sourceObj
Definition: Cell.cs:1112
byte highlight
Definition: Cell.cs:104
int objDir
Definition: Cell.cs:946
Cell BackLeft
Definition: Cell.cs:235
bool isForceFloat
Definition: Cell.cs:318
SourceCellEffect.Row sourceEffect
Definition: Cell.cs:1110
bool isSurrounded
Definition: Cell.cs:256
bool outOfBounds
Definition: Cell.cs:426
Point GetPoint()
Definition: Cell.cs:1141
Cell FrontLeft
Definition: Cell.cs:211
bool HasRamp
Definition: Cell.cs:873
bool ignoreObjShadow
Definition: Cell.cs:390
byte bridgeHeight
Definition: Cell.cs:96
bool fullWall
Definition: Cell.cs:474
int liquidLv
Definition: Cell.cs:982
bool isBridgeEdge
Definition: Cell.cs:378
bool hasDoor
Definition: Cell.cs:279
int blockDir
Definition: Cell.cs:934
int _bridge
Definition: Cell.cs:54
SourceDeco.Row sourceDeco
Definition: Cell.cs:1108
ushort lightR
Definition: Cell.cs:106
int _deco
Definition: Cell.cs:62
int _block
Definition: Cell.cs:42
Definition: Chara.cs:10
override SourcePref Pref
Definition: Chara.cs:805
override bool IsAliveInCurrentZone
Definition: Chara.cs:567
AIAct ai
Definition: Chara.cs:206
override bool IsPC
Definition: Chara.cs:630
Chara host
Definition: Chara.cs:33
bool IsAstralBody
Definition: Chara.cs:506
override bool IsDeadOrSleeping
Definition: Chara.cs:579
SourceChara.Row source
Definition: Chara.cs:162
override CardRow sourceCard
Definition: Chara.cs:454
override void SetRenderParam(RenderParam p)
Definition: Chara.cs:7172
ConBaseTransmuteMimic mimicry
Definition: Chara.cs:106
override bool IsPCC
Definition: Chara.cs:700
bool hasTelepathy
Definition: Chara.cs:142
bool godBuild
Definition: CoreDebug.cs:320
bool reverse
Definition: Critter.cs:23
void Update()
Definition: Critter.cs:102
virtual int SnowTile
Definition: Critter.cs:33
int tile
Definition: Critter.cs:7
bool IsNight
Definition: Date.cs:112
static GameSetting setting
Definition: EMono.cs:31
static World world
Definition: EMono.cs:37
static CoreDebug debug
Definition: EMono.cs:45
Definition: FLOOR.cs:2
static SourceFloor.Row sourceSnow
Definition: FLOOR.cs:31
static SourceFloor.Row sourceSnow2
Definition: FLOOR.cs:33
static SourceFloor.Row sourceIce
Definition: FLOOR.cs:35
int tile
Definition: Footmark.cs:7
EffectSetting effect
Definition: GameSetting.cs:346
RenderSetting render
Definition: GameSetting.cs:348
virtual void OnRenderTileMap(RenderParam p, bool drawShadow=true)
Definition: GrowSystem.cs:212
static Card alwaysVisible
Definition: LayerDrama.cs:22
int colDeco2
Definition: Lot.cs:36
int decoFix
Definition: Lot.cs:38
int decoFix2
Definition: Lot.cs:40
int colDeco
Definition: Lot.cs:34
float light
Definition: Lot.cs:66
int idDeco2
Definition: Lot.cs:28
int idDeco
Definition: Lot.cs:26
static SourceMaterial.Row sourceSnow
Definition: MATERIAL.cs:41
int maxZ
Definition: MapBounds.cs:17
int maxX
Definition: MapBounds.cs:14
int x
Definition: MapBounds.cs:8
bool fullWallHeight
Definition: MapConfig.cs:32
int skyBlockHeight
Definition: MapConfig.cs:92
Definition: Map.cs:13
static HashSet< int > sunMap
Definition: Map.cs:14
MapBounds bounds
Definition: Map.cs:55
void Add(Point point, float tile=0f, float color=0f)
Definition: MeshPass.cs:122
void AddShadow(MeshPassParam p, ref Vector3 fix)
Definition: MeshPass.cs:195
bool CanSee(Chara c)
Definition: Player.cs:2568
float lightPower
Definition: Player.cs:1270
Definition: Point.cs:9
static Point shared
Definition: Point.cs:20
Vector3 offsetShadow
Definition: RenderData.cs:23
void DrawRepeat(RenderParam p, int count, float size, bool skipFirst=false)
Definition: RenderData.cs:215
float stackZ
Definition: RenderData.cs:45
SourcePref shadowPref
Definition: RenderData.cs:49
int idShadow
Definition: RenderData.cs:15
float hangedFixZ
Definition: RenderData.cs:43
RenderData data
Definition: RenderObject.cs:34
SourceMaterial.Row mat
Definition: RenderParam.cs:17
int liquidLv
Definition: RenderParam.cs:7
bool multisize
Definition: RenderRow.cs:64
SourcePref pref
Definition: RenderRow.cs:68
bool useAltColor
Definition: RenderRow.cs:80
TileType tileType
Definition: RenderRow.cs:77
int[] _tiles
Definition: RenderRow.cs:12
SourceMaterial.Row DefaultMaterial
Definition: RenderRow.cs:89
int colorMod
Definition: RenderRow.cs:16
MeshPass passGuideFloor
Definition: ScreenGuide.cs:7
List< Item > items
Definition: ShadowData.cs:101
static ShadowData Instance
Definition: ShadowData.cs:99
bool HasGrowth
Definition: SourceObj.cs:29
bool bypassShadow
Definition: SourcePref.cs:354
int liquidModMax
Definition: SourcePref.cs:77
bool FloatUnderwater
Definition: SourcePref.cs:371
float height
Definition: SourcePref.cs:53
int liquidMod
Definition: SourcePref.cs:65
bool Float
Definition: SourcePref.cs:367
int shadow
Definition: SourcePref.cs:41
virtual void Draw(int x, int z, RenderParam p)
Definition: Thing.cs:8
override void SetRenderParam(RenderParam p)
Definition: Thing.cs:1557
override SourcePref Pref
Definition: Thing.cs:50
override CardRow sourceCard
Definition: Thing.cs:47
int id
Definition: TileRow.cs:9
virtual bool IsUseBlockDir
Definition: TileType.cs:141
virtual bool UseHangZFix
Definition: TileType.cs:243
static TileTypeSky Sky
Definition: TileType.cs:75
virtual bool CanStack
Definition: TileType.cs:133
virtual void GetMountHeight(ref Vector3 v, Point p, int d, Card target=null)
Definition: TileType.cs:409
static TileTypeIllumination Illumination
Definition: TileType.cs:93
static TileTypeWaterShallow FloorWaterShallow
Definition: TileType.cs:65
static TileTypeObjFloat ObjFloat
Definition: TileType.cs:85
bool IsRamp
Definition: TileType.cs:155
virtual bool AlwaysShowShadow
Definition: TileType.cs:273
virtual bool UseLowBlock
Definition: TileType.cs:245
virtual bool IsFullBlock
Definition: TileType.cs:177
virtual bool IsWall
Definition: TileType.cs:145
virtual bool ForceRpeatBlock
Definition: TileType.cs:279
virtual bool IsSkipLowBlock
Definition: TileType.cs:137
virtual bool UseMountHeight
Definition: TileType.cs:241
virtual bool IsFence
Definition: TileType.cs:179
virtual BlockRenderMode blockRenderMode
Definition: TileType.cs:299
Vector3 GetRampFix(int dir, SourcePref pref=null)
Definition: TileType.cs:414
virtual bool IsWaterTop
Definition: TileType.cs:187
virtual bool RepeatBlock
Definition: TileType.cs:277
virtual bool IsOpen()
Definition: TraitDoor.cs:101
virtual Vector3 GetRestrainPos
Definition: TraitShackle.cs:5
virtual bool IgnoreLastStackHeight
Definition: Trait.cs:121
virtual void PositionFix(ref Vector3 v)
Definition: Trait.cs:1335
virtual bool AlwaysHideOnLowWall
Definition: Trait.cs:365
virtual bool UseLowblock
Definition: Trait.cs:455
virtual TileType tileType
Definition: Trait.cs:50
virtual bool UsePositionFix
Definition: Trait.cs:453
virtual bool IsChangeFloorHeight
Definition: Trait.cs:74
virtual bool IsGround
Definition: Trait.cs:68
Card owner
Definition: Trait.cs:28
Vector3 v
Definition: TransAnime.cs:5
bool animeBlock
Definition: TransAnime.cs:21
bool drawBlock
Definition: TransAnime.cs:25
GameDate date
Definition: World.cs:6
virtual bool UseFog
Definition: Zone.cs:398

References _actorPos, _baseBrightness, Cell._block, Cell._bridge, Cell._deco, _heightMod, _lightMod, _lowblock, EMono._map, _rightWallShade, Cell._roofBlock, Cell._roofBlockDir, Cell._roofBlockMat, _shadowStrength, _sourceBlock, RenderRow._tiles, EMono._zone, Scene.actionMode, BaseCore.actionsLateUpdate, MeshPass.Add(), MeshPass.AddShadow(), Chara.ai, Card.altitude, altitudeFix, Trait.AlwaysHideOnLowWall, alwaysLowblock, TileType.AlwaysShowShadow, LayerDrama.alwaysVisible, ambientShadowFix, CellDetail.anime, SourceCellEffect.Row.anime, TransAnime.animeBlock, CellDetail.area, GameSetting.RenderSetting.astralBodyFixZ, AreaData.atrium, Cell.autotile, Cell.autotileBridge, Cell.autotileDeco, Cell.autotileObj, Cell.Back, back, Cell.BackLeft, Cell.BackRight, batch, MeshPass.batches, MeshPass.batchIdx, MeshPass.batchSize, Cell.blockDir, blockLight, TileType.blockRenderMode, SourceManager.blocks, Cell.blockSource, Map.bounds, bridgeFix, Cell.bridgeHeight, Cell.bridgePillar, buildMode, SourcePref.bypassShadow, Rand.bytes, Player.CanSee(), TileType.CanStack, Cell.castFloorShadow, Card.category, cell, Map.cells, CellDetail.charas, ActionMode.Cinema, cinemaMode, Lot.colDeco, Lot.colDeco2, CellEffect.color, MeshPassParam.color, RenderRow.colorMod, MeshBatch.colors, Map.config, EMono.core, cornerWallFix, cornerWallFix2, cornerWallFix3, count, Cell.critter, currentHeight, currentLot, currentRoom, cx, cz, darkenOuter, BaseArea.data, RenderObject.data, World.date, EMono.debug, Cell.decal, Lot.decoFix, Lot.decoFix2, defaultBlockHeight, RenderRow.DefaultMaterial, SourceMaterial.Row.defBlock, GameSetting.RenderSetting.defCharaHeight, CellDetail.designation, detail, Cell.detail, Card.dir, RenderParam.dir, Draw(), TaskDesignation.Draw(), CardRenderer.Draw(), RenderData.Draw(), RenderDataEffect.Draw(), TransAnime.drawBlock, RenderData.DrawRepeat(), Cell.effect, GameSetting.effect, ActionMode.FlagCell, Card.flipX, SourcePref.Float, SourcePref.FloatUnderwater, floatY, floatYs, floorDir, Cell.floorDir, TileTypeWaterShallow.FloorHeight, floorLight, floorLight2, floorMatColor, floorShadowStrength, TileType.FloorWaterShallow, fogBounds, fogBrightness, fogged, CellDetail.footmark, TileType.ForceRpeatBlock, freePos, Card.freePos, Cell.Front, Cell.FrontLeft, Cell.FrontRight, Cell.fullWall, MapConfig.fullWallHeight, Card.fx, Card.fy, GetColorInt(), TileType.GetMountHeight(), Cell.GetPoint(), TileType.GetRampFix(), Card.GetRestrainer(), TraitShackle.GetRestrainPos, GetRoofLight(), Area.GetTile(), CoreDebug.godBuild, Cell.growth, BaseGameScreen.guide, RenderData.hangedFixZ, Cell.HasBlock, hasBridge, Cell.hasDoor, Cell.HasFloodBlock, Cell.HasFullBlock, SourceObj.Row.HasGrowth, Cell.HasRamp, Cell.HasRoof, Room.HasRoof, Chara.hasTelepathy, Cell.HasWallOrFence, height, Cell.height, Lot.height, SourcePref.height, heightBlockSize, Lot.heightFix, heightLightMod, heightLimitDeco, heightModDeco, hideHang, Cell.highlight, highlightArea, highlightCells, Chara.host, iconMode, Card.id, TileRow.id, Lot.idDeco, Lot.idDeco2, Lot.idRoofStyle, RenderData.idShadow, MeshPass.idx, if(), Trait.IgnoreLastStackHeight, Cell.ignoreObjShadow, Card.ignoreStackHeight, TileType.Illumination, index, innerMode, ShadowData.Instance, ActionMode.IsActive, Chara.IsAliveInCurrentZone, Chara.IsAstralBody, Cell.IsBlocked, Cell.isBridgeEdge, Cell.IsBridgeWater, Trait.IsChangeFloorHeight, Cell.isClearArea, Cell.isClearSnow, Chara.IsDeadOrSleeping, Cell.isDeck, Card.isDeconstructing, TileType.IsFence, CellEffect.IsFire, Card.isFloating, Cell.isFloating, Cell.IsFloorWater, Cell.isForceFloat, TileType.IsFullBlock, Trait.IsGround, isIndoor, Card.IsInstalled, CellEffect.IsLiquid, Card.isMasked, CardRenderer.IsMoving, Date.IsNight, Card.isNPCProperty, TraitDoor.IsOpen(), Chara.IsPC, Chara.IsPCC, TileType.IsRamp, Card.isRestrained, Card.isRoofItem, Cell.IsRoomEdge, isSeen, Cell.isSeen, Cell.isShadowed, Cell.isShoreSand, TileType.IsSkipLowBlock, Cell.isSkyFloor, Cell.isSlopeEdge, isSnowCovered, Cell.IsSnowTile, Cell.isSurrounded, ConBaseTransmuteMimic.IsThing, Cell.isToggleWallPillar, Cell.IsTopWater, isUnderwater, TileType.IsUseBlockDir, TileType.IsWall, Cell.isWallEdge, Cell.isWatered, TileType.IsWaterTop, ShadowData.items, Cell.Left, left, light, Lot.light, Cell.lightB, Cell.lightG, lightLimit, lightLookUp, Player.lightPower, Cell.lightR, liquidLv, Cell.liquidLv, RenderParam.liquidLv, SourcePref.liquidMod, SourcePref.liquidModMax, Room.lot, lotLight, lotLight2, Cell.lotShade, Cell.lotWall, lowBlock, lowWallObjAltitude, map, RenderParam.mat, matBlock, Cell.matBlock, matBridge, Cell.matBridge, MeshPassParam.matColor, SourceMaterial.Row.matColor, MeshBatch.matColors, matDeco, Cell.matDeco, matFloor, Cell.matFloor, Cell.matObj, MeshBatch.matrices, Cell.matSource, Rand.MaxBytes, AreaData.maxHeight, maxHeight, MapBounds.maxX, MapBounds.maxZ, Lot.mh, Chara.mimicry, AM_FlagCell.mode, RenderRow.multisize, MeshPass.NextBatch(), nightRatio, noRoofMode, Card.noShadow, noSlopMode, Cell.obj, Cell.objDir, TileType.ObjFloat, RenderData.offsetShadow, GrowSystem.OnRenderTileMap(), orgX, orgY, orgZ, Cell.outOfBounds, Trait.owner, param, pass, passArea, passAutoTile, passAutoTileWater, passDecal, passEdge, passFloor, passGuideBlock, passGuideFloor, ScreenGuide.passGuideFloor, passObjSS, passShadow, passShore, EMono.pc, Cell.pcSync, Card.placeState, EMono.player, Card.pos, CardRenderer.position, Trait.PositionFix(), Chara.Pref, RenderRow.pref, Thing.Pref, Lot.realHeight, GameSetting.render, renderBorder, RenderRow.renderData, Card.renderer, rendererEffect, rendererFogBlockSolid, rendererFogFloorSolid, rendererFogRoomBlockSolid, rendererFogRoomSolid, rendererFogRoomWallSolid, rendererFov, rendererFov2, rendererInnerBlock, rendererObjDummy, rendererShore, rendererWallDeco, rendererWaterBlock, renderFootmark, renderSetting, TileType.RepeatBlock, Critter.reverse, Cell.Right, roof, room, Cell.room, roomHeight, GameSetting.RenderSetting.roomHeightMod, EMono.scene, screen, screenHighlight, seaAnimeIndexes, Point.Set(), CardRenderer.SetFirst(), Chara.SetRenderParam(), Thing.SetRenderParam(), SetRoofHeight(), EMono.setting, Cell.shadow, SourcePref.shadow, shadowModStrength, RenderData.shadowPref, shadowStrength, Point.shared, Cell.shore, showAllCards, showBorder, showFullWall, ActionMode.ShowMaskedThings, showRoof, AreaData.showWallItem, Size, Cell.skipRender, TileType.Sky, MapConfig.skyBlockHeight, slopeFixZ, MeshPassParam.snow, snowColor, snowColor2, snowColorToken, snowed, snowLight, snowLimit, Critter.SnowTile, RenderRow.snowTile, CellEffect.source, Chara.source, sourceBlock, Cell.sourceBlock, sourceBridge, Cell.sourceBridge, Chara.sourceCard, Thing.sourceCard, sourceDeco, Cell.sourceDeco, Cell.sourceEffect, sourceFloor, Cell.sourceFloor, FLOOR.sourceIce, Cell.sourceObj, EMono.sources, FLOOR.sourceSnow, MATERIAL.sourceSnow, FLOOR.sourceSnow2, RenderData.stackZ, subtleHighlightArea, Map.sunMap, thingPos, Cell.Things, CellDetail.things, tile, Critter.tile, Footmark.tile, MeshPassParam.tile, BaseGameScreen.tileAlign, MeshBatch.tiles, tileType, Card.TileType, RenderRow.tileType, Trait.tileType, BaseGameScreen.tileWeight, Cell.toggleOcclusion, totalFire, Card.trait, transitionFix, AI_Trolley.trolley, ugFix, ugFixBridge, ugFixBridgeBottom, ugFixBridgeTop, Card.uid, Critter.Update(), RenderRow.useAltColor, Zone.UseFog, TileType.UseHangZFix, TileType.UseLowBlock, Trait.UseLowblock, TileType.UseMountHeight, Trait.UsePositionFix, TransAnime.v, wallClipMode, waterAnimeIndex, waterEdgeBridgeFix, waterEdgeFix, waterEdgeFixShore, waterEdgeFixShoreSand, EMono.world, MapBounds.x, MeshPassParam.x, Point.x, MeshPassParam.y, SourcePref.y, MapBounds.z, MeshPassParam.z, Point.z, SourcePref.z, and zSetting.

Referenced by Draw().

◆ GetApproximateBlocklight()

int BaseTileMap.GetApproximateBlocklight ( Cell  cell)
inline

Definition at line 3415 of file BaseTileMap.cs.

3416 {
3417 float num = _baseBrightness + 0.25f;
3418 num = ((!cell.IsSnowTile) ? ((float)((int)(num * 50f) * 262144 + ((cell.lightR >= 64) ? 63 : cell.lightR) * 4096 + ((cell.lightG >= 64) ? 63 : cell.lightG) * 64 + ((cell.lightB >= 64) ? 63 : cell.lightB))) : ((float)((int)(num * 50f) * 262144 + (int)((float)((cell.lightR >= 50) ? 50 : cell.lightR) * snowColor) * 4096 + (int)((float)((cell.lightG >= 50) ? 50 : cell.lightG) * snowColor) * 64 + (int)((float)((cell.lightB >= 50) ? 50 : cell.lightB) * snowColor) + snowColorToken)));
3419 return (int)num;
3420 }

References _baseBrightness, cell, Cell.IsSnowTile, Cell.lightB, Cell.lightG, Cell.lightR, snowColor, and snowColorToken.

Referenced by EffectIRenderer.OnUpdate().

◆ GetColorInt()

static int BaseTileMap.GetColorInt ( ref Color  matColor,
int  p 
)
inlinestatic

Definition at line 3782 of file BaseTileMap.cs.

3783 {
3784 if (p == 0)
3785 {
3786 return 104025;
3787 }
3788 return p * 262144 + (int)(matColor.r * 50f) * 4096 + (int)(matColor.g * 50f) * 64 + (int)(matColor.b * 50f);
3789 }

Referenced by CardRenderer.Draw(), DrawTile(), TileMapElona.DrawTile(), RenderRow.GetColorInt(), SourceBlock.Row.GetRenderParam(), TraitShrine.OnRenderExtra(), TraitDrink.OnThrowGround(), ActEffect.ProcAt(), Card.RefreshColor(), Lot.RefreshData(), Lot.SetBaseRoom(), and Chara.SetRenderParam().

◆ GetRoofLight()

int BaseTileMap.GetRoofLight ( Lot  lot)
inline

Definition at line 3422 of file BaseTileMap.cs.

3423 {
3424 float num = Mathf.Sqrt(lot.light) * roofLightMod;
3425 if (num > lightLimit * roofLightLimitMod)
3426 {
3428 }
3429 if (isSnowCovered)
3430 {
3431 num += roofLightSnow * (1f - nightRatio);
3432 }
3433 int num2 = (int)(num * 50f) * 262144;
3434 if (isSnowCovered)
3435 {
3436 num2 += snowColorToken;
3437 }
3438 return num2;
3439 }
float roofLightSnow
Definition: BaseTileMap.cs:85
float roofLightMod
Definition: BaseTileMap.cs:79

References isSnowCovered, Lot.light, lightLimit, nightRatio, roofLightLimitMod, roofLightMod, roofLightSnow, and snowColorToken.

Referenced by DrawRoof(), and DrawTile().

◆ GetThingPosition()

Vector3 BaseTileMap.GetThingPosition ( Card  tg,
Point  p 
)
inline

Definition at line 3291 of file BaseTileMap.cs.

3292 {
3293 Vector3 zero = Vector3.zero;
3294 float num = 0f;
3295 cell = p.cell;
3297 if (!tg.TileType.UseMountHeight)
3298 {
3300 {
3301 zero.z -= 1f;
3302 }
3303 else if (!tg.sourceCard.multisize)
3304 {
3305 float num2 = ((cell._bridge != 0) ? cell.sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight);
3306 zero.y += num2;
3307 zero.z -= num2 * heightMod.z;
3308 }
3309 if (cell.HasRamp)
3310 {
3311 Vector3 rampFix = cell.sourceBlock.tileType.GetRampFix(cell.blockDir);
3312 zero.x += rampFix.x;
3313 zero.y += rampFix.y;
3314 zero.z += rampFix.z;
3315 }
3316 }
3317 if (tg.sourceCard.multisize)
3318 {
3319 zero.z -= 1f;
3320 }
3321 SourcePref pref = tg.Pref;
3322 zero.x += pref.x * (float)((!tg.flipX) ? 1 : (-1));
3323 zero.z += pref.z;
3324 detail = cell.detail;
3325 if (tg.isChara)
3326 {
3327 return zero;
3328 }
3329 bool flag = false;
3331 {
3332 flag = true;
3333 }
3335 {
3336 if (tg.altitude != 0)
3337 {
3338 zero += altitudeFix * tg.altitude;
3339 }
3340 flag = true;
3341 }
3343 {
3344 return zero;
3345 }
3346 float num3 = 0f;
3347 if (detail != null && detail.things.Count > 0)
3348 {
3349 Card card = null;
3350 for (int i = 0; i < detail.things.Count; i++)
3351 {
3352 Thing thing = detail.things[i];
3353 SourcePref pref2 = thing.Pref;
3355 float num4 = (tileType.UseMountHeight ? 0f : ((pref2.height == 0f) ? 0.1f : pref2.height));
3356 if (!thing.IsInstalled || thing == ActionMode.Inspect.target)
3357 {
3358 continue;
3359 }
3360 if (thing.TileType.IsRamp)
3361 {
3362 Vector3 rampFix2 = thing.TileType.GetRampFix(thing.dir, pref2);
3363 zero.x += rampFix2.x;
3364 zero.y += rampFix2.y;
3365 zero.z += rampFix2.z;
3366 }
3367 if (!flag && tileType.CanStack)
3368 {
3369 if (thing.ignoreStackHeight)
3370 {
3371 zero.y -= num3;
3372 }
3373 zero.y += num4;
3374 zero.x += pref2.stackX * (float)((!thing.flipX) ? 1 : (-1));
3375 zero.z += pref2.z + thing.renderer.data.stackZ;
3376 if (!tileType.UseMountHeight && thing.altitude != 0)
3377 {
3378 zero += altitudeFix * thing.altitude;
3379 num4 += altitudeFix.y * (float)thing.altitude;
3380 }
3381 if (thing.trait.IgnoreLastStackHeight && (card == null || !card.trait.IgnoreLastStackHeight))
3382 {
3383 zero.y -= num3;
3384 }
3385 num3 = num4;
3386 zero.z += renderSetting.thingZ + num + (float)i * -0.01f + zSetting.mod1 * zero.y;
3387 if (!thing.TileType.IsRamp && thing.trait.IsChangeFloorHeight)
3388 {
3389 _ = thing.ignoreStackHeight;
3390 }
3391 if (thing.sourceCard.multisize)
3392 {
3393 num += zSetting.multiZ;
3394 }
3395 card = thing;
3396 }
3397 }
3398 }
3399 if (flag)
3400 {
3401 return zero;
3402 }
3403 if (tg.ignoreStackHeight)
3404 {
3405 zero.y -= num3;
3406 zero.z += (float)(detail?.things.Count ?? 0) * -0.01f;
3407 }
3408 if (tg.altitude != 0)
3409 {
3410 zero += altitudeFix * tg.altitude;
3411 }
3412 return zero;
3413 }
static AM_Inspect Inspect
Definition: ActionMode.cs:23
virtual bool IsRoofEditMode(Card c=null)
Definition: ActionMode.cs:311
Vector3 heightMod
Definition: BaseTileMap.cs:56
Definition: Card.cs:11
virtual SourcePref Pref
Definition: Card.cs:2159
virtual bool isChara
Definition: Card.cs:2135
virtual CardRow sourceCard
Definition: Card.cs:2183

References Scene.actionMode, Card.altitude, altitudeFix, Cell.blockDir, TileType.CanStack, card, cell, Point.cell, RenderObject.data, detail, Cell.detail, Card.dir, Card.flipX, TileType.GetRampFix(), Cell.HasRamp, SourcePref.height, heightMod, if(), Trait.IgnoreLastStackHeight, Card.ignoreStackHeight, ActionMode.Inspect, Trait.IsChangeFloorHeight, Card.isChara, Cell.isFloating, Card.IsInstalled, TileType.IsRamp, ActionMode.IsRoofEditMode(), Cell.IsSnowTile, RenderRow.multisize, Card.Pref, Thing.Pref, Card.renderer, EMono.scene, Cell.sourceBlock, Cell.sourceBridge, Card.sourceCard, Thing.sourceCard, sourceFloor, Cell.sourceFloor, RenderData.stackZ, AM_MoveInstalled.target, CellDetail.things, tileType, Card.TileType, Trait.tileType, Card.trait, TileType.UseMountHeight, SourcePref.z, and zSetting.

Referenced by Card.RenderMarker(), and Card.SetFreePos().

◆ OnActivate()

void BaseTileMap.OnActivate ( BaseGameScreen  _screen)
inline

Definition at line 524 of file BaseTileMap.cs.

525 {
526 screen = _screen;
527 if (lightLookUp == null)
528 {
529 lightLookUp = new float[256];
530 for (int i = 0; i < 256; i++)
531 {
532 lightLookUp[i] = EMono.scene.profile.global.lightLookupCurve.Evaluate((float)i / 255f);
533 }
534 }
537 zSetting = renderSetting.zSetting;
538 RenderObject.syncList = EMono.scene.syncList;
539 RenderObject.altitudeFix = altitudeFix.y;
540 if (Rand.bytes == null)
541 {
542 Rand.InitBytes(1);
543 }
545 }
BaseTileSelector tileSelector
BaseTileSelector selector
Definition: BaseTileMap.cs:360
static void InitBytes(int a)
Definition: Rand.cs:13
List< ISyncScreen > syncList
Definition: Scene.cs:137

References altitudeFix, Rand.bytes, SceneProfile.global, Rand.InitBytes(), lightLookUp, Scene.profile, RefreshHeight(), GameSetting.render, renderSetting, EMono.scene, screen, selector, EMono.setting, Scene.syncList, BaseGameScreen.tileSelector, and zSetting.

Referenced by BaseGameScreen.Activate().

◆ RefreshHeight()

void BaseTileMap.RefreshHeight ( )
inline

Definition at line 913 of file BaseTileMap.cs.

914 {
915 if (EMono.game != null)
916 {
917 float num = (noSlopMode ? 0f : ((float)EMono.game.config.slopeMod * 0.01f));
919 _heightMod.x = num;
920 _heightMod.y *= num;
921 _heightMod.z *= num;
922 }
923 }
int slopeMod
Definition: Game.cs:61

References _heightMod, Game.config, EMono.game, heightMod, noSlopMode, and Game.Config.slopeMod.

Referenced by Draw(), TileMapElona.Draw(), AM_Adv.OnActivate(), and OnActivate().

◆ SetRoofHeight()

void BaseTileMap.SetRoofHeight ( MeshPassParam  _param,
Cell  _cell,
int  _cx,
int  _cz,
int  h = 0,
int  altitude = 0,
int  dirWall = -1,
bool  ignoreAltitudeY = false 
)
inline

Definition at line 3791 of file BaseTileMap.cs.

3792 {
3793 Room room = _cell.room;
3794 if (room == null && dirWall != -1)
3795 {
3796 if (dirWall == 0 && _cell.Front.room != null)
3797 {
3798 room = _cell.Front.room;
3799 _cell = _cell.Front;
3800 }
3801 else if (_cell.Right.room != null)
3802 {
3803 room = _cell.Right.room;
3804 _cell = _cell.Right;
3805 }
3806 }
3807 if (room != null)
3808 {
3809 Lot lot = room.lot;
3810 RoofStyle roofStyle = roofStyles[lot.idRoofStyle];
3811 float num = (float)(_cz - _cx) * screen.tileAlign.y + (float)lot.mh * _heightMod.y + lot.realHeight + roofFix.y;
3812 float num2 = 1000f + param.x * screen.tileWeight.x + (float)lot.mh * _heightMod.z + lot.realHeight * roofFix3.z + roofFix.z + roofStyle.posFix.z;
3813 if (lot.height == 1)
3814 {
3815 num += roofStyle.lowRoofFix.y;
3816 num2 += roofStyle.lowRoofFix.z;
3817 }
3818 _param.x = (float)(_cx + _cz) * screen.tileAlign.x + roofFix.x + (float)h * roofFix2.x;
3819 _param.y = num + (float)h * roofFix2.y;
3820 _param.z = num2 + _param.y * screen.tileWeight.z + (float)h * roofFix2.z + heightModRoofBlock.y;
3821 }
3822 if (!ignoreAltitudeY || room != null)
3823 {
3824 _param.y += (float)altitude * _heightMod.y;
3825 }
3826 _param.z += (float)altitude * heightModRoofBlock.z;
3827 }
Vector3 heightModRoofBlock
Definition: BaseTileMap.cs:66

References _heightMod, Cell.Front, Lot.height, heightModRoofBlock, Lot.idRoofStyle, Room.lot, RoofStyle.lowRoofFix, Lot.mh, param, RoofStyle.posFix, Lot.realHeight, Cell.Right, roofFix, roofFix2, roofStyles, room, Cell.room, screen, BaseGameScreen.tileWeight, MeshPassParam.x, and MeshPassParam.y.

Referenced by DrawTile(), Recipe.OnRenderMarker(), and Card.RenderMarker().

Member Data Documentation

◆ _actorPos

Vector3 BaseTileMap._actorPos
protected

Definition at line 440 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ _baseBrightness

float BaseTileMap._baseBrightness

◆ _heightMod

Vector3 BaseTileMap._heightMod

◆ _lightMod

float BaseTileMap._lightMod

Definition at line 311 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ _lowblock

bool BaseTileMap._lowblock
protected

Definition at line 350 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ _rightWallShade

float BaseTileMap._rightWallShade

Definition at line 323 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ _shadowStrength

float BaseTileMap._shadowStrength
protected

Definition at line 422 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ _sourceBlock

SourceBlock.Row BaseTileMap._sourceBlock
protected

Definition at line 506 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ activeCount

int BaseTileMap.activeCount

Definition at line 260 of file BaseTileMap.cs.

Referenced by Draw().

◆ altitudeFix

Vector3 BaseTileMap.altitudeFix

Definition at line 102 of file BaseTileMap.cs.

Referenced by DrawTile(), GetThingPosition(), and OnActivate().

◆ alwaysLowblock

bool BaseTileMap.alwaysLowblock
protected

Definition at line 474 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ ambientShadowFix

Vector3 [] BaseTileMap.ambientShadowFix

Definition at line 112 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ batch

MeshBatch BaseTileMap.batch
protected

Definition at line 438 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ blockLight

float BaseTileMap.blockLight
protected

Definition at line 386 of file BaseTileMap.cs.

Referenced by Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ BlocklightMTP

const int BaseTileMap.BlocklightMTP = 50
static

Definition at line 520 of file BaseTileMap.cs.

◆ BlocklightToken

const int BaseTileMap.BlocklightToken = 262144
static

Definition at line 518 of file BaseTileMap.cs.

◆ bridgeFix

Vector3 BaseTileMap.bridgeFix

Definition at line 94 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ buildMode

bool BaseTileMap.buildMode
protected

Definition at line 346 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), and DrawTile().

◆ cell

Cell BaseTileMap.cell
protected

◆ cinemaMode

bool BaseTileMap.cinemaMode
protected

Definition at line 472 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ colliderFix

Vector3 BaseTileMap.colliderFix

Definition at line 43 of file BaseTileMap.cs.

Referenced by Draw().

◆ cornerWallFix

Vector3 BaseTileMap.cornerWallFix

Definition at line 96 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ cornerWallFix2

Vector3 BaseTileMap.cornerWallFix2

Definition at line 98 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ cornerWallFix3

Vector3 BaseTileMap.cornerWallFix3

Definition at line 100 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ count

int BaseTileMap.count

Definition at line 38 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ currentHeight

int BaseTileMap.currentHeight
protected

Definition at line 450 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), and DrawTile().

◆ currentLot

Lot BaseTileMap.currentLot
protected

Definition at line 504 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ currentRoom

Room BaseTileMap.currentRoom
protected

Definition at line 498 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), and DrawTile().

◆ cx

int BaseTileMap.cx

Definition at line 254 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawRoof(), DrawTile(), and TileMapElona.DrawTile().

◆ cz

int BaseTileMap.cz

Definition at line 257 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawRoof(), DrawTile(), and TileMapElona.DrawTile().

◆ darkenOuter

bool BaseTileMap.darkenOuter
protected

Definition at line 480 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ defaultBlockHeight

float BaseTileMap.defaultBlockHeight
protected

Definition at line 426 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ defaultInnerMode

InnerMode BaseTileMap.defaultInnerMode

Definition at line 90 of file BaseTileMap.cs.

Referenced by Draw(), and TileMapElona.Draw().

◆ DefColor

const int BaseTileMap.DefColor = 104025
static

Definition at line 516 of file BaseTileMap.cs.

◆ destBrightness

float BaseTileMap.destBrightness
protected

Definition at line 412 of file BaseTileMap.cs.

Referenced by Draw().

◆ detail

CellDetail BaseTileMap.detail
protected

Definition at line 488 of file BaseTileMap.cs.

Referenced by DrawTile(), TileMapElona.DrawTile(), and GetThingPosition().

◆ edgeBlockFix

Vector3 BaseTileMap.edgeBlockFix

Definition at line 92 of file BaseTileMap.cs.

Referenced by Draw().

◆ floatSpeed

float BaseTileMap.floatSpeed

Definition at line 122 of file BaseTileMap.cs.

Referenced by Draw().

◆ floatTimer

float BaseTileMap.floatTimer
protected

Definition at line 410 of file BaseTileMap.cs.

Referenced by Draw().

◆ floatV

int BaseTileMap.floatV = 1

Definition at line 263 of file BaseTileMap.cs.

Referenced by Draw(), and CardActor.OnRender().

◆ floatVs

int [] BaseTileMap.floatVs = new int[10] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }

Definition at line 302 of file BaseTileMap.cs.

Referenced by Draw().

◆ floatY

float BaseTileMap.floatY

Definition at line 329 of file BaseTileMap.cs.

Referenced by Draw(), DrawTile(), and CardActor.OnRender().

◆ floatYs

float [] BaseTileMap.floatYs = new float[10] { 0f, 1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f }

Definition at line 308 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ floorDir

int BaseTileMap.floorDir
protected

Definition at line 456 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ floorLight

float BaseTileMap.floorLight
protected

Definition at line 388 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ floorLight2

float BaseTileMap.floorLight2
protected

Definition at line 390 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ floorMatColor

int BaseTileMap.floorMatColor
protected

Definition at line 446 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ floorShadowStrength

float BaseTileMap.floorShadowStrength

Definition at line 332 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ fogBounds

bool BaseTileMap.fogBounds
protected

Definition at line 464 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ fogBrightness

float BaseTileMap.fogBrightness
protected

Definition at line 424 of file BaseTileMap.cs.

Referenced by Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ fogged

bool BaseTileMap.fogged

Definition at line 299 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ fogTile

int BaseTileMap.fogTile

Definition at line 120 of file BaseTileMap.cs.

◆ forceShowHang

bool BaseTileMap.forceShowHang
static

Definition at line 36 of file BaseTileMap.cs.

Referenced by Draw().

◆ freePos

Vector3 BaseTileMap.freePos
protected

Definition at line 442 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ groundLights

byte [] BaseTileMap.groundLights

Definition at line 266 of file BaseTileMap.cs.

◆ hasBridge

bool BaseTileMap.hasBridge
protected

Definition at line 348 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ height

int BaseTileMap.height
protected

Definition at line 448 of file BaseTileMap.cs.

Referenced by Draw(), DrawRoof(), DrawTile(), and TileMapElona.DrawTile().

◆ heightBlockSize

float BaseTileMap.heightBlockSize

Definition at line 48 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ heightLightMod

float BaseTileMap.heightLightMod

Definition at line 320 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ heightLimitDeco

float BaseTileMap.heightLimitDeco

Definition at line 54 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ heightMod

Vector3 BaseTileMap.heightMod

Definition at line 56 of file BaseTileMap.cs.

Referenced by GetThingPosition(), and RefreshHeight().

◆ heightModDeco

float BaseTileMap.heightModDeco

Definition at line 52 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ heightModRoofBlock

Vector3 BaseTileMap.heightModRoofBlock

Definition at line 66 of file BaseTileMap.cs.

Referenced by SetRoofHeight().

◆ hideHang

bool BaseTileMap.hideHang

Definition at line 290 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ hideRoomFog

bool BaseTileMap.hideRoomFog

Definition at line 281 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), and TileMapElona.DrawTile().

◆ highlightArea

bool BaseTileMap.highlightArea

Definition at line 275 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ highlightCells

bool BaseTileMap.highlightCells
protected

Definition at line 470 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ iconMode

CardIconMode BaseTileMap.iconMode
protected

Definition at line 342 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ index

int BaseTileMap.index
protected

Definition at line 368 of file BaseTileMap.cs.

Referenced by DrawRoof(), DrawTile(), and TileMapElona.DrawTile().

◆ innerMode

InnerMode BaseTileMap.innerMode
protected

Definition at line 233 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ isIndoor

bool BaseTileMap.isIndoor
protected

Definition at line 352 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ isMining

bool BaseTileMap.isMining
protected

Definition at line 344 of file BaseTileMap.cs.

Referenced by Draw(), and TileMapElona.Draw().

◆ isSeen

bool BaseTileMap.isSeen
protected

Definition at line 460 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ isSnowCovered

bool BaseTileMap.isSnowCovered
protected

Definition at line 468 of file BaseTileMap.cs.

Referenced by Draw(), DrawRoof(), DrawTile(), and GetRoofLight().

◆ isUnderwater

bool BaseTileMap.isUnderwater
protected

Definition at line 478 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ lastRoom

Room BaseTileMap.lastRoom
protected

Definition at line 500 of file BaseTileMap.cs.

Referenced by Draw(), and TileMapElona.Draw().

◆ layerGroundLights

NoiseLayer BaseTileMap.layerGroundLights

Definition at line 131 of file BaseTileMap.cs.

◆ light

float BaseTileMap.light
protected

Definition at line 392 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ lightLimit

float BaseTileMap.lightLimit
protected

◆ lightLookUp

float [] BaseTileMap.lightLookUp

Definition at line 305 of file BaseTileMap.cs.

Referenced by DrawTile(), TileMapElona.DrawTile(), and OnActivate().

◆ lightSetting

SceneLightProfile BaseTileMap.lightSetting
protected

Definition at line 510 of file BaseTileMap.cs.

Referenced by Draw(), and TileMapElona.Draw().

◆ liquidLv

int BaseTileMap.liquidLv
protected

Definition at line 366 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ lotLight

float BaseTileMap.lotLight

Definition at line 81 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ lotLight2

float BaseTileMap.lotLight2

Definition at line 83 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ lowBlock

bool BaseTileMap.lowBlock

Definition at line 269 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ lowblockTimer

float BaseTileMap.lowblockTimer

Definition at line 317 of file BaseTileMap.cs.

Referenced by Draw(), and TileMapElona.Draw().

◆ lowObj

bool BaseTileMap.lowObj

Definition at line 272 of file BaseTileMap.cs.

Referenced by Draw(), and TileMapElona.Draw().

◆ lowWallObjAltitude

int BaseTileMap.lowWallObjAltitude
protected

Definition at line 376 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ map

Map BaseTileMap.map
protected

Definition at line 356 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawRoof(), DrawTile(), and TileMapElona.DrawTile().

◆ matBlock

SourceMaterial.Row BaseTileMap.matBlock
protected

Definition at line 378 of file BaseTileMap.cs.

Referenced by DrawRoof(), DrawTile(), and TileMapElona.DrawTile().

◆ matBridge

SourceMaterial.Row BaseTileMap.matBridge
protected

Definition at line 382 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ matDeco

SourceMaterial.Row BaseTileMap.matDeco
protected

Definition at line 384 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ matFloor

SourceMaterial.Row BaseTileMap.matFloor
protected

Definition at line 380 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ maxColliderCheck

int BaseTileMap.maxColliderCheck

Definition at line 45 of file BaseTileMap.cs.

Referenced by Draw().

◆ maxFloat

int BaseTileMap.maxFloat

Definition at line 126 of file BaseTileMap.cs.

Referenced by Draw().

◆ maxHeight

float BaseTileMap.maxHeight
protected

Definition at line 404 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ modSublight1

float BaseTileMap.modSublight1
protected

Definition at line 416 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), and TileMapElona.DrawTile().

◆ modSublight2

float BaseTileMap.modSublight2
protected

Definition at line 418 of file BaseTileMap.cs.

Referenced by Draw(), and TileMapElona.Draw().

◆ mouseCollider

Collider2D BaseTileMap.mouseCollider

Definition at line 41 of file BaseTileMap.cs.

◆ mx

int BaseTileMap.mx

Definition at line 242 of file BaseTileMap.cs.

Referenced by Draw().

◆ mz

int BaseTileMap.mz

Definition at line 245 of file BaseTileMap.cs.

Referenced by Draw(), and WidgetDebug.UpdateText().

◆ nightRatio

float BaseTileMap.nightRatio
protected

Definition at line 434 of file BaseTileMap.cs.

Referenced by Draw(), DrawTile(), and GetRoofLight().

◆ noRoofMode

bool BaseTileMap.noRoofMode

Definition at line 296 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ noSlopMode

bool BaseTileMap.noSlopMode
private

Definition at line 512 of file BaseTileMap.cs.

Referenced by Draw(), DrawTile(), and RefreshHeight().

◆ orgPos

Vector3 BaseTileMap.orgPos
protected

Definition at line 484 of file BaseTileMap.cs.

◆ orgX

float BaseTileMap.orgX
protected

Definition at line 396 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ orgY

float BaseTileMap.orgY
protected

Definition at line 398 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ orgZ

float BaseTileMap.orgZ
protected

Definition at line 400 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ param

RenderParam BaseTileMap.param = new RenderParam()
protected

Definition at line 436 of file BaseTileMap.cs.

Referenced by Draw(), DrawRoof(), DrawTile(), TileMapElona.DrawTile(), and SetRoofHeight().

◆ pass

MeshPass BaseTileMap.pass
protected

Definition at line 358 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ passArea

MeshPass BaseTileMap.passArea

Definition at line 141 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ passAutoTile

MeshPass BaseTileMap.passAutoTile

Definition at line 175 of file BaseTileMap.cs.

Referenced by DrawTile(), and TextureManager.Init().

◆ passAutoTileWater

MeshPass BaseTileMap.passAutoTileWater

◆ passBlock

MeshPass BaseTileMap.passBlock

Definition at line 147 of file BaseTileMap.cs.

Referenced by TextureManager.Init(), Recipe.OnRenderMarker(), and Core.Update().

◆ passBlockEx

MeshPass BaseTileMap.passBlockEx

Definition at line 161 of file BaseTileMap.cs.

Referenced by TextureManager.Init(), and Recipe.OnRenderMarker().

◆ passBlockMarker

MeshPass BaseTileMap.passBlockMarker

Definition at line 179 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passChara

MeshPass BaseTileMap.passChara

Definition at line 187 of file BaseTileMap.cs.

Referenced by PostEffectProfile.Apply(), and TextureManager.Init().

◆ passCharaL

MeshPass BaseTileMap.passCharaL

Definition at line 189 of file BaseTileMap.cs.

Referenced by PostEffectProfile.Apply(), and TextureManager.Init().

◆ passCharaLL

MeshPass BaseTileMap.passCharaLL

Definition at line 193 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passCharaLW

MeshPass BaseTileMap.passCharaLW

Definition at line 191 of file BaseTileMap.cs.

Referenced by PostEffectProfile.Apply(), and TextureManager.Init().

◆ passDecal

MeshPass BaseTileMap.passDecal

Definition at line 157 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ passEdge

MeshPass BaseTileMap.passEdge

Definition at line 173 of file BaseTileMap.cs.

Referenced by DrawTile(), and TextureManager.Init().

◆ passFloor

MeshPass BaseTileMap.passFloor

◆ passFloorEx

MeshPass BaseTileMap.passFloorEx

Definition at line 163 of file BaseTileMap.cs.

Referenced by TextureManager.Init(), and Recipe.OnRenderMarker().

◆ passFloorMarker

MeshPass BaseTileMap.passFloorMarker

Definition at line 181 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passFloorWater

◆ passFog

MeshPass BaseTileMap.passFog

Definition at line 169 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passFov

MeshPass BaseTileMap.passFov

Definition at line 171 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passGuideBlock

MeshPass BaseTileMap.passGuideBlock

◆ passGuideFloor

MeshPass BaseTileMap.passGuideFloor

Definition at line 139 of file BaseTileMap.cs.

Referenced by TaskDesignation.DrawMarker(), DrawTile(), and GameUpdater.Update().

◆ passIcon

MeshPass BaseTileMap.passIcon

Definition at line 185 of file BaseTileMap.cs.

Referenced by UIInspector.DrawHighlight(), and TextureManager.Init().

◆ passInner

MeshPass BaseTileMap.passInner

Definition at line 167 of file BaseTileMap.cs.

Referenced by Draw(), and TextureManager.Init().

◆ passLiquid

◆ passObj

MeshPass BaseTileMap.passObj

Definition at line 153 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passObjL

MeshPass BaseTileMap.passObjL

Definition at line 155 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passObjS

MeshPass BaseTileMap.passObjS

Definition at line 149 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passObjSS

MeshPass BaseTileMap.passObjSS

Definition at line 151 of file BaseTileMap.cs.

Referenced by DrawTile(), and TextureManager.Init().

◆ passRamp

MeshPass BaseTileMap.passRamp

Definition at line 143 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passRoof

MeshPass BaseTileMap.passRoof

Definition at line 159 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passShadow

◆ passShore

MeshPass BaseTileMap.passShore

Definition at line 195 of file BaseTileMap.cs.

Referenced by DrawTile(), and TextureManager.Init().

◆ passWaterBlock

MeshPass BaseTileMap.passWaterBlock

Definition at line 183 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ pcMaxLight

float BaseTileMap.pcMaxLight
protected

Definition at line 394 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), and TileMapElona.DrawTile().

◆ pcX

int BaseTileMap.pcX
protected

Definition at line 452 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), and TileMapElona.DrawTile().

◆ pcZ

int BaseTileMap.pcZ
protected

Definition at line 454 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), and TileMapElona.DrawTile().

◆ rays

RaycastHit2D [] BaseTileMap.rays = new RaycastHit2D[1]
protected

Definition at line 340 of file BaseTileMap.cs.

Referenced by Draw().

◆ renderBorder

RenderData BaseTileMap.renderBorder

Definition at line 211 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererBlockMarker

RenderData BaseTileMap.rendererBlockMarker

Definition at line 199 of file BaseTileMap.cs.

Referenced by Recipe.OnRenderMarker().

◆ rendererEffect

RenderDataEffect BaseTileMap.rendererEffect

Definition at line 229 of file BaseTileMap.cs.

Referenced by RenderData.DrawRepeatTo(), DrawRoof(), DrawTile(), and TileMapElona.DrawTile().

◆ rendererFloorMarker

RenderData BaseTileMap.rendererFloorMarker

Definition at line 201 of file BaseTileMap.cs.

Referenced by Recipe.OnRenderMarker().

◆ rendererFogBlockSolid

RenderData BaseTileMap.rendererFogBlockSolid

Definition at line 213 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFogFloorSolid

RenderData BaseTileMap.rendererFogFloorSolid

Definition at line 215 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFogRoomBlockSolid

RenderData BaseTileMap.rendererFogRoomBlockSolid

Definition at line 219 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFogRoomSolid

RenderData BaseTileMap.rendererFogRoomSolid

Definition at line 217 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFogRoomWallSolid

RenderData BaseTileMap.rendererFogRoomWallSolid

Definition at line 221 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFov

RenderData BaseTileMap.rendererFov

Definition at line 205 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFov2

RenderData BaseTileMap.rendererFov2

Definition at line 207 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ rendererInnerBlock

RenderData BaseTileMap.rendererInnerBlock

Definition at line 203 of file BaseTileMap.cs.

Referenced by DrawTile(), TileMapElona.DrawTile(), and CoreDebug.UpdateAlways().

◆ rendererObjDummy

RenderDataObjDummy BaseTileMap.rendererObjDummy

Definition at line 227 of file BaseTileMap.cs.

Referenced by Core.Awake(), CardRenderer.Draw(), and DrawTile().

◆ rendererShore

RenderData BaseTileMap.rendererShore

Definition at line 209 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererWallDeco

RenderData BaseTileMap.rendererWallDeco

Definition at line 223 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererWaterBlock

RenderData BaseTileMap.rendererWaterBlock

Definition at line 225 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ renderFootmark

RenderData BaseTileMap.renderFootmark

Definition at line 197 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ renderSetting

GameSetting.RenderSetting BaseTileMap.renderSetting
protected

Definition at line 362 of file BaseTileMap.cs.

Referenced by DrawTile(), TileMapElona.DrawTile(), and OnActivate().

◆ rightWallShade

float BaseTileMap.rightWallShade

Definition at line 69 of file BaseTileMap.cs.

Referenced by Draw().

◆ roof

bool BaseTileMap.roof
protected

Definition at line 458 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ roofFix

Vector3 BaseTileMap.roofFix

Definition at line 73 of file BaseTileMap.cs.

Referenced by DrawRoof(), and SetRoofHeight().

◆ roofFix2

Vector3 BaseTileMap.roofFix2

Definition at line 75 of file BaseTileMap.cs.

Referenced by DrawRoof(), and SetRoofHeight().

◆ roofFix3

Vector3 BaseTileMap.roofFix3

Definition at line 77 of file BaseTileMap.cs.

Referenced by DrawRoof().

◆ roofLightLimitMod

float BaseTileMap.roofLightLimitMod

Definition at line 326 of file BaseTileMap.cs.

Referenced by Draw(), and GetRoofLight().

◆ roofLightMod

float BaseTileMap.roofLightMod

Definition at line 79 of file BaseTileMap.cs.

Referenced by GetRoofLight().

◆ roofLightSnow

float BaseTileMap.roofLightSnow

Definition at line 85 of file BaseTileMap.cs.

Referenced by GetRoofLight().

◆ roofRampFix

Vector3 BaseTileMap.roofRampFix

Definition at line 71 of file BaseTileMap.cs.

Referenced by DrawRoof().

◆ roofStyles

RoofStyle [] BaseTileMap.roofStyles

◆ room

Room BaseTileMap.room
protected

Definition at line 502 of file BaseTileMap.cs.

Referenced by Draw(), DrawRoof(), DrawTile(), TileMapElona.DrawTile(), and SetRoofHeight().

◆ roomHeight

float BaseTileMap.roomHeight
protected

Definition at line 402 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ screen

new BaseGameScreen BaseTileMap.screen

◆ screenHighlight

ScreenHighlight BaseTileMap.screenHighlight

Definition at line 338 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ seaAnimeIndexes

int [] BaseTileMap.seaAnimeIndexes

Definition at line 128 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ selector

BaseTileSelector BaseTileMap.selector
protected

Definition at line 360 of file BaseTileMap.cs.

Referenced by OnActivate().

◆ shadowModStrength

float BaseTileMap.shadowModStrength

Definition at line 124 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ shadowStrength

float BaseTileMap.shadowStrength
protected

Definition at line 420 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ showAllCards

bool BaseTileMap.showAllCards
protected

Definition at line 462 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ showBorder

bool BaseTileMap.showBorder
protected

Definition at line 476 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ showFullWall

bool BaseTileMap.showFullWall

Definition at line 287 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ showRoof

bool BaseTileMap.showRoof

Definition at line 284 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), and DrawTile().

◆ Size

int BaseTileMap.Size

Definition at line 236 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawRoof(), DrawTile(), and TileMapElona.DrawTile().

◆ SizeXZ

int BaseTileMap.SizeXZ

Definition at line 239 of file BaseTileMap.cs.

Referenced by Draw(), and TileMapElona.Draw().

◆ slopeFixZ

float BaseTileMap.slopeFixZ

Definition at line 50 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ snowColor

float BaseTileMap.snowColor
protected

Definition at line 430 of file BaseTileMap.cs.

Referenced by Draw(), DrawTile(), and GetApproximateBlocklight().

◆ snowColor2

float BaseTileMap.snowColor2
protected

Definition at line 432 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ snowColorToken

int BaseTileMap.snowColorToken
protected

Definition at line 372 of file BaseTileMap.cs.

Referenced by Draw(), DrawTile(), GetApproximateBlocklight(), and GetRoofLight().

◆ snowed

bool BaseTileMap.snowed
protected

Definition at line 466 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ snowLight

float BaseTileMap.snowLight
protected

Definition at line 406 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ snowLimit

float BaseTileMap.snowLimit
protected

Definition at line 428 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ sourceBlock

SourceBlock.Row BaseTileMap.sourceBlock
protected

Definition at line 490 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ sourceBridge

SourceFloor.Row BaseTileMap.sourceBridge
protected

Definition at line 494 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ sourceDeco

SourceDeco.Row BaseTileMap.sourceDeco
protected

Definition at line 496 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ sourceFloor

SourceFloor.Row BaseTileMap.sourceFloor
protected

Definition at line 492 of file BaseTileMap.cs.

Referenced by DrawTile(), TileMapElona.DrawTile(), and GetThingPosition().

◆ subtleHighlightArea

bool BaseTileMap.subtleHighlightArea

Definition at line 278 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ TestPoint

Point BaseTileMap.TestPoint = new Point()

Definition at line 231 of file BaseTileMap.cs.

Referenced by Draw().

◆ thingPos

Vector3 BaseTileMap.thingPos
protected

Definition at line 482 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ tile

int BaseTileMap.tile
protected

Definition at line 444 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ tileType

TileType BaseTileMap.tileType
protected

Definition at line 508 of file BaseTileMap.cs.

Referenced by DrawTile(), TileMapElona.DrawTile(), and GetThingPosition().

◆ totalFire

int BaseTileMap.totalFire
protected

Definition at line 370 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), DrawTile(), and TileMapElona.DrawTile().

◆ transitionFix

Vector3 [] BaseTileMap.transitionFix

Definition at line 114 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ ugFix

Vector3 BaseTileMap.ugFix

Definition at line 58 of file BaseTileMap.cs.

Referenced by DrawTile(), and TileMapElona.DrawTile().

◆ ugFixBridge

Vector3 BaseTileMap.ugFixBridge

Definition at line 60 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ ugFixBridgeBottom

Vector3 BaseTileMap.ugFixBridgeBottom

Definition at line 62 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ ugFixBridgeTop

Vector3 BaseTileMap.ugFixBridgeTop

Definition at line 64 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ usingHouseBoard

bool BaseTileMap.usingHouseBoard

Definition at line 293 of file BaseTileMap.cs.

Referenced by Draw(), and TileMapElona.Draw().

◆ wallClipMode

WallClipMode BaseTileMap.wallClipMode

Definition at line 88 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ wallHangFix

Vector3 [] BaseTileMap.wallHangFix

Definition at line 116 of file BaseTileMap.cs.

Referenced by TileTypeWallHang.GetMountHeight().

◆ waterAnimeIndex

int BaseTileMap.waterAnimeIndex
protected

Definition at line 374 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ waterAnimeTimer

float BaseTileMap.waterAnimeTimer
protected

Definition at line 408 of file BaseTileMap.cs.

Referenced by Draw().

◆ waterEdgeBlockFix

Vector3 [] BaseTileMap.waterEdgeBlockFix

Definition at line 118 of file BaseTileMap.cs.

◆ waterEdgeBridgeFix

Vector3 BaseTileMap.waterEdgeBridgeFix

Definition at line 106 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ waterEdgeFix

Vector3 BaseTileMap.waterEdgeFix

Definition at line 104 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ waterEdgeFixShore

Vector3 BaseTileMap.waterEdgeFixShore

Definition at line 108 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ waterEdgeFixShoreSand

Vector3 BaseTileMap.waterEdgeFixShoreSand

Definition at line 110 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ x

int BaseTileMap.x

Definition at line 248 of file BaseTileMap.cs.

Referenced by Draw(), TileMapElona.Draw(), and RenderRow.GetRenderParam().

◆ z

int BaseTileMap.z

Definition at line 251 of file BaseTileMap.cs.

Referenced by Draw(), and TileMapElona.Draw().

◆ zSetting

GameSetting.RenderSetting.ZSetting BaseTileMap.zSetting
protected

Definition at line 364 of file BaseTileMap.cs.

Referenced by DrawTile(), TileMapElona.DrawTile(), GetThingPosition(), and OnActivate().

Property Documentation

◆ HitPoint

Point BaseTileMap.HitPoint
get

Definition at line 522 of file BaseTileMap.cs.

Referenced by Draw().


The documentation for this class was generated from the following file: