Elin Decompiled Documentation EA 23.307 Stable
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
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:622
bool IsInActiveZone
Definition: Chara.cs:852
new GameConfig game
Definition: CoreConfig.cs:613
Definition: Core.cs:14
static float delta
Definition: Core.cs:17
CoreConfig config
Definition: Core.cs:70
Definition: EInput.cs:8
static bool isAltDown
Definition: EInput.cs:276
static bool isShiftDown
Definition: EInput.cs:272
static ButtonState rightMouse
Definition: EInput.cs:362
static Vector3 mposWorld
Definition: EInput.cs:350
Definition: EMono.cs:4
static Core core
Definition: EMono.cs:5
static Chara pc
Definition: EMono.cs:13
static Player player
Definition: EMono.cs:11
static Zone _zone
Definition: EMono.cs:19
static Game game
Definition: EMono.cs:7
static Scene scene
Definition: EMono.cs:27
static SoundManager Sound
Definition: EMono.cs:39
static Map _map
Definition: EMono.cs:17
bool buildLight
Definition: Game.cs:37
int animeSpeed
Definition: Game.cs:85
bool showRoof
Definition: Game.cs:13
bool showWall
Definition: Game.cs:16
int lowWallObjAltitude
Definition: Game.cs:88
bool reverseSnow
Definition: Game.cs:49
bool slope
Definition: Game.cs:25
Config config
Definition: Game.cs:219
Definition: Lot.cs:5
int idRoofStyle
Definition: Lot.cs:14
int idBGM
Definition: Lot.cs:16
int Size
Definition: MapBounds.cs:20
float heightLightMod
Definition: MapConfig.cs:56
float blockHeight
Definition: MapConfig.cs:71
bool reverseRoof
Definition: MapConfig.cs:47
bool IsIndoor
Definition: Map.cs:131
int SizeXZ
Definition: Map.cs:133
RoomManager rooms
Definition: Map.cs:31
MapConfig config
Definition: Map.cs:37
float[] matColors
Definition: MeshBatch.cs:11
Matrix4x4[] matrices
Definition: MeshBatch.cs:5
float[] tiles
Definition: MeshBatch.cs:7
float[] colors
Definition: MeshBatch.cs:9
int batchIdx
Definition: MeshPass.cs:60
void NextBatch()
Definition: MeshPass.cs:417
int batchSize
Definition: MeshPass.cs:63
List< MeshBatch > batches
Definition: MeshPass.cs:66
int idx
Definition: MeshPass.cs:57
CinemaConfig cinemaConfig
Definition: Player.cs:1179
int lightRadius
Definition: Player.cs:1259
ref Vector3 Position(int height)
Definition: Point.cs:548
Point Set(int _x, int _z)
Definition: Point.cs:503
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
bool IsValid
Definition: Point.cs:88
Point Clamp(bool useBounds=false)
Definition: Point.cs:1009
Cell cell
Definition: Point.cs:51
void Draw(RenderParam p, int tile)
Definition: RenderData.cs:129
List< Lot > listLot
Definition: RoomManager.cs:20
void Refresh()
Definition: RoomManager.cs:52
Definition: Room.cs:4
bool HasRoof
Definition: Room.cs:29
Lot lot
Definition: Room.cs:21
AnimationCurve baseBrightnessCurve
AnimationCurve shadowCurveFloor
AnimationCurve dynamicBrightnessCurve2
float dynamicBrightnessLightBonus
AnimationCurve lightLimit
AnimationCurve fogBrightness
AnimationCurve dynamicBrightnessCurve
AnimationCurve shadowCurve
AnimationCurve nightRatioCurve
AnimationCurve lightModCurve
SceneGlobalProfile global
Definition: SceneProfile.cs:6
SceneLightProfile light
Definition: SceneProfile.cs:10
float timeRatio
Definition: Scene.cs:130
CameraSupport camSupport
Definition: Scene.cs:41
GameSetting.RenderSetting.MapBGSetting bg
Definition: Scene.cs:124
SoundSource sfxFire
Definition: Scene.cs:89
ActionMode actionMode
Definition: Scene.cs:79
SceneProfile profile
Definition: Scene.cs:75
bool IsPlayerFaction
Definition: Spatial.cs:455
virtual bool IsRegion
Definition: Spatial.cs:515
virtual bool IsSnowCovered
Definition: Spatial.cs:545
Definition: Zone.cs:12
virtual bool IsSkyLevel
Definition: Zone.cs:269
void RefreshBGM()
Definition: Zone.cs:3103
virtual bool AlwaysLowblock
Definition: Zone.cs:397
virtual bool IsUnderwater
Definition: Zone.cs:271
Map map
Definition: Zone.cs:63

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

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

◆ DrawRoof()

void BaseTileMap.DrawRoof ( Lot  lot)
inline

Definition at line 3436 of file BaseTileMap.cs.

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

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

Referenced by Draw().

◆ DrawTile()

virtual void BaseTileMap.DrawTile ( )
inlinevirtual

Reimplemented in TileMapElona.

Definition at line 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_16bd;
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)
1271 {
1272 return;
1273 }
1274 }
1275 else
1276 {
1277 if (isRoomEdge)
1278 {
1279 goto IL_16bd;
1280 }
1281 if (detail == null || !EMono.pc.hasTelepathy)
1282 {
1283 if (noRoofMode || detail == null)
1284 {
1285 return;
1286 }
1287 fogged = true;
1288 }
1289 }
1290 goto IL_7eb8;
1291 IL_7327:
1292 int num3;
1293 if (!showRoof || !roof || this.cell.room == null || this.cell.Front.room == null || this.cell.Right.room == null)
1294 {
1295 param.tile = num3;
1297 }
1298 goto IL_7387;
1299 IL_7387:
1300 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)))
1301 {
1302 snowed = true;
1303 }
1304 if (this.cell.effect != null)
1305 {
1306 if (this.cell.effect.IsLiquid)
1307 {
1308 SourceCellEffect.Row sourceEffect = this.cell.sourceEffect;
1309 SourceMaterial.Row defaultMaterial = sourceEffect.DefaultMaterial;
1310 tile = 4 + Rand.bytes[index % Rand.MaxBytes] % 4;
1311 param.tile = tile + this.cell.sourceEffect._tiles[0];
1312 param.mat = defaultMaterial;
1313 param.matColor = ((this.cell.effect.color == 0) ? GetColorInt(ref defaultMaterial.matColor, sourceEffect.colorMod) : this.cell.effect.color);
1314 sourceEffect.renderData.Draw(param);
1315 }
1316 else
1317 {
1318 param.tile = this.cell.effect.source._tiles[0];
1319 SourceCellEffect.Row sourceEffect2 = this.cell.sourceEffect;
1320 if (sourceEffect2.anime.Length != 0)
1321 {
1322 if (sourceEffect2.anime.Length > 2)
1323 {
1324 float num4 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[2];
1325 if (!(num4 >= (float)sourceEffect2.anime[0]))
1326 {
1327 param.tile += num4;
1328 }
1329 }
1330 else
1331 {
1332 float num5 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[0];
1333 param.tile += num5;
1334 }
1335 }
1336 if (this.cell.effect.IsFire)
1337 {
1339 }
1340 else
1341 {
1342 this.cell.effect.source.renderData.Draw(param);
1343 }
1344 }
1345 }
1346 param.color = floorLight;
1347 if (this.cell.critter != null)
1348 {
1349 Critter critter = this.cell.critter;
1350 int snowTile = critter.tile;
1351 if (snowed && critter.SnowTile != 0)
1352 {
1353 critter.x = 0.06f;
1354 critter.y = -0.06f;
1355 snowTile = critter.SnowTile;
1356 }
1357 else
1358 {
1359 critter.Update();
1360 }
1361 pass = passObjSS;
1363 batch.matrices[pass.idx].m03 = param.x + (float)(int)(critter.x * 100f) * 0.01f;
1364 batch.matrices[pass.idx].m13 = param.y + (float)(int)(critter.y * 100f) * 0.01f;
1365 batch.matrices[pass.idx].m23 = param.z;
1366 batch.tiles[pass.idx] = snowTile * ((!critter.reverse) ? 1 : (-1));
1368 pass.idx++;
1369 if (pass.idx == pass.batchSize)
1370 {
1371 pass.NextBatch();
1372 }
1373 }
1374 if (detail != null)
1375 {
1376 TransAnime anime3 = detail.anime;
1377 if (anime3 != null && !anime3.animeBlock)
1378 {
1379 TransAnime anime4 = detail.anime;
1380 param.x += anime4.v.x;
1381 param.y += anime4.v.y;
1382 param.z += anime4.v.z;
1383 }
1384 }
1385 if (this.cell.obj != 0 && !this.cell.sourceObj.renderData.SkipOnMap)
1386 {
1387 SourceObj.Row sourceObj = this.cell.sourceObj;
1388 if (!snowed || sourceObj.snowTile <= 0)
1389 {
1390 param.snow = snowed;
1391 param.mat = this.cell.matObj;
1392 orgY = param.y;
1393 if (param.liquidLv > 0)
1394 {
1395 if (sourceObj.pref.Float)
1396 {
1397 param.y += 0.01f * floatY;
1398 if (liquidLv > 10)
1399 {
1400 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
1401 }
1402 liquidLv -= (int)(floatY * 0.5f);
1403 param.liquidLv = liquidLv;
1404 }
1405 if (sourceObj.tileType.IsWaterTop)
1406 {
1407 param.liquidLv = 0;
1408 }
1409 else
1410 {
1411 param.liquidLv += sourceObj.pref.liquidMod;
1412 if (param.liquidLv < 1)
1413 {
1414 param.liquid = 1f;
1415 }
1416 else if (param.liquidLv > 99 + sourceObj.pref.liquidModMax)
1417 {
1418 param.liquidLv = 99 + sourceObj.pref.liquidModMax;
1419 }
1420 }
1421 }
1422 if (sourceObj.useAltColor)
1423 {
1424 param.matColor = ((sourceObj.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.altColor, sourceObj.colorMod));
1425 }
1426 else
1427 {
1428 param.matColor = ((sourceObj.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, sourceObj.colorMod));
1429 }
1430 if (sourceObj.HasGrowth)
1431 {
1433 }
1434 else
1435 {
1436 if (this.cell.autotileObj != 0)
1437 {
1438 param.tile = sourceObj._tiles[0] + this.cell.autotileObj;
1439 }
1440 else if (sourceObj.tileType.IsUseBlockDir)
1441 {
1442 param.tile = sourceObj._tiles[this.cell.blockDir % sourceObj._tiles.Length];
1443 }
1444 else
1445 {
1446 param.tile = sourceObj._tiles[this.cell.objDir % sourceObj._tiles.Length];
1447 }
1448 if (_lowblock && sourceObj.tileType.IsSkipLowBlock)
1449 {
1450 param.tile += ((param.tile > 0f) ? 1 : (-1)) * 3000000;
1451 }
1452 orgY = param.y;
1453 orgZ = param.z;
1454 param.y += sourceObj.pref.y;
1455 param.z += sourceObj.pref.z;
1456 sourceObj.renderData.Draw(param);
1457 param.y = orgY;
1458 param.z = orgZ;
1459 int shadow3 = sourceObj.pref.shadow;
1460 if (shadow3 > 1 && !this.cell.ignoreObjShadow)
1461 {
1462 passShadow.AddShadow(param.x + sourceObj.renderData.offsetShadow.x, param.y + sourceObj.renderData.offsetShadow.y, param.z + sourceObj.renderData.offsetShadow.z, ShadowData.Instance.items[shadow3], sourceObj.pref, 0, param.snow);
1463 }
1464 param.y = orgY;
1465 }
1466 }
1467 }
1468 if (this.cell.decal != 0 && sourceFloor.tileType.AllowBlood)
1469 {
1470 passDecal.Add(param, (int)this.cell.decal, floorLight);
1471 }
1472 if (highlightCells)
1473 {
1474 switch (ActionMode.FlagCell.mode)
1475 {
1476 case AM_FlagCell.Mode.flagWallPillar:
1477 if (this.cell.isToggleWallPillar)
1478 {
1479 passArea.Add(param, 34f, 0f);
1480 }
1481 break;
1482 case AM_FlagCell.Mode.flagSnow:
1483 if (this.cell.isClearSnow)
1484 {
1485 passArea.Add(param, 34f, 0f);
1486 }
1487 break;
1488 case AM_FlagCell.Mode.flagFloat:
1489 if (this.cell.isForceFloat)
1490 {
1491 passArea.Add(param, 34f, 0f);
1492 }
1493 break;
1494 case AM_FlagCell.Mode.flagClear:
1495 if (this.cell.isClearArea)
1496 {
1497 passArea.Add(param, 34f, 0f);
1498 }
1499 break;
1500 }
1501 }
1502 if (detail == null)
1503 {
1504 return;
1505 }
1506 if (highlightArea && detail.area != null)
1507 {
1508 passArea.Add(param, (int)detail.area.GetTile(index) - ((!subtleHighlightArea) ? 1 : 0), 0f);
1509 }
1510 if (detail.footmark != null && sourceFloor.id != 0)
1511 {
1512 param.tile = detail.footmark.tile;
1513 param.mat = matFloor;
1514 param.matColor = 104025f;
1516 }
1517 goto IL_7eb8;
1518 IL_16bd:
1519 if (this.cell.isSlopeEdge)
1520 {
1521 float num6 = (float)height * _heightMod.y;
1522 orgY = param.y;
1523 orgZ = param.z;
1524 param.dir = this.cell.blockDir;
1525 if (snowed)
1526 {
1527 param.color = floorLight;
1528 }
1529 SourceBlock.Row defBlock;
1530 if (sourceBlock.tileType.IsFullBlock)
1531 {
1532 defBlock = sourceBlock;
1533 param.mat = matBlock;
1534 param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
1535 param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
1536 }
1537 else
1538 {
1539 defBlock = sourceFloor._defBlock;
1540 param.mat = matFloor;
1541 param.tile = defBlock._tiles[this.cell.blockDir % defBlock._tiles.Length];
1542 if (defBlock.id != 1)
1543 {
1544 param.matColor = ((sourceFloor.colorMod == 0) ? 104025 : GetColorInt(ref matFloor.matColor, sourceFloor.colorMod));
1545 }
1546 else
1547 {
1548 param.matColor = 104025f;
1549 }
1550 }
1551 for (int j = 0; (float)j < num6 / heightBlockSize; j++)
1552 {
1553 param.y += ugFix.y;
1554 param.z += ugFix.z + slopeFixZ * (float)j;
1555 defBlock.renderData.Draw(param);
1556 if (this.cell.pcSync && EMono.player.lightPower > 0f)
1557 {
1558 float num7 = param.tile;
1559 param.tile = 0f;
1561 param.tile = num7;
1562 }
1563 }
1564 param.y = orgY;
1565 param.z = orgZ;
1566 }
1567 param.color = floorLight;
1568 if (!isWater && (this.cell.Front.sourceFloor.tileType.IsWater || this.cell.Right.sourceFloor.tileType.IsWater) && this.cell.sourceBlock.tileType.RenderWaterBlock && !flag)
1569 {
1570 orgY = param.y;
1571 orgZ = param.z;
1572 int num8 = 0;
1573 if (sourceBlock.tileType.IsFullBlock)
1574 {
1576 num8 = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
1577 }
1578 else
1579 {
1580 SourceBlock.Row row3 = sourceFloor._defBlock;
1581 num8 = row3._tiles[this.cell.blockDir % row3._tiles.Length];
1582 }
1583 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)
1584 {
1585 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;
1586 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z;
1587 param.tile = num8 + ((!this.cell.Front.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
1589 }
1590 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)
1591 {
1592 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;
1593 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z;
1594 param.tile = num8 + ((!this.cell.Right.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
1596 }
1597 param.y = orgY;
1598 param.z = orgZ;
1599 }
1600 if (showBorder && !this.cell.outOfBounds)
1601 {
1602 param.matColor = 104025f;
1603 if (cx == EMono._map.bounds.x)
1604 {
1605 renderBorder.Draw(param, 12 + (EMono.world.date.IsNight ? 4 : 0));
1606 }
1607 else if (cx == EMono._map.bounds.maxX)
1608 {
1609 renderBorder.Draw(param, 13 + (EMono.world.date.IsNight ? 4 : 0));
1610 }
1611 if (cz == EMono._map.bounds.z)
1612 {
1613 renderBorder.Draw(param, 14 + (EMono.world.date.IsNight ? 4 : 0));
1614 }
1615 else if (cz == EMono._map.bounds.maxZ)
1616 {
1617 renderBorder.Draw(param, 15 + (EMono.world.date.IsNight ? 4 : 0));
1618 }
1619 }
1620 if (this.cell.isSkyFloor || (detail != null && detail.anime != null && detail.anime.drawBlock))
1621 {
1622 orgY = param.y;
1623 orgZ = param.z;
1624 SourceBlock.Row defBlock2 = sourceFloor._defBlock;
1625 param.mat = matFloor;
1626 param.tile = defBlock2._tiles[this.cell.blockDir % defBlock2._tiles.Length];
1627 if (defBlock2.id != 1)
1628 {
1629 param.matColor = ((sourceFloor.colorMod == 0) ? 104025 : GetColorInt(ref matFloor.matColor, sourceFloor.colorMod));
1630 }
1631 else
1632 {
1633 param.matColor = 104025f;
1634 }
1635 for (int k = 0; k < ((!this.cell.isSkyFloor) ? 1 : EMono._map.config.skyBlockHeight); k++)
1636 {
1637 param.y += ugFix.y;
1638 param.z += ugFix.z + slopeFixZ * (float)k;
1639 defBlock2.renderData.Draw(param);
1640 }
1641 param.y = orgY;
1642 param.z = orgZ;
1643 }
1644 if (!sourceFloor.tileType.IsSkipFloor)
1645 {
1646 if ((hasBridge && sourceBridge.tileType.CastShadowSelf) || this.cell.castFloorShadow)
1647 {
1648 floorLight2 = _lightMod * light * 0.2f + _baseBrightness + _shadowStrength * floorShadowStrength * (isWater ? 0.7f : (hasBridge ? 1f : (0.6f * (1f - nightRatio))));
1649 if (snowed)
1650 {
1651 floorLight2 = (int)((double)floorLight2 * 0.85 * 50.0) * 262144 + snowColorToken;
1652 }
1653 else
1654 {
1655 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);
1656 }
1657 param.color = floorLight2;
1658 if (this.cell.lotShade)
1659 {
1661 }
1662 }
1663 floorMatColor = ((sourceFloor.colorMod == 0) ? 104025 : GetColorInt(ref matFloor.matColor, sourceFloor.colorMod));
1664 if (isWater && flag)
1665 {
1666 param.y -= 0.01f * floatY;
1667 }
1668 if (!sourceBlock.tileType.IsSkipFloor || sourceBlock.transparent || hasBridge || this.cell.hasDoor || this.cell.skipRender)
1669 {
1670 param.mat = matFloor;
1671 param.tile = sourceFloor._tiles[floorDir % sourceFloor._tiles.Length];
1672 param.matColor = floorMatColor;
1673 param.snow = snowed;
1674 if (sourceFloor.anime.Length != 0)
1675 {
1676 int num9 = (int)(Time.realtimeSinceStartup * 1000f / (float)sourceFloor.anime[1] % (float)sourceFloor.anime[0]);
1677 param.tile += num9;
1678 }
1679 if (this.cell.isDeck)
1680 {
1681 param.z += 1f;
1682 if ((bool)sourceFloor.renderData.subData)
1683 {
1684 sourceFloor.renderData.subData.Draw(param);
1685 }
1686 sourceFloor.renderData.Draw(param);
1687 param.z -= 1f;
1688 }
1689 else
1690 {
1691 if ((bool)sourceFloor.renderData.subData)
1692 {
1693 sourceFloor.renderData.subData.Draw(param);
1694 }
1695 sourceFloor.renderData.Draw(param);
1696 }
1697 int num10 = 0;
1698 if (isSnowCovered && sourceFloor == FLOOR.sourceSnow && !this.cell.hasDoor)
1699 {
1700 if (!this.cell.Right.IsSnowTile && this.cell.Right.topHeight == this.cell.topHeight)
1701 {
1702 num10++;
1703 }
1704 if (!this.cell.Front.IsSnowTile && this.cell.Front.topHeight == this.cell.topHeight)
1705 {
1706 num10 += 2;
1707 }
1708 if (num10 != 0)
1709 {
1710 param.tile = 448 + num10 + 12;
1711 param.z -= 0.1f;
1712 sourceFloor.renderData.Draw(param);
1713 param.z += 0.1f;
1714 }
1715 }
1716 if (this.cell.shadow != 0 && !hasBridge && !this.cell.skipRender)
1717 {
1718 if (snowed)
1719 {
1721 {
1722 param.tile = 448 + this.cell.shadow + 8 + (this.cell.HasFence ? 4 : 0);
1723 param.z -= 0.01f;
1724 sourceFloor.renderData.Draw(param);
1725 }
1726 }
1727 else
1728 {
1729 pass = passEdge;
1731 batch.matrices[pass.idx].m03 = param.x + ambientShadowFix[this.cell.shadow].x;
1732 batch.matrices[pass.idx].m13 = param.y + ambientShadowFix[this.cell.shadow].y;
1733 batch.matrices[pass.idx].m23 = param.z + ambientShadowFix[this.cell.shadow].z;
1734 batch.tiles[pass.idx] = 448 + this.cell.shadow;
1736 batch.matColors[pass.idx] = 104025f;
1737 pass.idx++;
1738 if (pass.idx == pass.batchSize)
1739 {
1740 pass.NextBatch();
1741 }
1742 }
1743 if (!sourceFloor.ignoreTransition && !snowed)
1744 {
1745 Cell back = this.cell.Back;
1746 if (back.sourceBlock.transition[0] != -1 && back.isSeen && !back.hasDoor)
1747 {
1748 pass = passFloor;
1750 batch.matrices[pass.idx].m03 = param.x + transitionFix[0].x;
1751 batch.matrices[pass.idx].m13 = param.y + transitionFix[0].y;
1752 batch.matrices[pass.idx].m23 = param.z + transitionFix[0].z;
1753 batch.tiles[pass.idx] = 480 + back.sourceBlock.transition[0] + Rand.bytes[index % Rand.MaxBytes] % back.sourceBlock.transition[1];
1755 batch.matColors[pass.idx] = GetColorInt(ref back.matBlock.matColor, back.sourceBlock.colorMod);
1756 pass.idx++;
1757 if (pass.idx == pass.batchSize)
1758 {
1759 pass.NextBatch();
1760 }
1761 }
1762 back = this.cell.Left;
1763 if (back.sourceBlock.transition[0] != -1 && back.isSeen && !back.hasDoor)
1764 {
1765 pass = passFloor;
1767 batch.matrices[pass.idx].m03 = param.x + transitionFix[1].x;
1768 batch.matrices[pass.idx].m13 = param.y + transitionFix[1].y;
1769 batch.matrices[pass.idx].m23 = param.z + transitionFix[1].z;
1770 batch.tiles[pass.idx] = 512 + back.sourceBlock.transition[0] + Rand.bytes[index % Rand.MaxBytes] % back.sourceBlock.transition[1];
1772 batch.matColors[pass.idx] = GetColorInt(ref back.matBlock.matColor, back.sourceBlock.colorMod);
1773 pass.idx++;
1774 if (pass.idx == pass.batchSize)
1775 {
1776 pass.NextBatch();
1777 }
1778 }
1779 }
1780 }
1781 if (this.cell.autotile != 0 && sourceFloor.autotile != 0 && (!hasBridge || this.cell.bridgeHeight - this.cell.height > 3) && !this.cell.skipRender && num10 == 0)
1782 {
1783 pass = (isWater ? passAutoTileWater : passAutoTile);
1785 batch.matrices[pass.idx].m03 = param.x;
1786 batch.matrices[pass.idx].m13 = param.y;
1787 batch.matrices[pass.idx].m23 = param.z + ((hasBridge || this.cell._block != 0) ? 0.8f : 0f);
1788 batch.tiles[pass.idx] = (26 + sourceFloor.autotile / 2) * 32 + sourceFloor.autotile % 2 * 16 + this.cell.autotile;
1789 batch.colors[pass.idx] = param.color + (float)((int)(sourceFloor.autotileBrightness * 100f) * 262144);
1791 pass.idx++;
1792 if (pass.idx == pass.batchSize)
1793 {
1794 pass.NextBatch();
1795 }
1796 }
1797 }
1798 if (isWater)
1799 {
1800 int num11 = 12;
1801 int num12 = this.cell.shore / num11;
1802 int num13 = this.cell.shore % num11;
1803 bool isShoreSand = this.cell.isShoreSand;
1804 if (this.cell.shore != 0)
1805 {
1806 Cell cell = ((((uint)num12 & (true ? 1u : 0u)) != 0) ? this.cell.Back : ((((uint)num12 & 2u) != 0) ? this.cell.Right : ((((uint)num12 & 4u) != 0) ? this.cell.Front : this.cell.Left)));
1807 if (isShoreSand && !cell.sourceFloor.isBeach)
1808 {
1809 cell = ((((uint)num12 & 8u) != 0) ? this.cell.Left : ((((uint)num12 & 4u) != 0) ? this.cell.Front : ((((uint)num12 & 2u) != 0) ? this.cell.Right : this.cell.Back)));
1810 }
1811 if (!cell.IsSnowTile)
1812 {
1813 param.matColor = GetColorInt(ref cell.matFloor.matColor, cell.sourceFloor.colorMod);
1814 if (isShoreSand)
1815 {
1816 pass = passShore;
1818 batch.matrices[pass.idx].m03 = param.x;
1819 batch.matrices[pass.idx].m13 = param.y;
1820 batch.matrices[pass.idx].m23 = param.z;
1821 batch.tiles[pass.idx] = 768 + this.cell.shore / num11;
1824 pass.idx++;
1825 if (pass.idx == pass.batchSize)
1826 {
1827 pass.NextBatch();
1828 }
1829 num13 = 2;
1830 }
1831 else
1832 {
1833 num13 = cell.sourceFloor.edge;
1834 }
1835 param.tile = (24 + num13 / 2) * 32 + num13 % 2 * 16 + num12;
1837 }
1838 }
1839 if (this.cell.Back.isShoreSand && ((uint)(this.cell.Back.shore / num11) & 8u) != 0 && this.cell.Left.isShoreSand && ((uint)(this.cell.Left.shore / num11) & (true ? 1u : 0u)) != 0)
1840 {
1841 param.tile = 785f;
1842 param.matColor = GetColorInt(ref this.cell.BackLeft.matFloor.matColor, this.cell.BackLeft.sourceFloor.colorMod);
1844 Draw(60);
1845 }
1846 if (this.cell.Back.isShoreSand && ((uint)(this.cell.Back.shore / num11) & 2u) != 0 && this.cell.Right.isShoreSand && ((uint)(this.cell.Right.shore / num11) & (true ? 1u : 0u)) != 0)
1847 {
1848 param.tile = 786f;
1849 param.matColor = GetColorInt(ref this.cell.BackRight.matFloor.matColor, this.cell.BackRight.sourceFloor.colorMod);
1851 Draw(56);
1852 }
1853 if (this.cell.Front.isShoreSand && ((uint)(this.cell.Front.shore / num11) & 2u) != 0 && this.cell.Right.isShoreSand && ((uint)(this.cell.Right.shore / num11) & 4u) != 0)
1854 {
1855 param.tile = 787f;
1856 param.matColor = GetColorInt(ref this.cell.FrontRight.matFloor.matColor, this.cell.FrontRight.sourceFloor.colorMod);
1858 Draw(48);
1859 }
1860 if (this.cell.Front.isShoreSand && ((uint)(this.cell.Front.shore / num11) & 8u) != 0 && this.cell.Left.isShoreSand && ((uint)(this.cell.Left.shore / num11) & 4u) != 0)
1861 {
1862 param.tile = 788f;
1863 param.matColor = GetColorInt(ref this.cell.FrontLeft.matFloor.matColor, this.cell.FrontLeft.sourceFloor.colorMod);
1865 Draw(52);
1866 }
1867 if (this.cell._bridge != 0 && this.cell.isBridgeEdge && this.cell.bridgePillar != byte.MaxValue)
1868 {
1869 pass = passEdge;
1871 batch.matrices[pass.idx].m03 = param.x + waterEdgeBridgeFix.x;
1872 batch.matrices[pass.idx].m13 = param.y + waterEdgeBridgeFix.y;
1873 batch.matrices[pass.idx].m23 = param.z + waterEdgeBridgeFix.z;
1874 batch.tiles[pass.idx] = 616 + waterAnimeIndex % 4;
1876 batch.matColors[pass.idx] = 104025f;
1877 pass.idx++;
1878 if (pass.idx == pass.batchSize)
1879 {
1880 pass.NextBatch();
1881 }
1882 }
1883 bool flag6 = false;
1884 if (isShoreSand)
1885 {
1886 if (((uint)num12 & (true ? 1u : 0u)) != 0)
1887 {
1888 if (((uint)num12 & 8u) != 0)
1889 {
1890 if ((num12 & 2) == 0 && (num12 & 4) == 0)
1891 {
1892 Draw(16);
1893 }
1894 flag6 = true;
1895 }
1896 if (((uint)num12 & 2u) != 0)
1897 {
1898 if ((num12 & 8) == 0 && (num12 & 4) == 0)
1899 {
1900 Draw(20);
1901 }
1902 flag6 = true;
1903 }
1904 }
1905 if (((uint)num12 & 4u) != 0)
1906 {
1907 if (((uint)num12 & 8u) != 0)
1908 {
1909 if ((num12 & 2) == 0 && (num12 & 1) == 0)
1910 {
1911 Draw(24);
1912 }
1913 flag6 = true;
1914 }
1915 if (((uint)num12 & 2u) != 0)
1916 {
1917 if ((num12 & 8) == 0 && (num12 & 1) == 0)
1918 {
1919 Draw(28);
1920 }
1921 flag6 = true;
1922 }
1923 }
1924 if (!flag6)
1925 {
1926 if (!this.cell.Front.sourceFloor.tileType.IsWater && !this.cell.Front.isDeck)
1927 {
1928 Draw(8);
1929 }
1930 if (!this.cell.Right.sourceFloor.tileType.IsWater && !this.cell.Right.isDeck)
1931 {
1932 Draw(12);
1933 }
1934 }
1935 }
1936 if (!flag6)
1937 {
1938 if (!this.cell.Back.sourceFloor.tileType.IsWater && !this.cell.Back.isDeck)
1939 {
1940 pass = passEdge;
1942 batch.tiles[pass.idx] = 608 + waterAnimeIndex % 4;
1943 batch.matColors[pass.idx] = 104025f;
1944 if (((uint)(this.cell.shore / num11) & (true ? 1u : 0u)) != 0)
1945 {
1946 if (isShoreSand)
1947 {
1948 param.matColor = GetColorInt(ref this.cell.Back.matFloor.matColor, this.cell.Back.sourceFloor.colorMod);
1949 batch.matrices[pass.idx].m03 = param.x + waterEdgeFixShoreSand.x;
1950 batch.matrices[pass.idx].m13 = param.y + waterEdgeFixShoreSand.y;
1951 batch.matrices[pass.idx].m23 = param.z + waterEdgeFixShoreSand.z;
1954 }
1955 else
1956 {
1957 batch.matrices[pass.idx].m03 = param.x;
1958 batch.matrices[pass.idx].m13 = param.y;
1959 batch.matrices[pass.idx].m23 = param.z + waterEdgeFixShore.z;
1960 }
1961 }
1962 else
1963 {
1964 batch.matrices[pass.idx].m03 = param.x;
1965 batch.matrices[pass.idx].m13 = param.y;
1966 batch.matrices[pass.idx].m23 = param.z + waterEdgeFix.z;
1967 batch.tiles[pass.idx] += 12f;
1968 }
1970 pass.idx++;
1971 if (pass.idx == pass.batchSize)
1972 {
1973 pass.NextBatch();
1974 }
1975 }
1976 if (!this.cell.Left.sourceFloor.tileType.IsWater && !this.cell.Left.isDeck)
1977 {
1978 pass = passEdge;
1980 batch.tiles[pass.idx] = 612 + waterAnimeIndex % 4;
1981 batch.matColors[pass.idx] = 104025f;
1982 if (((uint)(this.cell.shore / num11) & 8u) != 0)
1983 {
1984 if (isShoreSand)
1985 {
1986 param.matColor = GetColorInt(ref this.cell.Left.matFloor.matColor, this.cell.Left.sourceFloor.colorMod);
1987 batch.matrices[pass.idx].m03 = param.x + waterEdgeFixShoreSand.x;
1988 batch.matrices[pass.idx].m13 = param.y + waterEdgeFixShoreSand.y;
1989 batch.matrices[pass.idx].m23 = param.z + waterEdgeFixShoreSand.z;
1992 }
1993 else
1994 {
1995 batch.matrices[pass.idx].m03 = param.x;
1996 batch.matrices[pass.idx].m13 = param.y;
1997 batch.matrices[pass.idx].m23 = param.z + waterEdgeFixShore.z;
1998 }
1999 }
2000 else
2001 {
2002 batch.matrices[pass.idx].m03 = param.x;
2003 batch.matrices[pass.idx].m13 = param.y;
2004 batch.matrices[pass.idx].m23 = param.z + waterEdgeFix.z;
2005 batch.tiles[pass.idx] += 12f;
2006 }
2008 pass.idx++;
2009 if (pass.idx == pass.batchSize)
2010 {
2011 pass.NextBatch();
2012 }
2013 }
2014 }
2015 if (flag)
2016 {
2017 param.y += 0.01f * floatY;
2018 }
2019 }
2020 if (flag)
2021 {
2022 param.z -= 1f;
2023 }
2024 }
2025 if (this.cell.skipRender)
2026 {
2027 if (this.cell.pcSync)
2028 {
2029 param.tile = 0f;
2031 }
2032 return;
2033 }
2034 if (hasBridge)
2035 {
2036 param.y = (float)(cz - cx) * screen.tileAlign.y + (float)(int)this.cell.bridgeHeight * _heightMod.y;
2037 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)(int)this.cell.bridgeHeight * _heightMod.z;
2038 if (flag)
2039 {
2040 param.y += 0.01f * floatY;
2041 }
2042 param.color = floorLight;
2043 param.mat = matBridge;
2044 floorMatColor = ((sourceBridge.colorMod == 0) ? 104025 : GetColorInt(ref matBridge.matColor, sourceBridge.colorMod));
2045 param.dir = this.cell.floorDir;
2046 param.tile = sourceBridge._tiles[this.cell.floorDir % sourceBridge._tiles.Length];
2047 param.matColor = floorMatColor;
2048 sourceBridge.renderData.Draw(param);
2049 if (this.cell.autotileBridge != 0 && sourceBridge.autotile != 0)
2050 {
2053 batch.matrices[pass.idx].m03 = param.x;
2054 batch.matrices[pass.idx].m13 = param.y;
2055 batch.matrices[pass.idx].m23 = param.z + ((this.cell._block != 0) ? 0.8f : 0f);
2056 batch.tiles[pass.idx] = (26 + sourceBridge.autotile / 2) * 32 + sourceBridge.autotile % 2 * 16 + this.cell.autotileBridge;
2057 batch.colors[pass.idx] = param.color + (float)((int)(sourceBridge.autotileBrightness * 100f) * 262144);
2059 pass.idx++;
2060 if (pass.idx == pass.batchSize)
2061 {
2062 pass.NextBatch();
2063 }
2064 }
2065 if (this.cell.shadow != 0)
2066 {
2068 {
2069 param.tile = 448 + this.cell.shadow + 8 + (this.cell.HasFence ? 4 : 0);
2070 param.z -= 0.01f;
2071 sourceBridge.renderData.Draw(param);
2072 }
2073 else
2074 {
2075 pass = passEdge;
2077 batch.matrices[pass.idx].m03 = param.x + ambientShadowFix[this.cell.shadow].x;
2078 batch.matrices[pass.idx].m13 = param.y + ambientShadowFix[this.cell.shadow].y;
2079 batch.matrices[pass.idx].m23 = param.z + ambientShadowFix[this.cell.shadow].z;
2080 batch.tiles[pass.idx] = 448 + this.cell.shadow;
2082 batch.matColors[pass.idx] = 104025f;
2083 pass.idx++;
2084 if (pass.idx == pass.batchSize)
2085 {
2086 pass.NextBatch();
2087 }
2088 }
2089 }
2090 if (this.cell.isBridgeEdge && this.cell.bridgeHeight - this.cell.height >= 3 && this.cell.bridgePillar != byte.MaxValue && !noSlopMode)
2091 {
2092 orgY = param.y;
2093 orgZ = param.z;
2094 param.y += bridgeFix.y;
2095 param.z += bridgeFix.z;
2096 param.dir = 0;
2097 SourceBlock.Row row4 = sourceBridge._bridgeBlock;
2098 float num14 = (float)(this.cell.bridgeHeight - this.cell.height) * _heightMod.y;
2099 if (this.cell.sourceFloor.tileType == TileType.Sky)
2100 {
2101 num14 += (float)EMono._map.config.skyBlockHeight;
2102 }
2103 int num15 = (int)(num14 / heightBlockSize) + 2;
2104 if (this.cell.bridgePillar != 0)
2105 {
2106 row4 = EMono.sources.blocks.rows[this.cell.bridgePillar];
2107 param.tile = row4._tiles[0] + ((num15 == 2) ? 32 : 0);
2108 param.mat = ((sourceBridge.DefaultMaterial == row4.DefaultMaterial) ? sourceBridge.DefaultMaterial : row4.DefaultMaterial);
2109 param.matColor = ((row4.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, row4.colorMod));
2110 }
2111 else
2112 {
2113 param.mat = matBlock;
2114 param.tile = row4._tiles[0] + 32;
2115 param.matColor = ((row4.colorMod == 0) ? 104025 : GetColorInt(ref matBridge.matColor, row4.colorMod));
2116 }
2117 param.y += ugFixBridgeTop.y;
2118 param.z += ugFixBridgeTop.z;
2119 for (int l = 0; l < num15; l++)
2120 {
2121 if (l == num15 - 1)
2122 {
2123 param.y = (float)(cz - cx) * screen.tileAlign.y + (float)height * _heightMod.y + ugFixBridgeBottom.y;
2124 param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)height * _heightMod.z + ugFixBridgeBottom.z;
2125 }
2126 else
2127 {
2128 param.y += ugFixBridge.y;
2129 param.z += ugFixBridge.z;
2130 }
2131 row4.renderData.Draw(param);
2132 }
2133 param.y = orgY;
2134 param.z = orgZ;
2135 }
2136 }
2137 if (this.cell._deco != 0)
2138 {
2139 param.mat = matFloor;
2140 param.tile = sourceDeco._tiles[floorDir % sourceDeco._tiles.Length];
2141 param.matColor = ((sourceDeco.colorMod == 0) ? 104025 : GetColorInt(ref matDeco.matColor, sourceDeco.colorMod));
2142 param.snow = snowed;
2143 if (sourceDeco.autotile != 0)
2144 {
2145 if (this.cell.autotileDeco != 0)
2146 {
2149 batch.matrices[pass.idx].m03 = param.x;
2150 batch.matrices[pass.idx].m13 = param.y;
2151 batch.matrices[pass.idx].m23 = param.z + ((hasBridge || this.cell._block != 0) ? 0.8f : 0f);
2152 batch.tiles[pass.idx] = (26 + sourceDeco.autotile / 2) * 32 + sourceDeco.autotile % 2 * 16 + this.cell.autotileDeco;
2153 batch.colors[pass.idx] = param.color + (float)((int)(sourceFloor.autotileBrightness * 100f) * 262144);
2155 pass.idx++;
2156 if (pass.idx == pass.batchSize)
2157 {
2158 pass.NextBatch();
2159 }
2160 }
2161 }
2162 else
2163 {
2164 sourceDeco.renderData.Draw(param);
2165 }
2166 }
2167 if (!buildMode && this.cell.highlight != 0)
2168 {
2169 if (this.cell._block != 0 && !this.cell.hasDoor)
2170 {
2171 screen.guide.DrawWall(this.cell.GetPoint(), EMono.Colors.blockColors.MapHighlight, useMarkerPass: true);
2172 }
2173 else
2174 {
2175 passGuideFloor.Add(this.cell.GetPoint(), (int)this.cell.highlight);
2176 }
2177 }
2178 param.color = blockLight;
2179 if (isSnowCovered && (sourceBlock.id != 0 || this.cell.hasDoor) && (snowed || this.cell.isClearSnow) && (this.cell.Front.HasRoof || this.cell.Right.HasRoof))
2180 {
2181 snowed = false;
2182 }
2183 num3 = 0;
2184 if (sourceBlock.id != 0)
2185 {
2186 this.tileType = sourceBlock.tileType;
2187 roomHeight = 0f;
2188 int blockDir = this.cell.blockDir;
2189 bool num16 = this.tileType.blockRenderMode == BlockRenderMode.Floor;
2190 bool flag7 = false;
2191 if (!num16)
2192 {
2193 switch (wallClipMode)
2194 {
2195 case WallClipMode.ByRoom:
2196 if (!this.tileType.RepeatBlock)
2197 {
2198 break;
2199 }
2200 if (currentRoom == null || showFullWall)
2201 {
2202 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.FrontRight.room;
2204 }
2205 else if (this.room != this.cell.Front.room && (this.cell.Front.room == currentRoom || (this.room?.lot != currentLot && this.cell.Front.room?.lot == currentLot)))
2206 {
2207 this.room = this.cell.Front.room;
2208 _lowblock = !this.cell.Front.lotWall && !this.cell.Front.fullWall;
2209 }
2210 else if (this.room != this.cell.Right.room && (this.cell.Right.room == currentRoom || (this.room?.lot != currentLot && this.cell.Right.room?.lot == currentLot)))
2211 {
2212 this.room = this.cell.Right.room;
2213 _lowblock = !this.cell.Right.lotWall && !this.cell.Right.fullWall;
2214 }
2215 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)))
2216 {
2217 this.room = this.cell.FrontRight.room;
2218 _lowblock = !this.cell.FrontRight.lotWall && !this.cell.FrontRight.fullWall;
2219 }
2220 else
2221 {
2222 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.FrontRight.room;
2223 _lowblock = true;
2224 if (!this.tileType.IsFullBlock)
2225 {
2226 if (this.cell.lotWall)
2227 {
2228 _lowblock = false;
2229 }
2230 else if (this.room == currentRoom)
2231 {
2232 _lowblock = !this.cell.fullWall;
2233 }
2234 }
2235 }
2236 flag7 = (this.room != null && this.room.data.atrium) || (this.cell.room != null && this.cell.room.data.atrium);
2237 if (flag7)
2238 {
2239 _lowblock = false;
2240 }
2241 if (this.room == null && alwaysLowblock)
2242 {
2243 _lowblock = true;
2244 roomHeight = 0f;
2245 }
2246 if (this.room != null)
2247 {
2248 maxHeight = (float)(cz - cx) * screen.tileAlign.y + (float)this.room.lot.mh * _heightMod.y;
2249 if (showRoof)
2250 {
2252 break;
2253 }
2254 if ((noRoofMode && currentRoom == null) || (_lowblock && !this.tileType.ForceRpeatBlock))
2255 {
2256 roomHeight = 0f;
2257 break;
2258 }
2259 int num17 = ((this.room.data.maxHeight == 0) ? 2 : this.room.data.maxHeight);
2260 roomHeight = EMono.setting.render.roomHeightMod * (float)((this.room.lot.height < num17) ? this.room.lot.height : num17) + 0.01f * (float)this.room.lot.heightFix;
2261 }
2262 break;
2263 case WallClipMode.ByLot:
2264 if (defaultBlockHeight > 0f || isIndoor)
2265 {
2266 _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);
2267 if (!_lowblock)
2268 {
2270 maxHeight = (float)(cz - cx) * screen.tileAlign.y + (float)(int)this.cell.TopHeight * _heightMod.y;
2271 }
2272 break;
2273 }
2274 if (showFullWall)
2275 {
2276 _lowblock = this.room != null;
2277 if (_lowblock)
2278 {
2279 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)
2280 {
2281 _lowblock = false;
2282 }
2283 }
2284 else if (this.cell.Back.room != null && this.cell.Back.room.lot == (this.cell.Front.room ?? this.cell.Right.room)?.lot)
2285 {
2286 _lowblock = true;
2287 }
2288 }
2289 else
2290 {
2292 }
2293 if (this.tileType.RepeatBlock)
2294 {
2295 this.room = this.room ?? this.cell.Front.room ?? this.cell.Right.room ?? this.cell.FrontRight.room;
2296 if (this.room != null && (!noRoofMode || currentRoom != null) && (!showFullWall || currentRoom == null || this.room.lot == currentRoom.lot))
2297 {
2298 roomHeight = ((_lowblock && !this.tileType.ForceRpeatBlock) ? 0f : this.room.lot.realHeight);
2299 maxHeight = (float)(cz - cx) * screen.tileAlign.y + (float)this.room.lot.mh * _heightMod.y;
2300 }
2301 }
2302 break;
2303 }
2304 }
2305 if (!_lowblock && (double)roomHeight > 1.2 && this.tileType.RepeatBlock)
2306 {
2307 num3 = 1;
2308 }
2309 else if (lowBlock)
2310 {
2311 num3 = 2;
2312 }
2313 param.mat = matBlock;
2314 param.dir = this.cell.blockDir;
2315 param.snow = snowed;
2316 switch (this.tileType.blockRenderMode)
2317 {
2318 case BlockRenderMode.FullBlock:
2319 {
2320 bool invisible = sourceBlock.tileType.Invisible;
2321 if (invisible && (!buildMode || ActionMode.Cinema.IsActive))
2322 {
2323 break;
2324 }
2325 if (this.cell.isSurrounded)
2326 {
2327 switch (innerMode)
2328 {
2329 case InnerMode.InnerBlock:
2330 case InnerMode.BuildMode:
2332 param.color = (int)(50f * blockLight) * 262144;
2333 param.matColor = 104025f;
2334 param.tile = (buildMode ? 1 : 2) + ((_lowblock || defaultBlockHeight > 0f) ? 3000000 : 0);
2336 return;
2337 case InnerMode.None:
2338 case InnerMode.Height:
2339 param.color = blockLight;
2340 break;
2341 }
2342 }
2343 if (snowed)
2344 {
2345 param.color = floorLight;
2346 }
2347 param.color -= (int)(_shadowStrength * 0.8f * 50f) * 262144;
2348 if (currentRoom != null && !showFullWall)
2349 {
2350 _lowblock = true;
2351 roomHeight = 0f;
2352 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))
2353 {
2354 _lowblock = false;
2355 }
2356 if (!_lowblock)
2357 {
2358 int num19 = ((currentRoom.data.maxHeight == 0) ? 2 : currentRoom.data.maxHeight);
2359 roomHeight = EMono.setting.render.roomHeightMod * (float)((currentRoom.lot.height < num19) ? currentRoom.lot.height : num19) + 0.01f * (float)currentRoom.lot.heightFix;
2360 }
2361 }
2362 if (flag7)
2363 {
2364 _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);
2365 if (_lowblock)
2366 {
2367 roomHeight = 0f;
2368 }
2369 }
2370 if (invisible)
2371 {
2372 roomHeight = 0f;
2373 _lowblock = false;
2374 }
2375 if (this.cell.Things.Count > 0)
2376 {
2377 _lowblock = false;
2378 }
2379 param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length] + (_lowblock ? 3000000 : 0);
2380 param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
2381 if (roomHeight == 0f)
2382 {
2383 if (!this.cell.hasDoor)
2384 {
2385 sourceBlock.renderData.Draw(param);
2386 }
2387 }
2388 else
2389 {
2390 sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFixBlock, this.cell.hasDoor, this.cell.effect?.FireAmount ?? 0, isBlock: true);
2391 }
2392 Room room = this.cell.Front.room ?? this.cell.room;
2393 if (room == null && this.cell.Right.room != null)
2394 {
2395 room = this.cell.Right.room;
2396 }
2397 if (!invisible && room != null)
2398 {
2399 if (room.lot.idDeco != 0 && !this.cell.hasDoor)
2400 {
2401 param.tile = EMono.sources.blocks.rows[0].ConvertTile(1000 + room.lot.idDeco);
2402 param.matColor = room.lot.colDeco;
2403 float y = param.y;
2404 param.y += (float)room.lot.decoFix * 0.01f;
2406 param.y = y;
2407 }
2408 if (room.lot.idDeco2 != 0 && roomHeight != 0f && (float)room.lot.decoFix2 * 0.01f + heightLimitDeco < roomHeight + maxHeight - param.y)
2409 {
2410 param.tile = EMono.sources.blocks.rows[0].ConvertTile(1000 + room.lot.idDeco2);
2411 param.matColor = room.lot.colDeco2;
2412 float y2 = param.y;
2413 float num20 = param.z;
2414 param.y += (float)room.lot.decoFix2 * 0.01f;
2415 param.z += (float)room.lot.decoFix2 * 0.01f * heightModDeco;
2417 param.y = y2;
2418 param.z = num20;
2419 }
2420 }
2421 room = this.cell.Right.room ?? this.cell.room;
2422 if (room == null && this.cell.Front.room != null)
2423 {
2424 room = this.cell.Front.room;
2425 }
2426 if (!invisible && room != null)
2427 {
2428 if (room.lot.idDeco != 0 && !this.cell.hasDoor)
2429 {
2430 param.tile = EMono.sources.blocks.rows[0].ConvertTile(1000 + room.lot.idDeco) * -1;
2431 param.matColor = room.lot.colDeco;
2432 float y3 = param.y;
2433 param.y += (float)room.lot.decoFix * 0.01f;
2435 param.y = y3;
2436 }
2437 if (room.lot.idDeco2 != 0 && roomHeight != 0f && (float)room.lot.decoFix2 * 0.01f + heightLimitDeco < roomHeight + maxHeight - param.y)
2438 {
2439 param.tile = EMono.sources.blocks.rows[0].ConvertTile(1000 + room.lot.idDeco2) * -1;
2440 param.matColor = room.lot.colDeco2;
2441 float y4 = param.y;
2442 float num21 = param.z;
2443 param.y += (float)room.lot.decoFix2 * 0.01f;
2444 param.z += (float)room.lot.decoFix2 * 0.01f * heightModDeco;
2446 param.y = y4;
2447 param.z = num21;
2448 }
2449 }
2450 break;
2451 }
2452 case BlockRenderMode.WallOrFence:
2453 {
2455 {
2456 showFullWall = true;
2457 _lowblock = false;
2458 }
2459 orgY = param.y;
2460 orgZ = param.z;
2461 param.color = (this.tileType.IsFence ? (floorLight - (float)((int)(_shadowStrength * 0.8f * 50f) * 262144)) : blockLight);
2462 bool flag8 = blockDir == 1 || _lowblock || flag7;
2463 bool flag9 = blockDir == 0 || _lowblock || flag7;
2464 if (!showFullWall && currentRoom != null)
2465 {
2466 if (!flag8)
2467 {
2468 if (currentRoom == this.cell.room || (this.cell.lotWall && this.cell.room?.lot == currentLot && this.cell.Front.room != currentRoom))
2469 {
2470 if (!this.cell.IsRoomEdge || (this.cell.Front.room != this.cell.room && this.cell.FrontRight.room != this.cell.room))
2471 {
2472 flag8 = true;
2473 }
2474 }
2475 else if ((!this.cell.Front.lotWall || this.cell.Front.room?.lot != currentLot) && this.cell.Front.room != currentRoom)
2476 {
2477 flag8 = true;
2478 }
2479 }
2480 if (!flag9)
2481 {
2482 if (currentRoom == this.cell.room || (this.cell.lotWall && this.cell.room?.lot == currentLot && this.cell.Right.room != currentRoom))
2483 {
2484 if (!this.cell.IsRoomEdge || (this.cell.Right.room != this.cell.room && this.cell.FrontRight.room != this.cell.room))
2485 {
2486 flag9 = true;
2487 }
2488 }
2489 else if ((!this.cell.Right.lotWall || this.cell.Right.room?.lot != currentLot) && this.cell.Right.room != currentRoom)
2490 {
2491 flag9 = true;
2492 }
2493 }
2494 }
2495 if (blockDir == 0 || blockDir == 2)
2496 {
2497 param.dir = 0;
2498 Room room2 = this.cell.Front.room ?? this.cell.room;
2499 if (room2 != null && this.tileType.IsWall)
2500 {
2501 if (room2.lot.idDeco != 0 && !this.cell.hasDoor)
2502 {
2503 param.tile = EMono.sources.blocks.rows[0].ConvertTile(1000 + room2.lot.idDeco);
2504 param.matColor = room2.lot.colDeco;
2505 param.y += (float)room2.lot.decoFix * 0.01f;
2507 param.y = orgY;
2508 }
2509 if (room2.lot.idDeco2 != 0 && roomHeight != 0f && !flag8 && (float)room2.lot.decoFix2 * 0.01f + heightLimitDeco < roomHeight + maxHeight - param.y)
2510 {
2511 param.tile = EMono.sources.blocks.rows[0].ConvertTile(1000 + room2.lot.idDeco2);
2512 param.matColor = room2.lot.colDeco2;
2513 param.y += (float)room2.lot.decoFix2 * 0.01f;
2514 param.z += (float)room2.lot.decoFix2 * 0.01f * heightModDeco;
2516 param.y = orgY;
2517 param.z = orgZ;
2518 }
2519 }
2520 Cell left = this.cell.Left;
2521 if (blockDir == 2 && left.sourceBlock.tileType.IsWallOrFence && !this.cell.crossWall)
2522 {
2523 _sourceBlock = left.sourceBlock;
2524 param.mat = left.matBlock;
2525 }
2526 else
2527 {
2529 param.mat = matBlock;
2530 }
2531 this.tileType = _sourceBlock.tileType;
2532 param.tile = (tile = _sourceBlock._tiles[0] + ((flag8 && this.tileType.UseLowBlock) ? 32 : 0));
2533 if (_sourceBlock.useAltColor)
2534 {
2535 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.altColor, _sourceBlock.colorMod));
2536 }
2537 else
2538 {
2539 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, _sourceBlock.colorMod));
2540 }
2541 if (roomHeight == 0f || flag8 || !this.tileType.RepeatBlock)
2542 {
2543 if (!this.cell.hasDoor)
2544 {
2545 _sourceBlock.renderData.Draw(param);
2546 }
2547 }
2548 else
2549 {
2550 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFix, this.cell.hasDoor, this.cell.effect?.FireAmount ?? 0);
2551 }
2552 param.z += cornerWallFix2.z;
2553 if ((blockDir == 2 || (this.cell.Front.HasWallOrFence && this.cell.Front.blockDir != 0)) != this.cell.isToggleWallPillar)
2554 {
2555 if (this.cell.Back.IsSnowTile && this.cell.Right.IsSnowTile)
2556 {
2557 param.snow = true;
2558 }
2559 param.tile = _sourceBlock._tiles[0] + ((flag8 && flag9 && this.tileType.UseLowBlock && !flag7) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
2560 if (roomHeight == 0f || !this.tileType.RepeatBlock || (flag8 && flag9 && !flag7))
2561 {
2562 _sourceBlock.renderData.Draw(param);
2563 }
2564 else
2565 {
2566 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFix);
2567 }
2568 }
2569 if (!flag8 && !showRoof && this.cell.Left.HasWallOrFence && this.cell.Left.blockDir != 0 && !this.cell.Left.isToggleWallPillar)
2570 {
2571 orgX = param.x;
2572 param.tile = _sourceBlock._tiles[0] + ((flag8 && this.tileType.UseLowBlock && !flag7) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
2573 param.x += cornerWallFix3.x;
2574 param.y += cornerWallFix3.y;
2575 param.z += cornerWallFix3.z;
2576 if (!flag7 && (roomHeight == 0f || flag8))
2577 {
2578 _sourceBlock.renderData.Draw(param);
2579 }
2580 else
2581 {
2582 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight + cornerWallFix.y, ref renderSetting.peakFix);
2583 }
2584 param.x = orgX;
2585 }
2586 else if (this.cell.FrontLeft.HasWallOrFence && this.cell.FrontLeft.blockDir != 0 && (!flag8 || !this.cell.Left.HasWall) && !this.cell.isToggleWallPillar)
2587 {
2588 orgX = param.x;
2589 param.tile = _sourceBlock._tiles[0] + ((flag8 && this.tileType.UseLowBlock && !flag7) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
2590 param.x += cornerWallFix.x;
2591 param.y += cornerWallFix.y;
2592 param.z += cornerWallFix.z;
2593 if (!flag7 && (roomHeight == 0f || flag8))
2594 {
2595 _sourceBlock.renderData.Draw(param);
2596 }
2597 else
2598 {
2599 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight + cornerWallFix.y, ref renderSetting.peakFix);
2600 }
2601 param.x = orgX;
2602 }
2603 }
2604 if (blockDir == 1 || blockDir == 2)
2605 {
2606 param.y = orgY;
2607 param.z = orgZ;
2608 param.dir = 1;
2609 Room room3 = this.cell.Right.room ?? this.cell.room;
2610 if (room3 != null && this.tileType.IsWall)
2611 {
2612 if (room3.lot.idDeco != 0 && !this.cell.hasDoor)
2613 {
2614 param.tile = -EMono.sources.blocks.rows[0].ConvertTile(1000 + room3.lot.idDeco);
2615 param.matColor = room3.lot.colDeco;
2616 param.y += (float)room3.lot.decoFix * 0.01f;
2618 param.y = orgY;
2619 }
2620 if (room3.lot.idDeco2 != 0 && roomHeight != 0f && !flag9 && (float)room3.lot.decoFix2 * 0.01f + heightLimitDeco < roomHeight + maxHeight - param.y)
2621 {
2622 param.tile = -EMono.sources.blocks.rows[0].ConvertTile(1000 + room3.lot.idDeco2);
2623 param.matColor = room3.lot.colDeco2;
2624 param.y += (float)room3.lot.decoFix2 * 0.01f;
2625 param.z += (float)room3.lot.decoFix2 * 0.01f * heightModDeco;
2627 param.y = orgY;
2628 param.z = orgZ;
2629 }
2630 }
2631 if (blockDir == 2 && this.cell.room == null && this.cell.Right.room != null)
2632 {
2633 Room room4 = this.cell.Right.room;
2634 maxHeight = (float)(cz - cx) * screen.tileAlign.y + (float)room4.lot.mh * _heightMod.y;
2635 if (showRoof)
2636 {
2637 roomHeight = room4.lot.realHeight;
2638 }
2639 else if ((noRoofMode && currentRoom == null) || (_lowblock && !this.tileType.ForceRpeatBlock))
2640 {
2641 roomHeight = 0f;
2642 }
2643 else
2644 {
2645 int num22 = ((room4.data.maxHeight == 0) ? 2 : room4.data.maxHeight);
2646 roomHeight = EMono.setting.render.roomHeightMod * (float)((room4.lot.height < num22) ? room4.lot.height : num22) + 0.01f * (float)room4.lot.heightFix;
2647 }
2648 }
2649 Cell back2 = this.cell.Back;
2650 if (blockDir == 2 && back2.sourceBlock.tileType.IsWallOrFence && !this.cell.crossWall)
2651 {
2652 _sourceBlock = back2.sourceBlock;
2653 param.mat = back2.matBlock;
2654 }
2655 else
2656 {
2658 param.mat = matBlock;
2659 }
2660 this.tileType = _sourceBlock.tileType;
2661 param.tile = (tile = -_sourceBlock._tiles[0] + ((flag9 && this.tileType.UseLowBlock) ? (-32) : 0));
2662 if (_sourceBlock.useAltColor)
2663 {
2664 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.altColor, _sourceBlock.colorMod));
2665 }
2666 else
2667 {
2668 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, _sourceBlock.colorMod));
2669 }
2670 param.color += _rightWallShade;
2671 if (roomHeight == 0f || flag9 || !this.tileType.RepeatBlock)
2672 {
2673 if (!this.cell.hasDoor)
2674 {
2675 _sourceBlock.renderData.Draw(param);
2676 }
2677 }
2678 else
2679 {
2680 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFix, this.cell.hasDoor, this.cell.effect?.FireAmount ?? 0);
2681 }
2682 if ((this.cell.Right.HasWallOrFence && this.cell.Right.blockDir != 1) != this.cell.isToggleWallPillar && (blockDir != 2 || !this.cell.isToggleWallPillar))
2683 {
2684 if (this.cell.Left.IsSnowTile && this.cell.Front.IsSnowTile)
2685 {
2686 param.snow = true;
2687 }
2688 orgX = param.x;
2689 param.tile = _sourceBlock._tiles[0] + ((flag9 && this.tileType.UseLowBlock && !flag7) ? 32 : 0) + (this.tileType.IsFence ? 32 : 64);
2690 if (!flag7 && (roomHeight == 0f || !this.tileType.RepeatBlock || flag9))
2691 {
2692 _sourceBlock.renderData.Draw(param);
2693 }
2694 else
2695 {
2696 _sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFix);
2697 }
2698 param.x = orgX;
2699 }
2700 }
2701 param.y = orgY;
2702 param.z = orgZ;
2703 break;
2704 }
2705 case BlockRenderMode.HalfBlock:
2706 param.color = floorLight;
2707 _sourceBlock = ((sourceBlock.id == 5) ? EMono.sources.blocks.rows[matBlock.defBlock] : sourceBlock);
2708 param.tile = _sourceBlock._tiles[0];
2709 param.matColor = ((_sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, _sourceBlock.colorMod));
2710 param.tile2 = _sourceBlock.sourceAutoFloor._tiles[0];
2711 param.halfBlockColor = ((_sourceBlock.sourceAutoFloor.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, _sourceBlock.sourceAutoFloor.colorMod));
2712 sourceBlock.renderData.Draw(param);
2713 break;
2714 case BlockRenderMode.Pillar:
2715 {
2716 RenderData renderData2 = sourceBlock.renderData;
2717 param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
2718 param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
2719 int num18 = this.cell.objDir + ((this.cell.objDir >= 7) ? this.cell.objDir : 0) + 1;
2720 if (num18 == 0)
2721 {
2722 renderData2.Draw(param);
2723 }
2724 else
2725 {
2726 renderData2.DrawRepeat(param, num18, sourceBlock.tileType.RepeatSize);
2727 }
2728 param.tile = renderData2.idShadow;
2729 SourcePref shadowPref2 = renderData2.shadowPref;
2730 int shadow4 = shadowPref2.shadow;
2731 passShadow.AddShadow(param.x + renderData2.offsetShadow.x, param.y + renderData2.offsetShadow.y, param.z + renderData2.offsetShadow.z, ShadowData.Instance.items[shadow4], shadowPref2, 0, param.snow);
2732 break;
2733 }
2734 case BlockRenderMode.Floor:
2735 param.color = floorLight;
2736 param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
2737 param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
2738 sourceBlock.renderData.Draw(param);
2739 break;
2740 default:
2741 param.color = floorLight;
2742 param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length] + ((_lowblock && this.tileType.UseLowBlock) ? 3000000 : 0);
2743 param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
2744 if (roomHeight == 0f)
2745 {
2746 sourceBlock.renderData.Draw(param);
2747 }
2748 else
2749 {
2750 sourceBlock.renderData.DrawRepeatTo(param, maxHeight, roomHeight, ref renderSetting.peakFixBlock);
2751 }
2752 break;
2753 }
2754 }
2755 if (this.cell.pcSync && EMono.player.lightPower > 0f && !cinemaMode)
2756 {
2757 if (this.cell.room != null || !this.cell.IsRoomEdge || !showRoof)
2758 {
2759 goto IL_7327;
2760 }
2761 if (this.cell._block == 0 || !this.cell.sourceBlock.tileType.RepeatBlock)
2762 {
2763 Room obj = this.cell.FrontRight.room;
2764 if (obj == null || !obj.HasRoof)
2765 {
2766 goto IL_7327;
2767 }
2768 }
2769 }
2770 goto IL_7387;
2771 IL_7eb8:
2772 if (detail.things.Count == 0 && detail.charas.Count == 0)
2773 {
2774 return;
2775 }
2776 int num23 = 0;
2777 thingPos.x = 0f;
2778 thingPos.y = 0f;
2779 thingPos.z = 0f;
2780 freePos.x = (freePos.y = (freePos.z = 0f));
2781 if (this.cell.HasRamp)
2782 {
2783 Vector3 rampFix = sourceBlock.tileType.GetRampFix(this.cell.blockDir);
2784 param.x += rampFix.x;
2785 param.y += rampFix.y;
2786 param.z += rampFix.z;
2787 freePos.x += rampFix.x;
2788 freePos.y += rampFix.y;
2789 freePos.z += rampFix.z;
2790 }
2791 param.y += (flag ? 0f : ((this.cell._bridge != 0) ? this.cell.sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight));
2792 orgPos.x = (orgX = param.x);
2793 orgPos.y = (orgY = param.y);
2794 orgPos.z = (orgZ = param.z);
2795 if (flag && liquidLv > 0)
2796 {
2797 if (liquidLv > 10)
2798 {
2799 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
2800 }
2801 liquidLv -= (int)(floatY * 0.5f);
2802 param.liquidLv = liquidLv;
2804 }
2805 Thing thing = null;
2806 bool shadow = liquidLv == 0;
2807 float num24 = 0f;
2808 float num25 = 0f;
2809 float num26 = 0f;
2810 float num27 = 0f;
2811 bool flag10 = false;
2812 float num28 = 0f;
2813 bool flag11 = false;
2814 float num29 = 0f;
2815 if (detail.things.Count > 0 && isSeen)
2816 {
2817 _ = zSetting.max1;
2818 float num30 = 0f;
2819 for (int m = 0; m < detail.things.Count; m++)
2820 {
2821 Thing t = detail.things[m];
2822 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))
2823 {
2824 continue;
2825 }
2827 bool isInstalled = t.IsInstalled;
2828 SourcePref pref = t.Pref;
2829 if (!isInstalled && t.category.tileDummy != 0)
2830 {
2832 }
2833 float num31 = ((tileType.UseMountHeight && isInstalled) ? 0f : ((pref.height < 0f) ? 0f : ((pref.height == 0f) ? 0.1f : pref.height)));
2834 if (t.ignoreStackHeight)
2835 {
2836 thingPos.y -= num24;
2837 thingPos -= altitudeFix * num25;
2838 }
2839 shadow = thingPos.y < 0.16f && num29 < 0.16f;
2840 _ = pref.bypassShadow;
2841 param.shadowFix = 0f - thingPos.y;
2842 param.liquidLv = ((thingPos.y + (float)t.altitude < 0.1f) ? liquidLv : 0);
2843 if (t.isRoofItem)
2844 {
2845 param.snow = isSnowCovered && !this.cell.isClearSnow;
2846 SetRoofHeight(param, this.cell, cx, cz);
2847 _actorPos.x = param.x;
2848 _actorPos.y = param.y;
2849 _actorPos.z = param.z + num30;
2850 if (this.room != null)
2851 {
2852 param.color = GetRoofLight(this.room.lot);
2853 }
2854 shadow = false;
2855 param.liquidLv = 0;
2856 }
2857 else
2858 {
2859 param.snow = snowed;
2860 _actorPos.x = orgX + num27;
2861 _actorPos.y = orgY;
2862 _actorPos.z = orgZ + num30 + thingPos.z;
2863 if (tileType.CanStack || !isInstalled)
2864 {
2865 if (thing?.id != t.id)
2866 {
2867 _actorPos.x += thingPos.x;
2868 }
2869 _actorPos.y += thingPos.y;
2870 if (t.trait.IgnoreLastStackHeight && (thing == null || !thing.trait.IgnoreLastStackHeight))
2871 {
2872 thingPos.y -= num24;
2873 if (thing != null)
2874 {
2875 _actorPos.z -= 0.2f;
2876 thingPos.z -= 0.2f;
2877 }
2878 _actorPos.y -= num24;
2879 }
2880 _actorPos.z += renderSetting.thingZ + (float)m * -0.01f + zSetting.mod1 * thingPos.y;
2881 }
2882 if (isInstalled)
2883 {
2884 if (t.TileType.IsRamp)
2885 {
2886 Vector3 rampFix2 = t.TileType.GetRampFix(t.dir, pref);
2887 orgX += rampFix2.x;
2888 orgY += rampFix2.y;
2889 orgZ += rampFix2.z;
2890 freePos.x += rampFix2.x;
2891 freePos.y += rampFix2.y;
2892 freePos.z += rampFix2.z;
2893 if (!this.cell.IsTopWater || t.altitude > 0)
2894 {
2895 num29 += rampFix2.y;
2896 }
2897 liquidLv -= (int)(rampFix2.y * 150f);
2898 if (liquidLv < 0)
2899 {
2900 liquidLv = 0;
2901 }
2902 }
2903 else if (!flag11 && t.trait.IsChangeFloorHeight && !t.ignoreStackHeight)
2904 {
2905 orgY += num31 + (float)t.altitude * altitudeFix.y;
2906 orgZ += (float)t.altitude * altitudeFix.z;
2907 freePos.y += num31 + (float)t.altitude * altitudeFix.y;
2908 if (!this.cell.IsTopWater || t.altitude > 0)
2909 {
2910 num29 += num31 + (float)t.altitude * altitudeFix.y;
2911 }
2912 _actorPos.x += pref.x * (float)((!t.flipX) ? 1 : (-1));
2913 _actorPos.z += pref.z;
2914 thingPos.z += pref.z;
2915 liquidLv -= (int)(num31 * 150f);
2916 if (liquidLv < 0)
2917 {
2918 liquidLv = 0;
2919 }
2920 }
2921 else
2922 {
2923 thingPos.y += num31;
2925 {
2926 if ((tileType != TileType.Illumination || !this.cell.HasObj) && !tileType.AlwaysShow)
2927 {
2929 {
2930 continue;
2931 }
2932 if (hideHang && (this.cell.room?.lot != currentLot || (!this.cell.lotWall && this.cell.room != currentRoom)))
2933 {
2934 Room room5 = ((t.dir == 0) ? this.cell.Back.room : this.cell.Left.room);
2936 {
2937 if (room5 == null || !room5.data.showWallItem)
2938 {
2939 continue;
2940 }
2941 }
2942 else if (t.altitude >= lowWallObjAltitude)
2943 {
2944 continue;
2945 }
2946 }
2947 }
2949 {
2950 flag10 = true;
2951 }
2953 shadow = false;
2954 param.liquidLv = 0;
2955 if (t.freePos)
2956 {
2957 _actorPos.x += t.fx;
2958 _actorPos.y += t.fy;
2959 }
2960 }
2961 else
2962 {
2963 thingPos.y += (float)t.altitude * altitudeFix.y;
2964 thingPos.z += (float)t.altitude * altitudeFix.z;
2965 }
2966 _actorPos.x += pref.x * (float)((!t.flipX) ? 1 : (-1));
2967 _actorPos.z += pref.z;
2968 if (pref.height >= 0f)
2969 {
2970 thingPos.z += pref.z;
2971 }
2972 }
2973 if (!tileType.UseMountHeight && m > 10)
2974 {
2975 flag11 = true;
2976 }
2977 }
2978 else
2979 {
2980 thingPos.y += num31;
2981 _actorPos.x += pref.x * (float)((!t.flipX) ? 1 : (-1));
2982 _actorPos.z += pref.z;
2983 thingPos.z += pref.z;
2984 }
2985 if (t.isFloating && isWater && !hasBridge && !flag)
2986 {
2987 flag = true;
2988 float num32 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight);
2989 orgY += 0.01f * floatY - num32;
2991 {
2992 num28 = num31;
2993 }
2994 _actorPos.y += 0.01f * floatY - num32;
2995 if (liquidLv > 10)
2996 {
2997 liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;
2998 }
2999 liquidLv -= (int)(floatY * 0.5f);
3000 if (liquidLv < 0)
3001 {
3002 liquidLv = 0;
3003 }
3004 param.liquidLv = liquidLv;
3005 }
3006 num24 = num31;
3007 if (t.sourceCard.multisize && !t.trait.IsGround)
3008 {
3009 num30 += zSetting.multiZ;
3010 }
3011 orgZ += t.renderer.data.stackZ;
3012 if (param.liquidLv > 0)
3013 {
3014 param.liquidLv += pref.liquidMod;
3015 if (param.liquidLv < 1)
3016 {
3017 param.liquidLv = 1;
3018 }
3019 else if (param.liquidLv > 99 + pref.liquidModMax)
3020 {
3021 param.liquidLv = 99 + pref.liquidModMax;
3022 }
3023 }
3024 }
3025 if (!isInstalled || !tileType.UseMountHeight)
3026 {
3027 if (t.altitude != 0)
3028 {
3030 if (!t.isRoofItem)
3031 {
3032 num26 += (float)t.altitude;
3033 num25 = t.altitude;
3034 }
3035 }
3036 if (num26 >= 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)))
3037 {
3038 continue;
3039 }
3040 if (t.freePos)
3041 {
3042 if (t.isRoofItem)
3043 {
3044 _actorPos.x += t.fx;
3045 _actorPos.y += t.fy - (float)t.altitude * altitudeFix.y;
3046 }
3047 else
3048 {
3049 _actorPos.x = orgX + t.fx - freePos.x;
3050 _actorPos.y = orgY + t.fy - freePos.y;
3051 }
3052 }
3053 if (t.trait is TraitDoor && (t.trait as TraitDoor).IsOpen())
3054 {
3055 _actorPos.z += -0.5f;
3056 }
3057 }
3058 if (!t.sourceCard.multisize || (t.pos.x == cx && t.pos.z == cz))
3059 {
3060 if (iconMode != 0)
3061 {
3062 int num33 = 0;
3063 switch (iconMode)
3064 {
3065 case CardIconMode.Visibility:
3066 if (t.isMasked)
3067 {
3068 num33 = 17;
3069 }
3070 break;
3071 case CardIconMode.State:
3072 if (t.placeState == PlaceState.installed)
3073 {
3074 num33 = 18;
3075 }
3076 break;
3077 case CardIconMode.Deconstruct:
3078 if (t.isDeconstructing)
3079 {
3080 num33 = 14;
3081 }
3082 break;
3083 }
3085 {
3086 num33 = 13;
3087 }
3088 if (num33 != 0)
3089 {
3090 passGuideBlock.Add(_actorPos.x, _actorPos.y, _actorPos.z - 10f, num33);
3091 }
3092 }
3094 if (_lowblock && t.trait.UseLowblock && !this.cell.HasFullBlock)
3095 {
3096 param.tile += ((param.tile < 0f) ? (-64) : 64);
3097 }
3098 if (t.trait is TraitTrolley && EMono.pc.ai is AI_Trolley aI_Trolley && aI_Trolley.trolley.owner == t)
3099 {
3100 RenderParam _param = new RenderParam(param);
3101 EMono.core.actionsLateUpdate.Add(delegate
3102 {
3103 t.SetRenderParam(_param);
3104 _actorPos.x = EMono.pc.renderer.position.x;
3105 _actorPos.y = EMono.pc.renderer.position.y - pref.height;
3106 _actorPos.z = EMono.pc.renderer.position.z + 0.02f;
3107 t.renderer.Draw(_param, ref _actorPos, !t.noShadow && (shadow || tileType.AlwaysShowShadow));
3108 });
3109 }
3110 else
3111 {
3112 t.renderer.Draw(param, ref _actorPos, !t.noShadow && (shadow || tileType.AlwaysShowShadow));
3113 }
3114 }
3115 if (isInstalled)
3116 {
3117 num27 += pref.stackX * (float)((!t.flipX) ? 1 : (-1));
3118 }
3119 param.x = orgX;
3120 param.y = orgY;
3121 param.z = orgZ;
3122 param.color = floorLight;
3123 thing = t;
3124 if (pref.Float)
3125 {
3126 liquidLv = 0;
3127 }
3128 }
3129 }
3130 orgY += num28;
3131 if (detail.charas.Count <= 0)
3132 {
3133 return;
3134 }
3135 param.shadowFix = 0f - num29;
3136 param.color += 1310720f;
3137 float max = zSetting.max2;
3138 for (int n = 0; n < detail.charas.Count; n++)
3139 {
3140 Chara chara = detail.charas[n];
3141 if (chara.host != null)
3142 {
3143 continue;
3144 }
3145 if (chara != EMono.pc && chara != LayerDrama.alwaysVisible)
3146 {
3147 if (chara.mimicry != null && chara.mimicry.IsThing)
3148 {
3149 if (flag3 || fogged || !this.cell.isSeen)
3150 {
3151 continue;
3152 }
3153 }
3154 else if (flag3 || fogged || (!showAllCards && !EMono.player.CanSee(chara)))
3155 {
3156 continue;
3157 }
3158 }
3159 _actorPos.x = orgX;
3160 _actorPos.y = orgY;
3161 _actorPos.z = orgZ;
3162 chara.SetRenderParam(param);
3163 _ = chara.IsAliveInCurrentZone;
3164 if (chara.isRestrained)
3165 {
3166 TraitShackle restrainer = chara.GetRestrainer();
3167 if (restrainer != null)
3168 {
3169 Vector3 getRestrainPos = restrainer.GetRestrainPos;
3170 if (getRestrainPos != default(Vector3))
3171 {
3172 Vector3 position = restrainer.owner.renderer.position;
3173 float defCharaHeight = EMono.setting.render.defCharaHeight;
3174 float num34 = getRestrainPos.y + defCharaHeight - ((chara.Pref.height == 0f) ? defCharaHeight : chara.source.pref.height);
3175 _actorPos.x = position.x + getRestrainPos.x * (float)((restrainer.owner.dir % 2 == 0) ? 1 : (-1));
3176 _actorPos.y = position.y + num34;
3177 _actorPos.z = position.z + getRestrainPos.z;
3178 param.liquidLv = 0;
3179 param.shadowFix = orgY - _actorPos.y;
3180 chara.renderer.SetFirst(first: true);
3181 chara.renderer.Draw(param, ref _actorPos, drawShadow: true);
3182 param.shadowFix = 0f;
3183 continue;
3184 }
3185 }
3186 }
3187 if (!chara.sourceCard.multisize || (chara.pos.x == cx && chara.pos.z == cz))
3188 {
3189 if (chara.IsDeadOrSleeping && chara.IsPCC)
3190 {
3191 float num35 = chara.renderer.data.size.y * 0.3f;
3192 if (thingPos.y > max)
3193 {
3194 thingPos.y = max;
3195 }
3196 float num36 = thingPos.y + num35;
3197 float num37 = (float)n * -0.01f;
3198 if (num36 > zSetting.thresh1)
3199 {
3200 num37 = zSetting.mod1;
3201 }
3202 _actorPos.x += thingPos.x;
3203 _actorPos.y += thingPos.y;
3204 _actorPos.z += renderSetting.laydownZ + num37;
3205 param.liquidLv = ((thingPos.y == 0f && liquidLv > 0) ? 90 : 0);
3206 thingPos.y += num35 * 0.8f;
3207 chara.renderer.Draw(param, ref _actorPos, liquidLv == 0);
3208 }
3209 else
3210 {
3211 param.liquidLv = liquidLv;
3212 if (isUnderwater)
3213 {
3214 if (chara.Pref.FloatUnderwater)
3215 {
3216 float num38 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight);
3217 float num39 = floatYs[chara.uid % 10] + 10f + (float)(chara.uid % 30);
3218 orgY += 0.01f * num39 - num38;
3219 _actorPos.y += 0.01f * num39 - num38;
3220 param.shadowFix -= 0.01f * num39 - num38;
3221 }
3222 }
3223 else if (liquidLv > 0)
3224 {
3225 if (chara.Pref.Float && !flag && !hasBridge)
3226 {
3227 if (liquidLv > 20)
3228 {
3229 float num40 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight);
3230 orgY += 0.01f * floatY - num40;
3231 _actorPos.y += 0.01f * floatY - num40;
3232 int num41 = TileType.FloorWaterShallow.LiquidLV * 10;
3233 num41 -= (int)(floatY * 0.5f);
3234 param.liquidLv = num41;
3235 }
3236 else
3237 {
3238 param.liquidLv -= 20;
3239 }
3240 }
3241 param.liquidLv += chara.Pref.liquidMod;
3242 if (param.liquidLv < 1)
3243 {
3244 param.liquidLv = 1;
3245 }
3246 else if (param.liquidLv > 99 + chara.Pref.liquidModMax)
3247 {
3248 param.liquidLv = 99 + chara.Pref.liquidModMax;
3249 }
3250 }
3251 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))
3252 {
3253 _actorPos += renderSetting.charaPos[1 + ((num23 < 4) ? num23 : 3)];
3254 }
3255 _actorPos.z += 0.01f * (float)n + renderSetting.charaZ;
3256 num23++;
3257 if (flag10)
3258 {
3259 _actorPos.z += chara.renderer.data.hangedFixZ;
3260 }
3261 chara.renderer.Draw(param, ref _actorPos, liquidLv == 0);
3262 }
3263 }
3264 param.x = orgX;
3265 param.y = orgY;
3266 param.z = orgZ;
3267 }
3268 void Draw(int tile)
3269 {
3270 pass = passEdge;
3273 batch.matrices[pass.idx].m03 = param.x + waterEdgeFixShoreSand.x;
3274 batch.matrices[pass.idx].m13 = param.y + waterEdgeFixShoreSand.y;
3275 batch.matrices[pass.idx].m23 = param.z + waterEdgeFixShoreSand.z;
3278 pass.idx++;
3279 if (pass.idx == pass.batchSize)
3280 {
3281 pass.NextBatch();
3282 }
3283 }
3284 }
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:2177
int uid
Definition: Card.cs:125
Trait trait
Definition: Card.cs:54
int altitude
Definition: Card.cs:233
bool isDeconstructing
Definition: Card.cs:449
bool IsInstalled
Definition: Card.cs:2423
TraitShackle GetRestrainer()
Definition: Card.cs:7467
int dir
Definition: Card.cs:149
bool noShadow
Definition: Card.cs:821
SourceCategory.Row category
Definition: Card.cs:2089
bool freePos
Definition: Card.cs:521
CardRenderer renderer
Definition: Card.cs:64
virtual bool flipX
Definition: Card.cs:2156
bool ignoreStackHeight
Definition: Card.cs:641
TaskDesignation designation
Definition: CellDetail.cs:19
List< Thing > things
Definition: CellDetail.cs:11
TransAnime anime
Definition: CellDetail.cs:21
List< Chara > charas
Definition: CellDetail.cs:13
Area area
Definition: CellDetail.cs:15
Footmark footmark
Definition: CellDetail.cs:17
bool IsFire
Definition: CellEffect.cs:147
bool IsLiquid
Definition: CellEffect.cs:150
SourceCellEffect.Row source
Definition: CellEffect.cs:145
Definition: Cell.cs:7
byte _block
Definition: Cell.cs:32
byte autotileDeco
Definition: Cell.cs:70
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:801
override bool IsAliveInCurrentZone
Definition: Chara.cs:563
AIAct ai
Definition: Chara.cs:204
override bool IsPC
Definition: Chara.cs:626
Chara host
Definition: Chara.cs:33
override bool IsDeadOrSleeping
Definition: Chara.cs:575
SourceChara.Row source
Definition: Chara.cs:160
override CardRow sourceCard
Definition: Chara.cs:452
override void SetRenderParam(RenderParam p)
Definition: Chara.cs:6907
ConBaseTransmuteMimic mimicry
Definition: Chara.cs:106
override bool IsPCC
Definition: Chara.cs:696
bool hasTelepathy
Definition: Chara.cs:142
BlockColors blockColors
bool godBuild
Definition: CoreDebug.cs:319
bool reverse
Definition: Critter.cs:23
void Update()
Definition: Critter.cs:102
virtual int SnowTile
Definition: Critter.cs:33
int tile
Definition: Critter.cs:7
bool IsNight
Definition: Date.cs:112
static GameSetting setting
Definition: EMono.cs:31
static ColorProfile Colors
Definition: EMono.cs:35
static World world
Definition: EMono.cs:37
static CoreDebug debug
Definition: EMono.cs:45
Definition: FLOOR.cs:2
static SourceFloor.Row sourceSnow
Definition: FLOOR.cs:31
static SourceFloor.Row sourceSnow2
Definition: FLOOR.cs:33
static SourceFloor.Row sourceIce
Definition: FLOOR.cs:35
int tile
Definition: Footmark.cs:7
EffectSetting effect
Definition: GameSetting.cs:299
RenderSetting render
Definition: GameSetting.cs:301
virtual void OnRenderTileMap(RenderParam p, bool drawShadow=true)
Definition: GrowSystem.cs:207
static Card alwaysVisible
Definition: LayerDrama.cs:22
int colDeco2
Definition: Lot.cs:36
int decoFix
Definition: Lot.cs:38
int decoFix2
Definition: Lot.cs:40
int colDeco
Definition: Lot.cs:34
float light
Definition: Lot.cs:66
int idDeco2
Definition: Lot.cs:28
int idDeco
Definition: Lot.cs:26
static SourceMaterial.Row sourceSnow
Definition: MATERIAL.cs:41
int maxZ
Definition: MapBounds.cs:17
int maxX
Definition: MapBounds.cs:14
int x
Definition: MapBounds.cs:8
bool fullWallHeight
Definition: MapConfig.cs:32
int skyBlockHeight
Definition: MapConfig.cs:92
Definition: Map.cs:13
static HashSet< int > sunMap
Definition: Map.cs:14
MapBounds bounds
Definition: Map.cs:52
void Add(Point point, float tile=0f, float color=0f)
Definition: MeshPass.cs:122
void AddShadow(MeshPassParam p, ref Vector3 fix)
Definition: MeshPass.cs:195
bool CanSee(Chara c)
Definition: Player.cs:2542
float lightPower
Definition: Player.cs:1267
Definition: Point.cs:9
static Point shared
Definition: Point.cs:20
Vector3 offsetShadow
Definition: RenderData.cs:23
void DrawRepeat(RenderParam p, int count, float size, bool skipFirst=false)
Definition: RenderData.cs:215
float stackZ
Definition: RenderData.cs:45
SourcePref shadowPref
Definition: RenderData.cs:49
int idShadow
Definition: RenderData.cs:15
float hangedFixZ
Definition: RenderData.cs:43
RenderData data
Definition: RenderObject.cs:34
SourceMaterial.Row mat
Definition: RenderParam.cs:17
int liquidLv
Definition: RenderParam.cs:7
bool multisize
Definition: RenderRow.cs:64
SourcePref pref
Definition: RenderRow.cs:68
bool useAltColor
Definition: RenderRow.cs:80
TileType tileType
Definition: RenderRow.cs:77
int[] _tiles
Definition: RenderRow.cs:12
SourceMaterial.Row DefaultMaterial
Definition: RenderRow.cs:86
int colorMod
Definition: RenderRow.cs:16
void DrawWall(Point point, int color, bool useMarkerPass=false, float offsetZ=0f)
Definition: ScreenGuide.cs:42
MeshPass passGuideFloor
Definition: ScreenGuide.cs:7
List< Item > items
Definition: ShadowData.cs:101
static ShadowData Instance
Definition: ShadowData.cs:99
bool HasGrowth
Definition: SourceObj.cs:28
bool bypassShadow
Definition: SourcePref.cs:315
int liquidModMax
Definition: SourcePref.cs:75
bool FloatUnderwater
Definition: SourcePref.cs:332
float height
Definition: SourcePref.cs:51
int liquidMod
Definition: SourcePref.cs:63
bool Float
Definition: SourcePref.cs:328
int shadow
Definition: SourcePref.cs:39
virtual void Draw(int x, int z, RenderParam p)
Definition: Thing.cs:8
override void SetRenderParam(RenderParam p)
Definition: Thing.cs:1512
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:393

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, 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, Trait.IgnoreLastStackHeight, Cell.ignoreObjShadow, Card.ignoreStackHeight, TileType.Illumination, index, innerMode, ShadowData.Instance, ActionMode.IsActive, Chara.IsAliveInCurrentZone, Cell.isBridgeEdge, Cell.IsBridgeWater, Trait.IsChangeFloorHeight, Cell.isClearArea, Cell.isClearSnow, Chara.IsDeadOrSleeping, Cell.isDeck, Card.isDeconstructing, TileType.IsFence, CellEffect.IsFire, Card.isFloating, Cell.isFloating, Cell.IsFloorWater, Cell.isForceFloat, TileType.IsFullBlock, Trait.IsGround, isIndoor, Card.IsInstalled, CellEffect.IsLiquid, Card.isMasked, CardRenderer.IsMoving, Date.IsNight, Card.isNPCProperty, TraitDoor.IsOpen(), Chara.IsPC, Chara.IsPCC, TileType.IsRamp, Card.isRestrained, Card.isRoofItem, Cell.IsRoomEdge, isSeen, Cell.isSeen, Cell.isShadowed, Cell.isShoreSand, TileType.IsSkipLowBlock, Cell.isSkyFloor, Cell.isSlopeEdge, isSnowCovered, Cell.IsSnowTile, Cell.isSurrounded, ConBaseTransmuteMimic.IsThing, Cell.isToggleWallPillar, Cell.IsTopWater, isUnderwater, TileType.IsUseBlockDir, TileType.IsWall, Cell.isWallEdge, Cell.isWatered, TileType.IsWaterTop, ShadowData.items, Cell.Left, left, light, Lot.light, Cell.lightB, Cell.lightG, lightLimit, lightLookUp, Player.lightPower, Cell.lightR, liquidLv, Cell.liquidLv, RenderParam.liquidLv, SourcePref.liquidMod, SourcePref.liquidModMax, Room.lot, lotLight, lotLight2, Cell.lotShade, Cell.lotWall, lowBlock, lowWallObjAltitude, map, ColorProfile.BlockColors.MapHighlight, RenderParam.mat, matBlock, Cell.matBlock, matBridge, Cell.matBridge, MeshPassParam.matColor, SourceMaterial.Row.matColor, MeshBatch.matColors, 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 3410 of file BaseTileMap.cs.

3411 {
3412 float num = _baseBrightness + 0.25f;
3413 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)));
3414 return (int)num;
3415 }

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

3791 {
3792 if (p == 0)
3793 {
3794 return 104025;
3795 }
3796 return p * 262144 + (int)(matColor.r * 50f) * 4096 + (int)(matColor.g * 50f) * 64 + (int)(matColor.b * 50f);
3797 }

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

3418 {
3419 float num = Mathf.Sqrt(lot.light) * roofLightMod;
3420 if (num > lightLimit * roofLightLimitMod)
3421 {
3423 }
3424 if (isSnowCovered)
3425 {
3426 num += roofLightSnow * (1f - nightRatio);
3427 }
3428 int num2 = (int)(num * 50f) * 262144;
3429 if (isSnowCovered)
3430 {
3431 num2 += snowColorToken;
3432 }
3433 return num2;
3434 }
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 3286 of file BaseTileMap.cs.

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

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

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

◆ OnActivate()

void BaseTileMap.OnActivate ( BaseGameScreen  _screen)
inline

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

3800 {
3801 Room room = _cell.room;
3802 if (room == null && dirWall != -1)
3803 {
3804 if (dirWall == 0 && _cell.Front.room != null)
3805 {
3806 room = _cell.Front.room;
3807 _cell = _cell.Front;
3808 }
3809 else if (_cell.Right.room != null)
3810 {
3811 room = _cell.Right.room;
3812 _cell = _cell.Right;
3813 }
3814 }
3815 if (room != null)
3816 {
3817 Lot lot = room.lot;
3818 RoofStyle roofStyle = roofStyles[lot.idRoofStyle];
3819 float num = (float)(_cz - _cx) * screen.tileAlign.y + (float)lot.mh * _heightMod.y + lot.realHeight + roofFix.y;
3820 float num2 = 1000f + param.x * screen.tileWeight.x + (float)lot.mh * _heightMod.z + lot.realHeight * roofFix3.z + roofFix.z + roofStyle.posFix.z;
3821 if (lot.height == 1)
3822 {
3823 num += roofStyle.lowRoofFix.y;
3824 num2 += roofStyle.lowRoofFix.z;
3825 }
3826 _param.x = (float)(_cx + _cz) * screen.tileAlign.x + roofFix.x + (float)h * roofFix2.x;
3827 _param.y = num + (float)h * roofFix2.y;
3828 _param.z = num2 + _param.y * screen.tileWeight.z + (float)h * roofFix2.z + heightModRoofBlock.y;
3829 }
3830 if (!ignoreAltitudeY || room != null)
3831 {
3832 _param.y += (float)altitude * _heightMod.y;
3833 }
3834 _param.z += (float)altitude * heightModRoofBlock.z;
3835 }
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: