1 00:00:00,450 --> 00:00:05,970 Come back again in this lesson I'm going to go to the advanced features of this development something 2 00:00:06,000 --> 00:00:11,190 I want to mention to you is that don't rush into getting into this lesson and doing it simply because 3 00:00:11,490 --> 00:00:16,890 there's going to be a lot of code change a lot of new features and all of new topics I might feel a 4 00:00:16,890 --> 00:00:22,290 little bit overwhelming if you just come into it if you have a good understanding of Iowa's development 5 00:00:22,290 --> 00:00:26,070 then you have a good background then you perhaps can just jump into this one. 6 00:00:26,070 --> 00:00:31,590 If this is a new thing for you and you're just getting it on the corners of how to do ex-school and 7 00:00:31,580 --> 00:00:37,140 swift and stuff like that maybe you want to spend a little bit more time on the court before you come 8 00:00:37,140 --> 00:00:40,590 to this lesson and feel you know overwhelmed with it. 9 00:00:40,590 --> 00:00:45,570 Now in saying that there are a few things that I will be doing in this particular lesson I will be cleaning 10 00:00:45,570 --> 00:00:46,360 all of the code. 11 00:00:46,380 --> 00:00:50,410 I will be repartitioning parts of the code I will be trying to. 12 00:00:50,520 --> 00:00:56,190 Are merging the pieces of the code that are similar to each other are the feature that the user can 13 00:00:56,190 --> 00:01:00,350 choose whether they want to play a text based game or on major base game. 14 00:01:00,450 --> 00:01:06,310 And they try to merge both of them my label under my age classes that we made in the previous lessons. 15 00:01:06,420 --> 00:01:10,550 And based on that we have to change our interaction with the items. 16 00:01:10,630 --> 00:01:15,930 It doesn't seem like there is a lot of stuff to be done but unfortunately some of the things that we 17 00:01:15,930 --> 00:01:20,610 have to do it will affect multiple different files and multiple different functions. 18 00:01:20,670 --> 00:01:25,230 And as a result it ends up being so many different things that we have to change and we have to keep 19 00:01:25,230 --> 00:01:26,090 an eye on them. 20 00:01:26,280 --> 00:01:32,120 So for that reason I would suggest that if you chose to do this and do it in one setting. 21 00:01:32,130 --> 00:01:38,630 Don't let it drive over a few days or a few hours to go through it once in one go and get it done. 22 00:01:38,640 --> 00:01:42,340 So you know exactly where you are with the different parts of the development. 23 00:01:42,360 --> 00:01:47,040 So with all of that in mind let's go ahead and to afford that and I'm going to duplicate my project 24 00:01:47,130 --> 00:01:52,710 once again if you already know how to use version control then you probably want to start a new branch 25 00:01:52,950 --> 00:01:57,980 but if you don't know version control just yet you might just want to duplicate your folder somewhere 26 00:01:58,000 --> 00:02:00,440 duplicate the folder which is the images. 27 00:02:00,490 --> 00:02:05,020 And I actually get to call it advanced at once. 28 00:02:05,160 --> 00:02:09,450 And here is how I'm going to open that project and begin to get it started in here. 29 00:02:09,450 --> 00:02:11,770 Changing the stuff that we need to change. 30 00:02:12,180 --> 00:02:17,250 So the first thing that I wonder is I want to add a new feature to this game that lets users choose 31 00:02:17,250 --> 00:02:20,860 whether they want to play text based game or on email based game. 32 00:02:21,000 --> 00:02:23,330 And that is something that we have to do in the interface. 33 00:02:23,330 --> 00:02:30,310 So I'm going to put a storyboard on up here that I have the reset button with and what I do is I'm going 34 00:02:30,310 --> 00:02:35,860 to go ahead and say let's break the constraint that is the leading space or the horizontal space for 35 00:02:35,860 --> 00:02:37,400 the reset button. 36 00:02:37,450 --> 00:02:44,870 So there is going to be this one called leading space to whatever that object is. 37 00:02:44,910 --> 00:02:52,120 And once I found it I'm when I delete it so my reset button now just squeezes itself to infer its size 38 00:02:52,120 --> 00:02:54,090 from the reset text. 39 00:02:54,100 --> 00:02:55,060 No they have that. 40 00:02:55,060 --> 00:03:00,490 I'm going to go ahead and say this duplicate this game or place it in here and that's it. 41 00:03:00,490 --> 00:03:02,810 Our segment that control play sit there. 42 00:03:02,950 --> 00:03:04,180 And let's change these things. 43 00:03:04,180 --> 00:03:08,830 So the game mode now becomes game type. 44 00:03:08,890 --> 00:03:11,440 So that's the type of the game that I want to play. 45 00:03:11,620 --> 00:03:17,270 And then I'm going to go ahead and say this one the segmented contour if you only have two types. 46 00:03:17,340 --> 00:03:20,590 One of them is going to be called text. 47 00:03:20,850 --> 00:03:30,080 And the other one is going to be image and this outlet already has a built in to it. 48 00:03:30,220 --> 00:03:36,030 When you duplicate outlet's it breaks the constraints that they have against other objects but they 49 00:03:36,110 --> 00:03:39,450 will maintain the kind of scenes they have against themselves. 50 00:03:39,460 --> 00:03:45,190 So in this case the constraints are still there and I don't need it to be 240 maybe I could use a number 51 00:03:45,190 --> 00:03:48,870 such as higher than a hundred fifty probably does. 52 00:03:49,110 --> 00:03:53,830 So let's keep the hundred fifty and I'm going to add the other constraints for everybody else. 53 00:03:53,830 --> 00:03:59,560 So if you're into it you're going to say the game time just like what we had done in one of our very 54 00:03:59,560 --> 00:04:00,700 early sounds. 55 00:04:00,700 --> 00:04:02,470 It has a space top. 56 00:04:02,560 --> 00:04:08,000 It has this space to the horizontal spacing from this other segment of the control which devalue if 57 00:04:08,040 --> 00:04:09,400 it is 20. 58 00:04:09,400 --> 00:04:15,720 Just like everything else in this op it has a pilot which already has a height 29. 59 00:04:16,000 --> 00:04:18,540 And that's all you have to do for the game type. 60 00:04:18,550 --> 00:04:25,840 Then I'm going to come for this segment that controls again the same thing top a space and the horizontal 61 00:04:25,840 --> 00:04:26,640 spacing. 62 00:04:26,740 --> 00:04:32,640 And then it's kind of refresh itself because now it has the left anchor top anchor care vits and height 63 00:04:32,650 --> 00:04:34,100 is already determined. 64 00:04:34,140 --> 00:04:40,600 And finally my reset is going to have a horizontal spacing against the newly created segment control 65 00:04:40,950 --> 00:04:43,970 and the value for it would be 20. 66 00:04:44,110 --> 00:04:47,460 And the moment they do that I have the reset button out there as well. 67 00:04:47,470 --> 00:04:52,960 Now something to keep in mind is that when you duplicate outlets that the connections they get duplicated 68 00:04:52,960 --> 00:04:53,800 as well. 69 00:04:53,800 --> 00:05:00,580 So now if I go to my view controller I go to connection's you see that game all the action is connected 70 00:05:00,580 --> 00:05:02,010 to two different outlets. 71 00:05:02,010 --> 00:05:06,890 One of them is the one that we want it to be four by four six by six and eight weight. 72 00:05:06,910 --> 00:05:10,160 The other one is it takes an image which is the wrong thing. 73 00:05:10,180 --> 00:05:12,480 So I'm going to have to disconnect that. 74 00:05:12,580 --> 00:05:13,650 So I don't need not. 75 00:05:13,810 --> 00:05:21,340 But they do need to write a new action for text or image so I'm going to weigh in here when I have my 76 00:05:22,330 --> 00:05:25,250 Dimitroff that is called Game Mode. 77 00:05:25,330 --> 00:05:27,830 I'm actually going to copy everything in here. 78 00:05:27,850 --> 00:05:41,270 Go ahead and then your file called it View Controller with a lot of case old plus game type here I'm 79 00:05:41,270 --> 00:05:43,920 going to paste everything even though I don't need all of it. 80 00:05:43,940 --> 00:05:51,950 What they need is this game type action and I need to find the segmented control but they don't meet 81 00:05:51,980 --> 00:05:53,750 any of these other things. 82 00:05:53,760 --> 00:05:55,780 You can decide about this later on. 83 00:05:55,910 --> 00:06:01,370 So we have a new action game type action and that's of the type Iby action. 84 00:06:01,490 --> 00:06:07,490 So I can go back to a storyboard and say Give me the view controller and it says there is something 85 00:06:07,490 --> 00:06:09,440 called game type action. 86 00:06:09,500 --> 00:06:16,730 I'm going to derogate over this and say Give me a value changed value changed. 87 00:06:16,790 --> 00:06:24,920 So now we have a new action that is the control of this segment control and that is here in my game 88 00:06:24,920 --> 00:06:29,530 type extension which is also a game type action. 89 00:06:29,570 --> 00:06:35,350 So here you have to ask ourselves what do we want to happen when the game time action is stopped on. 90 00:06:35,360 --> 00:06:41,510 We certainly want to change the type of the game from text image or from email to text but we don't 91 00:06:41,510 --> 00:06:43,830 have anything that controls that just yet. 92 00:06:43,970 --> 00:06:46,950 So to do that I'm going to go to my view controller file. 93 00:06:47,150 --> 00:06:56,070 I'm going to add a new valuable down in here that's going to be called there let's call it game type. 94 00:06:56,070 --> 00:06:57,560 Now here's the problem. 95 00:06:57,560 --> 00:07:02,980 We don't know what type of variable the game type has to become. 96 00:07:02,990 --> 00:07:08,780 We could just we make it something like a string text and then whenever we wanted to switch it would 97 00:07:08,780 --> 00:07:10,540 make it to become an image. 98 00:07:10,640 --> 00:07:13,520 But that really is not a very good way of doing it. 99 00:07:13,520 --> 00:07:20,000 A much better solution for this is using an enumeration or what we call an enum simply because arms 100 00:07:20,060 --> 00:07:26,240 are designed for such situations situations where we have values of the same nature but they have to 101 00:07:26,240 --> 00:07:27,920 be cross that fit within each other. 102 00:07:27,920 --> 00:07:30,590 And he can choose whichever we want to use. 103 00:07:30,590 --> 00:07:35,300 So now they know that I'm actually going to go ahead and make myself and you know I'm going to say you 104 00:07:35,290 --> 00:07:39,980 know I'm I'm going to call it text or image in on. 105 00:07:40,120 --> 00:07:47,540 I might take the mentioned you know we'll have to use a case that is text and another case that is image. 106 00:07:47,660 --> 00:07:50,590 So might you know can be either text or email. 107 00:07:50,750 --> 00:07:55,150 And I'm for now writing that you know within the body of this file that you control. 108 00:07:55,160 --> 00:07:57,740 But soon enough I'm going to give it its own fine. 109 00:07:57,860 --> 00:08:01,020 But they want to keep it here because they want to show you how we change it. 110 00:08:01,070 --> 00:08:09,020 So I'm going to say Game time is going to be of that type text or image I is going to be text or imagined 111 00:08:09,380 --> 00:08:11,060 text by default. 112 00:08:11,060 --> 00:08:16,700 So when the game starts in the viewpoint of at the very beginning the assumption is that the game runs 113 00:08:16,700 --> 00:08:18,200 on a text note. 114 00:08:18,500 --> 00:08:23,500 Now do they have that I'm actually going to copy this or essentially cut it and put it inside its own 115 00:08:23,560 --> 00:08:24,070 file. 116 00:08:24,090 --> 00:08:31,790 So I'm going to say command and savefile this is text or image and the text or image is going to have 117 00:08:31,940 --> 00:08:37,850 this anywhere 8:3 inside it and you don't need to import they I simply because we are not using anything 118 00:08:37,850 --> 00:08:38,780 from the White kid. 119 00:08:38,790 --> 00:08:45,110 But we do need to import the foundation because we are using something from foundation called enumeration 120 00:08:45,140 --> 00:08:46,050 or you. 121 00:08:46,310 --> 00:08:52,070 So now they have that and I have this value in the view controller what they can do is I can jump back 122 00:08:52,070 --> 00:08:59,180 into my game type action which is here and say based on this value I want to change that. 123 00:08:59,180 --> 00:09:06,610 So essentially I wanted the game type to become something else depending on what the index is on the 124 00:09:06,610 --> 00:09:08,170 segment that control. 125 00:09:08,180 --> 00:09:10,190 Now there are two ways of thinking about it. 126 00:09:10,190 --> 00:09:13,280 One of them is we do the same thing as we did before. 127 00:09:13,370 --> 00:09:15,520 I get the index from the index. 128 00:09:15,530 --> 00:09:17,590 I switch it based on each case. 129 00:09:17,600 --> 00:09:19,010 I do a different thing. 130 00:09:19,040 --> 00:09:22,190 Let me write down the first which is not the way I want to use. 131 00:09:22,190 --> 00:09:29,570 I'm going to say switch on the value when a switch is in the X and within the body chase zero then game 132 00:09:29,570 --> 00:09:43,500 type becomes text or image that takes case 1 game type becomes so EMH does emerge. 133 00:09:43,700 --> 00:09:47,750 And then I would have a default which use a break. 134 00:09:47,810 --> 00:09:52,460 Now this is all well and works perfectly fine but this isn't really a very good practice. 135 00:09:52,460 --> 00:09:58,160 I want to show you a better way of doing the same thing and that is why using the roll value of the 136 00:09:58,160 --> 00:09:59,320 text or image. 137 00:09:59,460 --> 00:10:01,070 That's how we can do that. 138 00:10:01,070 --> 00:10:07,790 I'm going to go to my thanks so much say my enumeration actually has a type and that is integer and 139 00:10:07,790 --> 00:10:10,800 then text is actually 0. 140 00:10:10,800 --> 00:10:18,470 MH is actually one and I'm using zero on one specifically because the values of the segment that control 141 00:10:18,770 --> 00:10:26,110 are zero and one takes the zero image is one because they are the indexes of a segmented control. 142 00:10:26,300 --> 00:10:31,220 So I'm going to add that you're saying my you know has a type and it takes any major They have values 143 00:10:31,510 --> 00:10:38,030 and then I'm going to go to game type If I got the index that index is a number between 0 or 1. 144 00:10:38,030 --> 00:10:45,620 So I don't need any of these guys but they do need is this I need to say game type becomes text or email 145 00:10:45,620 --> 00:10:49,140 each roll value of index. 146 00:10:49,160 --> 00:10:56,450 So if the raw value is 0 text or image becomes text if the raw value is one text or you measure real 147 00:10:56,450 --> 00:11:01,780 value becomes one that's giving an error or saying that this value is an optional one. 148 00:11:01,790 --> 00:11:09,460 We can't be sure if the indexing here does produce a number and the corresponding numerator from here. 149 00:11:09,470 --> 00:11:16,050 So I'm just going to go ahead and force on Rapid of course every time we do such a thing we obviously 150 00:11:16,050 --> 00:11:18,080 have to reset our game as well. 151 00:11:18,100 --> 00:11:22,220 We'll go ahead and say reset auction itself as well. 152 00:11:22,500 --> 00:11:31,030 So he is so far choosing a different game types sitting at this value game type to be a different thing. 153 00:11:31,170 --> 00:11:37,280 But that doesn't really change anything in our game simply because so far the only thing that is happening 154 00:11:37,390 --> 00:11:40,540 is one of value is changing to a different thing. 155 00:11:40,710 --> 00:11:46,230 And unfortunately there's a lot of code they have to write before I can actually compile it and show 156 00:11:46,230 --> 00:11:46,930 it to you. 157 00:11:46,950 --> 00:11:48,920 So you kind of have to bear with me. 158 00:11:48,960 --> 00:11:54,330 So we managed to change the game time and now we have to see how does this game time actually affect 159 00:11:54,420 --> 00:11:55,420 everything else. 160 00:11:55,470 --> 00:12:02,580 Most notably the way we make our blocks and the Vedas we present them and to use the game type the most 161 00:12:02,580 --> 00:12:07,210 important method that we have to worry about is this method to make tiles. 162 00:12:07,380 --> 00:12:13,740 So currently the major Titans is actually going in here and making us toys of the type image just a 163 00:12:13,740 --> 00:12:14,380 while back. 164 00:12:14,400 --> 00:12:18,080 It was actually making us tiles of the type that could have fun. 165 00:12:18,090 --> 00:12:19,680 Which was my label. 166 00:12:19,710 --> 00:12:24,870 So now you have to have a system in place that every time that we make it right it can be either an 167 00:12:24,870 --> 00:12:32,290 image or a text and that comes back to this object might imagine the class that we have made ourselves. 168 00:12:32,430 --> 00:12:37,890 And now I'm going to have to make another class that is going to be a combination of both my image and 169 00:12:37,890 --> 00:12:41,760 my label going on and that's what I'm going to say command and. 170 00:12:42,610 --> 00:12:44,970 And this one I'm going to call it my time. 171 00:12:45,090 --> 00:12:48,270 So this is the one that doesn't have an image or a label. 172 00:12:48,270 --> 00:12:51,810 You know it just has can be whatever that we want it to be. 173 00:12:53,080 --> 00:12:58,620 And since this is something that can be either of the two it has to be a subclass of you I. 174 00:12:58,770 --> 00:13:01,040 So they have name Portie you I. 175 00:13:01,350 --> 00:13:05,350 And then I'm going to say class that's going to be my title. 176 00:13:05,530 --> 00:13:08,620 It's a subclass of UI view. 177 00:13:08,890 --> 00:13:14,310 And here are all the things that we need to have for it and let me first my Stothard you for it. 178 00:13:14,320 --> 00:13:16,530 And then I'll write the code for it. 179 00:13:16,540 --> 00:13:25,210 My time is going to have a built in label as well as a built in you or I. 180 00:13:25,270 --> 00:13:31,690 You made your view on this essentially helps me having most of them in one place so I can use whichever 181 00:13:31,690 --> 00:13:32,500 I want. 182 00:13:32,500 --> 00:13:34,120 So let's go ahead and do that. 183 00:13:34,120 --> 00:13:39,670 I'm going to say I have a variable called leap in and that's going to be a new label. 184 00:13:39,850 --> 00:13:42,380 So it can have a label if I want it to. 185 00:13:42,400 --> 00:13:43,810 It has a valuable code. 186 00:13:43,820 --> 00:13:50,940 I N G view and that is a you are you made your view that you can have in case I needed that. 187 00:13:51,030 --> 00:13:54,390 And then of course I knew they'd turn on a number like the last one. 188 00:13:54,390 --> 00:14:01,560 So it's going to be internal number that's going to be an integer and then beyond that in case I was 189 00:14:01,560 --> 00:14:09,760 using a image of you I need an internal image so our internal image and that's going to be a message 190 00:14:10,290 --> 00:14:11,740 again optional. 191 00:14:11,970 --> 00:14:17,120 And then the other two values that they would need in year are the values we had for the my label which 192 00:14:17,130 --> 00:14:23,080 are these two I'm going to copy them from the air which is the question mark and the smiley face. 193 00:14:23,190 --> 00:14:27,970 And then the other two from the image which had these two. 194 00:14:28,170 --> 00:14:34,170 Now since these names are a little bit similar to each other like the question and the smile I'm going 195 00:14:34,170 --> 00:14:39,240 to rename these and call this one question the XTi a smile. 196 00:14:39,390 --> 00:14:40,150 XTi. 197 00:14:40,380 --> 00:14:41,910 This one becomes a question. 198 00:14:41,940 --> 00:14:45,000 I am g and this one becomes tic I m g. 199 00:14:45,180 --> 00:14:49,120 So my title has a builtin label built in image view. 200 00:14:49,170 --> 00:14:53,770 Built an internal number image built in questions I'm built in a smile. 201 00:14:53,760 --> 00:14:56,100 Or take images text or images. 202 00:14:56,100 --> 00:15:02,160 Now the next thing I have to do is I have to somehow initialize this tile that actually includes these 203 00:15:02,160 --> 00:15:08,080 values and also decides whether it is going to be a label or your view. 204 00:15:08,100 --> 00:15:13,190 So in order to do that I'm actually going to go ahead and write a you know write my own version of an 205 00:15:13,260 --> 00:15:18,620 initializer and then I go in here and say I have a new in it this new in it. 206 00:15:18,630 --> 00:15:20,820 I'm not overwriting the existing ones. 207 00:15:20,820 --> 00:15:27,750 I'm writing a new one I'm going to say this new one has an input frame which is a C Jurek that's something 208 00:15:27,750 --> 00:15:34,860 we definitely need to make any kind of anything in in this type and it has a type which is a text or 209 00:15:34,890 --> 00:15:35,790 image. 210 00:15:35,990 --> 00:15:42,150 So depending on whether the type is text or image you have to add either the label or the major view 211 00:15:42,710 --> 00:15:47,280 and the next thing I'm going to say is I'm going to go to this method and say first of all I need to 212 00:15:47,280 --> 00:15:54,930 do a superb in it with frame input frame so the initialization of the superclass is happening and don't 213 00:15:54,930 --> 00:16:00,420 worry about this error it says that you have to include the coder included there even though we are 214 00:16:00,420 --> 00:16:04,940 not going to use it for anything but it has to be there because it's required. 215 00:16:04,940 --> 00:16:16,020 And then in my custom I'm going to say lieben becomes a UI label with frame and the frame of it is going 216 00:16:16,020 --> 00:16:21,970 to be said of that frame and self obviously refers to this view. 217 00:16:22,200 --> 00:16:28,680 So in my custom anyway I'm going to say label becomes your label cell frame and then I'm going to have 218 00:16:28,680 --> 00:16:31,890 to add just to set things that we had earlier on. 219 00:16:32,060 --> 00:16:36,580 Those are actually here in the make tiles so I could actually copy them from here. 220 00:16:36,750 --> 00:16:37,980 You want to change the font. 221 00:16:37,980 --> 00:16:45,840 I'm going to change the text alignment so I'm going to go in here and say label copy it's on commentaries 222 00:16:45,950 --> 00:16:48,820 on that font and that text alignment. 223 00:16:49,010 --> 00:16:50,930 Let's reformat them properly. 224 00:16:51,060 --> 00:16:52,900 So labor gets the right font. 225 00:16:52,970 --> 00:16:56,710 Right text alignment and that's all we have to do for the label. 226 00:16:56,940 --> 00:17:00,220 Then we have to do similar things for the AMG view. 227 00:17:00,330 --> 00:17:03,680 I'm going to say I am you view becomes a UI. 228 00:17:03,690 --> 00:17:07,420 You made your view which is again made by the same frame. 229 00:17:07,530 --> 00:17:11,830 So it's going to be self that frame is going to be built there. 230 00:17:12,090 --> 00:17:23,120 And then I am as you view Dadds EMH it has to become evaluable which is my tile dot on the value here 231 00:17:23,130 --> 00:17:24,480 is called question. 232 00:17:24,510 --> 00:17:26,900 I am g a question I am. 233 00:17:27,140 --> 00:17:29,370 I think I forgot to add that for the label. 234 00:17:29,370 --> 00:17:39,630 So the label LPL that text that has become this value has to become my title dot questions text. 235 00:17:39,690 --> 00:17:44,830 So when we create a new label we don't want to show what's the value on them. 236 00:17:44,910 --> 00:17:49,740 If we want to show them that it says question mark or a question e-mail. 237 00:17:49,890 --> 00:17:51,750 So that's what we have to do in here. 238 00:17:52,020 --> 00:17:55,360 Then the next important thing becomes this thing. 239 00:17:55,650 --> 00:17:58,140 If you are initialising and you have a type. 240 00:17:58,140 --> 00:18:03,410 Based on that either you have to show the label or you have to show the image. 241 00:18:03,510 --> 00:18:12,600 And here's what I'm going to do when I say if type is a text or image dot text. 242 00:18:12,630 --> 00:18:20,870 If you're trying to make a text kind of title then we have to say self that I had the self view Alvy 243 00:18:20,910 --> 00:18:28,060 and otherwise we have to say self that I had the same view or AMG view. 244 00:18:28,350 --> 00:18:30,390 So let's review this once again. 245 00:18:30,390 --> 00:18:32,580 We make in your tile of the type. 246 00:18:32,580 --> 00:18:40,380 My toilet and that tide has both a label and an image of you being built into it but depending on the 247 00:18:40,380 --> 00:18:47,470 type that we are trying to make we either only copy the label tweet or the email is into it. 248 00:18:47,990 --> 00:18:53,960 So for a lot of progress we managed to make our own version of a tile that can be or is there an image 249 00:18:53,970 --> 00:18:55,430 view or a label. 250 00:18:55,490 --> 00:18:58,370 And now we have to go to make tiles and use that. 251 00:18:58,430 --> 00:19:01,750 And before I do that and this is going to make the code a little bit messy. 252 00:19:01,760 --> 00:19:08,360 But before I do that I'm actually going to go ahead and delete most of these files my label and my image 253 00:19:08,570 --> 00:19:12,790 if I don't have them in my project then those going to be a lot of errors. 254 00:19:12,820 --> 00:19:18,390 The areas are bad but they are also good because they show me very I have to change the code so I'm 255 00:19:18,420 --> 00:19:19,060 going in here. 256 00:19:19,060 --> 00:19:22,140 Say both of these files delete them. 257 00:19:22,280 --> 00:19:29,210 Now if I go to my make tiles file in here I will have a tile which is trying to build itself from my 258 00:19:29,240 --> 00:19:31,320 image which doesn't really exist anymore. 259 00:19:31,520 --> 00:19:35,990 So I have to go in here and say tile make it from my tile. 260 00:19:36,170 --> 00:19:42,290 I might tile has two different initializers one that is the code that the other one that is our custom 261 00:19:42,290 --> 00:19:46,940 one that's the one I want to use and I'm going to say the custom one and the rectangle for it will be 262 00:19:46,940 --> 00:19:49,090 the same one as we had before. 263 00:19:49,490 --> 00:19:53,150 And let me get myself a little bit of space either text or email. 264 00:19:53,300 --> 00:19:56,070 Part the fifth would be game type. 265 00:19:56,210 --> 00:20:01,100 So depending on the game type we make a tile which is either a label or an image. 266 00:20:01,100 --> 00:20:03,900 You obviously don't need any of these anymore. 267 00:20:04,330 --> 00:20:10,460 Then I'm going to come in here once we set these values the image name and we said they in turn our 268 00:20:10,460 --> 00:20:11,250 number. 269 00:20:11,390 --> 00:20:18,500 We said the internal image and then I'm going to go ahead and say I don't actually need any of you guys 270 00:20:18,590 --> 00:20:24,130 simply because I don't need to say to a question mark any more because the moment they initialize it 271 00:20:24,190 --> 00:20:26,770 it's already setting itself with a question mark. 272 00:20:26,780 --> 00:20:28,790 And as creakier give you that. 273 00:20:28,820 --> 00:20:35,230 So the end it automatically sets the question mark for the M.H. And the question text for the label. 274 00:20:35,240 --> 00:20:41,200 So whether you are making a tile that is an image or a label automatically or getting the question why. 275 00:20:41,390 --> 00:20:46,160 The only thing we need to feed them are these two internal numbers and the internal image. 276 00:20:46,160 --> 00:20:52,610 So by these to our label or our image view they will both have exactly the same value that they need 277 00:20:52,610 --> 00:20:53,550 to have. 278 00:20:53,570 --> 00:20:58,310 Now we have successfully managed to add tiles that are of the type. 279 00:20:58,310 --> 00:21:05,090 My tired but then again we have so many other objects that are referring to my label or my image class 280 00:21:05,090 --> 00:21:05,780 types. 281 00:21:05,900 --> 00:21:07,940 They don't exist in this project anymore. 282 00:21:08,030 --> 00:21:13,070 And the next thing we have to do is we have to go kind of do the same practice as we did before and 283 00:21:13,070 --> 00:21:16,680 that's going file by file and changing the types that we need. 284 00:21:16,820 --> 00:21:22,310 So I'm going to go to my controller and if you can try I'm going to say everywhere that they see my 285 00:21:22,370 --> 00:21:26,160 image all my label I have to turn them into my title. 286 00:21:26,210 --> 00:21:30,630 So here this becomes my title I'm going to copy that. 287 00:21:30,650 --> 00:21:32,940 The first time it has to be of the type my type. 288 00:21:32,990 --> 00:21:37,590 I can tile the same Fountain's array the same thing should happen to them. 289 00:21:37,940 --> 00:21:42,070 Then I'm going to go with the reset action which I don't think anything should change in here. 290 00:21:42,170 --> 00:21:46,980 And then I'm going to go to the touches and you probably have to change quite a few things. 291 00:21:47,000 --> 00:21:51,860 First of all there is an error saying that there is no one called my image so I'm going to have to change 292 00:21:51,860 --> 00:21:53,070 that to my tile. 293 00:21:53,330 --> 00:21:56,680 And then if the top Time is of the type my type. 294 00:21:56,680 --> 00:22:01,680 Now when we test for the founds tile array we said all of these and depending on the compare. 295 00:22:01,670 --> 00:22:09,980 Now we said the first time or not and then we go to this function reveal and compare flips to reveal. 296 00:22:09,980 --> 00:22:15,770 Now I want to step outside of here for a few minutes and program something else and explain to you. 297 00:22:15,770 --> 00:22:25,400 And that is revealing compeer which is dysfunction here is very similar to flip to a smile is very similar 298 00:22:25,400 --> 00:22:28,480 to flip back and is very similar to flip to reveal. 299 00:22:28,610 --> 00:22:35,390 It's kind of redundant to write the same code so many times even though every time something is different 300 00:22:35,390 --> 00:22:41,870 in them it makes better sense if we wrote to one function that has so many different arguments and we 301 00:22:41,870 --> 00:22:45,570 can call the arguments properly each time that we needed. 302 00:22:45,630 --> 00:22:51,500 So a of all of these four different functions I'm actually going to go right to one a new function that 303 00:22:51,500 --> 00:22:54,270 hopefully takes care of all of the things that we have to do. 304 00:22:54,480 --> 00:23:00,290 And I'm going to take a little bit of a Riskin here and then to delete all of these for in advance before 305 00:23:00,290 --> 00:23:01,900 I'm even going to do anything. 306 00:23:01,970 --> 00:23:06,030 I'm going to say all these four different functions that they're kind of similar. 307 00:23:06,110 --> 00:23:07,300 Go ahead and delete them. 308 00:23:08,370 --> 00:23:13,380 I move them to trash and now there's going to be loads of things that they don't really know what they 309 00:23:13,380 --> 00:23:17,480 are or nobody knows what is the name meaning of the reveal and compare. 310 00:23:17,640 --> 00:23:18,460 But that's OK. 311 00:23:18,510 --> 00:23:25,740 But I'm going to do this I'm going to say Give me a new file I'm going to call this fun view controller 312 00:23:26,100 --> 00:23:31,520 plus flip this is the only function that we'll have for flipping something. 313 00:23:32,950 --> 00:23:42,610 And again I'm going to say even posed to you I get as before this is an extension to extend ssion to 314 00:23:42,700 --> 00:23:44,110 view controller. 315 00:23:44,270 --> 00:23:51,190 And yet I will have one function that is called Flip and the function Philipe has to take so many arguments 316 00:23:51,520 --> 00:23:56,570 and do some things for us before they write the arguments that you write the body of. 317 00:23:56,680 --> 00:24:06,130 So it's going to be a view dog transition without a view and with the completions so duration options 318 00:24:06,340 --> 00:24:08,630 animations and completion. 319 00:24:08,920 --> 00:24:11,850 So this is going to be a little bit of a longer coding. 320 00:24:11,850 --> 00:24:15,360 So I'm going to try to explain every bit of it as much as I can for you. 321 00:24:15,370 --> 00:24:20,420 The first thing is this you have to have a view which in our case is our tiler. 322 00:24:20,440 --> 00:24:27,370 So I'm going to say there's an argument called game title of the type my tied and that's the one I want 323 00:24:27,370 --> 00:24:28,970 you to flip. 324 00:24:29,170 --> 00:24:33,340 Then the duration I'm going to assume is a static value such as point five. 325 00:24:33,430 --> 00:24:38,700 Then there is the UI view animation option and that matters because some fans want to flip to the right. 326 00:24:38,710 --> 00:24:43,490 Some fans want to flip to the left and because of that I need an argument for that. 327 00:24:43,720 --> 00:24:52,150 And that's what I'm going to call an option which is a I view toward animation options and that's the 328 00:24:52,150 --> 00:24:53,920 one I'm going to use for here. 329 00:24:54,190 --> 00:25:00,590 So every time that we call this function we also say what kind of animation we want to see. 330 00:25:00,670 --> 00:25:06,090 Then you have the body of the animations and we have the body of the completion and the completion I'm 331 00:25:06,100 --> 00:25:07,930 going to say there's one argument for it. 332 00:25:07,930 --> 00:25:12,630 RAZ let me reformat everything properly. 333 00:25:12,970 --> 00:25:15,170 Here are the other things that we have to do. 334 00:25:15,280 --> 00:25:21,700 Every time we flip we have to change the background color so we obviously need an argument for the color. 335 00:25:21,700 --> 00:25:28,100 So I'm going to say that it is going to become B.G. color of the type color. 336 00:25:28,120 --> 00:25:35,980 So that's one argument that we need in and then sometimes when we flip We want to see the internal number. 337 00:25:36,130 --> 00:25:39,720 So we need some sort of value that shows us that text. 338 00:25:39,730 --> 00:25:42,490 So I'm going to say that's called input DX. 339 00:25:42,520 --> 00:25:45,810 The wishes of the type is string. 340 00:25:45,850 --> 00:25:50,840 Sometimes however we don't want to see the text we want to see the internal image. 341 00:25:51,010 --> 00:25:53,990 So we have to actually input an image into it. 342 00:25:54,040 --> 00:25:57,060 So I'm going to say Impe I am g. 343 00:25:57,100 --> 00:25:58,620 That is an image. 344 00:25:58,870 --> 00:26:03,040 And then sometimes we want to go ahead and compare. 345 00:26:03,050 --> 00:26:09,790 Once the compilation happened I'm going to say there is another value called compare and that's going 346 00:26:09,790 --> 00:26:12,050 to be a boolean value. 347 00:26:12,400 --> 00:26:14,110 And I didn't that's all I would need. 348 00:26:14,170 --> 00:26:18,520 I would need a time I would need the animation option the background the color or the color that they 349 00:26:18,520 --> 00:26:24,190 want to show what text they want to show if that's the thing or what image I want to show if that's 350 00:26:24,190 --> 00:26:25,560 what you're trying to show. 351 00:26:25,610 --> 00:26:28,150 And of course whether they should compare or not. 352 00:26:28,180 --> 00:26:34,840 Now let's go to the body of the view turns it on it's what is actually rather simple even though it 353 00:26:34,840 --> 00:26:37,400 does a lot of things is actually very very simple. 354 00:26:37,420 --> 00:26:43,400 The body effect is this in the body of the animations that are running while the transition are happening. 355 00:26:43,660 --> 00:26:50,210 First of all input tiled the background color should become the color that we receive. 356 00:26:50,260 --> 00:26:54,460 So whatever color you ask me to make it this function will make it like that. 357 00:26:54,670 --> 00:26:58,900 Once you set the background color you have to go ahead and said a few other things. 358 00:26:58,900 --> 00:27:07,360 One of them is that tile dot labeled dot text that has to become the value that you have input in your 359 00:27:07,630 --> 00:27:17,300 input text and then input type dog or AMG view that image that has to become the input image value. 360 00:27:17,290 --> 00:27:23,710 Now you might be wondering how come you're setting both the text and image irrelevant of the situation 361 00:27:23,710 --> 00:27:28,660 of the game is relevant of the game type is email or text. 362 00:27:28,750 --> 00:27:35,770 The thing is at any point we are only showing one of these to label or image of you so it doesn't matter 363 00:27:35,770 --> 00:27:39,680 if you set fourths of them because only one of them is going to be shown. 364 00:27:39,700 --> 00:27:42,770 Remember they're both being located in here. 365 00:27:42,820 --> 00:27:47,740 We have both label and image of you if you want to separate them you could. 366 00:27:47,740 --> 00:27:50,780 And in that case you had to test only for one of them. 367 00:27:50,920 --> 00:27:52,650 But I don't really bother with that. 368 00:27:52,660 --> 00:27:59,640 What they did is I said let's allocate and initialize most of them but only at one of them to my my 369 00:28:00,020 --> 00:28:00,580 view. 370 00:28:00,760 --> 00:28:03,670 So that's why here I don't need to do any tests. 371 00:28:03,670 --> 00:28:09,640 If you wanted to put new ideas you could say you're a self-taught game type is thinks that you match 372 00:28:10,350 --> 00:28:13,560 Daut text then I have to do the text then. 373 00:28:13,570 --> 00:28:17,040 Otherwise I have to do image but I'm not going to bother with that. 374 00:28:17,050 --> 00:28:21,940 The last thing I have to do is in the completion block and there's something I actually memorized because 375 00:28:21,940 --> 00:28:29,020 I knew I'm going to forget and that was here in the touches and that we had a value there is that called 376 00:28:29,110 --> 00:28:36,600 it tile is animating and that becomes you every time this process happens and we remember that we have 377 00:28:36,600 --> 00:28:40,390 to make that for us at the completion of the flip. 378 00:28:40,530 --> 00:28:48,750 So I'm going to go in here and say in the completion self DOD a title is animating becomes false. 379 00:28:48,900 --> 00:28:50,740 Once it did become false. 380 00:28:50,790 --> 00:28:52,110 Here is the situation. 381 00:28:52,110 --> 00:28:53,810 Are we comparing. 382 00:28:54,520 --> 00:29:01,490 If compare if that is what we are doing then the self starts comparing. 383 00:29:01,740 --> 00:29:08,880 So with this one function now be essentially put the last four functions that we had in here into only 384 00:29:08,880 --> 00:29:12,050 one place this one function can do. 385 00:29:12,110 --> 00:29:14,130 Philip Farber can do that. 386 00:29:14,200 --> 00:29:19,050 What it can change the colors to dark grey or to orange or green. 387 00:29:19,200 --> 00:29:23,310 It can change that text into question mark or into a smiley face. 388 00:29:23,310 --> 00:29:30,240 It can change the image into a question mark or a tick sign and it can compare or not. 389 00:29:30,240 --> 00:29:33,600 So let's go ahead and use this newly created function. 390 00:29:33,660 --> 00:29:38,970 I'm going to go to touch as and I mean the touches and then I'm actually going to write the else part 391 00:29:38,970 --> 00:29:39,530 first. 392 00:29:39,540 --> 00:29:43,850 If this is the first tile that we kept on so I don't have this function more. 393 00:29:43,950 --> 00:29:47,540 They do have something called Flip and the flip. 394 00:29:47,540 --> 00:29:50,340 I'm going to have to feed all of these arguments. 395 00:29:50,520 --> 00:29:55,920 So let's go ahead and say if this is the first time we don't want to compare. 396 00:29:56,010 --> 00:30:01,570 So that's taken care of that you made that they want to show is that tapped the toilet. 397 00:30:01,800 --> 00:30:09,970 Daut internal image and that image is an optional one so I have to make sure that it is forced on that 398 00:30:10,470 --> 00:30:19,370 then that text that I want to show is this format this format which is a game top tile. 399 00:30:19,860 --> 00:30:22,010 DOD internal number. 400 00:30:22,080 --> 00:30:26,470 So we convert that the background color has to become orange. 401 00:30:26,550 --> 00:30:32,440 The animation option has to become flip from left and that's why it is obviously fast tight. 402 00:30:32,550 --> 00:30:34,380 So that is flipping something. 403 00:30:34,380 --> 00:30:38,480 If this is the first time we are clicking now let's call it a bit higher. 404 00:30:38,490 --> 00:30:41,880 Let's go to this part where you have to flip for the second time. 405 00:30:42,120 --> 00:30:44,620 I'm actually going to copy everything from here. 406 00:30:44,670 --> 00:30:50,350 I think I forgot to add a Yes because that's also a value that is optional. 407 00:30:50,490 --> 00:30:57,660 So I want to copy everything from here instead of the reveal and compare the keyboard being compared. 408 00:30:57,810 --> 00:31:01,830 So I'm going to say instead of compare false compare is true. 409 00:31:02,130 --> 00:31:03,600 And if we are flipping. 410 00:31:03,600 --> 00:31:07,240 Second time this time again flip from left. 411 00:31:07,260 --> 00:31:12,620 That's going to be the way that is top tie that internal number of internal image. 412 00:31:12,630 --> 00:31:17,730 They both get passed through into our Flip function and that's all we have to do here. 413 00:31:17,760 --> 00:31:22,720 Now we have some other things that we have to address and those are here. 414 00:31:23,010 --> 00:31:30,270 If we did want to compare someone with the compare function and in the compare function we now have 415 00:31:30,270 --> 00:31:36,150 these four different things that we just don't have them anymore and we have to rewrite them using the 416 00:31:36,150 --> 00:31:37,380 new flip. 417 00:31:37,380 --> 00:31:43,500 So what I'm going to say flip and let's do all of it in one go. 418 00:31:45,860 --> 00:31:52,160 So if these two lines are the same it means we succeeded in finding what we want to do. 419 00:31:52,160 --> 00:31:59,890 We want to flip the first tile using a UI animation view not left a gain the same or there. 420 00:32:00,050 --> 00:32:02,880 We want to make the gun color become green. 421 00:32:03,010 --> 00:32:06,430 We want to make sure the text on it shows this smiley face. 422 00:32:06,440 --> 00:32:16,430 So that value becomes this like you and that's going to be called my tyed dot smile text and the image 423 00:32:16,430 --> 00:32:16,810 for it. 424 00:32:16,820 --> 00:32:23,420 If you're using the image it becomes my title not take image. 425 00:32:24,030 --> 00:32:24,960 I am g. 426 00:32:25,140 --> 00:32:28,100 And we don't have to compare anymore. 427 00:32:28,400 --> 00:32:36,140 So that's for the first time I'm going to copy this entire piece of code pasted in here and say that 428 00:32:36,140 --> 00:32:38,560 becomes for the second time. 429 00:32:38,600 --> 00:32:44,920 So so far in the comp here if they were of the same nature if they had the same internal number we flip 430 00:32:44,930 --> 00:32:49,980 most of them back and it's giving me again a warning saying that the take you make it something down 431 00:32:50,330 --> 00:32:58,750 is optional you have to force on rapid and I'm going to say OK I'll do that and that's about that then 432 00:32:58,880 --> 00:33:00,580 they have to go to the sport of it. 433 00:33:00,580 --> 00:33:02,530 What if they were not the same. 434 00:33:02,560 --> 00:33:05,960 And we have to flip them back to what they used to be. 435 00:33:06,010 --> 00:33:09,850 So I'm going to paste that code in here again which is this one 436 00:33:13,590 --> 00:33:18,830 and I'm going to say let's say for the first time first even though it doesn't really matter. 437 00:33:18,850 --> 00:33:28,390 Flip it from right and then make the background color become dark gray and you know sort of the smiley 438 00:33:28,390 --> 00:33:28,820 text. 439 00:33:28,830 --> 00:33:35,100 Show me the question text and stuff that he made Show me the question image. 440 00:33:35,380 --> 00:33:42,610 So if we compare it and they were not the same go back to the question make or the question text and 441 00:33:42,610 --> 00:33:43,180 of course. 442 00:33:43,180 --> 00:33:49,720 Copy this one more time and place it for the second time do the same thing in here if you want wanted 443 00:33:49,720 --> 00:33:50,730 to push this. 444 00:33:50,730 --> 00:33:55,240 You could actually make the Philipe function to accept an array of times. 445 00:33:55,270 --> 00:33:57,780 I'll leave that to you guys to handle. 446 00:33:57,910 --> 00:34:00,340 So I think that's all I had to do in here. 447 00:34:00,340 --> 00:34:07,610 Let me quickly go through my code reformats some naming conventions just a little bit easier to read. 448 00:34:07,750 --> 00:34:09,850 Let's see if that's all we had to do. 449 00:34:10,030 --> 00:34:14,830 I'm going to get rid of the view control and replace it with divisi. 450 00:34:14,830 --> 00:34:16,990 So that's what we see. 451 00:34:17,020 --> 00:34:23,640 This is what we see plus reset said this is C plus touches and that this is a v c plus flip. 452 00:34:23,740 --> 00:34:35,680 This is Visi Plus compare then I have received plus state VC game want me see game type see. 453 00:34:35,760 --> 00:34:37,150 It's Hyams. 454 00:34:37,460 --> 00:34:42,330 VC randomise VC time action on ABC. 455 00:34:42,370 --> 00:34:42,880 You did. 456 00:34:42,890 --> 00:34:48,700 Lord let me quickly look at all the code and this kind of final review for all of us to make sure everything 457 00:34:48,700 --> 00:34:51,650 is working and then we can run the application. 458 00:34:51,670 --> 00:34:57,040 So when the application loads we have the VC that we have all these different variables and it you know 459 00:34:57,060 --> 00:34:58,090 reviewed it a lot. 460 00:34:58,090 --> 00:35:00,770 We just reset it in the Reset. 461 00:35:00,850 --> 00:35:04,130 We essentially go and set everything to their default values. 462 00:35:04,140 --> 00:35:11,580 Game Time 0 nor found tiles array are game one is hidden first line and second third and then compare 463 00:35:11,590 --> 00:35:12,650 Now as follows. 464 00:35:12,670 --> 00:35:14,060 And so on and so forth. 465 00:35:14,290 --> 00:35:21,470 And then we end up going to here which is important to make tiles in the make Times which is here now 466 00:35:21,490 --> 00:35:28,690 we can actually see that we are making the tiles from Mitoy based on a certain frame and based on the 467 00:35:28,690 --> 00:35:30,380 current game type. 468 00:35:30,430 --> 00:35:36,040 And as we make them based on the current game time what happens is depending on the game time whether 469 00:35:36,040 --> 00:35:42,520 it is text or image we add the text or that image view to our view. 470 00:35:42,670 --> 00:35:48,640 Once we did that in the touches and we end up checking for whether we have tapped on one of these objects 471 00:35:48,640 --> 00:35:50,560 from the type tile. 472 00:35:50,680 --> 00:35:57,280 And if that's the case we are going to flip them one of them Phillips compares the other one to Phillips 473 00:35:57,370 --> 00:36:04,510 and doesn't compare based on that we should they be able to see what we expected to see at the very 474 00:36:04,510 --> 00:36:05,590 very beginning. 475 00:36:05,590 --> 00:36:11,830 The other function that we added was the game type that switches the game type to a new value based 476 00:36:11,830 --> 00:36:15,410 on the roll value and calls the reset action. 477 00:36:15,460 --> 00:36:20,960 So everything else we haven't really done anything on them randomized stays the way it used to be timers 478 00:36:20,980 --> 00:36:23,500 stays exactly the way it used to be working. 479 00:36:23,500 --> 00:36:29,680 Let's go ahead and see if we have any errors and we already have an error or this value boolean value 480 00:36:29,680 --> 00:36:36,170 is saying compare and this is probably because of the name that I have used so it has to be self. 481 00:36:36,240 --> 00:36:41,810 Don't compare because I compare function is outside disclosure. 482 00:36:41,920 --> 00:36:43,680 So cells that compare. 483 00:36:44,080 --> 00:36:46,450 And then that's right again. 484 00:36:46,610 --> 00:36:49,950 And I think we should be ok this time if there are arrows. 485 00:36:49,990 --> 00:36:55,750 It's a very common thing that you might do a quote and you get a lot of arrows and that's nothing scary. 486 00:36:55,760 --> 00:36:59,130 We just have to go through the code and find out what is wrong. 487 00:36:59,140 --> 00:37:04,430 I'm very expecting for something to go wrong right now even though I have done this quote before. 488 00:37:04,480 --> 00:37:06,690 So let's cross our fingers. 489 00:37:06,700 --> 00:37:10,820 This is five and seven but nothing happened. 490 00:37:11,020 --> 00:37:12,330 Five and five. 491 00:37:12,370 --> 00:37:13,900 Everything is working. 492 00:37:13,930 --> 00:37:23,650 I'm going to see six five six ten and six and 3 and 2 and 14 and then I'm going to shy only one more 493 00:37:23,650 --> 00:37:24,000 time. 494 00:37:24,010 --> 00:37:25,670 And I couldn't find anything. 495 00:37:25,690 --> 00:37:28,470 Now I'm going to go to the e-mail type. 496 00:37:28,520 --> 00:37:33,650 I can actually compare the dog and the satellite and the dog. 497 00:37:33,780 --> 00:37:34,160 OK. 498 00:37:34,210 --> 00:37:35,470 That was the wrong one. 499 00:37:35,470 --> 00:37:40,180 The dog and the dog won and everything seems to be working the way we expected it. 500 00:37:40,210 --> 00:37:44,990 A lot of things we went through in this particularly the final lesson. 501 00:37:45,130 --> 00:37:50,500 I know it's a lot of different pieces of code you probably couldn't catch up at but sometimes because 502 00:37:50,500 --> 00:37:52,330 there is a lot of stuff going on. 503 00:37:52,630 --> 00:37:54,880 If you want it you can look at the code that I have. 504 00:37:54,880 --> 00:37:58,030 I have you know for that you will read this lesson. 505 00:37:58,390 --> 00:38:00,930 Watch this particular lesson a few times. 506 00:38:00,940 --> 00:38:07,160 If you are not sure how things are happening and yeah I think that's about that for this development. 507 00:38:07,390 --> 00:38:13,550 We have a game you can play in a four by four six five six or eight blades in two different ways. 508 00:38:13,600 --> 00:38:15,190 We covered a lot of Kyon's. 509 00:38:15,190 --> 00:38:17,320 We modify that of course. 510 00:38:17,440 --> 00:38:18,790 And I hope you enjoyed it. 511 00:38:18,790 --> 00:38:20,350 So good luck.