Skip to content

Commit e356928

Browse files
committed
ingredients inheritance
1 parent 5ac71a1 commit e356928

File tree

8 files changed

+188
-18
lines changed

8 files changed

+188
-18
lines changed

Assets/Scenes/Coffee.unity

Lines changed: 137 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,85 @@ CanvasRenderer:
295295
m_PrefabAsset: {fileID: 0}
296296
m_GameObject: {fileID: 143508834}
297297
m_CullTransparentMesh: 1
298+
--- !u!1 &322253148
299+
GameObject:
300+
m_ObjectHideFlags: 0
301+
m_CorrespondingSourceObject: {fileID: 0}
302+
m_PrefabInstance: {fileID: 0}
303+
m_PrefabAsset: {fileID: 0}
304+
serializedVersion: 6
305+
m_Component:
306+
- component: {fileID: 322253149}
307+
- component: {fileID: 322253151}
308+
- component: {fileID: 322253150}
309+
m_Layer: 5
310+
m_Name: IngredientsDisplay
311+
m_TagString: Untagged
312+
m_Icon: {fileID: 0}
313+
m_NavMeshLayer: 0
314+
m_StaticEditorFlags: 0
315+
m_IsActive: 1
316+
--- !u!224 &322253149
317+
RectTransform:
318+
m_ObjectHideFlags: 0
319+
m_CorrespondingSourceObject: {fileID: 0}
320+
m_PrefabInstance: {fileID: 0}
321+
m_PrefabAsset: {fileID: 0}
322+
m_GameObject: {fileID: 322253148}
323+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
324+
m_LocalPosition: {x: 0, y: 0, z: 0}
325+
m_LocalScale: {x: 1, y: 1, z: 1}
326+
m_Children: []
327+
m_Father: {fileID: 922667319}
328+
m_RootOrder: 3
329+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
330+
m_AnchorMin: {x: 0.5, y: 0.5}
331+
m_AnchorMax: {x: 0.5, y: 0.5}
332+
m_AnchoredPosition: {x: 0, y: -350}
333+
m_SizeDelta: {x: 300, y: 120}
334+
m_Pivot: {x: 0.5, y: 0.5}
335+
--- !u!114 &322253150
336+
MonoBehaviour:
337+
m_ObjectHideFlags: 0
338+
m_CorrespondingSourceObject: {fileID: 0}
339+
m_PrefabInstance: {fileID: 0}
340+
m_PrefabAsset: {fileID: 0}
341+
m_GameObject: {fileID: 322253148}
342+
m_Enabled: 1
343+
m_EditorHideFlags: 0
344+
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
345+
m_Name:
346+
m_EditorClassIdentifier:
347+
m_Material: {fileID: 0}
348+
m_Color: {r: 1, g: 1, b: 1, a: 1}
349+
m_RaycastTarget: 1
350+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
351+
m_Maskable: 1
352+
m_OnCullStateChanged:
353+
m_PersistentCalls:
354+
m_Calls: []
355+
m_FontData:
356+
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
357+
m_FontSize: 30
358+
m_FontStyle: 1
359+
m_BestFit: 0
360+
m_MinSize: 3
361+
m_MaxSize: 40
362+
m_Alignment: 4
363+
m_AlignByGeometry: 0
364+
m_RichText: 1
365+
m_HorizontalOverflow: 1
366+
m_VerticalOverflow: 0
367+
m_LineSpacing: 1
368+
m_Text:
369+
--- !u!222 &322253151
370+
CanvasRenderer:
371+
m_ObjectHideFlags: 0
372+
m_CorrespondingSourceObject: {fileID: 0}
373+
m_PrefabInstance: {fileID: 0}
374+
m_PrefabAsset: {fileID: 0}
375+
m_GameObject: {fileID: 322253148}
376+
m_CullTransparentMesh: 1
298377
--- !u!1 &363272565
299378
GameObject:
300379
m_ObjectHideFlags: 0
@@ -413,7 +492,8 @@ MonoBehaviour:
413492
m_Script: {fileID: 11500000, guid: df84e7550d68e2a43b6af090b3e80e35, type: 3}
414493
m_Name:
415494
m_EditorClassIdentifier:
416-
textDisplay: {fileID: 143508836}
495+
coffeeText: {fileID: 143508836}
496+
coffeeIngredientsText: {fileID: 322253150}
417497
--- !u!1 &746872258
418498
GameObject:
419499
m_ObjectHideFlags: 0
@@ -532,7 +612,8 @@ MonoBehaviour:
532612
m_Script: {fileID: 11500000, guid: 05cdf4ea1712d0144b56e9a624b103db, type: 3}
533613
m_Name:
534614
m_EditorClassIdentifier:
535-
textDisplay: {fileID: 143508836}
615+
coffeeText: {fileID: 143508836}
616+
coffeeIngredientsText: {fileID: 322253150}
536617
--- !u!1 &922667315
537618
GameObject:
538619
m_ObjectHideFlags: 0
@@ -627,6 +708,7 @@ RectTransform:
627708
- {fileID: 1653272468}
628709
- {fileID: 1568914574}
629710
- {fileID: 143508835}
711+
- {fileID: 322253149}
630712
m_Father: {fileID: 0}
631713
m_RootOrder: 2
632714
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -753,7 +835,8 @@ MonoBehaviour:
753835
m_Script: {fileID: 11500000, guid: 9117a4609b90c964c9da6ee73849e323, type: 3}
754836
m_Name:
755837
m_EditorClassIdentifier:
756-
textDisplay: {fileID: 143508836}
838+
coffeeText: {fileID: 143508836}
839+
coffeeIngredientsText: {fileID: 322253150}
757840
--- !u!1 &1067749784
758841
GameObject:
759842
m_ObjectHideFlags: 0
@@ -765,6 +848,8 @@ GameObject:
765848
- component: {fileID: 1067749785}
766849
- component: {fileID: 1067749787}
767850
- component: {fileID: 1067749786}
851+
- component: {fileID: 1067749789}
852+
- component: {fileID: 1067749788}
768853
m_Layer: 5
769854
m_Name: glass-coffee-irish
770855
m_TagString: Untagged
@@ -829,6 +914,49 @@ CanvasRenderer:
829914
m_PrefabAsset: {fileID: 0}
830915
m_GameObject: {fileID: 1067749784}
831916
m_CullTransparentMesh: 0
917+
--- !u!114 &1067749788
918+
MonoBehaviour:
919+
m_ObjectHideFlags: 0
920+
m_CorrespondingSourceObject: {fileID: 0}
921+
m_PrefabInstance: {fileID: 0}
922+
m_PrefabAsset: {fileID: 0}
923+
m_GameObject: {fileID: 1067749784}
924+
m_Enabled: 1
925+
m_EditorHideFlags: 0
926+
m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3}
927+
m_Name:
928+
m_EditorClassIdentifier:
929+
m_Delegates:
930+
- eventID: 2
931+
callback:
932+
m_PersistentCalls:
933+
m_Calls:
934+
- m_Target: {fileID: 1067749789}
935+
m_TargetAssemblyTypeName: Coffee, Assembly-CSharp
936+
m_MethodName: DisplayInfo
937+
m_Mode: 1
938+
m_Arguments:
939+
m_ObjectArgument: {fileID: 0}
940+
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
941+
m_IntArgument: 0
942+
m_FloatArgument: 0
943+
m_StringArgument:
944+
m_BoolArgument: 0
945+
m_CallState: 2
946+
--- !u!114 &1067749789
947+
MonoBehaviour:
948+
m_ObjectHideFlags: 0
949+
m_CorrespondingSourceObject: {fileID: 0}
950+
m_PrefabInstance: {fileID: 0}
951+
m_PrefabAsset: {fileID: 0}
952+
m_GameObject: {fileID: 1067749784}
953+
m_Enabled: 1
954+
m_EditorHideFlags: 0
955+
m_Script: {fileID: 11500000, guid: c483940573e33f04ea9f3f08534a4996, type: 3}
956+
m_Name:
957+
m_EditorClassIdentifier:
958+
coffeeText: {fileID: 143508836}
959+
coffeeIngredientsText: {fileID: 322253150}
832960
--- !u!1 &1176795610
833961
GameObject:
834962
m_ObjectHideFlags: 0
@@ -840,8 +968,8 @@ GameObject:
840968
- component: {fileID: 1176795611}
841969
- component: {fileID: 1176795613}
842970
- component: {fileID: 1176795612}
843-
- component: {fileID: 1176795615}
844971
- component: {fileID: 1176795614}
972+
- component: {fileID: 1176795615}
845973
m_Layer: 5
846974
m_Name: coffee-cup-large
847975
m_TagString: Untagged
@@ -918,7 +1046,8 @@ MonoBehaviour:
9181046
m_Script: {fileID: 11500000, guid: aecfa2de7cdfb124a8d62a58c87e1367, type: 3}
9191047
m_Name:
9201048
m_EditorClassIdentifier:
921-
textDisplay: {fileID: 143508836}
1049+
coffeeText: {fileID: 143508836}
1050+
coffeeIngredientsText: {fileID: 322253150}
9221051
--- !u!114 &1176795615
9231052
MonoBehaviour:
9241053
m_ObjectHideFlags: 0
@@ -1405,8 +1534,8 @@ GameObject:
14051534
- component: {fileID: 1766519229}
14061535
- component: {fileID: 1766519231}
14071536
- component: {fileID: 1766519230}
1408-
- component: {fileID: 1766519233}
14091537
- component: {fileID: 1766519232}
1538+
- component: {fileID: 1766519233}
14101539
m_Layer: 5
14111540
m_Name: cuppucino-cup-large
14121541
m_TagString: Untagged
@@ -1483,7 +1612,8 @@ MonoBehaviour:
14831612
m_Script: {fileID: 11500000, guid: dc80499be79606c4985664dcdbb8405d, type: 3}
14841613
m_Name:
14851614
m_EditorClassIdentifier:
1486-
textDisplay: {fileID: 143508836}
1615+
coffeeText: {fileID: 143508836}
1616+
coffeeIngredientsText: {fileID: 322253150}
14871617
--- !u!114 &1766519233
14881618
MonoBehaviour:
14891619
m_ObjectHideFlags: 0

Assets/Scripts/BlackCoffee.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,11 @@ public class BlackCoffee : Coffee
77
void Start()
88
{
99
CoffeeType = "Black Coffee";
10+
Ingredients();
11+
}
12+
13+
public override void Ingredients()
14+
{
15+
CoffeeIngredients = new string[] {"Coffee"};
1016
}
1117
}

Assets/Scripts/BlackCoffeeSmall.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,9 @@ void Start()
88
{
99
CoffeeType = "Black Coffee";
1010
CoffeeSize = "Small";
11+
Ingredients(); // Call method inherited from BlackCoffee
1112
}
13+
14+
/* Because a BlackCoffeeSmall has the same ingredients as a regular BlackCoffee
15+
(parent class), no need to override the Ingredients() method here */
1216
}

Assets/Scripts/Cappucino.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,11 @@ public class Cappucino : Coffee
77
void Start()
88
{
99
CoffeeType = "Cappucino";
10+
Ingredients();
11+
}
12+
13+
public override void Ingredients()
14+
{
15+
CoffeeIngredients = new string[] {"Espresso", "Steamed milk"};
1016
}
1117
}

Assets/Scripts/CappucinoSmall.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,9 @@ void Start()
88
{
99
CoffeeType = "Cappucino";
1010
CoffeeSize = "Small";
11+
Ingredients(); // Call method inherited from Cappucino
1112
}
13+
14+
/* Because CappucinoSmall has the same ingredients as a regular Cappucino
15+
(parent class), no need to override the Ingredients() method here */
1216
}

Assets/Scripts/Coffee.cs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,42 @@
33
using UnityEngine;
44
using UnityEngine.UI;
55

6-
public class Coffee : MonoBehaviour
6+
public abstract class Coffee : MonoBehaviour
77
{
88
string coffeeType;
99
string coffeeSize;
10-
bool isHot; // Display hot/cold type of coffee
11-
public Text textDisplay;
10+
string[] coffeeIngredients;
11+
public Text coffeeText;
12+
public Text coffeeIngredientsText;
1213

1314
public string CoffeeType { get { return coffeeType; } set { coffeeType = value; } } // Encapsulation
1415
public string CoffeeSize { get { return coffeeSize; } set { coffeeSize = value; } }
15-
public bool IsHot { get { return isHot; } set { isHot = value; } }
16+
public string[] CoffeeIngredients { get { return coffeeIngredients; } set { coffeeIngredients = value; }}
1617

17-
public virtual void DisplayInfo()
18+
public void DisplayInfo()
1819
{
1920
DisplayInfo(CoffeeType);
2021
}
2122

23+
public abstract void Ingredients(); // Polymorphism: coffeeIngredients must be overriden because each subclass has its own ingredients
24+
2225
public void DisplayInfo(string CoffeeType) // Abstraction
2326
{
24-
textDisplay.text = $"{CoffeeType}";
27+
// Manages how the coffeeType is displayed regardless of the subclass
28+
coffeeText.text = $"{CoffeeType}";
2529
if (CoffeeSize != null)
2630
{
27-
textDisplay.text += $" ({CoffeeSize})";
31+
coffeeText.text += $" ({CoffeeSize})";
2832
}
29-
}
3033

31-
private void OnMouseDown()
32-
{
33-
DisplayInfo();
34+
// Manages how the contents of string[] coffeIngredients are displayed regardless of the subclass
35+
coffeeIngredientsText.text = "";
36+
if (CoffeeIngredients != null)
37+
{
38+
foreach (string ingredient in CoffeeIngredients)
39+
{
40+
coffeeIngredientsText.text += $" {ingredient}\n"; // \n : Line break
41+
}
42+
}
3443
}
3544
}

Assets/Scripts/IrishCoffee.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,11 @@ public class IrishCoffee : Coffee
77
void Start()
88
{
99
CoffeeType = "Irish Coffee";
10+
Ingredients();
11+
}
12+
13+
public override void Ingredients()
14+
{
15+
CoffeeIngredients = new string[] {"Coffee", "Whisky", "Sugar", "Cream"};
1016
}
1117
}

Assets/Scripts/LatteMacchiato.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,10 @@ public class LatteMacchiato : Coffee
77
void Start()
88
{
99
CoffeeType = "Latte Macchiato";
10+
Ingredients();
11+
}
12+
public override void Ingredients()
13+
{
14+
CoffeeIngredients = new string[] {"Espresso", "Steamed milk", "Milk foam"};
1015
}
1116
}

0 commit comments

Comments
 (0)