Elin Decompiled Documentation EA 23.303 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
 
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
 
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 543 of file BaseTileMap.cs.

544 {
545 Zone zone = EMono._zone;
546 map = zone.map;
547 Size = map.Size;
548 SizeXZ = map.SizeXZ;
550 count = 0;
551 totalFire = 0;
552 pcX = EMono.pc.pos.x;
553 pcZ = EMono.pc.pos.z;
556 lightSetting = profile.light;
559 {
560 buildMode = false;
561 }
563 isMining = EMono.scene.actionMode == ActionMode.Mine;
568 subtleHighlightArea = EMono.scene.actionMode.AreaHihlight != 0 && (EMono.scene.actionMode.AreaHihlight == AreaHighlightMode.Build || EMono.scene.actionMode.AreaHihlight != AreaHighlightMode.Edit);
569 highlightArea = EMono.scene.actionMode.AreaHihlight == AreaHighlightMode.Edit || subtleHighlightArea;
571 _rightWallShade = (int)(50f * rightWallShade) * 262144;
574 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);
575 snowLimit = profile.global.snowLimit.Evaluate(EMono.scene.timeRatio);
576 snowLight = profile.global.snowLight;
577 snowColor = profile.global.snowColor;
578 snowColor2 = profile.global.snowColor2;
579 snowColorToken = (int)((float)profile.global.snowRGB.x * nightRatio) * 4096 + (int)((float)profile.global.snowRGB.y * nightRatio) * 64 + (int)((float)profile.global.snowRGB.z * nightRatio);
582 {
584 }
585 roofLightLimitMod = profile.global.roofLightLimitMod.Evaluate(EMono.scene.timeRatio);
586 fogBounds = (EMono._map.config.forceHideOutbounds && (!EMono.debug.godBuild || !buildMode)) || (EMono.core.config.game.dontRenderOutsideMap && !buildMode);
587 heightLightMod = ((EMono._map.config.heightLightMod == 0f) ? 0.005f : EMono._map.config.heightLightMod);
588 modSublight1 = profile.global.modSublight1;
589 modSublight2 = profile.global.modSublight2 * nightRatio;
590 pcMaxLight = EMono.player.lightPower * 2f * (float)(EMono.player.lightRadius - 2);
593 _lightMod = lightSetting.lightMod * lightSetting.lightModCurve.Evaluate(EMono.scene.timeRatio);
594 destBrightness = lightSetting.baseBrightness * lightSetting.baseBrightnessCurve.Evaluate(EMono.scene.timeRatio);
595 float num = destBrightness;
596 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);
597 if (destBrightness > num)
598 {
599 destBrightness = num;
600 }
601 if (!Mathf.Approximately(_baseBrightness, destBrightness))
602 {
604 }
605 if (activeCount == 0)
606 {
608 }
609 activeCount++;
611 {
612 _baseBrightness = 0.7f;
613 }
614 Fov.nonGradientMod = profile.global.fovModNonGradient;
617 float num2 = Core.delta * (float)EMono.game.config.animeSpeed * 0.01f;
618 floatTimer += num2;
620 {
622 for (int i = 0; i < floatYs.Length; i++)
623 {
624 floatYs[i] += floatVs[i];
625 if (floatYs[i] >= (float)maxFloat)
626 {
627 floatVs[i] = -1;
628 }
629 if (floatYs[i] < 0f)
630 {
631 floatVs[i] = 1;
632 }
633 }
634 }
635 floatY = floatYs[0];
636 floatV = floatVs[0];
637 waterAnimeTimer += num2;
638 if (waterAnimeTimer > 0.5f)
639 {
640 waterAnimeTimer = 0f;
642 }
643 if (cinemaMode)
644 {
645 CinemaConfig cinemaConfig = EMono.player.cinemaConfig;
646 profile = ActionMode.Cinema.profile;
647 lightSetting = profile.light;
649 _lightMod += lightSetting.lightMod * lightSetting.lightModCurve.Evaluate(EMono.scene.timeRatio) * (0.01f * (float)cinemaConfig.light);
650 destBrightness += 0.01f * (float)cinemaConfig.brightness;
651 EMono.scene.camSupport.grading.cinemaBrightness = 0.01f * (float)cinemaConfig.brightness;
652 EMono.scene.camSupport.grading.SetGrading();
653 heightLightMod = 0f;
654 }
655 map.rooms.Refresh();
660 {
663 }
664 else
665 {
666 currentHeight = 0;
667 currentRoom = null;
668 }
669 lowObj = false;
671 noRoofMode = false;
672 bool flag = !isIndoor || EMono._zone is Zone_Tent;
674 {
675 flag = !flag;
676 }
678 {
679 lowBlock = (hideRoomFog = (hideHang = false));
680 showRoof = (showFullWall = flag);
682 {
683 fogBounds = false;
684 }
685 }
686 else if (buildMode)
687 {
689 if (HitPoint.IsValid)
690 {
692 }
693 hideRoomFog = true;
698 if (cinemaMode)
699 {
701 }
702 }
703 else if (ActionMode.IsAdv)
704 {
705 noRoofMode = EMono.game.config.noRoof || screen.focusOption != null;
707 {
708 if (!EMono.pc.IsMoving)
709 {
710 lowblockTimer = 0.1f;
711 }
712 }
713 else if (!EInput.rightMouse.pressing)
714 {
715 lowblockTimer = 0f;
716 }
717 x = EMono.pc.pos.x;
718 z = EMono.pc.pos.z;
719 Room room = null;
720 if (room != null)
721 {
723 }
724 if (currentRoom != null)
725 {
726 currentRoom.data.visited = true;
727 }
728 if (room != null)
729 {
730 room.data.visited = true;
731 }
732 lowBlock = lowblockTimer > 0f;
733 hideRoomFog = currentRoom != null && (currentRoom.HasRoof || isIndoor);
734 if (hideRoomFog)
735 {
736 lowBlock = true;
737 }
738 if (noRoofMode && (currentRoom == null || currentRoom.lot.idRoofStyle == 0))
739 {
740 hideRoomFog = true;
741 showRoof = (showFullWall = false);
742 }
743 else
744 {
745 showRoof = (showFullWall = flag && !lowBlock && !hideRoomFog);
746 }
748 EMono.game.config.showRoof = !hideRoomFog;
749 if (forceShowHang)
750 {
751 hideHang = false;
752 forceShowHang = false;
753 }
754 }
755 else
756 {
757 lowBlock = (hideRoomFog = (hideHang = false));
758 showRoof = (showFullWall = true);
759 }
760 darkenOuter = !cinemaMode && !ActionMode.Bird.IsActive && !ActionMode.ViewMap.IsActive;
761 currentLot = currentRoom?.lot ?? null;
762 Vector3 mposWorld = EInput.mposWorld;
763 mposWorld.z = 0f;
764 Vector3Int vector3Int = screen.grid.WorldToCell(mposWorld);
765 mx = -vector3Int.y;
766 mz = vector3Int.x - 1;
767 HitPoint.Set(mx, mz);
768 bool isAltDown = EInput.isAltDown;
769 for (int num3 = maxColliderCheck + EMono.core.config.test.screenExtraHeight; num3 >= 0; num3--)
770 {
771 TestPoint.x = mx + num3;
772 TestPoint.z = mz - num3;
773 if (TestPoint.x >= 0 && TestPoint.x < Size && TestPoint.z >= 0 && TestPoint.z < Size)
774 {
775 mouseCollider.transform.position = (isAltDown ? TestPoint.Position(TestPoint.cell.height) : TestPoint.Position()) + colliderFix;
776 Physics2D.SyncTransforms();
777 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero, rays) > 0)
778 {
780 break;
781 }
782 }
783 TestPoint.x = mx + num3 - 1;
784 TestPoint.z = mz - num3;
785 if (TestPoint.x >= 0 && TestPoint.x < Size && TestPoint.z >= 0 && TestPoint.z < Size)
786 {
787 mouseCollider.transform.position = (isAltDown ? TestPoint.Position(TestPoint.cell.height) : TestPoint.Position()) + colliderFix;
788 Physics2D.SyncTransforms();
789 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero, rays) > 0)
790 {
792 break;
793 }
794 }
795 TestPoint.x = mx + num3;
796 TestPoint.z = mz - num3 + 1;
797 if (TestPoint.x >= 0 && TestPoint.x < Size && TestPoint.z >= 0 && TestPoint.z < Size)
798 {
799 mouseCollider.transform.position = (isAltDown ? TestPoint.Position(TestPoint.cell.height) : TestPoint.Position()) + colliderFix;
800 Physics2D.SyncTransforms();
801 if (Physics2D.RaycastNonAlloc(mposWorld, Vector2.zero, rays) > 0)
802 {
804 break;
805 }
806 }
807 }
808 HitPoint.Clamp();
809 bool flag2 = EMono._zone.UseFog && !EMono.scene.bg.wall;
810 for (z = 0; z < screen.height; z++)
811 {
812 for (x = 0; x < screen.width; x++)
813 {
814 cx = screen.scrollX - screen.scrollY + x - (z + 1) / 2;
815 cz = screen.scrollY + screen.scrollX + x + z / 2;
816 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)
817 {
818 param.x = (float)(cx + cz) * screen.tileAlign.x + edgeBlockFix.x;
819 param.y = (float)(cz - cx) * screen.tileAlign.y + edgeBlockFix.y;
820 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)z * edgeBlockFix.z;
821 blockLight = 10485760f;
822 pass = passInner;
824 batch.matrices[pass.idx].m03 = param.x;
825 batch.matrices[pass.idx].m13 = param.y;
826 batch.matrices[pass.idx].m23 = param.z;
827 batch.tiles[pass.idx] = 4 + ((cx >= Size) ? 1 : 0);
829 batch.matColors[pass.idx] = 104025f;
830 pass.idx++;
831 if (pass.idx == pass.batchSize)
832 {
833 pass.NextBatch();
834 }
835 }
836 else if (cx < 0 || cz < 0 || cx >= Size || cz >= Size)
837 {
838 if (flag2)
839 {
840 param.x = (float)(cx + cz) * screen.tileAlign.x;
841 param.y = (float)(cz - cx) * screen.tileAlign.y + (float)height * _heightMod.y;
842 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)height * _heightMod.z;
843 param.tile = 0f;
845 }
846 }
847 else
848 {
849 DrawTile();
850 }
851 }
852 }
853 if (showRoof)
854 {
855 foreach (Lot item in map.rooms.listLot)
856 {
857 if (item.sync)
858 {
859 DrawRoof(item);
860 item.sync = false;
861 item.light = 0f;
862 }
863 }
864 }
865 else
866 {
867 foreach (Lot item2 in map.rooms.listLot)
868 {
869 item2.sync = false;
870 item2.light = 0f;
871 }
872 }
873 EMono.scene.sfxFire.SetVolume(Mathf.Clamp(0.1f * (float)totalFire + ((totalFire != 0) ? 0.2f : 0f), 0f, 1f));
874 this.room = EMono.pc.pos.cell.room;
875 int valueOrDefault = (this.room?.lot?.idBGM).GetValueOrDefault();
876 if (valueOrDefault == 0)
877 {
878 goto IL_172c;
879 }
880 if (!(EMono.Sound.currentPlaylist != EMono.Sound.plLot))
881 {
882 BGMData data = EMono.Sound.plLot.list[0].data;
883 if ((object)data != null && data.id == valueOrDefault)
884 {
885 goto IL_172c;
886 }
887 }
888 goto IL_174b;
889 IL_1755:
890 if (this.room != lastRoom)
891 {
893 lastRoom = this.room;
894 }
895 SoundManager.bgmVolumeMod = ((!LayerDrama.maxBGMVolume && !EMono._map.IsIndoor && this.room != null && !this.room.data.atrium && this.room.HasRoof) ? (-0.6f) : 0f);
897 return;
898 IL_172c:
899 if (valueOrDefault == 0 && EMono.Sound.currentPlaylist == EMono.Sound.plLot)
900 {
901 goto IL_174b;
902 }
903 goto IL_1755;
904 IL_174b:
906 goto IL_1755;
907 }
AreaHighlightMode
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:384
bool showAllCards
Definition: BaseTileMap.cs:460
bool highlightArea
Definition: BaseTileMap.cs:275
int maxColliderCheck
Definition: BaseTileMap.cs:45
InnerMode defaultInnerMode
Definition: BaseTileMap.cs:90
Point HitPoint
Definition: BaseTileMap.cs:518
ScreenHighlight screenHighlight
Definition: BaseTileMap.cs:338
float snowLight
Definition: BaseTileMap.cs:404
InnerMode innerMode
Definition: BaseTileMap.cs:233
int[] floatVs
Definition: BaseTileMap.cs:302
float modSublight2
Definition: BaseTileMap.cs:416
float waterAnimeTimer
Definition: BaseTileMap.cs:406
bool showBorder
Definition: BaseTileMap.cs:474
bool isSnowCovered
Definition: BaseTileMap.cs:466
float floatY
Definition: BaseTileMap.cs:329
int lowWallObjAltitude
Definition: BaseTileMap.cs:376
bool cinemaMode
Definition: BaseTileMap.cs:470
bool alwaysLowblock
Definition: BaseTileMap.cs:472
bool hideRoomFog
Definition: BaseTileMap.cs:281
float _lightMod
Definition: BaseTileMap.cs:311
float lightLimit
Definition: BaseTileMap.cs:412
int snowColorToken
Definition: BaseTileMap.cs:372
float modSublight1
Definition: BaseTileMap.cs:414
bool showFullWall
Definition: BaseTileMap.cs:287
SceneLightProfile lightSetting
Definition: BaseTileMap.cs:506
bool isUnderwater
Definition: BaseTileMap.cs:476
bool fogBounds
Definition: BaseTileMap.cs:462
RenderParam param
Definition: BaseTileMap.cs:434
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:921
void RefreshHeight()
Definition: BaseTileMap.cs:909
Room currentRoom
Definition: BaseTileMap.cs:494
bool noSlopMode
Definition: BaseTileMap.cs:508
float rightWallShade
Definition: BaseTileMap.cs:69
bool darkenOuter
Definition: BaseTileMap.cs:478
Vector3 _heightMod
Definition: BaseTileMap.cs:335
float floatTimer
Definition: BaseTileMap.cs:408
float pcMaxLight
Definition: BaseTileMap.cs:392
float lowblockTimer
Definition: BaseTileMap.cs:317
void DrawRoof(Lot lot)
float _rightWallShade
Definition: BaseTileMap.cs:323
float snowLimit
Definition: BaseTileMap.cs:426
float fogBrightness
Definition: BaseTileMap.cs:422
float floatSpeed
Definition: BaseTileMap.cs:122
float nightRatio
Definition: BaseTileMap.cs:432
float destBrightness
Definition: BaseTileMap.cs:410
bool buildMode
Definition: BaseTileMap.cs:346
float defaultBlockHeight
Definition: BaseTileMap.cs:424
bool subtleHighlightArea
Definition: BaseTileMap.cs:278
MeshBatch batch
Definition: BaseTileMap.cs:436
Point TestPoint
Definition: BaseTileMap.cs:231
float snowColor2
Definition: BaseTileMap.cs:430
float heightLightMod
Definition: BaseTileMap.cs:320
float snowColor
Definition: BaseTileMap.cs:428
bool highlightCells
Definition: BaseTileMap.cs:468
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:418
MeshPass passInner
Definition: BaseTileMap.cs:167
CardIconMode iconMode
Definition: BaseTileMap.cs:342
int currentHeight
Definition: BaseTileMap.cs:448
bool pressing
Definition: ButtonState.cs:35
ScreenGrading grading
Point pos
Definition: Card.cs:60
Room room
Definition: Cell.cs:102
byte TopHeight
Definition: Cell.cs:117
Cell Front
Definition: Cell.cs:129
bool UseLowBlock
Definition: Cell.cs:861
byte height
Definition: Cell.cs:72
bool isWallEdge
Definition: Cell.cs:426
Cell Right
Definition: Cell.cs:141
override bool IsMoving
Definition: Chara.cs:622
bool IsInActiveZone
Definition: Chara.cs:852
new GameConfig game
Definition: CoreConfig.cs:613
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:131
int SizeXZ
Definition: Map.cs:133
RoomManager rooms
Definition: Map.cs:31
MapConfig config
Definition: Map.cs:37
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:1179
int lightRadius
Definition: Player.cs:1259
ref Vector3 Position(int height)
Definition: Point.cs:548
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:1009
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:269
void RefreshBGM()
Definition: Zone.cs:3092
virtual bool AlwaysLowblock
Definition: Zone.cs:397
virtual bool IsUnderwater
Definition: Zone.cs:271
Map map
Definition: Zone.cs:63

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, 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 3390 of file BaseTileMap.cs.

3391 {
3392 RoofStyle roofStyle = roofStyles[lot.idRoofStyle];
3393 if (roofStyle.type == RoofStyle.Type.None)
3394 {
3395 return;
3396 }
3397 bool reverse = lot.reverse;
3398 int num;
3399 int num2;
3400 int num3;
3401 int num4;
3402 if (reverse)
3403 {
3404 num = lot.z - roofStyle.h;
3405 num2 = lot.x - roofStyle.w;
3406 num3 = lot.mz + 1 + roofStyle.h;
3407 num4 = lot.mx + 1 + roofStyle.w;
3408 if (num2 > 1 && num > 0 && map.cells[num2 - 1, num].HasFullBlock)
3409 {
3410 num2--;
3411 }
3412 if (num3 < Size && num4 < Size && map.cells[num4 - 1, num3].HasFullBlock)
3413 {
3414 num3++;
3415 }
3416 }
3417 else
3418 {
3419 num = lot.x - roofStyle.w;
3420 num2 = lot.z - roofStyle.h;
3421 num3 = lot.mx + 1 + roofStyle.w;
3422 num4 = lot.mz + 1 + roofStyle.h;
3423 if (num2 > 0 && num > 1 && map.cells[num - 1, num2].HasFullBlock)
3424 {
3425 num--;
3426 }
3427 if (num3 < Size && num4 < Size && map.cells[num3 - 1, num4].HasFullBlock)
3428 {
3429 num4++;
3430 }
3431 }
3432 int num5;
3433 if (roofStyle.wing)
3434 {
3435 num5 = ((lot.height > 1) ? 1 : 0);
3436 if (num5 != 0)
3437 {
3438 num2--;
3439 num4++;
3440 }
3441 }
3442 else
3443 {
3444 num5 = 0;
3445 }
3446 int num6 = num4 + (reverse ? roofStyle.w : roofStyle.h) * 2 - num2;
3447 int idRoofTile = lot.idRoofTile;
3448 int num7 = lot.idBlock;
3449 int num8 = num7;
3450 if (num7 >= EMono.sources.blocks.rows.Count)
3451 {
3452 num7 = EMono.sources.blocks.rows.Count - 1;
3453 }
3454 if (num8 >= EMono.sources.floors.rows.Count)
3455 {
3456 num8 = EMono.sources.floors.rows.Count - 1;
3457 }
3458 int num9 = lot.idRamp;
3459 if (num9 >= EMono.sources.blocks.rows.Count)
3460 {
3461 num9 = EMono.sources.blocks.rows.Count - 1;
3462 }
3463 bool flag = false;
3464 int num10 = num6 / 2 - roofStyle.flatW;
3465 int num11 = num6 / 2 + roofStyle.flatW + ((num6 % 2 != 0) ? 1 : 0);
3466 SourceBlock.Row row = (roofStyle.useDefBlock ? cell.sourceFloor._defBlock : EMono.sources.blocks.rows[num7]);
3467 int num12 = 0;
3468 int num13 = ((num5 != 0) ? (-1) : 0);
3469 int num14 = 0;
3470 Vector3 vector = (lot.fullblock ? roofStyle.posFixBlock : roofStyle.posFix);
3471 switch (roofStyle.type)
3472 {
3473 case RoofStyle.Type.Default:
3474 flag = num6 % 2 == 1 && roofStyle.flatW == 0;
3475 break;
3476 case RoofStyle.Type.Flat:
3477 case RoofStyle.Type.FlatFloor:
3478 num10 = roofStyle.flatW;
3479 num11 = num6 - roofStyle.flatW;
3480 if (num10 == 0)
3481 {
3482 num14 = 1;
3483 }
3484 if (roofStyle.type != RoofStyle.Type.FlatFloor)
3485 {
3486 num--;
3487 num3++;
3488 num2--;
3489 num4++;
3490 }
3491 break;
3492 case RoofStyle.Type.Triangle:
3493 num10 = 999;
3494 num11 = 999;
3495 break;
3496 }
3497 for (cz = num2; cz < num4; cz++)
3498 {
3499 for (cx = num; cx < num3; cx++)
3500 {
3501 if (cx < 0 || cz < 0 || cx >= Size || cz >= Size)
3502 {
3503 continue;
3504 }
3505 int num15;
3506 int num16;
3507 if (reverse)
3508 {
3509 num15 = cz;
3510 num16 = cx;
3511 cell = map.cells[num15, num16];
3512 if (roofStyle.wing && cz == num4 - 1 && cell.Right.Right.room != null && cell.Right.Right.room.lot != lot)
3513 {
3514 continue;
3515 }
3516 }
3517 else
3518 {
3519 num15 = cx;
3520 num16 = cz;
3521 cell = map.cells[num15, num16];
3522 if (roofStyle.wing && cz == 0 && cell.Front.Front.room != null && cell.Front.Front.room.lot != lot)
3523 {
3524 continue;
3525 }
3526 }
3527 int num17 = num16 - num15;
3528 room = cell.room;
3529 if (room != null && room.lot != lot)
3530 {
3531 continue;
3532 }
3533 bool flag2 = false;
3534 if (roofStyle.type == RoofStyle.Type.Flat)
3535 {
3536 if (reverse)
3537 {
3538 if (!cell.HasFullBlock || cell.room != null)
3539 {
3540 num14 = ((cell.Left.room != null && cell.Left.room.lot == lot) ? ((cell.Right.room != null && cell.Right.room.lot == lot) ? 1 : ((cell.HasFullBlock && cell.Right.HasFullBlock && cell.Right.room != null) ? 1 : 2)) : (cell.Left.HasFullBlock ? 1 : 0));
3541 }
3542 else if (cell.Left.room?.lot == lot && cell.Right.room != null)
3543 {
3544 num14 = 1;
3545 flag2 = true;
3546 }
3547 else if (cell.Front.room?.lot == lot)
3548 {
3549 num14 = ((cell.FrontRight.room?.lot == lot) ? 1 : 2);
3550 flag2 = true;
3551 }
3552 else if (cell.Right.room?.lot == lot || cell.FrontRight.room?.lot == lot)
3553 {
3554 num14 = 0;
3555 flag2 = true;
3556 }
3557 }
3558 else if (!cell.HasFullBlock || cell.room != null)
3559 {
3560 num14 = ((cell.Front.room != null && cell.Front.room.lot == lot) ? ((cell.Back.room != null && cell.Back.room.lot == lot) ? 1 : (cell.Back.HasFullBlock ? 1 : 2)) : ((cell.HasFullBlock && cell.Front.HasFullBlock && cell.Front.room != null) ? 1 : 0));
3561 }
3562 else if (cell.Right.room?.lot == lot)
3563 {
3564 num14 = ((cell.FrontRight.room?.lot == lot) ? 1 : 0);
3565 flag2 = true;
3566 }
3567 else if (cell.Front.room?.lot == lot || cell.FrontRight.room?.lot == lot)
3568 {
3569 num14 = 2;
3570 flag2 = true;
3571 }
3572 num13 = 0;
3573 }
3574 bool flag3 = isSnowCovered && !cell.isClearSnow;
3575 if (room == null && !roofStyle.coverLot && !flag2 && !(cell.HasFullBlock && cell.IsRoomEdge && flag3))
3576 {
3577 continue;
3578 }
3579 index = cx + cz * Size;
3581 float num18 = (float)num17 * screen.tileAlign.y + (float)lot.mh * _heightMod.y + lot.realHeight + roofFix.y + vector.y;
3582 float num19 = 1000f + param.x * screen.tileWeight.x + (float)lot.mh * _heightMod.z + lot.realHeight * roofFix3.z + roofFix.z + vector.z;
3583 if (lot.height == 1 && lot.heightFix < 20)
3584 {
3585 num18 += roofStyle.lowRoofFix.y;
3586 num19 += roofStyle.lowRoofFix.z;
3587 }
3588 param.x = (float)(cx + cz) * screen.tileAlign.x + roofFix.x + (float)num13 * roofFix2.x + vector.x * (float)(reverse ? 1 : (-1));
3589 param.y = num18 + (float)num13 * roofFix2.y;
3590 param.z = num19 + param.y * screen.tileWeight.z + (float)num13 * roofFix2.z;
3591 param.color = GetRoofLight(lot);
3592 param.snow = idRoofTile == 0 && flag3;
3593 param.shadowFix = 0f;
3594 if (num14 == 1)
3595 {
3597 RenderRow renderRow;
3598 if (roofStyle.type == RoofStyle.Type.FlatFloor)
3599 {
3600 if (cell.HasFullBlock && cell.IsRoomEdge && !flag3)
3601 {
3602 continue;
3603 }
3604 renderRow = EMono.sources.floors.rows[num8];
3605 renderRow.SetRenderParam(param, mat, 0);
3606 param.matColor = lot.colRoof;
3607 }
3608 else
3609 {
3610 renderRow = row;
3611 renderRow.SetRenderParam(param, mat, 0);
3612 param.matColor = lot.colBlock;
3613 }
3614 renderRow.renderData.Draw(param);
3615 if (idRoofTile != 0)
3616 {
3617 renderRow = EMono.sources.blocks.rows[EMono.sources.objs.rows[idRoofTile].idRoof];
3618 int num20 = (reverse ? 1 : 0) + ((!flag) ? 2 : 0);
3619 renderRow.SetRenderParam(param, MATERIAL.sourceGold, num20);
3620 param.matColor = lot.colRoof;
3621 if (roofStyle.type == RoofStyle.Type.FlatFloor)
3622 {
3623 param.x += roofStyle.posFixBlock.x;
3624 param.y += roofStyle.posFixBlock.y;
3625 param.z += roofStyle.posFixBlock.z;
3626 }
3627 if (!flag)
3628 {
3629 param.z += 0.5f;
3630 }
3631 if (flag3)
3632 {
3633 param.matColor = 104025f;
3634 if (roofStyle.type != RoofStyle.Type.FlatFloor)
3635 {
3636 param.z += roofStyle.snowZ;
3637 }
3638 param.tile = renderRow.renderData.ConvertTile(renderRow.snowTile) + num20;
3639 renderRow.renderData.Draw(param);
3640 }
3641 else
3642 {
3643 renderRow.renderData.Draw(param);
3644 }
3645 }
3646 else if (flag3 && roofStyle.type == RoofStyle.Type.FlatFloor)
3647 {
3648 param.matColor = 104025f;
3649 param.tile = 10f;
3650 param.x += roofStyle.snowFix.x;
3651 param.y += roofStyle.snowFix.y;
3652 param.z += roofStyle.snowZ + roofStyle.snowFix.z;
3653 renderRow.renderData.Draw(param);
3654 }
3655 }
3656 else
3657 {
3658 if (idRoofTile != 0)
3659 {
3660 int num21 = ((!reverse) ? ((num14 != 0) ? 2 : 0) : ((num14 != 0) ? 1 : 3));
3661 if (lot.altRoof && !flag && (roofStyle.type == RoofStyle.Type.Default || roofStyle.type == RoofStyle.Type.DefaultNoTop))
3662 {
3663 param.shadowFix = num21 + 1;
3664 }
3665 RenderRow renderRow = EMono.sources.objs.rows[idRoofTile];
3666 renderRow.SetRenderParam(param, MATERIAL.sourceGold, num21);
3667 param.matColor = lot.colRoof;
3668 if (flag3)
3669 {
3670 param.matColor = 104025f;
3671 param.z += roofStyle.snowZ;
3672 param.tile = renderRow.renderData.ConvertTile(renderRow.snowTile) + num21 + (lot.altRoof ? 8 : 0);
3673 renderRow.renderData.Draw(param);
3674 }
3675 else
3676 {
3677 param.tile += (lot.altRoof ? 8 : 0);
3678 renderRow.renderData.Draw(param);
3679 }
3680 param.shadowFix = 0f;
3681 }
3682 if (num13 >= 0)
3683 {
3684 param.y += roofRampFix.y;
3685 param.z += roofRampFix.z;
3686 RenderRow renderRow = EMono.sources.blocks.rows[num9];
3687 renderRow.SetRenderParam(param, MATERIAL.sourceGold, (!reverse) ? ((num14 != 0) ? 2 : 0) : ((num14 != 0) ? 1 : 3));
3688 param.matColor = lot.colBlock;
3689 renderRow.renderData.Draw(param);
3690 }
3691 }
3692 CellEffect effect = cell.effect;
3693 if (effect != null && effect.FireAmount > 0)
3694 {
3696 }
3697 if (num13 < 1)
3698 {
3699 continue;
3700 }
3701 if (roofStyle.type != RoofStyle.Type.Flat)
3702 {
3703 param.snow = false;
3704 }
3705 for (int i = 0; i < num13; i++)
3706 {
3707 param.x = (float)(cx + cz) * screen.tileAlign.x + roofFix.x + (float)i * roofFix2.x + vector.x * (float)(reverse ? 1 : (-1));
3708 param.y = num18 + (float)i * roofFix2.y;
3709 param.z = num19 + param.y * screen.tileWeight.z + (float)i * roofFix2.z;
3710 RenderRow renderRow = row;
3711 renderRow.SetRenderParam(param, MATERIAL.sourceGold, 0);
3712 param.matColor = lot.colBlock;
3713 renderRow.renderData.Draw(param);
3714 index++;
3715 CellEffect effect2 = cell.effect;
3716 if (effect2 != null && effect2.FireAmount > 0 && Rand.bytes[index % Rand.MaxBytes] % 3 == 0)
3717 {
3719 }
3720 }
3721 }
3722 num12++;
3723 if (roofStyle.type != RoofStyle.Type.Flat)
3724 {
3725 if (num12 == num10)
3726 {
3727 num14 = 1;
3728 }
3729 if (num12 == num11)
3730 {
3731 num14 = 2;
3732 num13++;
3733 }
3734 num13 += num14 switch
3735 {
3736 1 => 0,
3737 0 => 1,
3738 _ => -1,
3739 };
3740 }
3741 }
3742 }
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:510
int FireAmount
Definition: CellEffect.cs:162
CellEffect effect
Definition: Cell.cs:94
Cell Back
Definition: Cell.cs:153
bool isClearSnow
Definition: Cell.cs:450
Cell Left
Definition: Cell.cs:165
bool IsRoomEdge
Definition: Cell.cs:868
bool HasFullBlock
Definition: Cell.cs:817
Cell FrontRight
Definition: Cell.cs:177
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:85
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:398
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, 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 921 of file BaseTileMap.cs.

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

References _actorPos, _baseBrightness, Cell._block, Cell._bridge, _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.AlwaysShow, TileType.AlwaysShowShadow, LayerDrama.alwaysVisible, ambientShadowFix, CellDetail.anime, SourceCellEffect.Row.anime, TransAnime.animeBlock, CellDetail.area, AreaData.atrium, Cell.autotile, Cell.autotileBridge, Cell.autotileObj, Cell.Back, back, Cell.BackLeft, Cell.BackRight, batch, MeshPass.batches, MeshPass.batchIdx, MeshPass.batchSize, ColorProfile.blockColors, Cell.blockDir, blockLight, Cell.blockList, TileType.blockRenderMode, SourceManager.blocks, 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, EMono.Colors, 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(), ScreenGuide.DrawWall(), 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, Trait.IgnoreLastStackHeight, Cell.ignoreObjShadow, Card.ignoreStackHeight, TileType.Illumination, index, innerMode, ShadowData.Instance, ActionMode.IsActive, Chara.IsAliveInCurrentZone, 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, ColorProfile.BlockColors.MapHighlight, RenderParam.mat, matBlock, Cell.matBlock, matBridge, Cell.matBridge, MeshPassParam.matColor, SourceMaterial.Row.matColor, MeshBatch.matColors, matFloor, Cell.matFloor, Cell.matList, Cell.matObj, MeshBatch.matrices, 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, 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, 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, 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, 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 3364 of file BaseTileMap.cs.

3365 {
3366 float num = _baseBrightness + 0.25f;
3367 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)));
3368 return (int)num;
3369 }

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 3744 of file BaseTileMap.cs.

3745 {
3746 if (p == 0)
3747 {
3748 return 104025;
3749 }
3750 return p * 262144 + (int)(matColor.r * 50f) * 4096 + (int)(matColor.g * 50f) * 64 + (int)(matColor.b * 50f);
3751 }

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 3371 of file BaseTileMap.cs.

3372 {
3373 float num = Mathf.Sqrt(lot.light) * roofLightMod;
3374 if (num > lightLimit * roofLightLimitMod)
3375 {
3377 }
3378 if (isSnowCovered)
3379 {
3380 num += roofLightSnow * (1f - nightRatio);
3381 }
3382 int num2 = (int)(num * 50f) * 262144;
3383 if (isSnowCovered)
3384 {
3385 num2 += snowColorToken;
3386 }
3387 return num2;
3388 }
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 3240 of file BaseTileMap.cs.

3241 {
3242 Vector3 zero = Vector3.zero;
3243 float num = 0f;
3244 cell = p.cell;
3246 if (!tg.TileType.UseMountHeight)
3247 {
3249 {
3250 zero.z -= 1f;
3251 }
3252 else if (!tg.sourceCard.multisize)
3253 {
3254 float num2 = ((cell._bridge != 0) ? cell.sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight);
3255 zero.y += num2;
3256 zero.z -= num2 * heightMod.z;
3257 }
3258 if (cell.HasRamp)
3259 {
3260 Vector3 rampFix = cell.sourceBlock.tileType.GetRampFix(cell.blockDir);
3261 zero.x += rampFix.x;
3262 zero.y += rampFix.y;
3263 zero.z += rampFix.z;
3264 }
3265 }
3266 if (tg.sourceCard.multisize)
3267 {
3268 zero.z -= 1f;
3269 }
3270 SourcePref pref = tg.Pref;
3271 zero.x += pref.x * (float)((!tg.flipX) ? 1 : (-1));
3272 zero.z += pref.z;
3273 detail = cell.detail;
3274 if (tg.isChara)
3275 {
3276 return zero;
3277 }
3278 bool flag = false;
3280 {
3281 flag = true;
3282 }
3284 {
3285 if (tg.altitude != 0)
3286 {
3287 zero += altitudeFix * tg.altitude;
3288 }
3289 flag = true;
3290 }
3292 {
3293 return zero;
3294 }
3295 float num3 = 0f;
3296 if (detail != null && detail.things.Count > 0)
3297 {
3298 Card card = null;
3299 for (int i = 0; i < detail.things.Count; i++)
3300 {
3301 Thing thing = detail.things[i];
3302 SourcePref pref2 = thing.Pref;
3304 float num4 = (tileType.UseMountHeight ? 0f : ((pref2.height == 0f) ? 0.1f : pref2.height));
3305 if (!thing.IsInstalled || thing == ActionMode.Inspect.target)
3306 {
3307 continue;
3308 }
3309 if (thing.TileType.IsRamp)
3310 {
3311 Vector3 rampFix2 = thing.TileType.GetRampFix(thing.dir, pref2);
3312 zero.x += rampFix2.x;
3313 zero.y += rampFix2.y;
3314 zero.z += rampFix2.z;
3315 }
3316 if (!flag && tileType.CanStack)
3317 {
3318 if (thing.ignoreStackHeight)
3319 {
3320 zero.y -= num3;
3321 }
3322 zero.y += num4;
3323 zero.x += pref2.stackX * (float)((!thing.flipX) ? 1 : (-1));
3324 zero.z += pref2.z + thing.renderer.data.stackZ;
3325 if (!tileType.UseMountHeight && thing.altitude != 0)
3326 {
3327 zero += altitudeFix * thing.altitude;
3328 num4 += altitudeFix.y * (float)thing.altitude;
3329 }
3330 if (thing.trait.IgnoreLastStackHeight && (card == null || !card.trait.IgnoreLastStackHeight))
3331 {
3332 zero.y -= num3;
3333 }
3334 num3 = num4;
3335 zero.z += renderSetting.thingZ + num + (float)i * -0.01f + zSetting.mod1 * zero.y;
3336 if (!thing.TileType.IsRamp && thing.trait.IsChangeFloorHeight)
3337 {
3338 _ = thing.ignoreStackHeight;
3339 }
3340 if (thing.sourceCard.multisize)
3341 {
3342 num += zSetting.multiZ;
3343 }
3344 card = thing;
3345 }
3346 }
3347 }
3348 if (flag)
3349 {
3350 return zero;
3351 }
3352 if (tg.ignoreStackHeight)
3353 {
3354 zero.y -= num3;
3355 zero.z += (float)(detail?.things.Count ?? 0) * -0.01f;
3356 }
3357 if (tg.altitude != 0)
3358 {
3359 zero += altitudeFix * tg.altitude;
3360 }
3361 return zero;
3362 }
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:2147
virtual bool isChara
Definition: Card.cs:2123
virtual CardRow sourceCard
Definition: Card.cs:2171

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, 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 520 of file BaseTileMap.cs.

521 {
522 screen = _screen;
523 if (lightLookUp == null)
524 {
525 lightLookUp = new float[256];
526 for (int i = 0; i < 256; i++)
527 {
528 lightLookUp[i] = EMono.scene.profile.global.lightLookupCurve.Evaluate((float)i / 255f);
529 }
530 }
533 zSetting = renderSetting.zSetting;
534 RenderObject.syncList = EMono.scene.syncList;
535 RenderObject.altitudeFix = altitudeFix.y;
536 if (Rand.bytes == null)
537 {
538 Rand.InitBytes(1);
539 }
541 }
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 909 of file BaseTileMap.cs.

910 {
911 if (EMono.game != null)
912 {
913 float num = (noSlopMode ? 0f : ((float)EMono.game.config.slopeMod * 0.01f));
915 _heightMod.x = num;
916 _heightMod.y *= num;
917 _heightMod.z *= num;
918 }
919 }
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 3753 of file BaseTileMap.cs.

3754 {
3755 Room room = _cell.room;
3756 if (room == null && dirWall != -1)
3757 {
3758 if (dirWall == 0 && _cell.Front.room != null)
3759 {
3760 room = _cell.Front.room;
3761 _cell = _cell.Front;
3762 }
3763 else if (_cell.Right.room != null)
3764 {
3765 room = _cell.Right.room;
3766 _cell = _cell.Right;
3767 }
3768 }
3769 if (room != null)
3770 {
3771 Lot lot = room.lot;
3772 RoofStyle roofStyle = roofStyles[lot.idRoofStyle];
3773 float num = (float)(_cz - _cx) * screen.tileAlign.y + (float)lot.mh * _heightMod.y + lot.realHeight + roofFix.y;
3774 float num2 = 1000f + param.x * screen.tileWeight.x + (float)lot.mh * _heightMod.z + lot.realHeight * roofFix3.z + roofFix.z + roofStyle.posFix.z;
3775 if (lot.height == 1)
3776 {
3777 num += roofStyle.lowRoofFix.y;
3778 num2 += roofStyle.lowRoofFix.z;
3779 }
3780 _param.x = (float)(_cx + _cz) * screen.tileAlign.x + roofFix.x + (float)h * roofFix2.x;
3781 _param.y = num + (float)h * roofFix2.y;
3782 _param.z = num2 + _param.y * screen.tileWeight.z + (float)h * roofFix2.z + heightModRoofBlock.y;
3783 }
3784 if (!ignoreAltitudeY || room != null)
3785 {
3786 _param.y += (float)altitude * _heightMod.y;
3787 }
3788 _param.z += (float)altitude * heightModRoofBlock.z;
3789 }
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 438 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 420 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ _sourceBlock

SourceBlock.Row BaseTileMap._sourceBlock
protected

Definition at line 502 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 472 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 436 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ blockLight

float BaseTileMap.blockLight
protected

Definition at line 384 of file BaseTileMap.cs.

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

◆ BlocklightMTP

const int BaseTileMap.BlocklightMTP = 50
static

Definition at line 516 of file BaseTileMap.cs.

◆ BlocklightToken

const int BaseTileMap.BlocklightToken = 262144
static

Definition at line 514 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 470 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 448 of file BaseTileMap.cs.

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

◆ currentLot

Lot BaseTileMap.currentLot
protected

Definition at line 500 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ currentRoom

Room BaseTileMap.currentRoom
protected

Definition at line 494 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 478 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ defaultBlockHeight

float BaseTileMap.defaultBlockHeight
protected

Definition at line 424 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 512 of file BaseTileMap.cs.

◆ destBrightness

float BaseTileMap.destBrightness
protected

Definition at line 410 of file BaseTileMap.cs.

Referenced by Draw().

◆ detail

CellDetail BaseTileMap.detail
protected

Definition at line 486 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 408 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 454 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ floorLight

float BaseTileMap.floorLight
protected

Definition at line 386 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ floorLight2

float BaseTileMap.floorLight2
protected

Definition at line 388 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ floorMatColor

int BaseTileMap.floorMatColor
protected

Definition at line 444 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 462 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ fogBrightness

float BaseTileMap.fogBrightness
protected

Definition at line 422 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 440 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 446 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 468 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 458 of file BaseTileMap.cs.

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

◆ isSnowCovered

bool BaseTileMap.isSnowCovered
protected

Definition at line 466 of file BaseTileMap.cs.

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

◆ isUnderwater

bool BaseTileMap.isUnderwater
protected

Definition at line 476 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ lastRoom

Room BaseTileMap.lastRoom
protected

Definition at line 496 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 390 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 506 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().

◆ 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 402 of file BaseTileMap.cs.

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

◆ modSublight1

float BaseTileMap.modSublight1
protected

Definition at line 414 of file BaseTileMap.cs.

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

◆ modSublight2

float BaseTileMap.modSublight2
protected

Definition at line 416 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 432 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 508 of file BaseTileMap.cs.

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

◆ orgPos

Vector3 BaseTileMap.orgPos
protected

Definition at line 482 of file BaseTileMap.cs.

◆ orgX

float BaseTileMap.orgX
protected

Definition at line 394 of file BaseTileMap.cs.

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

◆ orgY

float BaseTileMap.orgY
protected

Definition at line 396 of file BaseTileMap.cs.

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

◆ orgZ

float BaseTileMap.orgZ
protected

Definition at line 398 of file BaseTileMap.cs.

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

◆ param

RenderParam BaseTileMap.param = new RenderParam()
protected

Definition at line 434 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 392 of file BaseTileMap.cs.

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

◆ pcX

int BaseTileMap.pcX
protected

Definition at line 450 of file BaseTileMap.cs.

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

◆ pcZ

int BaseTileMap.pcZ
protected

Definition at line 452 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 456 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 498 of file BaseTileMap.cs.

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

◆ roomHeight

float BaseTileMap.roomHeight
protected

Definition at line 400 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 418 of file BaseTileMap.cs.

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

◆ showAllCards

bool BaseTileMap.showAllCards
protected

Definition at line 460 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ showBorder

bool BaseTileMap.showBorder
protected

Definition at line 474 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 428 of file BaseTileMap.cs.

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

◆ snowColor2

float BaseTileMap.snowColor2
protected

Definition at line 430 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 464 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ snowLight

float BaseTileMap.snowLight
protected

Definition at line 404 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ snowLimit

float BaseTileMap.snowLimit
protected

Definition at line 426 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ sourceBlock

SourceBlock.Row BaseTileMap.sourceBlock
protected

Definition at line 488 of file BaseTileMap.cs.

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

◆ sourceBridge

SourceFloor.Row BaseTileMap.sourceBridge
protected

Definition at line 492 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ sourceFloor

SourceFloor.Row BaseTileMap.sourceFloor
protected

Definition at line 490 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 480 of file BaseTileMap.cs.

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

◆ tile

int BaseTileMap.tile
protected

Definition at line 442 of file BaseTileMap.cs.

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

◆ tileType

TileType BaseTileMap.tileType
protected

Definition at line 504 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 406 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 518 of file BaseTileMap.cs.

Referenced by Draw().


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