Changeset 1139 for 2010/27


Ignore:
Timestamp:
2010-07-07 14:39:10 (9 years ago)
Author:
sijoseha
Message:

Working somehow.
Playable. You can lose, but you can't win.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/27/sijoseha/BuildingBuilder/Peli.cs

    r1118 r1139  
    11using System; 
     2using System.Collections.Generic; 
    23using Jypeli; 
    34using Jypeli.Widgets; 
     
    67public class Peli : PhysicsGame 
    78{ 
    8     //PhysicsObject block; 
    9     PhysicsObject ground; 
    10     PhysicsObject newestBlock; 
    11  
    12     PhysicsObject dropArrow; 
     9    PhysicsObject newestBlock, hittedBlock, dropArrow, ground; 
     10    //Queue<PhysicsObject> tower; 
     11    Stack<PhysicsObject> tower; 
     12    enum DropArrowDirection 
     13    { 
     14        Left, 
     15        Right 
     16    } 
     17    DropArrowDirection dAD; 
    1318    Image dropArrowImage; 
    14     Boolean drop; 
     19    Boolean drop, cameraMoving; 
    1520    WandererBrain dropArrowBrain; 
     21    double startZoom; 
    1622 
    1723    protected override void Begin() 
     
    3036    void CreateLevel() 
    3137    { 
    32         ground = Level.CreateGround(Level.Bottom, 20, 10, Color.Green, 10); 
    33         Camera.ZoomToLevel(); 
     38        tower = new Stack<PhysicsObject>(); 
     39        Level.Width = 3000; 
     40        ground = Level.CreateGround(Level.Bottom, 40, 20, Color.Green, 20); 
     41        //tower.Push(ground); 
    3442        Gravity = new Vector(0, -400); 
    3543        drop = true; 
    36  
     44        cameraMoving = false; 
     45        startZoom = Camera.Y - ground.Y; 
     46        Camera.Zoom(0.8); 
    3747        CreateDropArrow(); 
    3848    } 
     
    4252        dropArrow = new PhysicsObject(48, 48); 
    4353        dropArrow.Image = dropArrowImage; 
    44         dropArrow.Position = new Vector(Camera.X, Camera.Y + 350); 
     54        dropArrow.IgnoresGravity = true; 
     55        dropArrow.Position = new Vector(Camera.X, Camera.Y + 380); 
    4556        Add(dropArrow); 
    4657 
     
    5263        dropArrow.Y = Camera.Y + 350; 
    5364        dropArrowBrain = new WandererBrain(); 
    54         Vector point1 = new Vector(Camera.X - 150, Camera.Y + 350); 
    55         Vector point2 = new Vector(Camera.X + 150, Camera.Y + 350); 
     65        Vector point1 = new Vector(Camera.X - 150, Camera.Y + 380); 
     66        Vector point2 = new Vector(Camera.X + 150, Camera.Y + 380); 
    5667        dropArrowBrain.Add(point1, point2); 
    5768        dropArrowBrain.Active = true; 
    5869        dropArrowBrain.MovingSpeed = 100; 
    59         dropArrow.Brain = dropArrowBrain; 
     70        //dropArrow.Brain = dropArrowBrain; 
    6071    } 
    6172 
     
    6879            block.Position = new Vector(dropArrow.X, Camera.Y + 200); 
    6980            block.KineticFriction = 1.0; 
     81            block.Color = Color.Red; 
    7082            block.AngularVelocity = 0; 
     83            block.AngularDamping = 0.3; 
    7184            //block.CanRotate = false; 
    7285            block.LinearDamping = 1.0; 
     
    87100        if (collider.Y > Camera.Y) 
    88101        { 
    89             Camera.Y += 100; 
    90             UpdateDropArrowBrain(); 
     102            //cameraMoving = true; 
     103            //UpdateDropArrowBrain(); 
     104        } 
     105        if (collider == newestBlock && target == ground && tower.Count == 0) 
     106        { 
     107            tower.Push(collider); 
     108            tower.Peek().Tag = "base"; 
     109        } 
     110        if (collider.Tag.ToString() == "block" && target == ground) 
     111        { 
     112            MessageBox loppu = new MessageBox("HÄVISIT PELIN!", "HÄVISIT"); 
     113            Add(loppu); 
     114        } 
     115        if (collider == newestBlock && target == tower.Peek()) 
     116        { 
     117            tower.Peek().Color = Color.White; 
     118            tower.Push(collider); 
     119            //hittedBlock = collider; 
     120            //hittedBlock.Color = Color.Green; 
     121            tower.Peek().Color = Color.Green; 
     122            cameraMoving = true; 
    91123        } 
    92124    } 
     125 
     126    protected override void Update(Time time) 
     127    { 
     128        if (tower.Count > 0 && tower.Peek().Y < Camera.Y - 400 && tower.Peek().Tag.ToString() == "block" && Camera.ZoomFactor > (startZoom/(Camera.Y-ground.Y)-0.05)) 
     129        { 
     130            Camera.Zoom(0.9); 
     131        } 
     132        dropArrow.Y = Camera.Y + 350; 
     133        if (cameraMoving) 
     134        { 
     135            Camera.Y += 2; 
     136            if (tower.Peek().Y < Camera.Y) 
     137            { 
     138                cameraMoving = false; 
     139            } 
     140        } 
     141        if (tower.Count > 0 && Camera.Y < tower.Peek().Y) 
     142        { 
     143            cameraMoving = true; 
     144        } 
     145 
     146        if (dAD == DropArrowDirection.Left) 
     147        { 
     148            dropArrow.X -= 5; 
     149            if (dropArrow.X <= -150) 
     150                dAD = DropArrowDirection.Right; 
     151        } 
     152        else if (dAD == DropArrowDirection.Right) 
     153        { 
     154            dropArrow.X += 5; 
     155            if (dropArrow.X >= 150) 
     156                dAD = DropArrowDirection.Left; 
     157        } 
     158        base.Update(time); 
     159    } 
    93160} 
Note: See TracChangeset for help on using the changeset viewer.