Changeset 140

Show
Ignore:
Timestamp:
04/24/2012 12:25:28 PM (2 years ago)
Author:
zpurdy
Message:

Lots of improvements and 3 new levels for Energy Transfer MiniGame?.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Code/oMaE/oMaE/MiniGames/EnergyTransfer.cs

    r126 r140  
    1515namespace oMaE.MiniGames 
    1616{ 
    17     public enum EnergyTypes { None, Heat, Kinetic, Chemical, Electric, Wind } 
     17    public enum EnergyTypes { None, Heat, Kinetic, Chemical, Electric, Wind, Fire } 
     18     
    1819 
    1920    public class EnergyTransfer : MiniGame 
    2021    { 
     22        public List<Slot> toBeChecked = new List<Slot>(); 
    2123        public List<ConnectableSlot> connectableSlots = new List<ConnectableSlot>(); 
    2224        public List<Piece> pieces = new List<Piece>(); 
     25        public static Dictionary<EnergyTypes, string> stringDic = new Dictionary<EnergyTypes, string>() 
     26            { 
     27                {EnergyTypes.Heat, "heat"}, 
     28                {EnergyTypes.Kinetic, "kinetic"}, 
     29                {EnergyTypes.Chemical, "chemical"}, 
     30                {EnergyTypes.Electric, "electric"}, 
     31                {EnergyTypes.Wind, "wind"}, 
     32                {EnergyTypes.Fire, "fire"}, 
     33            }; 
     34         
    2335        Slot source; 
     36 
     37        private string incorrectString; 
     38        private bool displayIncorrect = false; 
    2439 
    2540        public int SlotDistance = 100; 
     
    3449        public override void Initialize() 
    3550        { 
     51            if (game < 0 || game > 3) 
     52                game = 0; 
     53            
    3654            if (game == 0) 
    3755            { 
     
    4563                    + SlotDistance; 
    4664                ETDoor door = new ETDoor(this,  
    47                     doorX, 200, null); 
    48                 children.Add(door); 
     65                    doorX, 200, null, DoorType.Conduction); 
     66                children.Add(door); 
     67                toBeChecked.Add(door); 
    4968                 
    5069                Pipe pipe = new Pipe(this, true, 100, 420); 
    5170                children.Add(pipe); 
    52                 pieces.Add(pipe);               
     71                pieces.Add(pipe); 
     72 
     73                Wood wood = new Wood(this, true, 250, 420); 
     74                children.Add(wood); 
     75                pieces.Add(wood);     
    5376                 
    5477                ConnectableSlot slot1 = new ConnectableSlot(this,  
     
    5679                door.In = slot1; 
    5780                source.Out = slot1; 
     81                toBeChecked.Add(slot1); 
    5882                connectableSlots.Add(slot1); 
    5983 
    6084                children.Add(slot1);              
    6185            } 
    62              
     86            else if (game == 1) 
     87            { 
     88                Fire fire = new Fire(this, 100, 200, null); 
     89                children.Add(fire); 
     90                source = fire; 
     91 
     92                int slotX = fire.EndX + SlotDistance 
     93                    - ConnectableSlot.ConnectableWidth / 2; 
     94                int doorX = slotX + ConnectableSlot.ConnectableWidth / 2 
     95                    + SlotDistance; 
     96                ETDoor door = new ETDoor(this, 
     97                    doorX, 200, null, DoorType.Fire); 
     98                children.Add(door); 
     99 
     100                Pipe pipe = new Pipe(this, true, 100, 420); 
     101                children.Add(pipe); 
     102                pieces.Add(pipe); 
     103 
     104                Wood wood = new Wood(this, true, 250, 420); 
     105                children.Add(wood); 
     106                pieces.Add(wood); 
     107 
     108                ConnectableSlot slot1 = new ConnectableSlot(this, 
     109                    slotX, 200, source, door); 
     110                door.In = slot1; 
     111                source.Out = slot1; 
     112                toBeChecked.Add(slot1); 
     113                connectableSlots.Add(slot1); 
     114 
     115                children.Add(slot1);    
     116            } 
     117            else if (game == 2) 
     118            { 
     119                Outlet outlet = new Outlet(this, 100, 200, null); 
     120                children.Add(outlet); 
     121                source = outlet; 
     122 
     123                int slotX = outlet.EndX + SlotDistance 
     124                    - ConnectableSlot.ConnectableWidth / 2; 
     125                int doorX = slotX + ConnectableSlot.ConnectableWidth / 2 
     126                    + SlotDistance; 
     127                ETDoor door = new ETDoor(this, 
     128                    doorX, 200, null, DoorType.Electricity); 
     129                children.Add(door); 
     130 
     131                Pipe pipe = new Pipe(this, true, 100, 420); 
     132                children.Add(pipe); 
     133                pieces.Add(pipe); 
     134 
     135                Cord cord = new Cord(this, true, 250, 420); 
     136                children.Add(cord); 
     137                pieces.Add(cord); 
     138 
     139                Wood wood = new Wood(this, true, 400, 420); 
     140                children.Add(wood); 
     141                pieces.Add(wood); 
     142 
     143                ConnectableSlot slot1 = new ConnectableSlot(this, 
     144                    slotX, 200, source, door); 
     145                door.In = slot1; 
     146                source.Out = slot1; 
     147                toBeChecked.Add(slot1); 
     148                connectableSlots.Add(slot1); 
     149 
     150                children.Add(slot1); 
     151            } 
     152 
     153            else if (game == 3) 
     154            { 
     155                WindSource windsource = new WindSource(this, 100, 200, null); 
     156                children.Add(windsource); 
     157                source = windsource; 
     158 
     159                int slot1X = windsource.EndX + SlotDistance 
     160                    - ConnectableSlot.ConnectableWidth / 2; 
     161                int slot2X = slot1X + ConnectableSlot.ConnectableWidth / 2 + SlotDistance 
     162                    - ConnectableSlot.ConnectableWidth / 2; 
     163                int doorX = slot2X + ConnectableSlot.ConnectableWidth / 2 
     164                    + SlotDistance; 
     165                ETDoor door = new ETDoor(this, 
     166                    doorX, 200, null, DoorType.Electricity); 
     167                children.Add(door); 
     168 
     169                WindMill windmill = new WindMill(this, true, 50, 420); 
     170                children.Add(windmill); 
     171                pieces.Add(windmill); 
     172 
     173                Cord cord = new Cord(this, true, 150, 420); 
     174                children.Add(cord); 
     175                pieces.Add(cord); 
     176 
     177                Pipe pipe = new Pipe(this, true, 300, 420); 
     178                children.Add(pipe); 
     179                pieces.Add(pipe); 
     180 
     181                ConnectableSlot slot1 = new ConnectableSlot(this, 
     182                    slot1X, 200, source, null); 
     183                ConnectableSlot slot2 = new ConnectableSlot(this, 
     184                    slot2X, 200, slot1, door); 
     185                door.In = slot2; 
     186                source.Out = slot1; 
     187                slot1.Out = slot2; 
     188                toBeChecked.Add(slot1); 
     189                toBeChecked.Add(slot2); 
     190                connectableSlots.Add(slot1); 
     191                connectableSlots.Add(slot2); 
     192 
     193                children.Add(slot1); 
     194                children.Add(slot2); 
     195            } 
    63196            base.Initialize(); 
    64197        } 
     
    69202            { 
    70203                bool correct = true; 
    71                 foreach (ConnectableSlot slot in connectableSlots) 
     204                foreach (Slot slot in toBeChecked) 
    72205                { 
    73206                    if (!slot.energyIn.Contains(slot.In.energyOut)) 
    74207                    { 
     208                        incorrectString = "Incorrect. " + slot.In.name + " outputs energy type "  
     209                            + stringDic[slot.In.energyOut] + " which cannot be input to " + slot.name + "."; 
    75210                        correct = false; 
     211                        displayIncorrect = true; 
     212                        break; 
    76213                    } 
    77214                } 
     
    99236        } 
    100237 
     238        public override void Update(GameState gamestate) 
     239        { 
     240            if (gamestate.Pressed(MouseButton.LEFT)) 
     241            { 
     242                displayIncorrect = false; 
     243            } 
     244            base.Update(); 
     245        } 
     246 
    101247        public override void Draw(Screen2D screen) 
    102248        { 
     249            if (displayIncorrect) 
     250            { 
     251                Vector2 vec = screen.Measure(incorrectString); 
     252                Vector2 stringLoc = new Vector2(30, 75); 
     253                Rectangle textRectangle = new Rectangle((int)stringLoc.X, (int)stringLoc.Y, (int)vec.X, (int)vec.Y); 
     254                screen.FillRectangle(textRectangle, Color.White); 
     255                screen.DrawText(incorrectString, stringLoc, TextHorizontal.LEFT, TextVertical.TOP, Color.Black); 
     256            } 
    103257            screen.DrawText("Activate the door by placing pieces to transfer energy from one form to another.", new Vector2(30, 50), TextHorizontal.LEFT, TextVertical.TOP, Color.White); 
    104258            screen.DrawLine(new Vector2(0, 390), new Vector2(1000, 390), Color.Black);