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

Public Types

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

Public Member Functions

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

Static Public Member Functions

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

Public Attributes

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

Static Public Attributes

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

Protected Attributes

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

Properties

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

Private Attributes

bool noSlopMode
 

Detailed Description

Definition at line 5 of file BaseTileMap.cs.

Member Enumeration Documentation

◆ CardIconMode

Enumerator
None 
Inspect 
Deconstruct 
State 
Visibility 

Definition at line 21 of file BaseTileMap.cs.

◆ InnerMode

Enumerator
None 
InnerBlock 
Height 
BuildMode 

Definition at line 13 of file BaseTileMap.cs.

◆ ScreenHighlight

Enumerator
None 
SunMap 

Definition at line 30 of file BaseTileMap.cs.

◆ WallClipMode

Enumerator
ByRoom 
ByLot 

Definition at line 7 of file BaseTileMap.cs.

Member Function Documentation

◆ Draw()

virtual void BaseTileMap.Draw ( )
inlinevirtual

Reimplemented in TileMapElona.

Definition at line 547 of file BaseTileMap.cs.

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

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

◆ DrawRoof()

void BaseTileMap.DrawRoof ( Lot  lot)
inline

Definition at line 3430 of file BaseTileMap.cs.

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

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

Referenced by Draw().

◆ DrawTile()

virtual void BaseTileMap.DrawTile ( )
inlinevirtual

Reimplemented in TileMapElona.

Definition at line 925 of file BaseTileMap.cs.

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

References _actorPos, _baseBrightness, Cell._block, Cell._bridge, Cell._deco, _heightMod, _lightMod, _lowblock, EMono._map, _rightWallShade, Cell._roofBlock, Cell._roofBlockDir, Cell._roofBlockMat, _shadowStrength, _sourceBlock, RenderRow._tiles, EMono._zone, Scene.actionMode, BaseCore.actionsLateUpdate, MeshPass.Add(), MeshPass.AddShadow(), Chara.ai, Card.altitude, altitudeFix, Trait.AlwaysHideOnLowWall, alwaysLowblock, TileType.AlwaysShow, TileType.AlwaysShowShadow, LayerDrama.alwaysVisible, ambientShadowFix, CellDetail.anime, SourceCellEffect.Row.anime, TransAnime.animeBlock, CellDetail.area, GameSetting.RenderSetting.astralBodyFixZ, AreaData.atrium, Cell.autotile, Cell.autotileBridge, Cell.autotileDeco, Cell.autotileObj, Cell.Back, back, Cell.BackLeft, Cell.BackRight, batch, MeshPass.batches, MeshPass.batchIdx, MeshPass.batchSize, 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, if(), Trait.IgnoreLastStackHeight, Cell.ignoreObjShadow, Card.ignoreStackHeight, TileType.Illumination, index, innerMode, ShadowData.Instance, ActionMode.IsActive, Chara.IsAliveInCurrentZone, Chara.IsAstralBody, Cell.IsBlocked, Cell.isBridgeEdge, Cell.IsBridgeWater, Trait.IsChangeFloorHeight, Cell.isClearArea, Cell.isClearSnow, Chara.IsDeadOrSleeping, Cell.isDeck, Card.isDeconstructing, TileType.IsFence, CellEffect.IsFire, Card.isFloating, Cell.isFloating, Cell.IsFloorWater, Cell.isForceFloat, TileType.IsFullBlock, Trait.IsGround, isIndoor, Card.IsInstalled, CellEffect.IsLiquid, Card.isMasked, CardRenderer.IsMoving, Date.IsNight, Card.isNPCProperty, TraitDoor.IsOpen(), Chara.IsPC, Chara.IsPCC, TileType.IsRamp, Card.isRestrained, Card.isRoofItem, Cell.IsRoomEdge, isSeen, Cell.isSeen, Cell.isShadowed, Cell.isShoreSand, TileType.IsSkipLowBlock, Cell.isSkyFloor, Cell.isSlopeEdge, isSnowCovered, Cell.IsSnowTile, Cell.isSurrounded, ConBaseTransmuteMimic.IsThing, Cell.isToggleWallPillar, Cell.IsTopWater, isUnderwater, TileType.IsUseBlockDir, TileType.IsWall, Cell.isWallEdge, Cell.isWatered, TileType.IsWaterTop, ShadowData.items, Cell.Left, left, light, Lot.light, Cell.lightB, Cell.lightG, lightLimit, lightLookUp, Player.lightPower, Cell.lightR, liquidLv, Cell.liquidLv, RenderParam.liquidLv, SourcePref.liquidMod, SourcePref.liquidModMax, Room.lot, lotLight, lotLight2, Cell.lotShade, Cell.lotWall, lowBlock, lowWallObjAltitude, map, ColorProfile.BlockColors.MapHighlight, RenderParam.mat, matBlock, Cell.matBlock, matBridge, Cell.matBridge, MeshPassParam.matColor, SourceMaterial.Row.matColor, MeshBatch.matColors, matDeco, Cell.matDeco, 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, sourceDeco, Cell.sourceDeco, Cell.sourceEffect, sourceFloor, Cell.sourceFloor, FLOOR.sourceIce, Cell.sourceObj, EMono.sources, FLOOR.sourceSnow, MATERIAL.sourceSnow, FLOOR.sourceSnow2, RenderData.stackZ, subtleHighlightArea, Map.sunMap, thingPos, Cell.Things, CellDetail.things, tile, Critter.tile, Footmark.tile, MeshPassParam.tile, BaseGameScreen.tileAlign, MeshBatch.tiles, tileType, Card.TileType, RenderRow.tileType, Trait.tileType, BaseGameScreen.tileWeight, 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 3404 of file BaseTileMap.cs.

3405 {
3406 float num = _baseBrightness + 0.25f;
3407 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)));
3408 return (int)num;
3409 }

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

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

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

3412 {
3413 float num = Mathf.Sqrt(lot.light) * roofLightMod;
3414 if (num > lightLimit * roofLightLimitMod)
3415 {
3417 }
3418 if (isSnowCovered)
3419 {
3420 num += roofLightSnow * (1f - nightRatio);
3421 }
3422 int num2 = (int)(num * 50f) * 262144;
3423 if (isSnowCovered)
3424 {
3425 num2 += snowColorToken;
3426 }
3427 return num2;
3428 }
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 3280 of file BaseTileMap.cs.

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

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

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

◆ OnActivate()

void BaseTileMap.OnActivate ( BaseGameScreen  _screen)
inline

Definition at line 524 of file BaseTileMap.cs.

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

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

Referenced by BaseGameScreen.Activate().

◆ RefreshHeight()

void BaseTileMap.RefreshHeight ( )
inline

Definition at line 913 of file BaseTileMap.cs.

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

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

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

◆ SetRoofHeight()

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

Definition at line 3793 of file BaseTileMap.cs.

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

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

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

Member Data Documentation

◆ _actorPos

Vector3 BaseTileMap._actorPos
protected

Definition at line 440 of file BaseTileMap.cs.

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

◆ _baseBrightness

float BaseTileMap._baseBrightness

◆ _heightMod

Vector3 BaseTileMap._heightMod

◆ _lightMod

float BaseTileMap._lightMod

Definition at line 311 of file BaseTileMap.cs.

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

◆ _lowblock

bool BaseTileMap._lowblock
protected

Definition at line 350 of file BaseTileMap.cs.

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

◆ _rightWallShade

float BaseTileMap._rightWallShade

Definition at line 323 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ _shadowStrength

float BaseTileMap._shadowStrength
protected

Definition at line 422 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ _sourceBlock

SourceBlock.Row BaseTileMap._sourceBlock
protected

Definition at line 506 of file BaseTileMap.cs.

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

◆ activeCount

int BaseTileMap.activeCount

Definition at line 260 of file BaseTileMap.cs.

Referenced by Draw().

◆ altitudeFix

Vector3 BaseTileMap.altitudeFix

Definition at line 102 of file BaseTileMap.cs.

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

◆ alwaysLowblock

bool BaseTileMap.alwaysLowblock
protected

Definition at line 474 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ ambientShadowFix

Vector3 [] BaseTileMap.ambientShadowFix

Definition at line 112 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ batch

MeshBatch BaseTileMap.batch
protected

Definition at line 438 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ blockLight

float BaseTileMap.blockLight
protected

Definition at line 386 of file BaseTileMap.cs.

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

◆ BlocklightMTP

const int BaseTileMap.BlocklightMTP = 50
static

Definition at line 520 of file BaseTileMap.cs.

◆ BlocklightToken

const int BaseTileMap.BlocklightToken = 262144
static

Definition at line 518 of file BaseTileMap.cs.

◆ bridgeFix

Vector3 BaseTileMap.bridgeFix

Definition at line 94 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ buildMode

bool BaseTileMap.buildMode
protected

Definition at line 346 of file BaseTileMap.cs.

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

◆ cell

Cell BaseTileMap.cell
protected

◆ cinemaMode

bool BaseTileMap.cinemaMode
protected

Definition at line 472 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ colliderFix

Vector3 BaseTileMap.colliderFix

Definition at line 43 of file BaseTileMap.cs.

Referenced by Draw().

◆ cornerWallFix

Vector3 BaseTileMap.cornerWallFix

Definition at line 96 of file BaseTileMap.cs.

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

◆ cornerWallFix2

Vector3 BaseTileMap.cornerWallFix2

Definition at line 98 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ cornerWallFix3

Vector3 BaseTileMap.cornerWallFix3

Definition at line 100 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ count

int BaseTileMap.count

Definition at line 38 of file BaseTileMap.cs.

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

◆ currentHeight

int BaseTileMap.currentHeight
protected

Definition at line 450 of file BaseTileMap.cs.

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

◆ currentLot

Lot BaseTileMap.currentLot
protected

Definition at line 504 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ currentRoom

Room BaseTileMap.currentRoom
protected

Definition at line 498 of file BaseTileMap.cs.

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

◆ cx

int BaseTileMap.cx

Definition at line 254 of file BaseTileMap.cs.

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

◆ cz

int BaseTileMap.cz

Definition at line 257 of file BaseTileMap.cs.

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

◆ darkenOuter

bool BaseTileMap.darkenOuter
protected

Definition at line 480 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ defaultBlockHeight

float BaseTileMap.defaultBlockHeight
protected

Definition at line 426 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ defaultInnerMode

InnerMode BaseTileMap.defaultInnerMode

Definition at line 90 of file BaseTileMap.cs.

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

◆ DefColor

const int BaseTileMap.DefColor = 104025
static

Definition at line 516 of file BaseTileMap.cs.

◆ destBrightness

float BaseTileMap.destBrightness
protected

Definition at line 412 of file BaseTileMap.cs.

Referenced by Draw().

◆ detail

CellDetail BaseTileMap.detail
protected

Definition at line 488 of file BaseTileMap.cs.

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

◆ edgeBlockFix

Vector3 BaseTileMap.edgeBlockFix

Definition at line 92 of file BaseTileMap.cs.

Referenced by Draw().

◆ floatSpeed

float BaseTileMap.floatSpeed

Definition at line 122 of file BaseTileMap.cs.

Referenced by Draw().

◆ floatTimer

float BaseTileMap.floatTimer
protected

Definition at line 410 of file BaseTileMap.cs.

Referenced by Draw().

◆ floatV

int BaseTileMap.floatV = 1

Definition at line 263 of file BaseTileMap.cs.

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

◆ floatVs

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

Definition at line 302 of file BaseTileMap.cs.

Referenced by Draw().

◆ floatY

float BaseTileMap.floatY

Definition at line 329 of file BaseTileMap.cs.

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

◆ floatYs

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

Definition at line 308 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ floorDir

int BaseTileMap.floorDir
protected

Definition at line 456 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ floorLight

float BaseTileMap.floorLight
protected

Definition at line 388 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ floorLight2

float BaseTileMap.floorLight2
protected

Definition at line 390 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ floorMatColor

int BaseTileMap.floorMatColor
protected

Definition at line 446 of file BaseTileMap.cs.

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

◆ floorShadowStrength

float BaseTileMap.floorShadowStrength

Definition at line 332 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ fogBounds

bool BaseTileMap.fogBounds
protected

Definition at line 464 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ fogBrightness

float BaseTileMap.fogBrightness
protected

Definition at line 424 of file BaseTileMap.cs.

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

◆ fogged

bool BaseTileMap.fogged

Definition at line 299 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ fogTile

int BaseTileMap.fogTile

Definition at line 120 of file BaseTileMap.cs.

◆ forceShowHang

bool BaseTileMap.forceShowHang
static

Definition at line 36 of file BaseTileMap.cs.

Referenced by Draw().

◆ freePos

Vector3 BaseTileMap.freePos
protected

Definition at line 442 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ groundLights

byte [] BaseTileMap.groundLights

Definition at line 266 of file BaseTileMap.cs.

◆ hasBridge

bool BaseTileMap.hasBridge
protected

Definition at line 348 of file BaseTileMap.cs.

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

◆ height

int BaseTileMap.height
protected

Definition at line 448 of file BaseTileMap.cs.

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

◆ heightBlockSize

float BaseTileMap.heightBlockSize

Definition at line 48 of file BaseTileMap.cs.

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

◆ heightLightMod

float BaseTileMap.heightLightMod

Definition at line 320 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ heightLimitDeco

float BaseTileMap.heightLimitDeco

Definition at line 54 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ heightMod

Vector3 BaseTileMap.heightMod

Definition at line 56 of file BaseTileMap.cs.

Referenced by GetThingPosition(), and RefreshHeight().

◆ heightModDeco

float BaseTileMap.heightModDeco

Definition at line 52 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ heightModRoofBlock

Vector3 BaseTileMap.heightModRoofBlock

Definition at line 66 of file BaseTileMap.cs.

Referenced by SetRoofHeight().

◆ hideHang

bool BaseTileMap.hideHang

Definition at line 290 of file BaseTileMap.cs.

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

◆ hideRoomFog

bool BaseTileMap.hideRoomFog

Definition at line 281 of file BaseTileMap.cs.

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

◆ highlightArea

bool BaseTileMap.highlightArea

Definition at line 275 of file BaseTileMap.cs.

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

◆ highlightCells

bool BaseTileMap.highlightCells
protected

Definition at line 470 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ iconMode

CardIconMode BaseTileMap.iconMode
protected

Definition at line 342 of file BaseTileMap.cs.

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

◆ index

int BaseTileMap.index
protected

Definition at line 368 of file BaseTileMap.cs.

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

◆ innerMode

InnerMode BaseTileMap.innerMode
protected

Definition at line 233 of file BaseTileMap.cs.

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

◆ isIndoor

bool BaseTileMap.isIndoor
protected

Definition at line 352 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ isMining

bool BaseTileMap.isMining
protected

Definition at line 344 of file BaseTileMap.cs.

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

◆ isSeen

bool BaseTileMap.isSeen
protected

Definition at line 460 of file BaseTileMap.cs.

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

◆ isSnowCovered

bool BaseTileMap.isSnowCovered
protected

Definition at line 468 of file BaseTileMap.cs.

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

◆ isUnderwater

bool BaseTileMap.isUnderwater
protected

Definition at line 478 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ lastRoom

Room BaseTileMap.lastRoom
protected

Definition at line 500 of file BaseTileMap.cs.

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

◆ layerGroundLights

NoiseLayer BaseTileMap.layerGroundLights

Definition at line 131 of file BaseTileMap.cs.

◆ light

float BaseTileMap.light
protected

Definition at line 392 of file BaseTileMap.cs.

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

◆ lightLimit

float BaseTileMap.lightLimit
protected

◆ lightLookUp

float [] BaseTileMap.lightLookUp

Definition at line 305 of file BaseTileMap.cs.

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

◆ lightSetting

SceneLightProfile BaseTileMap.lightSetting
protected

Definition at line 510 of file BaseTileMap.cs.

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

◆ liquidLv

int BaseTileMap.liquidLv
protected

Definition at line 366 of file BaseTileMap.cs.

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

◆ lotLight

float BaseTileMap.lotLight

Definition at line 81 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ lotLight2

float BaseTileMap.lotLight2

Definition at line 83 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ lowBlock

bool BaseTileMap.lowBlock

Definition at line 269 of file BaseTileMap.cs.

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

◆ lowblockTimer

float BaseTileMap.lowblockTimer

Definition at line 317 of file BaseTileMap.cs.

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

◆ lowObj

bool BaseTileMap.lowObj

Definition at line 272 of file BaseTileMap.cs.

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

◆ lowWallObjAltitude

int BaseTileMap.lowWallObjAltitude
protected

Definition at line 376 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ map

Map BaseTileMap.map
protected

Definition at line 356 of file BaseTileMap.cs.

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

◆ matBlock

SourceMaterial.Row BaseTileMap.matBlock
protected

Definition at line 378 of file BaseTileMap.cs.

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

◆ matBridge

SourceMaterial.Row BaseTileMap.matBridge
protected

Definition at line 382 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ matDeco

SourceMaterial.Row BaseTileMap.matDeco
protected

Definition at line 384 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ matFloor

SourceMaterial.Row BaseTileMap.matFloor
protected

Definition at line 380 of file BaseTileMap.cs.

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

◆ maxColliderCheck

int BaseTileMap.maxColliderCheck

Definition at line 45 of file BaseTileMap.cs.

Referenced by Draw().

◆ maxFloat

int BaseTileMap.maxFloat

Definition at line 126 of file BaseTileMap.cs.

Referenced by Draw().

◆ maxHeight

float BaseTileMap.maxHeight
protected

Definition at line 404 of file BaseTileMap.cs.

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

◆ modSublight1

float BaseTileMap.modSublight1
protected

Definition at line 416 of file BaseTileMap.cs.

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

◆ modSublight2

float BaseTileMap.modSublight2
protected

Definition at line 418 of file BaseTileMap.cs.

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

◆ mouseCollider

Collider2D BaseTileMap.mouseCollider

Definition at line 41 of file BaseTileMap.cs.

◆ mx

int BaseTileMap.mx

Definition at line 242 of file BaseTileMap.cs.

Referenced by Draw().

◆ mz

int BaseTileMap.mz

Definition at line 245 of file BaseTileMap.cs.

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

◆ nightRatio

float BaseTileMap.nightRatio
protected

Definition at line 434 of file BaseTileMap.cs.

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

◆ noRoofMode

bool BaseTileMap.noRoofMode

Definition at line 296 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ noSlopMode

bool BaseTileMap.noSlopMode
private

Definition at line 512 of file BaseTileMap.cs.

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

◆ orgPos

Vector3 BaseTileMap.orgPos
protected

Definition at line 484 of file BaseTileMap.cs.

◆ orgX

float BaseTileMap.orgX
protected

Definition at line 396 of file BaseTileMap.cs.

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

◆ orgY

float BaseTileMap.orgY
protected

Definition at line 398 of file BaseTileMap.cs.

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

◆ orgZ

float BaseTileMap.orgZ
protected

Definition at line 400 of file BaseTileMap.cs.

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

◆ param

RenderParam BaseTileMap.param = new RenderParam()
protected

Definition at line 436 of file BaseTileMap.cs.

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

◆ pass

MeshPass BaseTileMap.pass
protected

Definition at line 358 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ passArea

MeshPass BaseTileMap.passArea

Definition at line 141 of file BaseTileMap.cs.

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

◆ passAutoTile

MeshPass BaseTileMap.passAutoTile

Definition at line 175 of file BaseTileMap.cs.

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

◆ passAutoTileWater

MeshPass BaseTileMap.passAutoTileWater

◆ passBlock

MeshPass BaseTileMap.passBlock

Definition at line 147 of file BaseTileMap.cs.

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

◆ passBlockEx

MeshPass BaseTileMap.passBlockEx

Definition at line 161 of file BaseTileMap.cs.

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

◆ passBlockMarker

MeshPass BaseTileMap.passBlockMarker

Definition at line 179 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passChara

MeshPass BaseTileMap.passChara

Definition at line 187 of file BaseTileMap.cs.

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

◆ passCharaL

MeshPass BaseTileMap.passCharaL

Definition at line 189 of file BaseTileMap.cs.

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

◆ passCharaLL

MeshPass BaseTileMap.passCharaLL

Definition at line 193 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passCharaLW

MeshPass BaseTileMap.passCharaLW

Definition at line 191 of file BaseTileMap.cs.

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

◆ passDecal

MeshPass BaseTileMap.passDecal

Definition at line 157 of file BaseTileMap.cs.

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

◆ passEdge

MeshPass BaseTileMap.passEdge

Definition at line 173 of file BaseTileMap.cs.

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

◆ passFloor

MeshPass BaseTileMap.passFloor

◆ passFloorEx

MeshPass BaseTileMap.passFloorEx

Definition at line 163 of file BaseTileMap.cs.

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

◆ passFloorMarker

MeshPass BaseTileMap.passFloorMarker

Definition at line 181 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passFloorWater

◆ passFog

MeshPass BaseTileMap.passFog

Definition at line 169 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passFov

MeshPass BaseTileMap.passFov

Definition at line 171 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passGuideBlock

MeshPass BaseTileMap.passGuideBlock

◆ passGuideFloor

MeshPass BaseTileMap.passGuideFloor

Definition at line 139 of file BaseTileMap.cs.

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

◆ passIcon

MeshPass BaseTileMap.passIcon

Definition at line 185 of file BaseTileMap.cs.

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

◆ passInner

MeshPass BaseTileMap.passInner

Definition at line 167 of file BaseTileMap.cs.

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

◆ passLiquid

◆ passObj

MeshPass BaseTileMap.passObj

Definition at line 153 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passObjL

MeshPass BaseTileMap.passObjL

Definition at line 155 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passObjS

MeshPass BaseTileMap.passObjS

Definition at line 149 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passObjSS

MeshPass BaseTileMap.passObjSS

Definition at line 151 of file BaseTileMap.cs.

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

◆ passRamp

MeshPass BaseTileMap.passRamp

Definition at line 143 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passRoof

MeshPass BaseTileMap.passRoof

Definition at line 159 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ passShadow

◆ passShore

MeshPass BaseTileMap.passShore

Definition at line 195 of file BaseTileMap.cs.

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

◆ passWaterBlock

MeshPass BaseTileMap.passWaterBlock

Definition at line 183 of file BaseTileMap.cs.

Referenced by TextureManager.Init().

◆ pcMaxLight

float BaseTileMap.pcMaxLight
protected

Definition at line 394 of file BaseTileMap.cs.

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

◆ pcX

int BaseTileMap.pcX
protected

Definition at line 452 of file BaseTileMap.cs.

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

◆ pcZ

int BaseTileMap.pcZ
protected

Definition at line 454 of file BaseTileMap.cs.

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

◆ rays

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

Definition at line 340 of file BaseTileMap.cs.

Referenced by Draw().

◆ renderBorder

RenderData BaseTileMap.renderBorder

Definition at line 211 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererBlockMarker

RenderData BaseTileMap.rendererBlockMarker

Definition at line 199 of file BaseTileMap.cs.

Referenced by Recipe.OnRenderMarker().

◆ rendererEffect

RenderDataEffect BaseTileMap.rendererEffect

Definition at line 229 of file BaseTileMap.cs.

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

◆ rendererFloorMarker

RenderData BaseTileMap.rendererFloorMarker

Definition at line 201 of file BaseTileMap.cs.

Referenced by Recipe.OnRenderMarker().

◆ rendererFogBlockSolid

RenderData BaseTileMap.rendererFogBlockSolid

Definition at line 213 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFogFloorSolid

RenderData BaseTileMap.rendererFogFloorSolid

Definition at line 215 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFogRoomBlockSolid

RenderData BaseTileMap.rendererFogRoomBlockSolid

Definition at line 219 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFogRoomSolid

RenderData BaseTileMap.rendererFogRoomSolid

Definition at line 217 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFogRoomWallSolid

RenderData BaseTileMap.rendererFogRoomWallSolid

Definition at line 221 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFov

RenderData BaseTileMap.rendererFov

Definition at line 205 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererFov2

RenderData BaseTileMap.rendererFov2

Definition at line 207 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ rendererInnerBlock

RenderData BaseTileMap.rendererInnerBlock

Definition at line 203 of file BaseTileMap.cs.

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

◆ rendererObjDummy

RenderDataObjDummy BaseTileMap.rendererObjDummy

Definition at line 227 of file BaseTileMap.cs.

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

◆ rendererShore

RenderData BaseTileMap.rendererShore

Definition at line 209 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererWallDeco

RenderData BaseTileMap.rendererWallDeco

Definition at line 223 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ rendererWaterBlock

RenderData BaseTileMap.rendererWaterBlock

Definition at line 225 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ renderFootmark

RenderData BaseTileMap.renderFootmark

Definition at line 197 of file BaseTileMap.cs.

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

◆ renderSetting

GameSetting.RenderSetting BaseTileMap.renderSetting
protected

Definition at line 362 of file BaseTileMap.cs.

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

◆ rightWallShade

float BaseTileMap.rightWallShade

Definition at line 69 of file BaseTileMap.cs.

Referenced by Draw().

◆ roof

bool BaseTileMap.roof
protected

Definition at line 458 of file BaseTileMap.cs.

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

◆ roofFix

Vector3 BaseTileMap.roofFix

Definition at line 73 of file BaseTileMap.cs.

Referenced by DrawRoof(), and SetRoofHeight().

◆ roofFix2

Vector3 BaseTileMap.roofFix2

Definition at line 75 of file BaseTileMap.cs.

Referenced by DrawRoof(), and SetRoofHeight().

◆ roofFix3

Vector3 BaseTileMap.roofFix3

Definition at line 77 of file BaseTileMap.cs.

Referenced by DrawRoof().

◆ roofLightLimitMod

float BaseTileMap.roofLightLimitMod

Definition at line 326 of file BaseTileMap.cs.

Referenced by Draw(), and GetRoofLight().

◆ roofLightMod

float BaseTileMap.roofLightMod

Definition at line 79 of file BaseTileMap.cs.

Referenced by GetRoofLight().

◆ roofLightSnow

float BaseTileMap.roofLightSnow

Definition at line 85 of file BaseTileMap.cs.

Referenced by GetRoofLight().

◆ roofRampFix

Vector3 BaseTileMap.roofRampFix

Definition at line 71 of file BaseTileMap.cs.

Referenced by DrawRoof().

◆ roofStyles

RoofStyle [] BaseTileMap.roofStyles

◆ room

Room BaseTileMap.room
protected

Definition at line 502 of file BaseTileMap.cs.

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

◆ roomHeight

float BaseTileMap.roomHeight
protected

Definition at line 402 of file BaseTileMap.cs.

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

◆ screen

new BaseGameScreen BaseTileMap.screen

◆ screenHighlight

ScreenHighlight BaseTileMap.screenHighlight

Definition at line 338 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ seaAnimeIndexes

int [] BaseTileMap.seaAnimeIndexes

Definition at line 128 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ selector

BaseTileSelector BaseTileMap.selector
protected

Definition at line 360 of file BaseTileMap.cs.

Referenced by OnActivate().

◆ shadowModStrength

float BaseTileMap.shadowModStrength

Definition at line 124 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ shadowStrength

float BaseTileMap.shadowStrength
protected

Definition at line 420 of file BaseTileMap.cs.

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

◆ showAllCards

bool BaseTileMap.showAllCards
protected

Definition at line 462 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ showBorder

bool BaseTileMap.showBorder
protected

Definition at line 476 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ showFullWall

bool BaseTileMap.showFullWall

Definition at line 287 of file BaseTileMap.cs.

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

◆ showRoof

bool BaseTileMap.showRoof

Definition at line 284 of file BaseTileMap.cs.

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

◆ Size

int BaseTileMap.Size

Definition at line 236 of file BaseTileMap.cs.

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

◆ SizeXZ

int BaseTileMap.SizeXZ

Definition at line 239 of file BaseTileMap.cs.

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

◆ slopeFixZ

float BaseTileMap.slopeFixZ

Definition at line 50 of file BaseTileMap.cs.

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

◆ snowColor

float BaseTileMap.snowColor
protected

Definition at line 430 of file BaseTileMap.cs.

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

◆ snowColor2

float BaseTileMap.snowColor2
protected

Definition at line 432 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ snowColorToken

int BaseTileMap.snowColorToken
protected

Definition at line 372 of file BaseTileMap.cs.

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

◆ snowed

bool BaseTileMap.snowed
protected

Definition at line 466 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ snowLight

float BaseTileMap.snowLight
protected

Definition at line 406 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ snowLimit

float BaseTileMap.snowLimit
protected

Definition at line 428 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ sourceBlock

SourceBlock.Row BaseTileMap.sourceBlock
protected

Definition at line 490 of file BaseTileMap.cs.

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

◆ sourceBridge

SourceFloor.Row BaseTileMap.sourceBridge
protected

Definition at line 494 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ sourceDeco

SourceDeco.Row BaseTileMap.sourceDeco
protected

Definition at line 496 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ sourceFloor

SourceFloor.Row BaseTileMap.sourceFloor
protected

Definition at line 492 of file BaseTileMap.cs.

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

◆ subtleHighlightArea

bool BaseTileMap.subtleHighlightArea

Definition at line 278 of file BaseTileMap.cs.

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

◆ TestPoint

Point BaseTileMap.TestPoint = new Point()

Definition at line 231 of file BaseTileMap.cs.

Referenced by Draw().

◆ thingPos

Vector3 BaseTileMap.thingPos
protected

Definition at line 482 of file BaseTileMap.cs.

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

◆ tile

int BaseTileMap.tile
protected

Definition at line 444 of file BaseTileMap.cs.

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

◆ tileType

TileType BaseTileMap.tileType
protected

Definition at line 508 of file BaseTileMap.cs.

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

◆ totalFire

int BaseTileMap.totalFire
protected

Definition at line 370 of file BaseTileMap.cs.

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

◆ transitionFix

Vector3 [] BaseTileMap.transitionFix

Definition at line 114 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ ugFix

Vector3 BaseTileMap.ugFix

Definition at line 58 of file BaseTileMap.cs.

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

◆ ugFixBridge

Vector3 BaseTileMap.ugFixBridge

Definition at line 60 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ ugFixBridgeBottom

Vector3 BaseTileMap.ugFixBridgeBottom

Definition at line 62 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ ugFixBridgeTop

Vector3 BaseTileMap.ugFixBridgeTop

Definition at line 64 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ usingHouseBoard

bool BaseTileMap.usingHouseBoard

Definition at line 293 of file BaseTileMap.cs.

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

◆ wallClipMode

WallClipMode BaseTileMap.wallClipMode

Definition at line 88 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ wallHangFix

Vector3 [] BaseTileMap.wallHangFix

Definition at line 116 of file BaseTileMap.cs.

Referenced by TileTypeWallHang.GetMountHeight().

◆ waterAnimeIndex

int BaseTileMap.waterAnimeIndex
protected

Definition at line 374 of file BaseTileMap.cs.

Referenced by Draw(), and DrawTile().

◆ waterAnimeTimer

float BaseTileMap.waterAnimeTimer
protected

Definition at line 408 of file BaseTileMap.cs.

Referenced by Draw().

◆ waterEdgeBlockFix

Vector3 [] BaseTileMap.waterEdgeBlockFix

Definition at line 118 of file BaseTileMap.cs.

◆ waterEdgeBridgeFix

Vector3 BaseTileMap.waterEdgeBridgeFix

Definition at line 106 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ waterEdgeFix

Vector3 BaseTileMap.waterEdgeFix

Definition at line 104 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ waterEdgeFixShore

Vector3 BaseTileMap.waterEdgeFixShore

Definition at line 108 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ waterEdgeFixShoreSand

Vector3 BaseTileMap.waterEdgeFixShoreSand

Definition at line 110 of file BaseTileMap.cs.

Referenced by DrawTile().

◆ x

int BaseTileMap.x

Definition at line 248 of file BaseTileMap.cs.

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

◆ z

int BaseTileMap.z

Definition at line 251 of file BaseTileMap.cs.

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

◆ zSetting

GameSetting.RenderSetting.ZSetting BaseTileMap.zSetting
protected

Definition at line 364 of file BaseTileMap.cs.

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

Property Documentation

◆ HitPoint

Point BaseTileMap.HitPoint
get

Definition at line 522 of file BaseTileMap.cs.

Referenced by Draw().


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