Elin Decompiled Documentation EA 23.290 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 + EMono.core.config.test.screenExtraWidth;
553 height = (int)((float)Screen.height / (tileSize.y / 2f) / Zoom) + (int)paddings.y + 4 + EMono.core.config.test.screenExtraHeight;
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 flag3 = !flag && weather.IsBlossom;
620 ParticleSystem[] blossoms = EMono.scene.blossoms;
621 foreach (ParticleSystem particleSystem in blossoms)
622 {
623 particleSystem.enableEmission = flag3;
624 if (flag3)
625 {
626 ParticleSystem.MainModule main = particleSystem.main;
627 ParticleSystem.MinMaxGradient startColor = main.startColor;
628 if (EMono._zone is Zone_Mifu)
629 {
630 startColor.mode = ParticleSystemGradientMode.RandomColor;
631 startColor.gradient = EMono.Colors.particleColors.blossomGradient;
632 }
633 else
634 {
635 startColor.mode = ParticleSystemGradientMode.TwoColors;
636 startColor.colorMin = EMono.Colors.particleColors.blossomMin;
637 startColor.colorMax = EMono.Colors.particleColors.blossomMax;
638 }
639 main.startColor = startColor;
640 }
641 }
642 flag3 = !flag && currentCondition == Weather.Condition.SnowHeavy && EMono.core.config.graphic.blizzard;
643 blossoms = EMono.scene.blizzards;
644 for (int i = 0; i < blossoms.Length; i++)
645 {
646 blossoms[i].enableEmission = flag3;
647 }
648 EMono.scene.transBlizzard.localScale = new Vector3(1f, 1f, 1f);
649 bool flag4 = (EMono._zone.IsUnderwater || EMono._map.config.forceGodRay || (EMono.core.config.graphic.godray && !flag && (currentCondition == Weather.Condition.Fine || currentCondition == Weather.Condition.Snow))) && !BuildMenu.Instance;
650 EMono.scene.godray.SetActive(flag4, delegate(bool enabled)
651 {
652 if (!enabled)
653 {
654 EMono.scene.godray.Clear();
655 }
656 });
657 EMono.scene.godrayDust.SetActive(flag4 && EMono.world.date.IsNight);
658 EMono.scene.snow.SetActive(enable: true);
659 EMono.scene.rain.SetActive(enable: true);
660 EMono.scene.ether.SetActive(enable: true);
661 EMono.scene.blossom.SetActive(enable: true);
662 Zone zone = EMono._zone;
663 if (EMono._zone is Zone_Tent)
664 {
665 zone = (EMono._zone.parent as Zone) ?? EMono._zone;
666 }
667 float num = ((zone.lv <= -2 || zone.IsUnderwater) ? 0f : ((zone.lv <= -1) ? 0.3f : ((flag && !flag2) ? 0.6f : 1f)));
668 EMono.scene.sfxRain.SetVolume(weather.IsRaining ? num : 0f);
669 EMono.scene.sfxSea.SetVolume(EMono._zone.VolumeSea * num);
670 EMono.scene.camSupport.grading.profile.fog = EMono.setting.render.fogs[EMono._map.config.fog];
671 EMono.scene.camSupport.grading.userFog = ((!EMono._map.config.indoor && flag) ? 0f : 1f);
672 float num2 = ((EMono._map.IsIndoor || !EMono.world.weather.IsRaining) ? 0f : ((currentCondition == Weather.Condition.RainHeavy) ? (-0.08f) : (-0.04f)));
674 {
675 num2 += EMono.scene.profile.global.snowBrightness;
676 }
677 camSupport.grading.sceneBrightness = num2;
678 ParticleSystem.MainModule main2 = EMono.scene.rain.main;
679 ParticleSystem.MainModule main3 = EMono.scene.snow.main;
680 ParticleSystem.MainModule main4 = EMono.scene.ether.main;
681 bool flag6 = (main4.prewarm = false);
682 bool prewarm = (main3.prewarm = flag6);
683 main2.prewarm = prewarm;
684 blossoms = EMono.scene.blossoms;
685 for (int i = 0; i < blossoms.Length; i++)
686 {
687 ParticleSystem.MainModule main5 = blossoms[i].main;
688 main5.prewarm = false;
689 }
690 camSupport.grading.SetGrading();
691 }
692
693 public void RefreshGrading()
694 {
695 float timeRatio = (EMono.core.IsGameStarted ? EMono.scene.timeRatio : 0f);
696 if ((bool)camSupport.grading.profile.overlay)
697 {
698 camSupport.grading.profile.overlay.Refresh(timeRatio, EMono._zone.IsSnowCovered);
699 }
700 ScreenGrading.blind = EMono.pc.isBlind;
701 camSupport.grading.profile.sharpen.enable = EMono.core.config.graphic.sharpen > 0;
702 camSupport.grading.profile.sharpen.Strength = Mathf.Clamp(0.1f * (float)EMono.core.config.graphic.sharpen, 0f, (this is GameScreen) ? 10f : 1f);
703 camSupport.beautify.sharpen = Mathf.Clamp(0.01f * (float)EMono.core.config.graphic.sharpen2, 0f, (this is GameScreen) ? 10f : 0.5f);
704 camSupport.grading.SetGrading();
706 Color tintColor = EMono._map.config.colorScreen.Get();
707 if (tintColor.a == 0f)
708 {
709 tintColor = sceneTemplate.colorScreen;
710 }
711 camSupport.beautify.tintColor = tintColor;
712 tintColor = EMono._map.config.colorSea.Get();
713 MATERIAL.sourceWaterSea.matColor = ((tintColor.a == 0f) ? MATERIAL.sourceWaterSea.GetColor() : tintColor);
715 float num = 0f;
716 if (!EMono._map.IsIndoor)
717 {
718 num += 0.01f * EMono.core.config.test.brightnessNight * EMono.scene.profile.light.nightRatioCurve.Evaluate(EMono.scene.timeRatio);
719 }
720 camSupport.grading.nightBrightness = num;
721 }
722
723 public void RefreshTilt()
724 {
725 camSupport.tiltShift.enabled = ((ActionMode.Bird.IsActive || EMono._zone.IsRegion) ? EMono.game.config.tiltRegion : EMono.game.config.tilt);
726 camSupport.tiltShift.blurArea = (ActionMode.Bird.IsActive ? 12f : (0.1f * (float)(EMono._zone.IsRegion ? EMono.game.config.tiltPowerRegion : EMono.game.config.tiltPower)));
727 }
728
729 public void ScrollMouse(float x, float y)
730 {
731 position.x += x / Zoom;
732 position.y += y / Zoom;
733 if (x > 0.1f || x < -0.1f || y > 0.1f || y < 0.1f)
734 {
736 }
737 }
738
739 public void ScrollAxis(Vector3 axis, bool direct = false)
740 {
741 if (direct)
742 {
743 position += axis;
744 }
745 else
746 {
747 position += axis * Core.delta * camSpeed2 * EMono.core.config.camera.senseKeyboard / Zoom;
748 }
749 }
750
751 public void Focus(Int3 ints)
752 {
753 position = new Vector3(ints.x, ints.y, ints.z);
754 }
755
756 public void Focus(int x, int y)
757 {
758 if (EMono.AdvMode)
759 {
760 SE.Beep();
761 return;
762 }
763 position.x = (scrollX = x);
764 position.y = (scrollY = y);
765 }
766
767 public void Focus(Card c)
768 {
769 if (c != null)
770 {
771 Focus(c.GetRootCard().pos);
772 }
773 }
774
775 public void FocusCenter()
776 {
777 Point pos = new Point(EMono._map.Size / 2, EMono._map.Size / 2);
778 Focus(pos);
779 }
780
781 public void Focus(Point pos)
782 {
783 position = pos.PositionCenter();
784 }
785
786 public void FocusPC()
787 {
788 focusPos = null;
790 instantFocus = true;
792 }
793
794 public void FocusImmediate(Point pos)
795 {
796 focusPos = null;
797 Focus(pos);
798 instantFocus = true;
801 }
802
803 public void SnapScreen(ref Vector3 v, float zoom)
804 {
805 float num = snapSize.x / zoom;
806 float num2 = snapSize.y / zoom;
807 switch (EMono.core.config.fix.snapType)
808 {
809 case CoreConfig.ScreenSnapType.Default:
810 v.x = num * (float)Mathf.RoundToInt(v.x / num);
811 v.y = num2 * (float)Mathf.RoundToInt(v.y / num2);
812 break;
813 case CoreConfig.ScreenSnapType.Floor:
814 v.x = num * (float)Mathf.FloorToInt(v.x / num);
815 v.y = num2 * (float)Mathf.FloorToInt(v.y / num2);
816 break;
817 case CoreConfig.ScreenSnapType.Ceil:
818 v.x = num * (float)Mathf.CeilToInt(v.x / num);
819 v.y = num2 * (float)Mathf.CeilToInt(v.y / num2);
820 break;
821 case CoreConfig.ScreenSnapType.Hack3:
822 num = snapSize.x;
823 num2 = snapSize.y;
824 v.x = num * (float)Mathf.RoundToInt(v.x / num);
825 v.y = num2 * (float)Mathf.RoundToInt(v.y / num2);
826 break;
827 case CoreConfig.ScreenSnapType.Hack4:
828 num = snapSize.x;
829 num2 = snapSize.y;
830 v.x = num * (float)Mathf.FloorToInt(v.x / num);
831 v.y = num2 * (float)Mathf.FloorToInt(v.y / num2);
832 break;
833 case CoreConfig.ScreenSnapType.Hack5:
834 num = snapSize.x;
835 num2 = snapSize.y;
836 v.x = num * (float)Mathf.CeilToInt(v.x / num);
837 v.y = num2 * (float)Mathf.CeilToInt(v.y / num2);
838 break;
839 case CoreConfig.ScreenSnapType.Hack6:
840 v.x = 0.01f * (float)Mathf.FloorToInt(v.x * 100f) + 0.001f;
841 v.y = 0.01f * (float)Mathf.FloorToInt(v.y * 100f) + 0.001f;
842 break;
843 case CoreConfig.ScreenSnapType.Hack7:
844 v.x = 0.01f * (float)Mathf.FloorToInt(v.x * 100f) - 0.001f;
845 v.y = 0.01f * (float)Mathf.FloorToInt(v.y * 100f) - 0.001f;
846 break;
847 case CoreConfig.ScreenSnapType.Hack8:
848 v.x = 0.01f * (float)Mathf.RoundToInt(v.x * 100f) + 0.005f;
849 v.y = 0.01f * (float)Mathf.RoundToInt(v.y * 100f) + 0.005f;
850 break;
851 case CoreConfig.ScreenSnapType.Hack9:
852 v.x = 0.01f * (float)Mathf.RoundToInt(v.x * 100f) + 0.025f;
853 v.y = 0.01f * (float)Mathf.RoundToInt(v.y * 100f) + 0.025f;
854 break;
855 }
856 }
857
858 public void SetZoom(float z)
859 {
860 targetZoom = (Zoom = z);
862 zoomTimer = 0f;
863 }
864
865 public void SetTargetZoomIndex(int index)
866 {
867 targetZoomIndex = index;
868 float num = targetZoom;
870 if (num != targetZoom)
871 {
872 zoomTimer = 0f;
873 }
874 }
875
876 public void ModTargetZoomIndex(int a)
877 {
879 {
880 int num = targetZoomIndex;
881 targetZoomIndex -= a;
882 int num2 = ((!EMono.core.config.camera.extendZoomMin) ? 1 : 0);
883 int num3 = (EMono.core.config.camera.extendZoomMax ? 4 : 3);
884 if (targetZoomIndex < num2)
885 {
886 targetZoomIndex = num2;
887 }
888 else if (targetZoomIndex >= num3)
889 {
890 targetZoomIndex = num3;
891 }
893 {
895 }
897 }
898 }
899}
FOWType
Definition: FOWType.cs:2
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
Definition: UIBook.cs:627
override float TargetZoom
Definition: AM_Adv.cs:242
float rightMouseTimer
Definition: AM_Adv.cs:165
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:543
void OnActivate(BaseGameScreen _screen)
Definition: BaseTileMap.cs:520
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:60
Card GetRootCard()
Definition: Card.cs:3508
CardRenderer renderer
Definition: Card.cs:62
Room room
Definition: Cell.cs:102
override bool isSynced
Definition: Chara.cs:705
Zone currentZone
Definition: Chara.cs:257
bool isBlind
Definition: Chara.cs:132
ParticleColors particleColors
CameraSupport.Divider divider
Definition: CoreConfig.cs:578
ScreenSnapType snapType
Definition: CoreConfig.cs:580
void RefreshUIBrightness()
Definition: CoreConfig.cs:980
GraphicSetting graphic
Definition: CoreConfig.cs:607
CameraConfig camera
Definition: CoreConfig.cs:617
void ApplyZoom(float a)
Definition: CoreConfig.cs:943
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:370
static Vector3 mposWorld
Definition: EInput.cs:350
Definition: EMono.cs:4
static GameSetting setting
Definition: EMono.cs:31
static ColorProfile Colors
Definition: EMono.cs:35
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:19
int animeSpeed
Definition: Game.cs:85
int tiltPower
Definition: Game.cs:73
int backDrawAlpha
Definition: Game.cs:82
int tiltPowerRegion
Definition: Game.cs:76
bool tiltRegion
Definition: Game.cs:22
Zone activeZone
Definition: Game.cs:252
Config config
Definition: Game.cs:219
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:49
int Size
Definition: MapBounds.cs:20
Point GetCenterPos()
Definition: MapBounds.cs:52
SerializableColor colorSea
Definition: MapConfig.cs:101
bool indoor
Definition: MapConfig.cs:29
SerializableColor colorScreen
Definition: MapConfig.cs:98
string idSceneTemplate
Definition: MapConfig.cs:23
float shadowStrength
Definition: MapConfig.cs:74
FogType fog
Definition: MapConfig.cs:80
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:1237
Definition: Point.cs:9
ref Vector3 Position(int height)
Definition: Point.cs:548
Point Set(int _x, int _z)
Definition: Point.cs:503
ref Vector3 PositionCenter()
Definition: Point.cs:587
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:826
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:779
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:515
virtual bool IsSnowCovered
Definition: Spatial.cs:545
virtual float VolumeSea
Definition: Spatial.cs:492
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:129
virtual string IDSceneTemplate
Definition: Zone.cs:196
virtual bool IsUnderwater
Definition: Zone.cs:271