Ignore:
Timestamp:
2015-07-01 15:01:31 (4 years ago)
Author:
pimaeeru
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2015/27/PietuR/SoHaG/SoHaG/SoHaG/SoHaG.cs

    r6604 r6691  
    99public class SoHaG : PhysicsGame 
    1010{ 
     11    //Korjaa sirut 
     12    //TODO Lisää avain 
     13    //TODO Lisää valikko 
     14    //TODO Lisää kenttiä 
     15 
    1116    int Kenttia = 3; 
     17 
    1218 
    1319    Image SeinanKuva = LoadImage("Seina1"); 
     
    2127    Image LattianKuva = LoadImage("Lattia"); 
    2228    Image LaatanKuva = LoadImage("Lattialaatta"); 
     29    Image Vihun1Kuva = LoadImage("Greed"); 
     30    Image Vihun2Kuva = LoadImage("Hope"); 
     31    Image Sirunkuva = LoadImage("Shard"); 
     32    Image TaskuvalonKuva = LoadImage("Taskulampunvalo"); 
     33    SoundEffect Reversed = LoadSoundEffect("Reversed"); 
     34    SoundEffect Sinister = LoadSoundEffect("Sinister"); 
     35    SoundEffect Button = LoadSoundEffect("Button"); 
     36    SoundEffect GhostKid = LoadSoundEffect("Ghost Kid"); 
     37    SoundEffect Scream = LoadSoundEffect("Scream"); 
     38     
    2339 
    2440    PhysicsObject Tyyppi1; 
     
    2945    List<Vector> Spawnit = new List<Vector>(); 
    3046    List<Vector> VihuSpawnit = new List<Vector>(); 
     47    List<Vector> SiruSpawnit = new List<Vector>(); 
     48 
     49    List<SoundEffect> soitettu = new List<SoundEffect>(); 
    3150 
    3251    public override void Begin() 
     
    3958        Tyyppi4 = Luotyyppi(Tyypin4Kuva); 
    4059 
    41         LuoVihu(); 
    42         LuoVihu(); 
    43         LuoVihu(); 
    44  
    45         Timer näkyvyysAjastin = new Timer(); 
    46         näkyvyysAjastin.Interval = 0.05; 
    47         näkyvyysAjastin.Timeout += delegate 
    48         { 
    49             Tarkistanakyvyys(Tyyppi1); 
    50             Tarkistanakyvyys(Tyyppi2); 
    51             Tarkistanakyvyys(Tyyppi3); 
    52             Tarkistanakyvyys(Tyyppi4); 
    53         }; 
    54         näkyvyysAjastin.Start(); 
     60        Camera.Follow(Tyyppi1, Tyyppi2, Tyyppi3, Tyyppi4); 
     61 
     62        LuoShadow(); 
     63        LuoShadow(); 
     64        LuoShadow(); 
     65        LuoHope(); 
     66 
     67        MediaPlayer.Play(RandomGen.SelectOne("Day of Chaos", "Echoes of Time", "Evening of Chaos", "Night of Chaos", "Penumbra")); 
     68        GhostKid.Play(); 
     69 
     70 
     71        //Timer näkyvyysAjastin = new Timer(); 
     72        //näkyvyysAjastin.Interval = 0.05; 
     73        //näkyvyysAjastin.Timeout += delegate 
     74        //{ 
     75        //    Tarkistanakyvyys(Tyyppi1); 
     76        //    Tarkistanakyvyys(Tyyppi2); 
     77        //    Tarkistanakyvyys(Tyyppi3); 
     78        //    Tarkistanakyvyys(Tyyppi4); 
     79        //}; 
     80        //näkyvyysAjastin.Start(); 
    5581 
    5682        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, "Liikuttaa pelaajaa1", Tyyppi1, Direction.Up); 
     
    80106    { 
    81107        Tyyppi.Push(Suunta.GetVector()*3000); 
    82         Tyyppi.Angle = Tyyppi.Velocity.Angle+Angle.FromDegrees(90); 
     108        Tyyppi.Angle = Tyyppi.Velocity.Angle; 
    83109    } 
    84110 
     
    93119        Ruudut.SetTileMethod(Color.FromHexCode("7F0000"), LuoSeina2); 
    94120        Ruudut.SetTileMethod(Color.FromHexCode("FF6A00"), LuoNappula); 
     121        Ruudut.SetTileMethod(Color.FromHexCode("00FFFF"), LuoSirunpaikka); 
    95122        Ruudut.SetTileMethod(Color.Red, LuoVihunpaikka); 
    96123        Ruudut.Execute(20, 20); 
     
    103130        Pimeys.Color = new Color(0, 0, 0, 210); 
    104131        Add(Pimeys, 2); 
     132 
    105133    } 
    106134 
     
    110138        Seina.Position = Paikka; 
    111139        Seina.Image = SeinanKuva; 
     140        Seina.CollisionIgnoreGroup = 1; 
    112141        Add(Seina); 
    113142    } 
     
    117146        Seina2.Position = Paikka; 
    118147        Seina2.Image = Seinan2Kuva; 
     148        Seina2.CollisionIgnoreGroup = 1; 
    119149        Add(Seina2); 
    120150    } 
    121     void LuoVihu() 
    122     { 
    123         PhysicsObject Vihu = new PhysicsObject(319 * 0.1, 218 * 0.1); 
     151    void LuoSiru() 
     152    { 
     153        PhysicsObject Siru = new PhysicsObject(20, 20); 
     154        Siru.Image = Sirunkuva; 
     155        Siru.Shape = Shape.Circle; 
     156        Add(Siru); 
     157 
     158        AddCollisionHandler(Siru, "Tyyppi", delegate(PhysicsObject N, PhysicsObject T) 
     159        { 
     160            Siru.Destroy(); 
     161        }); 
     162 
     163    } 
     164 
     165    void LuoVihu(Image kuva, double speed, bool liikkuuPimeassa, SoundEffect aani) 
     166    { 
     167        PhysicsObject Vihu = new PhysicsObject(218 * 0.21, 319 * 0.1); 
    124168        Vihu.LinearDamping = 0.5; 
    125169        Vihu.AngularDamping = 0.7; 
    126         Vihu.Image = Tyypin4Kuva; 
     170        Vihu.Image = kuva; 
    127171        Vihu.Shape = Shape.Circle; 
    128172        Vector Paikka = RandomGen.SelectOne<Vector>(VihuSpawnit); 
     
    130174        Vihu.Position = Paikka; 
    131175        Vihu.Tag = "Vihu"; 
     176        Vihu.CollisionIgnoreGroup = 1; 
     177 
     178        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(speed); 
     179        satunnaisAivot.TurnWhileMoving = true; 
     180 
     181        FollowerBrain seuraajanAivot = new FollowerBrain(Tyyppi1, Tyyppi2, Tyyppi3, Tyyppi4); 
     182        seuraajanAivot.Speed = speed; 
     183        seuraajanAivot.TurnWhileMoving = true; 
     184        seuraajanAivot.DistanceFar = 600; 
     185        seuraajanAivot.FarBrain = satunnaisAivot; 
     186 
     187        Vihu.Brain = seuraajanAivot; 
     188 
     189        Timer päivitysAjastin = new Timer(); 
     190        päivitysAjastin.Interval = 0.05; 
     191        päivitysAjastin.Timeout += delegate 
     192        { 
     193            Tarkistanakyvyys(Vihu); 
     194 
     195            if (liikkuuPimeassa) 
     196            { 
     197                if (Vihu.IsVisible) 
     198                { 
     199                    Vihu.Brain = null; 
     200                    SoitaAani(aani); 
     201                } 
     202                else 
     203                { 
     204                    Vihu.Brain = seuraajanAivot; 
     205                } 
     206            } 
     207            else 
     208            { 
     209                if (Vihu.IsVisible) 
     210                { 
     211                    Vihu.Brain = seuraajanAivot; 
     212                    SoitaAani(aani); 
     213                } 
     214                else 
     215                { 
     216                    Vihu.Brain = null; 
     217                } 
     218            } 
     219        }; 
     220        päivitysAjastin.Start(); 
     221 
    132222        Add(Vihu); 
     223    } 
     224 
     225    void SoitaAani(SoundEffect aani) 
     226    { 
     227        if (!soitettu.Contains(aani)) 
     228        { 
     229            soitettu.Add(aani); 
     230            aani.Play(); 
     231            Timer.SingleShot(4, delegate { soitettu.Remove(aani); }); 
     232        } 
     233    } 
     234 
     235    void LuoShadow() 
     236    { 
     237        LuoVihu(Vihun1Kuva, 100, true, Sinister); 
     238    } 
     239    void LuoHope() 
     240    { 
     241        LuoVihu(Vihun2Kuva, 500, false, Reversed); 
    133242    } 
    134243    void LuoNappula(Vector Paikka, double leveys, double korkeus) 
     
    137246        Nappula.Position = Paikka; 
    138247        Nappula.Image = NappulanKuva; 
     248        Nappula.CollisionIgnoreGroup = 1; 
    139249        Add(Nappula); 
    140250 
    141         DoubleMeter Energia = new DoubleMeter(100, 0, 100); 
     251        DoubleMeter Energia = new DoubleMeter(1, 0, 100); 
    142252        ProgressBar Energiapalkki = new ProgressBar(20, 5); 
    143253        Energiapalkki.Y = 20; 
     
    162272        { 
    163273            Energia.Value = Energia.MaxValue; 
     274            Button.Play(); 
    164275            Valo.IsVisible = true; 
    165276        }); 
     277 
     278 
    166279    } 
    167280    PhysicsObject Luotyyppi(Image Kuva) 
    168281    { 
    169         PhysicsObject Tyyppi = new PhysicsObject(319 * 0.1, 218 * 0.1); 
     282        PhysicsObject Tyyppi = new PhysicsObject(218 * 0.1, 319 * 0.1); 
    170283        Tyyppi.LinearDamping = 0.5; 
    171284        Tyyppi.AngularDamping = 0.7; 
     
    176289        Tyyppi.Position = Paikka; 
    177290        Tyyppi.Tag = "Tyyppi"; 
    178         Add(Tyyppi); 
     291        Add(Tyyppi, 3); 
     292 
     293        GameObject Valo = new GameObject(300, 300); 
     294        //Valo.Position = Paikka; 
     295        Valo.Tag = "valo"; 
     296        Valo.Image = TaskuvalonKuva; 
     297        Valo.X = 25; 
     298        Valo.Y = 5; 
     299        Tyyppi.Add(Valo); 
     300 
     301        AddCollisionHandler(Tyyppi, "Vihu", delegate(PhysicsObject N, PhysicsObject T) 
     302        { 
     303            Tyyppi.Destroy(); 
     304            Scream.Play(); 
     305        }); 
    179306 
    180307        return Tyyppi; 
     
    184311        Spawnit.Add(Paikka); 
    185312    } 
     313 
     314    void LuoSirunpaikka(Vector Paikka, double leveys, double korkeus) 
     315    { 
     316        SiruSpawnit.Add(Paikka); 
     317    } 
     318 
    186319    void LuoVihunpaikka(Vector Paikka, double leveys, double korkeus) 
    187320    { 
    188321        VihuSpawnit.Add(Paikka); 
     322        VihuSpawnit.Add(Paikka); 
    189323    } 
    190324 
     
    192326    { 
    193327        bool piilossa = true; 
     328 
     329        // Kentässä olevat valot. 
    194330        foreach (var valo in GetObjectsWithTag("valo")) 
    195331        { 
     
    201337        } 
    202338 
     339        PhysicsObject[] pelaajat = { Tyyppi1, Tyyppi2, Tyyppi3, Tyyppi4 }; 
     340        double lampunPituus = 300 * 0.5; 
     341        double lampunKulma = 45; 
     342 
     343        // Pelaajan taskulamppu. 
     344        foreach (var pelaaja in pelaajat) 
     345        { 
     346            if (pelaaja.IsDestroyed) 
     347                continue; 
     348 
     349            Angle kulma = (Olio.Position - pelaaja.Position).Angle; 
     350            if (Math.Abs(kulma.Degrees - pelaaja.Angle.Degrees) < lampunKulma && Vector.Distance(pelaaja.Position, Olio.Position) < lampunPituus) 
     351            { 
     352                piilossa = false; 
     353            } 
     354        } 
     355 
    203356        Olio.IsVisible = !piilossa; 
    204357    } 
Note: See TracChangeset for help on using the changeset viewer.