summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s
diff options
context:
space:
mode:
Diffstat (limited to 'TemplePushing.c4s')
-rw-r--r--TemplePushing.c4s/System.c4g/Lenseflare.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/TemplePushing.c4s/System.c4g/Lenseflare.c b/TemplePushing.c4s/System.c4g/Lenseflare.c
new file mode 100644
index 0000000..6de037a
--- /dev/null
+++ b/TemplePushing.c4s/System.c4g/Lenseflare.c
@@ -0,0 +1,65 @@
+/* Lenseflare */
+
+#strict
+
+#appendto LENS
+
+protected func TuWasBraves()
+{
+ // Hat es seinen Besitzer verloren? :(
+ if((!GetPlayerName(GetOwner())) || GetOwner()==-1)
+ {
+ for(var i=0; i<MIJON(); ++i)
+ RemoveObject(Local(i));
+ RemoveObject(this());
+ return();
+ }
+ // Sonnenposition anpassen
+ BerechneSonne();
+ SetPosition(SonneX,SonneY);
+ // unskalierten Vektor ermitteln
+ var VektorX=GibVektorX(GetOwner());
+ var VektorY=GibVektorY(GetOwner());
+ var VektorDist=GibVektorDist(GetOwner());
+ // Die Modulation ist für alle Flares gleich
+ var FarbModulation = RGBa(GibFarbMod(),GibFarbMod(),GibFarbMod(),GibAlphaMod(VektorDist));
+ // Genauso auch die Abstandsangabe
+ var Abstaende = 1000-BoundBy((3000-VektorDist*10)/3,0,1000); // Promilleangabe 0 = nahe, 1000 = weit weg; 300 Pixel sind dabei "weit weg"
+ var AbstaendeAbsolut = (50*Abstaende)/10; // Wieviele 1/100 Pixel zwischen den einzelnen Lenseflares sind
+ // Ist unsere liebe Sonne überhaupt sichtbar (also Tag + unverdeckt)
+ var SonneSichtbar = IsDay() && (!GBackSemiSolid(0,0));
+ // Tagsüber die Sonne einblenden
+ if(IsDay())
+ {
+ SetVisibility (VIS_Owner());
+ }
+ else
+ {
+ SetVisibility (VIS_None());
+ }
+ // Alle Lenseflares durchgehen
+ for(var i=0; i<MIJON(); ++i)
+ {
+ if(SonneSichtbar)
+ {
+ // Tags sichtbar
+ SetVisibility (VIS_Owner(), Local(i));
+ SetClrModulation(FarbModulation,Local(i));
+ var LensDist = (i*AbstaendeAbsolut)/100;
+ SetPosition(GibLensPosX(LensDist,VektorX,VektorDist), GibLensPosY(LensDist,VektorY,VektorDist),Local(i));
+ }
+ else
+ // Nachts unsichtbar ODER bei verdeckter Sonne
+ SetVisibility (VIS_None(), Local(i));
+ }
+ return; // Gamma-Aenderung deaktiviert fuer Tempelschubsen
+ // Sofern der Spieler alleine ist
+ if(GetPlayerCount()==1)
+ if(IsDay())
+ {
+ var Gelbstich = BoundBy((500-VektorDist)/5,0,100); // Prozentangabe 0 = weit weg, 100 = nahe; 500 Pixel sind dabei "weit weg"
+ SetGamma (RGB(000+(30*Gelbstich)/100,000+(30*Gelbstich)/100,000),
+ RGB(128+(60*Gelbstich)/100,128+(60*Gelbstich)/100,128),
+ RGB(255,255,255), GammaRampe_Lenseflare());
+ }
+} \ No newline at end of file