diff --git a/Assets/Scripts/Cauldron/Cauldron.cs b/Assets/Scripts/Cauldron/Cauldron.cs index 4415fbc..69b2e69 100644 --- a/Assets/Scripts/Cauldron/Cauldron.cs +++ b/Assets/Scripts/Cauldron/Cauldron.cs @@ -28,6 +28,9 @@ public void AddIngredient(IIngredient ingredient) return; } + // TODO: Add a check here to make sure that the fractions are of the same denominator + // (in other words, plants are the same type) + ingredients.Add(ingredient); value += ingredient.Value; diff --git a/Assets/Scripts/Utility/Fraction.cs b/Assets/Scripts/Utility/Fraction.cs index b97ef2c..a9d9cb8 100644 --- a/Assets/Scripts/Utility/Fraction.cs +++ b/Assets/Scripts/Utility/Fraction.cs @@ -1,3 +1,4 @@ +using FractionGame.Inputs; using UnityEngine; namespace FractionGame.Utility @@ -54,17 +55,42 @@ public override string ToString() public static Fraction operator +(Fraction a, Fraction b) { - int numerator = a.numerator * b.denominator + b.numerator * a.denominator; - int denominator = a.denominator * b.denominator; + int denominator = CalculateCommonDenominator(a, b); + int numerator = denominator / a.denominator * a.numerator + denominator / b.denominator * b.numerator; return new Fraction(numerator, denominator); } public static Fraction operator -(Fraction a, Fraction b) { - int numerator = a.numerator * b.denominator - b.numerator * a.denominator; - int denominator = a.denominator * b.denominator; - return new Fraction(numerator, denominator); + int denominator = CalculateCommonDenominator(a, b); + int numerator = denominator / a.denominator * a.numerator - denominator / b.denominator * b.numerator; + return new Fraction(numerator, denominator); } + /// + /// Returns the common denominator between two Fractions. + /// + /// + /// + /// + public static int CalculateCommonDenominator(Fraction a, Fraction b) + { + /* + * Cases: + * 1) a and b are the same + * 2) one number is a factor of the other + * 3) the two numbers need to be multiplied together to get the common denominator + */ + + int x = a.denominator; + int y = b.denominator; + + if (x == y || x % y == 0) + return x; + else if (y % x == 0) + return y; + else + return x * y; + } } } \ No newline at end of file diff --git a/Assets/Tests/Test Sprites/plant_dog.png.meta b/Assets/Tests/Test Sprites/plant_dog.png.meta index 8048e20..9bca1af 100644 --- a/Assets/Tests/Test Sprites/plant_dog.png.meta +++ b/Assets/Tests/Test Sprites/plant_dog.png.meta @@ -37,7 +37,7 @@ TextureImporter: maxTextureSize: 2048 textureSettings: serializedVersion: 2 - filterMode: 1 + filterMode: 0 aniso: 1 mipBias: 0 wrapU: 1 @@ -96,6 +96,19 @@ TextureImporter: ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: diff --git a/Assets/Tests/Test Sprites/roslinka.png.meta b/Assets/Tests/Test Sprites/roslinka.png.meta index d75f6fa..e66642b 100644 --- a/Assets/Tests/Test Sprites/roslinka.png.meta +++ b/Assets/Tests/Test Sprites/roslinka.png.meta @@ -37,7 +37,7 @@ TextureImporter: maxTextureSize: 2048 textureSettings: serializedVersion: 2 - filterMode: 1 + filterMode: 0 aniso: 1 mipBias: 0 wrapU: 1 @@ -96,6 +96,19 @@ TextureImporter: ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: