Elin Decompiled Documentation EA 23.153 Nightly
Loading...
Searching...
No Matches
BaseGameScreen.cs
Go to the documentation of this file.
1using System;
2using UnityEngine;
3
4public class BaseGameScreen : EMono
5{
6 public class FocusOption
7 {
8 public Point pos;
9
10 public float speed = 2f;
11
12 public bool linear = true;
13
14 public bool player;
15 }
16
17 private readonly int _BackDrawPower = Shader.PropertyToID("_BackDrawPower");
18
19 private readonly int _Snow = Shader.PropertyToID("_Snow");
20
21 private readonly int _SkyLevel = Shader.PropertyToID("_SkyLevel");
22
23 private readonly int _NightRate = Shader.PropertyToID("_NightRate");
24
25 private readonly int _ViewHeight = Shader.PropertyToID("_ViewHeight");
26
27 private readonly int _FogStrength = Shader.PropertyToID("_FogStrength");
28
29 private readonly int _FogColor = Shader.PropertyToID("_FogColor");
30
31 private readonly int _FowColor = Shader.PropertyToID("_FowColor");
32
33 private readonly int _SunColor = Shader.PropertyToID("_SunColor");
34
35 private readonly int _SeaColor = Shader.PropertyToID("_SeaColor");
36
37 private readonly int _SkyColor = Shader.PropertyToID("_SkyColor");
38
39 private readonly int _SkyBGColor = Shader.PropertyToID("_SkyBGColor");
40
41 private readonly int _Offset = Shader.PropertyToID("_Offset");
42
43 private readonly int _Zoom = Shader.PropertyToID("_Zoom");
44
45 private readonly int _LightPower = Shader.PropertyToID("_LightPower");
46
47 private readonly int _AnimeSpeedGlobal = Shader.PropertyToID("_AnimeSpeedGlobal");
48
49 private readonly int _ScreenFlash = Shader.PropertyToID("_ScreenFlash");
50
51 public float SharpenAmount;
52
53 public float camSpeed2;
54
55 public float heightLight;
56
57 public float pushbackSpeed;
58
59 public Vector2 snapSize;
60
61 public Vector2 tileSize;
62
63 public Vector2 tileAlign;
64
65 public Vector2 tileWorldSize;
66
67 public Vector2 tileViewSize;
68
69 public Vector3 tileWeight;
70
71 public Vector3 focusFix;
72
73 public Vector3 tileOffsetHeight;
74
75 public Vector3 tileWeightHeight;
76
77 public Vector3 planeAngle;
78
79 public Vector3 planeSpeed;
80
81 public Vector2 paddings;
82
83 public Vector2 paddingOffset;
84
85 public Vector3 lastPos;
86
87 public Rect mapLimit;
88
89 [Space]
90 public float Zoom;
91
92 [Space]
93 public float nextMove;
94
95 [Space]
96 public float focusSpeed;
97
98 [Space]
99 public float focusSpeedSlow;
100
101 [Space]
102 public float focusSpeedSlow2;
103
104 public int width;
105
106 public int height;
107
108 public int scrollX;
109
110 public int scrollY;
111
112 public int moonLevel;
113
115
117
119
120 public Grid grid;
121
122 public MeshRenderer overlayShadow;
123
125
126 [NonSerialized]
127 public float forcePrecision;
128
129 [NonSerialized]
130 public bool isCameraMoving;
131
132 [NonSerialized]
134
135 [NonSerialized]
136 public Vector3? focusPos;
137
138 [NonSerialized]
139 public Vector3 position;
140
141 protected Vector3 camPos;
142
143 protected Vector3 pushBack;
144
145 public float screenFixX;
146
147 public float screenFixX2;
148
149 public float screenFixX3;
150
151 public float screenFixX4;
152
153 public float screenFixY;
154
155 public float screenFixY2;
156
157 public float screenFixY3;
158
159 public float screenFixY4;
160
161 private Vector3 _camPos;
162
163 private Point _randomPoint = new Point();
164
165 [NonSerialized]
166 public bool instantFocus;
167
168 public int targetZoomIndex;
169
170 public float targetZoom = 0.5f;
171
172 public float zoomTimer;
173
174 public Vector3 zoomPos;
175
176 public bool fixFocus => EMono.scene.actionMode?.FixFocus ?? false;
177
178 public virtual float TargetZoom => EMono.scene.actionMode.TargetZoom;
179
181
182 protected Transform transFocus => EMono.scene.transFocus;
183
184 public virtual float SkyRate => Mathf.Clamp((1.2f - Zoom) * 2f - (EMono._zone.IsSnowCovered ? 0.38f : 0f), 0f, 2f);
185
186 public virtual float ViewHeight => SkyRate * 10f + 5f;
187
188 public virtual bool IsGameScreen => true;
189
190 public virtual bool IsLocalMap => false;
191
192 public void Activate()
193 {
194 if (!(EMono.core.screen == this))
195 {
196 if (EMono.core.screen != null)
197 {
199 }
200 SetUnitSize();
201 EMono.core.screen = this;
202 Point._screen = this;
203 base.gameObject.SetActive(value: true);
204 EMono.scene.flock.SetActive(IsLocalMap);
206 EMono.scene.firefly.SetActive(IsLocalMap);
207 EMono.scene.star.SetActive(IsLocalMap);
208 EMono.scene.sfxRain.SetActive(IsGameScreen);
209 EMono.scene.sfxSea.SetActive(IsGameScreen);
210 EMono.scene.sfxWind.SetActive(IsGameScreen);
211 EMono.scene.sfxFire.SetActive(IsGameScreen);
213 OnActivate();
214 ParticleSystem.MainModule main = EMono.scene.rain.main;
215 ParticleSystem.MainModule main2 = EMono.scene.snow.main;
216 ParticleSystem.MainModule main3 = EMono.scene.ether.main;
217 bool flag2 = (main3.prewarm = true);
218 bool prewarm = (main2.prewarm = flag2);
219 main.prewarm = prewarm;
220 ParticleSystem[] blossoms = EMono.scene.blossoms;
221 for (int i = 0; i < blossoms.Length; i++)
222 {
223 ParticleSystem.MainModule main4 = blossoms[i].main;
224 main4.prewarm = true;
225 }
226 if ((bool)overlayShadow)
227 {
229 overlayShadow.sharedMaterial = EMono.scene.profile.matOverlay;
230 }
231 EMono.scene.camSupport.grading.material = EMono.scene.profile.matGrading;
232 if (IsGameScreen)
233 {
236 RefreshAll();
237 tileMap.OnActivate(this);
239 }
240 else if (EMono.core.config != null)
241 {
243 }
244 }
245 }
246
247 public virtual void OnActivate()
248 {
249 }
250
251 public void Deactivate()
252 {
253 OnDeactivate();
254 base.gameObject.SetActive(value: false);
255 EMono.core.screen = null;
256 }
257
258 public virtual void OnDeactivate()
259 {
260 }
261
262 public virtual void SetUnitSize()
263 {
264 }
265
266 public virtual void OnEndPlayerTurn()
267 {
268 }
269
270 public void Draw()
271 {
272 if (!IsGameScreen)
273 {
274 return;
275 }
276 if (Zoom != targetZoom)
277 {
278 bool flag = EMono.scene.actionMode == ActionMode.Bird;
280 float num = camera.zoomSpeed * (flag ? 0.05f : (camera.linearZoom ? 2f : 1f)) * Core.delta;
281 zoomTimer += num * 0.3f;
282 float t = ((flag || !camera.linearZoom) ? num : zoomTimer);
283 float num2 = Mathf.Lerp(EMono.screen.Zoom, targetZoom, t);
284 if (Mathf.Abs(num2 - targetZoom) < (flag ? 0.0005f : 0.003f))
285 {
286 num2 = targetZoom;
287 }
288 if (camera.zoomToMouse && zoomPos != Vector3.zero)
289 {
290 position = Vector3.Lerp(position, zoomPos, t);
291 }
293 }
294 RenderObject.gameSpeed = EMono.scene.actionMode.gameSpeed;
295 RenderObject.gameDelta = Core.gameDeltaNoPause;
297 {
298 if (Zoom != targetZoom)
299 {
301 }
302 Vector3 vector = (EMono.pc.isSynced ? EMono.player.position : EMono.pc.pos.Position()) + focusFix;
303 position = vector;
304 scrollX = Mathf.FloorToInt(position.x / tileWorldSize.x) - width / 2 + (int)paddingOffset.x;
305 scrollY = Mathf.FloorToInt(position.y / tileWorldSize.y) - height / 4 + (int)paddingOffset.y;
306 }
307 tileMap.Draw();
308 if (instantFocus)
309 {
310 instantFocus = false;
311 }
313 if (EMono.game.activeZone != null)
314 {
315 for (int num3 = EMono._map.pointAnimes.Count - 1; num3 >= 0; num3--)
316 {
317 if (EMono._map.pointAnimes[num3].Update())
318 {
319 EMono._map.pointAnimes.RemoveAt(num3);
320 }
321 }
322 }
324 if (Scene.skipAnime)
325 {
327 Scene.skipAnime = false;
328 }
330 FlockController flock = EMono.scene.flock;
331 int visible;
332 if (targetZoom <= 1.25f)
333 {
334 Room room = EMono.pc.pos.cell.room;
335 visible = ((room == null || !room.HasRoof) ? 1 : 0);
336 }
337 else
338 {
339 visible = 0;
340 }
341 flock.UpdateVisible((byte)visible != 0);
342 if (EMono.pc.isSynced && (bool)EMono.pc.renderer.orbit)
343 {
345 }
346 }
347
348 public void UpdateShaders(float time = 0f)
349 {
351 SceneColorProfile color = profile.color;
352 SceneLightProfile light = profile.light;
353 Color value = color.fog.Evaluate(time);
354 float value2 = light.nightRatioCurve.Evaluate(time);
355 Shader.SetGlobalFloat(_Snow, EMono._zone.IsSnowCovered ? 1f : 0f);
356 Shader.SetGlobalFloat(_BackDrawPower, (!ActionMode.Cinema.IsActive) ? EMono.game.config.backDrawAlpha : 0);
357 Shader.SetGlobalFloat(_SkyLevel, SkyRate);
358 Shader.SetGlobalFloat(_NightRate, value2);
359 Shader.SetGlobalFloat(_ViewHeight, ViewHeight);
360 Shader.SetGlobalFloat(_FogStrength, value.a * 0.1f);
361 Shader.SetGlobalColor(_FogColor, value);
363 if ((bool)EMono._map.fowProfile)
364 {
365 fowProfile = EMono._map.fowProfile;
366 }
367 if ((bool)fowProfile)
368 {
369 switch (fowProfile.type)
370 {
371 case FOWType.Color:
372 Shader.SetGlobalColor(_FowColor, fowProfile.color);
373 break;
374 case FOWType.ColorAdd:
375 Shader.SetGlobalColor(_FowColor, fowProfile.color * color.fow.Evaluate(time));
376 break;
377 default:
378 Shader.SetGlobalColor(_FowColor, color.fow.Evaluate(time));
379 break;
380 }
381 }
382 else
383 {
384 Shader.SetGlobalColor(_FowColor, color.fow.Evaluate(time));
385 }
386 Shader.SetGlobalColor(_SunColor, EMono._zone.IsSnowCovered ? color.sunSnow.Evaluate(time) : color.sun.Evaluate(time));
387 Shader.SetGlobalColor(_SeaColor, color.sea.Evaluate(time));
388 Shader.SetGlobalColor(_SkyColor, color.sky.Evaluate(time));
389 Shader.SetGlobalColor(_SkyBGColor, color.skyBG.Evaluate(time));
390 Shader.SetGlobalVector(_Offset, EMono.core.config.camera.extendZoomMin ? (position * 0.3f) : (position * 0.5f));
391 Shader.SetGlobalFloat(_Zoom, Zoom);
392 Shader.SetGlobalFloat(_LightPower, light.lightPower.Evaluate(time) * light.lightPowerMod);
393 Shader.SetGlobalFloat(_AnimeSpeedGlobal, EMono.game.config.animeSpeed);
394 Shader.SetGlobalColor(_ScreenFlash, ScreenFlash.currentColor);
395 ParticleSystem.MainModule main = EMono.scene.godray.main;
396 main.startColor = (EMono._zone.IsSnowCovered ? color.godraySnow.Evaluate(time) : color.godray.Evaluate(time));
397 camSupport.grading.vignettePower = light.vignetteCurve.Evaluate(time);
398 camSupport.grading.UpdateVignette();
399 camSupport.bloom.threshold = light.bloomCurve.Evaluate(time);
400 camSupport.beautify.bloomIntensity = light.bloomCurve2.Evaluate(time);
401 }
402
403 public virtual void OnChangeHour()
404 {
405 }
406
407 public virtual void RefreshPosition()
408 {
410 {
411 return;
412 }
413 if (focusOption != null)
414 {
415 Vector3 vector = (focusOption.player ? (EMono.pc.pos.Position() + focusFix) : focusOption.pos.PositionCenter());
416 vector.z = position.z;
418 {
419 position = Vector3.MoveTowards(position, vector, focusOption.speed * Core.delta);
420 }
421 else
422 {
423 position = Vector3.Lerp(position, vector, focusOption.speed * Core.delta);
424 }
425 }
426 else if (focusPos.HasValue)
427 {
428 Vector3 obj = focusPos ?? position;
429 float x = obj.x;
430 Vector3 obj2 = focusPos ?? position;
431 focusPos = new Vector3(x, obj2.y, position.z);
433 if (Vector3.Distance(position, focusPos ?? position) < 0.1f)
434 {
435 focusPos = null;
436 }
437 }
438 else if ((bool)transFocus)
439 {
440 pushBack = Vector3.zero;
441 position.x = transFocus.position.x;
442 position.y = transFocus.position.y;
443 }
444 else if (fixFocus)
445 {
446 float z = position.z;
448 for (int i = 0; i < EMono.core.config.camera.zooms.Length; i++)
449 {
451 {
452 targetZoomIndex = i;
453 }
454 }
455 Vector3 b = (EMono.pc.isSynced ? EMono.player.position : EMono.pc.pos.Position()) + focusFix;
456 if (instantFocus)
457 {
458 position = b;
459 }
461 {
462 position = Vector3.Lerp(position, b, focusSpeed * Core.delta * Mathf.Lerp(0.2f, 1f, 1f - Mathf.Clamp(ActionMode.Adv.rightMouseTimer, 0f, 1f)));
463 }
464 else
465 {
466 position = b;
467 }
468 position.z = z;
469 pcOrbit.transform.position = EMono.pc.renderer.position;
470 }
471 else
472 {
474 {
476 }
477 pushBack = Vector3.zero;
478 int num = scrollX - scrollY;
479 int num2 = scrollY + scrollX;
480 if ((float)num <= mapLimit.x)
481 {
482 pushBack.x = mapLimit.x - (float)num;
483 }
484 if ((float)num2 <= mapLimit.y)
485 {
486 pushBack.y = mapLimit.y - (float)num2;
487 }
488 if ((float)num >= (float)EMono._map.Size + mapLimit.width - (float)(width / 2))
489 {
490 pushBack.x = (float)EMono._map.Size + mapLimit.width - (float)(width / 2) - (float)num;
491 }
492 if ((float)num2 >= (float)EMono._map.Size + mapLimit.height - (float)(height / 2))
493 {
494 pushBack.y = (float)EMono._map.Size + mapLimit.height - (float)(height / 2) - (float)num2;
495 }
496 position += Quaternion.Euler(planeAngle) * pushBack * Core.delta * pushbackSpeed;
497 }
498 scrollX = Mathf.FloorToInt(position.x / tileWorldSize.x) - width / 2 + (int)paddingOffset.x;
499 scrollY = Mathf.FloorToInt(position.y / tileWorldSize.y) - height / 4 + (int)paddingOffset.y;
500 if (lastPos.x != (float)scrollX || lastPos.y != (float)scrollY)
501 {
502 lastPos.x = scrollX;
503 lastPos.y = scrollY;
504 }
505 camPos.x = position.x;
506 camPos.y = position.y;
507 SnapScreen(ref camPos, Zoom);
508 camPos.z = -500f;
509 _camPos.x = camPos.x + screenFixX2 + screenFixX4;
510 _camPos.y = camPos.y + screenFixY2 + screenFixY4;
511 _camPos.z = camPos.z;
512 EMono.scene.cam.transform.localPosition = _camPos;
513 camPos.z = 0f;
514 EMono.scene.transAudio.position = camPos + EMono.scene.posAudioListener;
515 if ((bool)WidgetMinimap.Instance)
516 {
518 }
519 }
520
521 public void RefreshAll()
522 {
524 bool indoor = EMono._map.config.indoor;
525 ScreenGrading grading = camSupport.grading;
526 EMono.scene.flock.SetActive(!indoor);
527 if (indoor)
528 {
529 grading.material.DisableKeyword("CLOUD_ON");
530 }
531 else
532 {
533 grading.material.EnableKeyword("CLOUD_ON");
534 }
536 {
537 EMono.scene.matFloorEx.EnableKeyword("EX_ON");
538 }
539 else
540 {
541 EMono.scene.matFloorEx.DisableKeyword("EX_ON");
542 }
543 grading.profile.vignette.enable = EMono.scene.profile.light.vignette;
544 grading.profile.vignette.vignetteColor = EMono.scene.profile.light.vignetteColor;
545 RefreshSky();
546 RefreshTilt();
547 }
548
549 public void RefreshScreenSize()
550 {
552 width = (int)((float)Screen.width / tileSize.x / Zoom) + (int)paddings.x + 2;
553 height = (int)((float)Screen.height / (tileSize.y / 2f) / Zoom) + (int)paddings.y + 4;
556 Vector3 localScale = new Vector3(EMono.scene.cam.orthographicSize * ((float)Screen.width / (float)Screen.height) * 2.5f, EMono.scene.cam.orthographicSize * 2.5f, 1f);
558 {
559 EMono.scene.skyBG.transform.localScale = localScale;
560 float num = ((ActionMode.IsAdv || Zoom >= 1f || EMono._map.IsIndoor) ? 0f : (0.4f / Zoom));
562 {
563 num += 0.8f;
564 }
566 {
567 EMono.scene.sfxWind.SetVolume(Mathf.Min(num, 1f));
568 }
569 }
570 Vector3 vector = EMono.scene.cam.transform.position;
571 EMono.scene.cam.transform.position = Vector3.zero;
572 Vector3 vector2 = EMono.scene.cam.WorldToScreenPoint(Vector3.zero);
573 screenFixX2 = vector2.x % screenFixX * screenFixX3;
574 screenFixY2 = vector2.y % screenFixY * screenFixY3;
575 EMono.scene.cam.transform.position = vector;
576 }
577
579 {
580 int num = EMono.screen.scrollX - EMono.screen.scrollY + width / 2 - (height / 2 + 1) / 2;
581 int num2 = EMono.screen.scrollY + EMono.screen.scrollX + width / 2 + height / 2 / 2;
582 num = num - 20 + EMono.rnd(40);
583 num2 = num2 - 20 + EMono.rnd(40);
584 return _randomPoint.Set(num, num2);
585 }
586
587 public void RefreshSky()
588 {
590 bool indoor = EMono._map.config.indoor;
591 EMono.scene.firefly.baseParticleCount = graphic.fireflyCount;
592 EMono.scene.fireflyNight.baseParticleCount = graphic.fireflyCount * 10;
593 EMono.scene.star.baseParticleCount = graphic.starCount;
594 EMono.scene.star.gameObject.GetComponent<ParticleSystemRenderer>().enabled = EMono.world.date.IsNight;
595 EMono.scene.star.SetActive(IsLocalMap && !indoor);
596 EMono.scene.firefly.SetActive(IsLocalMap && graphic.firefly && !indoor);
597 EMono.scene.fireflyNight.SetActive(IsLocalMap && graphic.firefly && !indoor);
598 if ((bool)overlayShadow && (bool)EMono.scene.profile.matOverlay && this is GameScreen)
599 {
600 overlayShadow.sharedMaterial.SetFloat("_ShadowStrength", EMono._map.config.shadowStrength * (EMono._zone.IsSnowCovered ? 0.5f : 1f) * EMono.setting.render.shadowStrength);
601 }
604 }
605
606 public virtual void RefreshWeather()
607 {
608 bool flag = EMono._map.config.indoor || (EMono.pc.IsInActiveZone && (EMono.pc.pos.cell.room?.HasRoof ?? false));
609 bool flag2 = EMono.pc.pos.cell.room?.data.atrium ?? false;
610 Weather weather = EMono.world.weather;
611 Weather.Condition currentCondition = weather.CurrentCondition;
612 EMono.scene.filterRain.enabled = !flag && weather.IsRaining && EMono.core.config.graphic.enhanceRain;
613 EMono.scene.filterRain.Fade = ((currentCondition == Weather.Condition.RainHeavy) ? 0.4f : 0.3f);
614 EMono.scene.rain.enableEmission = !flag && weather.IsRaining;
615 ParticleSystem.EmissionModule emission = EMono.scene.rain.emission;
616 emission.rateOverTime = ((currentCondition == Weather.Condition.RainHeavy) ? 750 : 200);
617 EMono.scene.snow.enableEmission = !flag && currentCondition == Weather.Condition.Snow;
618 EMono.scene.ether.enableEmission = !flag && weather.IsEther;
619 bool enableEmission = !flag && weather.IsBlossom;
620 ParticleSystem[] blossoms = EMono.scene.blossoms;
621 for (int i = 0; i < blossoms.Length; i++)
622 {
623 blossoms[i].enableEmission = enableEmission;
624 }
625 enableEmission = !flag && currentCondition == Weather.Condition.SnowHeavy && EMono.core.config.graphic.blizzard;
626 blossoms = EMono.scene.blizzards;
627 for (int i = 0; i < blossoms.Length; i++)
628 {
629 blossoms[i].enableEmission = enableEmission;
630 }
631 EMono.scene.transBlizzard.localScale = new Vector3(1f, 1f, 1f);
632 bool flag3 = (EMono._zone.IsUnderwater || EMono._map.config.forceGodRay || (EMono.core.config.graphic.godray && !flag && (currentCondition == Weather.Condition.Fine || currentCondition == Weather.Condition.Snow))) && !BuildMenu.Instance;
633 EMono.scene.godray.SetActive(flag3, delegate(bool enabled)
634 {
635 if (!enabled)
636 {
637 EMono.scene.godray.Clear();
638 }
639 });
640 EMono.scene.godrayDust.SetActive(flag3 && EMono.world.date.IsNight);
641 EMono.scene.snow.SetActive(enable: true);
642 EMono.scene.rain.SetActive(enable: true);
643 EMono.scene.ether.SetActive(enable: true);
644 EMono.scene.blossom.SetActive(enable: true);
645 Zone zone = EMono._zone;
646 if (EMono._zone is Zone_Tent)
647 {
648 zone = (EMono._zone.parent as Zone) ?? EMono._zone;
649 }
650 float num = ((zone.lv <= -2 || zone.IsUnderwater) ? 0f : ((zone.lv <= -1) ? 0.3f : ((flag && !flag2) ? 0.6f : 1f)));
651 EMono.scene.sfxRain.SetVolume(weather.IsRaining ? num : 0f);
652 EMono.scene.sfxSea.SetVolume(EMono._zone.VolumeSea * num);
653 EMono.scene.camSupport.grading.profile.fog = EMono.setting.render.fogs[EMono._map.config.fog];
654 EMono.scene.camSupport.grading.userFog = ((!EMono._map.config.indoor && flag) ? 0f : 1f);
655 float num2 = ((EMono._map.IsIndoor || !EMono.world.weather.IsRaining) ? 0f : ((currentCondition == Weather.Condition.RainHeavy) ? (-0.08f) : (-0.04f)));
657 {
658 num2 += EMono.scene.profile.global.snowBrightness;
659 }
660 camSupport.grading.sceneBrightness = num2;
661 ParticleSystem.MainModule main = EMono.scene.rain.main;
662 ParticleSystem.MainModule main2 = EMono.scene.snow.main;
663 ParticleSystem.MainModule main3 = EMono.scene.ether.main;
664 bool flag5 = (main3.prewarm = false);
665 bool prewarm = (main2.prewarm = flag5);
666 main.prewarm = prewarm;
667 blossoms = EMono.scene.blossoms;
668 for (int i = 0; i < blossoms.Length; i++)
669 {
670 ParticleSystem.MainModule main4 = blossoms[i].main;
671 main4.prewarm = false;
672 }
673 camSupport.grading.SetGrading();
674 }
675
676 public void RefreshGrading()
677 {
678 float timeRatio = (EMono.core.IsGameStarted ? EMono.scene.timeRatio : 0f);
679 if ((bool)camSupport.grading.profile.overlay)
680 {
681 camSupport.grading.profile.overlay.Refresh(timeRatio, EMono._zone.IsSnowCovered);
682 }
683 ScreenGrading.blind = EMono.pc.isBlind;
684 camSupport.grading.profile.sharpen.enable = EMono.core.config.graphic.sharpen > 0;
685 camSupport.grading.profile.sharpen.Strength = Mathf.Clamp(0.1f * (float)EMono.core.config.graphic.sharpen, 0f, (this is GameScreen) ? 10f : 1f);
686 camSupport.beautify.sharpen = Mathf.Clamp(0.01f * (float)EMono.core.config.graphic.sharpen2, 0f, (this is GameScreen) ? 10f : 0.5f);
687 camSupport.grading.SetGrading();
689 Color tintColor = EMono._map.config.colorScreen.Get();
690 if (tintColor.a == 0f)
691 {
692 tintColor = sceneTemplate.colorScreen;
693 }
694 camSupport.beautify.tintColor = tintColor;
695 tintColor = EMono._map.config.colorSea.Get();
696 MATERIAL.sourceWaterSea.matColor = ((tintColor.a == 0f) ? MATERIAL.sourceWaterSea.GetColor() : tintColor);
698 float num = 0f;
699 if (!EMono._map.IsIndoor)
700 {
701 num += 0.01f * EMono.core.config.test.brightnessNight * EMono.scene.profile.light.nightRatioCurve.Evaluate(EMono.scene.timeRatio);
702 }
703 camSupport.grading.nightBrightness = num;
704 }
705
706 public void RefreshTilt()
707 {
708 camSupport.tiltShift.enabled = ((ActionMode.Bird.IsActive || EMono._zone.IsRegion) ? EMono.game.config.tiltRegion : EMono.game.config.tilt);
709 camSupport.tiltShift.blurArea = (ActionMode.Bird.IsActive ? 12f : (0.1f * (float)(EMono._zone.IsRegion ? EMono.game.config.tiltPowerRegion : EMono.game.config.tiltPower)));
710 }
711
712 public void ScrollMouse(float x, float y)
713 {
714 position.x += x / Zoom;
715 position.y += y / Zoom;
716 if (x > 0.1f || x < -0.1f || y > 0.1f || y < 0.1f)
717 {
719 }
720 }
721
722 public void ScrollAxis(Vector3 axis, bool direct = false)
723 {
724 if (direct)
725 {
726 position += axis;
727 }
728 else
729 {
730 position += axis * Core.delta * camSpeed2 * EMono.core.config.camera.senseKeyboard / Zoom;
731 }
732 }
733
734 public void Focus(Int3 ints)
735 {
736 position = new Vector3(ints.x, ints.y, ints.z);
737 }
738
739 public void Focus(int x, int y)
740 {
741 if (EMono.AdvMode)
742 {
743 SE.Beep();
744 return;
745 }
746 position.x = (scrollX = x);
747 position.y = (scrollY = y);
748 }
749
750 public void Focus(Card c)
751 {
752 if (c != null)
753 {
754 Focus(c.GetRootCard().pos);
755 }
756 }
757
758 public void FocusCenter()
759 {
760 Point pos = new Point(EMono._map.Size / 2, EMono._map.Size / 2);
761 Focus(pos);
762 }
763
764 public void Focus(Point pos)
765 {
766 position = pos.PositionCenter();
767 }
768
769 public void FocusPC()
770 {
771 focusPos = null;
773 instantFocus = true;
775 }
776
777 public void FocusImmediate(Point pos)
778 {
779 focusPos = null;
780 Focus(pos);
781 instantFocus = true;
784 }
785
786 public void SnapScreen(ref Vector3 v, float zoom)
787 {
788 float num = snapSize.x / zoom;
789 float num2 = snapSize.y / zoom;
790 switch (EMono.core.config.fix.snapType)
791 {
792 case CoreConfig.ScreenSnapType.Default:
793 v.x = num * (float)Mathf.RoundToInt(v.x / num);
794 v.y = num2 * (float)Mathf.RoundToInt(v.y / num2);
795 break;
796 case CoreConfig.ScreenSnapType.Floor:
797 v.x = num * (float)Mathf.FloorToInt(v.x / num);
798 v.y = num2 * (float)Mathf.FloorToInt(v.y / num2);
799 break;
800 case CoreConfig.ScreenSnapType.Ceil:
801 v.x = num * (float)Mathf.CeilToInt(v.x / num);
802 v.y = num2 * (float)Mathf.CeilToInt(v.y / num2);
803 break;
804 case CoreConfig.ScreenSnapType.Hack3:
805 num = snapSize.x;
806 num2 = snapSize.y;
807 v.x = num * (float)Mathf.RoundToInt(v.x / num);
808 v.y = num2 * (float)Mathf.RoundToInt(v.y / num2);
809 break;
810 case CoreConfig.ScreenSnapType.Hack4:
811 num = snapSize.x;
812 num2 = snapSize.y;
813 v.x = num * (float)Mathf.FloorToInt(v.x / num);
814 v.y = num2 * (float)Mathf.FloorToInt(v.y / num2);
815 break;
816 case CoreConfig.ScreenSnapType.Hack5:
817 num = snapSize.x;
818 num2 = snapSize.y;
819 v.x = num * (float)Mathf.CeilToInt(v.x / num);
820 v.y = num2 * (float)Mathf.CeilToInt(v.y / num2);
821 break;
822 case CoreConfig.ScreenSnapType.Hack6:
823 v.x = 0.01f * (float)Mathf.FloorToInt(v.x * 100f) + 0.001f;
824 v.y = 0.01f * (float)Mathf.FloorToInt(v.y * 100f) + 0.001f;
825 break;
826 case CoreConfig.ScreenSnapType.Hack7:
827 v.x = 0.01f * (float)Mathf.FloorToInt(v.x * 100f) - 0.001f;
828 v.y = 0.01f * (float)Mathf.FloorToInt(v.y * 100f) - 0.001f;
829 break;
830 case CoreConfig.ScreenSnapType.Hack8:
831 v.x = 0.01f * (float)Mathf.RoundToInt(v.x * 100f) + 0.005f;
832 v.y = 0.01f * (float)Mathf.RoundToInt(v.y * 100f) + 0.005f;
833 break;
834 case CoreConfig.ScreenSnapType.Hack9:
835 v.x = 0.01f * (float)Mathf.RoundToInt(v.x * 100f) + 0.025f;
836 v.y = 0.01f * (float)Mathf.RoundToInt(v.y * 100f) + 0.025f;
837 break;
838 }
839 }
840
841 public void SetZoom(float z)
842 {
843 targetZoom = (Zoom = z);
845 zoomTimer = 0f;
846 }
847
848 public void SetTargetZoomIndex(int index)
849 {
850 targetZoomIndex = index;
851 float num = targetZoom;
853 if (num != targetZoom)
854 {
855 zoomTimer = 0f;
856 }
857 }
858
859 public void ModTargetZoomIndex(int a)
860 {
862 {
863 int num = targetZoomIndex;
864 targetZoomIndex -= a;
865 int num2 = ((!EMono.core.config.camera.extendZoomMin) ? 1 : 0);
866 int num3 = (EMono.core.config.camera.extendZoomMax ? 4 : 3);
867 if (targetZoomIndex < num2)
868 {
869 targetZoomIndex = num2;
870 }
871 else if (targetZoomIndex >= num3)
872 {
873 targetZoomIndex = num3;
874 }
876 {
878 }
880 }
881 }
882}
FOWType
Definition: FOWType.cs:2
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
Definition: UIBook.cs:627
override float TargetZoom
Definition: AM_Adv.cs:241
float rightMouseTimer
Definition: AM_Adv.cs:164
virtual float TargetZoom
Definition: ActionMode.cs:227
virtual bool FixFocus
Definition: ActionMode.cs:177
bool IsActive
Definition: ActionMode.cs:121
static AM_Cinema Cinema
Definition: ActionMode.cs:73
virtual float gameSpeed
Definition: ActionMode.cs:119
static AM_Bird Bird
Definition: ActionMode.cs:31
static AM_Adv Adv
Definition: ActionMode.cs:15
bool atrium
Definition: AreaData.cs:66
AreaData data
Definition: BaseArea.cs:29
ScreenGuide guide
void Focus(int x, int y)
virtual void OnActivate()
readonly int _ScreenFlash
Vector3 tileOffsetHeight
void ModTargetZoomIndex(int a)
readonly int _Snow
readonly int _Offset
void SetZoom(float z)
void FocusImmediate(Point pos)
void SetTargetZoomIndex(int index)
readonly int _BackDrawPower
Vector2 paddingOffset
void ScrollAxis(Vector3 axis, bool direct=false)
readonly int _ViewHeight
Vector3 planeSpeed
readonly int _LightPower
MeshRenderer overlayShadow
readonly int _SunColor
virtual void OnDeactivate()
Vector3 tileWeightHeight
readonly int _SkyBGColor
Transform transFocus
virtual float TargetZoom
void Focus(Point pos)
Vector2 tileWorldSize
virtual void OnChangeHour()
readonly int _FogStrength
Point GetRandomPoint()
virtual bool IsLocalMap
CameraSupport camSupport
void ScrollMouse(float x, float y)
readonly int _Zoom
readonly int _FowColor
readonly int _SeaColor
Vector3 tileWeight
virtual void OnEndPlayerTurn()
BaseTileSelector tileSelector
void SnapScreen(ref Vector3 v, float zoom)
Vector3 planeAngle
readonly int _FogColor
Vector2 tileViewSize
readonly int _SkyColor
readonly int _SkyLevel
readonly int _NightRate
void UpdateShaders(float time=0f)
virtual void RefreshWeather()
void RefreshScreenSize()
virtual float SkyRate
void Focus(Card c)
BaseTileMap tileMap
virtual bool IsGameScreen
void Focus(Int3 ints)
virtual void RefreshPosition()
FocusOption focusOption
virtual void SetUnitSize()
virtual float ViewHeight
readonly int _AnimeSpeedGlobal
virtual void Draw()
Definition: BaseTileMap.cs:541
void OnActivate(BaseGameScreen _screen)
Definition: BaseTileMap.cs:518
FowProfile fowProfile
static BuildMenu Instance
Definition: BuildMenu.cs:77
bool pressing
Definition: ButtonState.cs:35
ScreenGrading grading
Divider divier
void ResizeCameraToPixelPerfect()
Vector3 position
Definition: CardRenderer.cs:21
TCOrbit orbit
Definition: CardRenderer.cs:7
Definition: Card.cs:11
Point pos
Definition: Card.cs:55
Card GetRootCard()
Definition: Card.cs:3287
CardRenderer renderer
Definition: Card.cs:57
Room room
Definition: Cell.cs:102
override bool isSynced
Definition: Chara.cs:687
Zone currentZone
Definition: Chara.cs:251
bool isBlind
Definition: Chara.cs:130
CameraSupport.Divider divider
Definition: CoreConfig.cs:567
ScreenSnapType snapType
Definition: CoreConfig.cs:569
void RefreshUIBrightness()
Definition: CoreConfig.cs:967
GraphicSetting graphic
Definition: CoreConfig.cs:598
CameraConfig camera
Definition: CoreConfig.cs:608
void ApplyZoom(float a)
Definition: CoreConfig.cs:930
Definition: Core.cs:14
static float gameDeltaNoPause
Definition: Core.cs:23
BaseGameScreen screen
Definition: Core.cs:67
bool IsGameStarted
Definition: Core.cs:84
static float delta
Definition: Core.cs:17
CoreConfig config
Definition: Core.cs:70
bool IsNight
Definition: Date.cs:112
Definition: EInput.cs:8
static ButtonState buttonScroll
Definition: EInput.cs:359
static Vector3 mposWorld
Definition: EInput.cs:339
Definition: EMono.cs:4
static GameSetting setting
Definition: EMono.cs:31
static Core core
Definition: EMono.cs:5
static Chara pc
Definition: EMono.cs:13
static World world
Definition: EMono.cs:37
static Player player
Definition: EMono.cs:11
static Zone _zone
Definition: EMono.cs:19
static BaseGameScreen screen
Definition: EMono.cs:29
static Game game
Definition: EMono.cs:7
static int rnd(int a)
Definition: EMono.cs:47
static Scene scene
Definition: EMono.cs:27
static bool AdvMode
Definition: EMono.cs:9
static Map _map
Definition: EMono.cs:17
void UpdateEffects()
static EffectManager Instance
bool IsActive
Definition: EloMapActor.cs:21
FOWType type
Definition: FowProfile.cs:5
Color color
Definition: FowProfile.cs:7
RenderSetting render
Definition: GameSetting.cs:301
bool tilt
Definition: Game.cs:18
int animeSpeed
Definition: Game.cs:84
int tiltPower
Definition: Game.cs:72
int backDrawAlpha
Definition: Game.cs:81
int tiltPowerRegion
Definition: Game.cs:75
bool tiltRegion
Definition: Game.cs:21
Zone activeZone
Definition: Game.cs:245
Config config
Definition: Game.cs:215
Definition: Int3.cs:2
int x
Definition: Int3.cs:6
int y
Definition: Int3.cs:18
int z
Definition: Int3.cs:30
static SourceMaterial.Row sourceWaterSea
Definition: MATERIAL.cs:41
int Size
Definition: MapBounds.cs:20
Point GetCenterPos()
Definition: MapBounds.cs:52
SerializableColor colorSea
Definition: MapConfig.cs:98
bool indoor
Definition: MapConfig.cs:29
SerializableColor colorScreen
Definition: MapConfig.cs:95
string idSceneTemplate
Definition: MapConfig.cs:23
float shadowStrength
Definition: MapConfig.cs:71
FogType fog
Definition: MapConfig.cs:77
bool IsIndoor
Definition: Map.cs:131
FowProfile fowProfile
Definition: Map.cs:101
MapConfig config
Definition: Map.cs:37
List< TransAnime > pointAnimes
Definition: Map.cs:83
MapBounds bounds
Definition: Map.cs:52
bool simulatingZone
Definition: Player.cs:995
Definition: Point.cs:9
ref Vector3 Position(int height)
Definition: Point.cs:536
Point Set(int _x, int _z)
Definition: Point.cs:491
ref Vector3 PositionCenter()
Definition: Point.cs:575
Cell cell
Definition: Point.cs:51
Definition: Room.cs:4
bool HasRoof
Definition: Room.cs:29
AnimationCurve lightPower
AnimationCurve bloomCurve
AnimationCurve bloomCurve2
AnimationCurve nightRatioCurve
AnimationCurve vignetteCurve
Material matOverlay
Definition: SceneProfile.cs:14
SceneGlobalProfile global
Definition: SceneProfile.cs:6
SceneColorProfile color
Definition: SceneProfile.cs:12
Material matGrading
Definition: SceneProfile.cs:16
SceneLightProfile light
Definition: SceneProfile.cs:10
Color colorScreen
Definition: SceneTemplate.cs:7
static SceneTemplate Load(string id)
Definition: SceneTemplate.cs:9
Definition: Scene.cs:8
ParticleSystem ether
Definition: Scene.cs:53
Material matFloorEx
Definition: Scene.cs:107
static bool skipAnime
Definition: Scene.cs:25
SoundSource sfxWind
Definition: Scene.cs:83
Transform transFocus
Definition: Scene.cs:27
ParticleSystem snow
Definition: Scene.cs:51
VFX fireflyNight
Definition: Scene.cs:45
VFX firefly
Definition: Scene.cs:43
float timeRatio
Definition: Scene.cs:130
ParticleSystem godrayDust
Definition: Scene.cs:57
CameraSupport camSupport
Definition: Scene.cs:41
SoundSource sfxFire
Definition: Scene.cs:89
EloMapActor elomapActor
Definition: Scene.cs:101
ParticleSystem blossom
Definition: Scene.cs:59
VFX star
Definition: Scene.cs:47
void ApplyZoneConfig()
Definition: Scene.cs:823
Vector3 posAudioListener
Definition: Scene.cs:33
ParticleSystem godray
Definition: Scene.cs:55
ActionMode actionMode
Definition: Scene.cs:79
Camera cam
Definition: Scene.cs:37
SoundSource sfxUnderwater
Definition: Scene.cs:85
SceneProfile profile
Definition: Scene.cs:75
SoundSource sfxSea
Definition: Scene.cs:87
void OnChangeHour()
Definition: Scene.cs:776
ParticleSystem[] blizzards
Definition: Scene.cs:67
FlockController flock
Definition: Scene.cs:69
ParticleSystem rain
Definition: Scene.cs:49
SoundSource sfxRain
Definition: Scene.cs:81
ParticleSystem[] blossoms
Definition: Scene.cs:65
static Color currentColor
Definition: ScreenFlash.cs:8
int lv
Definition: Spatial.cs:142
virtual bool IsRegion
Definition: Spatial.cs:501
virtual bool IsSnowCovered
Definition: Spatial.cs:531
virtual float VolumeSea
Definition: Spatial.cs:478
virtual void Refresh()
Definition: TCOrbit.cs:3
bool IsEther
Definition: Weather.cs:156
bool IsBlossom
Definition: Weather.cs:141
Condition
Definition: Weather.cs:16
Condition CurrentCondition
Definition: Weather.cs:79
bool IsRaining
Definition: Weather.cs:117
static void RefreshHighlights()
static WidgetMinimap Instance
GameDate date
Definition: World.cs:6
Weather weather
Definition: World.cs:12
Definition: Zone.cs:12
BiomeProfile biome
Definition: Zone.cs:126
virtual string IDSceneTemplate
Definition: Zone.cs:191
virtual bool IsUnderwater
Definition: Zone.cs:264