예제 #1
0
 public Behavior(Behavior otherBehavior)
 {
     Tag        = otherBehavior.Tag;
     Table      = otherBehavior.Table;
     Cycle      = new LifeCycle(otherBehavior.Cycle);
     Properties = new LifeProperties(otherBehavior.Properties);
 }
예제 #2
0
 public Behavior(BehaviorTag tag)
 {
     Tag        = tag;
     Table      = new ReactionTable();
     Cycle      = new LifeCycle();
     Properties = new LifeProperties();
 }
예제 #3
0
 public static ReactionTable GetInstance()
 {
     if (instance == null)
     {
         instance = new ReactionTable();
     }
     return(instance);
 }
예제 #4
0
        public ReactionPopUp(int ArticleID_, bool Reacted_, ReactionTable RT_, NewsPage NP)
        {
            ArticleID = ArticleID_;
            RT        = RT_;
            Reacted   = Reacted_;
            activeNP  = NP;

            InitializeComponent();
        }
예제 #5
0
        public void ReactionCheck()
        {
            if (App.LoggedinUser != null)
            {
                var Reactions = App.database.GetReactionsFromArticle(rssTable.ID);

                foreach (ReactionTable Reaction in Reactions)
                {
                    if (Reaction.User == App.LoggedinUser.ID)
                    {
                        Reacted = true;
                        CR      = Reaction;

                        //Hur du reagerat
                        ReactionImage.Source = "reactions_" + Reaction.Reaktion + ".png";
                        break;
                    }
                    else
                    {
                        ReactionImage.Source = "reactions_gray.png";
                    }
                }

                int MaxValue   = 0;
                int MostPicked = 0;

                for (int i = 0; i < 8; i++)
                {
                    int CurValue = 0;
                    foreach (ReactionTable Reaction in Reactions)
                    {
                        if (Reaction.Reaktion == i)
                        {
                            CurValue++;
                        }
                    }
                    if (CurValue > MaxValue)
                    {
                        MaxValue   = CurValue;
                        MostPicked = i;
                    }
                }
                ReactionsOthers1.Source = "reactions_" + MostPicked + ".png";

                ReactionsOthersText.Text = MaxValue.ToString();
            }
        }
예제 #6
0
        public void SelectReaction(object sender, EventArgs e)
        {
            //What happens when selecting a reaction, accessing the server,
            //creating new reaction on the table,
            //changing grafiks on newspage and/or newsfeed!
            var BT = (Button)sender;

            if (ArticleID != -1)
            {
                var NRT = new ReactionTable
                {
                    User     = App.LoggedinUser.ID,
                    Article  = ArticleID,
                    Reaktion = Convert.ToInt32(BT.ClassId)
                };

                if (Reacted)
                {
                    App.database.DeleteReaction(RT);
                    if (RT.Reaktion != NRT.Reaktion)
                    {
                        if (activeNP != null)
                        {
                            activeNP.ReactionCheck();
                        }

                        App.database.InsertReaction(NRT);
                    }
                }
                else
                {
                    App.database.InsertReaction(NRT);
                }
                if (activeNP != null)
                {
                    activeNP.ReactionImage.Source = "reactions_" + NRT.Reaktion + ".png";
                }
            }
            //Then close window, as you can only select one reaction at a time
            ClosePopup(sender, e);
        }
예제 #7
0
	// Use this for initialization
	void Start () {
		// Instantiate internal managers
		gui = gameObject.AddComponent<GUIManager>();
        musicManager = (GameObject) Instantiate(Resources.Load(ResourcePaths.musicManager), Vector3.zero, Quaternion.identity);
        musicManager.transform.SetParent(transform);
        soundManager = (GameObject) Instantiate(Resources.Load(ResourcePaths.soundManager), Vector3.zero, Quaternion.identity);
        soundManager.transform.SetParent(transform);
        music = musicManager.GetComponent<MusicManager>();
        sound = soundManager.GetComponent<SoundManager>();
        objects = gameObject.AddComponent<ObjectManager>();
		levels = gameObject.AddComponent<LevelGenerator>();
        art = gameObject.GetComponent<LayerManager>();
		reactionTable = new ReactionTable();

        if(layerTracks.Length > 0)
        {
            music.clips = layerTracks;
        }
        //Find camera if not explicitly done in the Editor (this is a failsafe.. shouldn't rely on this)
        if (!mainCamera)
        {
            mainCamera = GameObject.Find("Main Camera");
        }

        // Start first level
        state = GameState.loading;
        PopulateReactionTable();

        //This is just so the old "Gameplay" scene doesn't break
        #pragma warning disable 0618 // Type or member is obsolete
        if(Application.loadedLevelName == "Gameplay")
        {
            worldProperties = gameObject.AddComponent<WorldProperties>();
            levels.CreateSampleLevel();

            // Set the camera to follow the game's player
            mainCamera.GetComponent<CameraFollow>().SetPlayer(ref worldProperties.player);
        }
        #pragma warning restore 0618 // Type or member is obsolete
    }
예제 #8
0
        async void ReactionButtonClicked(object sender, System.EventArgs e) //Sends an reaction object to the server on this article based on what the user pressed on.
        {
            Button b = (Button)sender;

            var ID = Convert.ToInt32(b.ClassId);

            var           UserReactions = App.database.GetReactionsFromUser(App.LoggedinUser.ID);
            bool          Reacted       = false;
            ReactionTable CR            = null;

            foreach (ReactionTable Reaction in UserReactions)
            {
                if (Reaction.Article == ID)
                {
                    Reacted = true;
                    CR      = Reaction;
                    break;
                }
            }
            ReactionPopUp rp = new ReactionPopUp(ID, Reacted, CR, null);
            await PopupNavigation.Instance.PushAsync(rp);
        }
예제 #9
0
        //The article is loaded in, and the article text, date, author, tags, reactions, and comment sections are defined, modified, and added to the page.
        void LoadNews(RSSTable RSS)
        {
            ArticleNR    = RSS.ID;
            Rubrik.Text  = RSS.Title.Replace("*", "-").Replace("&quot;", "'");
            Ingress.Text = RSS.Description.Replace("*", "-").Replace("&quot;", "'");
            string datePub = RSS.PubDate.ToString();

            for (int i = 0; i < 3; i++)
            {
                datePub = datePub.Remove(datePub.Length - 1);
            }
            Top.Text = datePub + "   " + RSS.Source;
            if (RSS.Author == "Ingen Byline")
            {
                Author.Text = "";
            }
            else
            {
                Author.TextColor = Color.FromHex("#649FD4");
                Author.Text      = "Av: " + RSS.Author;
            }

            Location.TextColor = Color.FromHex("#649FD4");
            switch (RSS.Tag)
            {
            case "Skövde":
                Location.Text = "Plats: Skövde";
                break;

            case "Tibro":
                Location.Text = "Plats: Tibro";
                break;

            case "Falköping":
                Location.Text = "Plats: Falköping";
                break;

            case "Karlsborg":
                Location.Text = "Plats: Karlsborg";
                break;
            }
            switch (RSS.Category)
            {
            case "Skövde":
                Location.Text = "Plats: Skövde";
                break;

            case "Tibro":
                Location.Text = "Plats: Tibro";
                break;

            case "Falköping":
                Location.Text = "Plats: Falköping";
                break;

            case "Karlsborg":
                Location.Text = "Plats: Karlsborg";
                break;
            }

            Title = RSS.Category;

            if (RSS.Tag.Length > 20)
            {
                //Tags.Text = "";
            }
            else if (RSS.Tag != "")
            {
                //Tags.Text = "Tags: " + RSS.Tag + "  ";
            }
            else
            {
                //Tags.Text = "";
            }

            var TGR = new TapGestureRecognizer
            {
                NumberOfTapsRequired = 1
            };

            TGR.Tapped += (s, e) => {
                IsEnabled = false;
                IsEnabled = true;
            };
            Author.GestureRecognizers.Add(TGR);

            ArticleImage.Source = RSS.ImgSource;


            var Order     = JsonConvert.DeserializeObject <List <int> >(RSS.Ordning);
            var Text      = JsonConvert.DeserializeObject <List <string> >(RSS.Text);
            var Images    = JsonConvert.DeserializeObject <List <string> >(RSS.Images);
            var ImageText = JsonConvert.DeserializeObject <List <string> >(RSS.Imagetext);

            int Count      = 0;
            int TextCount  = 0;
            int ImageCount = 0;

            var Reactions = App.database.GetReactionsFromArticle(RSS.ID);

            foreach (ReactionTable Reaction in Reactions)
            {
                if (Reaction.User == App.LoggedinUser.ID)
                {
                    Reacted = true;
                    CR      = Reaction;
                    break;
                }
            }

            var ReactionBackground = new BoxView
            {
                CornerRadius      = 0,
                Margin            = 0,
                BackgroundColor   = App.MC,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand,
            };

            //Reaction buttons
            var ReactionButton = new Button
            {
                CornerRadius      = 0,
                BorderWidth       = 0,
                Margin            = 0,
                BackgroundColor   = Color.Transparent,
                BorderColor       = Color.LightGray,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                Text      = "",
                FontSize  = 20,
                TextColor = Color.LightGray,
            };

            ReactionButton.Clicked += ReactionButtonClicked;
            ReactionImage           = new Image
            {
                Source            = "reactions_gray",
                Margin            = 0,
                BackgroundColor   = Color.Transparent,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                WidthRequest      = 50,
                HeightRequest     = 50,
            };
            var ReactionBar1 = new BoxView
            {
                CornerRadius      = 1,
                Margin            = 5,
                BackgroundColor   = Color.Red,
                HorizontalOptions = LayoutOptions.EndAndExpand,
                VerticalOptions   = LayoutOptions.End,
                WidthRequest      = Application.Current.MainPage.Width / 2 * 1f,
                HeightRequest     = 5,
            };
            var ReactionBar2 = new BoxView
            {
                CornerRadius      = 1,
                Margin            = 5,
                BackgroundColor   = Color.Blue,
                HorizontalOptions = LayoutOptions.EndAndExpand,
                VerticalOptions   = LayoutOptions.End,
                WidthRequest      = Application.Current.MainPage.Width / 2 * 0.4f,
                HeightRequest     = 5,
            };
            var ReactionBar3 = new BoxView
            {
                CornerRadius      = 1,
                Margin            = 0,
                BackgroundColor   = Color.Yellow,
                HorizontalOptions = LayoutOptions.EndAndExpand,
                VerticalOptions   = LayoutOptions.End,
                WidthRequest      = Application.Current.MainPage.Width / 2 * 0.1f,
                HeightRequest     = 5,
            };

            ReactionsOthers1 = new Image
            {
                Source            = "reactions_4",
                Margin            = 10,
                BackgroundColor   = Color.Transparent,
                HorizontalOptions = LayoutOptions.Start,
                VerticalOptions   = LayoutOptions.Center,
                WidthRequest      = 30,
                HeightRequest     = 30,
            };
            var ReactionsOthers2 = new Image
            {
                Source            = "reactions_2",
                Margin            = 10,
                BackgroundColor   = Color.Transparent,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                WidthRequest      = 30,
                HeightRequest     = 30,
            };
            var ReactionsOthers3 = new Image
            {
                Source            = "reactions_0",
                Margin            = 10,
                BackgroundColor   = Color.Transparent,
                HorizontalOptions = LayoutOptions.Start,
                VerticalOptions   = LayoutOptions.Center,
                WidthRequest      = 30,
                HeightRequest     = 30,
            };

            ReactionsOthersText = new Label
            {
                Text              = Reactions.Count.ToString(),
                TextColor         = Color.Black,
                FontSize          = 20,
                Margin            = 0,
                BackgroundColor   = Color.Transparent,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
            };

            foreach (int Type in Order) //For loop that decided which order the images and the body text will be arranged in
            {
                if (Type == 0)          //If Text
                {
                    ArticleGrid.RowDefinitions.Add(new RowDefinition {
                        Height = GridLength.Auto
                    });



                    var Label = new Label
                    {
                        Text = Text[TextCount].Replace("*", "-").Replace("&quot;", "'"),
                        HorizontalTextAlignment = TextAlignment.Start,
                        VerticalTextAlignment   = TextAlignment.Start,
                        FontSize  = 16,
                        TextColor = Color.Black,
                        Margin    = new Thickness(0, 0, 5, 10)
                    };
                    ArticleGrid.Children.Add(Label, 1, 4, Row, Row + 1);
                    Row++;
                    Count++;
                    TextCount++;
                }
                else if (Type == 1) //If Image
                {
                    var IMGText = new Label
                    {
                        Text = ImageText[ImageCount].Replace("*", "-"),
                        HorizontalOptions       = LayoutOptions.Start,
                        VerticalOptions         = LayoutOptions.Start,
                        HorizontalTextAlignment = TextAlignment.Start,
                        VerticalTextAlignment   = TextAlignment.Start,
                        FontSize  = 14,
                        TextColor = Color.Gray,
                        Margin    = new Thickness(0, 10, 0, 20)
                    };

                    if (Topimg == true)
                    {
                        Image img = new Image {
                            Source = Images[ImageCount]
                        };


                        ArticleImage.Source        = Images[ImageCount];
                        ArticleImage.HeightRequest = img.Height;
                        ArticleImage.WidthRequest  = 300;
                        ArticleGrid.Children.Add(IMGText, 1, 4, 5, 6);
                        Topimg = false;
                    }
                    else
                    {
                        var Image = new Image
                        {
                            WidthRequest  = 200,
                            HeightRequest = 300,
                            Aspect        = Aspect.AspectFill,
                            Margin        = 5,
                        };

                        ArticleGrid.RowDefinitions.Add(new RowDefinition {
                            Height = GridLength.Auto
                        });
                        ArticleGrid.RowDefinitions.Add(new RowDefinition {
                            Height = GridLength.Auto
                        });
                        ArticleGrid.RowDefinitions.Add(new RowDefinition {
                            Height = GridLength.Auto
                        });
                        Image.Source = Images[ImageCount];
                        ArticleGrid.Children.Add(Image, 0, 5, Row, Row + 1);
                        ArticleGrid.Children.Add(IMGText, 1, 4, Row + 1, Row + 2);
                        Row++;
                        Row++;
                        Row++;
                    }
                    Count++;
                    ImageCount++;
                }
            }
            string[] Categories = RSS.Category.Split(new[] { ", " }, StringSplitOptions.None);
            string[] Tags       = RSS.Tag.Split(new[] { ", " }, StringSplitOptions.None);

            int TagRow = 0;

            foreach (String Category in Categories) //Display all the articles categories
            {
                var Box = new Button
                {
                    CornerRadius      = 10,
                    Margin            = 2,
                    BackgroundColor   = Color.Transparent,
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    VerticalOptions   = LayoutOptions.FillAndExpand,
                    ClassId           = Category,
                };
                Box.Clicked += CategoryButtonClicked;

                var EmptyAddedBox = new Image
                {
                    Source            = "Icon_Heart_red",
                    Margin            = 10,
                    BackgroundColor   = Color.Transparent,
                    HorizontalOptions = LayoutOptions.End,
                    VerticalOptions   = LayoutOptions.Center,
                    ClassId           = Category,
                    WidthRequest      = 30,
                    HeightRequest     = 30,
                };

                var AddedBox = new Image
                {
                    Source            = "Icon_Heart_Full",
                    Margin            = 10,
                    BackgroundColor   = Color.Transparent,
                    HorizontalOptions = LayoutOptions.End,
                    VerticalOptions   = LayoutOptions.Center,
                    ClassId           = Category,
                    WidthRequest      = 30,
                    HeightRequest     = 30,
                };
                var Line = new Button
                {
                    Margin            = 0,
                    BackgroundColor   = App.MC,
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    VerticalOptions   = LayoutOptions.Start,
                    ClassId           = Category,
                    HeightRequest     = 1,
                };

                var Comment = new Label
                {
                    Text = Category,
                    HorizontalTextAlignment = TextAlignment.Start,
                    VerticalTextAlignment   = TextAlignment.Center,
                    HorizontalOptions       = LayoutOptions.Start,
                    TextColor        = Color.Black,
                    FontSize         = 16,
                    WidthRequest     = 290,
                    Margin           = 20,
                    InputTransparent = true,
                };
                TagGrid.RowDefinitions.Add(new RowDefinition {
                    Height = GridLength.Auto
                });

                TagGrid.Children.Add(EmptyAddedBox, 0, 6, TagRow, TagRow + 1);
                TagGrid.Children.Add(Line, 0, 6, TagRow, TagRow + 1);
                TagGrid.Children.Add(Box, 0, 6, TagRow, TagRow + 1);

                if (App.SideMenu.Categories.Contains(Category))
                {
                    Box.IsEnabled = false;
                    TagGrid.Children.Add(AddedBox, 0, 6, TagRow, TagRow + 1);
                    AddedBox.IsEnabled = false;
                }
                TagGrid.Children.Add(Comment, 0, 6, TagRow, TagRow + 1);
                TagRow++;
            }

            foreach (String Tag in Tags) //Display all the articles tags
            {
                var Box = new Button
                {
                    CornerRadius      = 10,
                    Margin            = 2,
                    BackgroundColor   = Color.Transparent,
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    VerticalOptions   = LayoutOptions.FillAndExpand,
                    TextColor         = Color.Transparent,
                    ClassId           = Tag
                };
                Box.Clicked += TagButtonClicked;
                var EmptyAddedBox = new Image
                {
                    Source            = "Icon_Heart_red",
                    Margin            = 10,
                    BackgroundColor   = Color.Transparent,
                    HorizontalOptions = LayoutOptions.End,
                    VerticalOptions   = LayoutOptions.Center,
                    ClassId           = Tag,
                    WidthRequest      = 30,
                    HeightRequest     = 30,
                };
                var Line = new Button
                {
                    Margin            = 0,
                    BackgroundColor   = App.MC,
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    VerticalOptions   = LayoutOptions.Start,
                    ClassId           = Tag,
                    HeightRequest     = 1,
                };

                var AddedBox = new Image
                {
                    Source            = "Icon_Heart_Full",
                    Margin            = 10,
                    BackgroundColor   = Color.Transparent,
                    HorizontalOptions = LayoutOptions.End,
                    VerticalOptions   = LayoutOptions.Center,
                    ClassId           = Tag,
                    WidthRequest      = 30,
                    HeightRequest     = 30,
                };
                var Comment = new Label
                {
                    Text = Tag,
                    HorizontalTextAlignment = TextAlignment.Start,
                    VerticalTextAlignment   = TextAlignment.Center,
                    HorizontalOptions       = LayoutOptions.Start,
                    TextColor        = Color.Black,
                    FontSize         = 16,
                    WidthRequest     = 290,
                    Margin           = 20,
                    InputTransparent = true,
                };
                TagGrid.RowDefinitions.Add(new RowDefinition {
                    Height = GridLength.Auto
                });

                TagGrid.Children.Add(EmptyAddedBox, 0, 6, TagRow, TagRow + 1);
                TagGrid.Children.Add(Line, 0, 6, TagRow, TagRow + 1);
                TagGrid.Children.Add(Box, 0, 6, TagRow, TagRow + 1);

                if (App.SideMenu.Tags.Contains(Tag))
                {
                    Box.IsEnabled = false;
                    TagGrid.Children.Add(AddedBox, 0, 6, TagRow, TagRow + 1);
                    AddedBox.IsEnabled = false;
                }
                TagGrid.Children.Add(Comment, 0, 6, TagRow, TagRow + 1);
                TagRow++;
            }


            ArticleGrid.Children.Add(Author, 1, 2, Row, Row + 1);
            ArticleGrid.Children.Add(Location, 2, 4, Row, Row + 1);
            ArticleGrid.Children.Add(BG, 0, 5, 0, Row + 2);
            ArticleGrid.Children.Add(BackGround, 0, 5, Row + 2, Row + 4);
            ArticleGrid.Children.Add(BackGroundReactionTimerFavorites, 0, 5, Row + 2, Row + 4);
            ArticleGrid.Children.Add(TimerIcon, 2, 3, Row + 2, Row + 4);
            ArticleGrid.Children.Add(TimerButton, 2, 3, Row + 2, Row + 4);
            TimerButton.TextColor = Color.White;
            ArticleGrid.Children.Add(FavIcon, 3, 4, Row + 2, Row + 4);

            ArticleGrid.Children.Add(ReactionImage, 1, 2, Row + 2, Row + 4);       //Reaction
            ArticleGrid.Children.Add(ReactionButton, 1, 2, Row + 2, Row + 4);      //Reaction
            ArticleGrid.Children.Add(ReactionsOthers1, 1, 2, Row + 1, Row + 2);    //Reaction
            ArticleGrid.Children.Add(ReactionsOthersText, 1, 2, Row + 1, Row + 2); //Reaction

            if (App.Online)
            {
                LoadComments();
            }

            ArticleGrid.Children.Add(TagGrid, 0, 5, Row + 4, Row + 5);
            TagGrid.BackgroundColor          = Color.White;
            CommentListView.InputTransparent = true;
            TagGrid.IsVisible = true;
        }
    /*public Mixture(Compound _product, Reagent[] _leftovers) {
     *      this.product = _product;
     *      this.leftovers = _leftovers;
     * }*/

    //Creates a Mixture, completing the reaction
    public Mixture(Compound r1, Compound r2)
    {
        ReactionClass reaction = ReactionTable.GetInstance().GetReaction(r1.Formula, r2.Formula);

        if (reaction != null)
        {
            //Makes sure the reagents are being dealt in the correct order
            if (reaction.reagent1 != r1.Formula)
            {
                string aux = reaction.reagent1;
                reaction.reagent1 = reaction.reagent2;
                reaction.reagent2 = aux;

                int auxSt = reaction.stoichiometryR1;
                reaction.stoichiometryR1 = reaction.stoichiometryR2;
                reaction.stoichiometryR2 = auxSt;
            }
            product = CompoundFactory.GetInstance().GetCompound(reaction.mainProduct);

            //Calculates the limiting reagent
            float limitingFactor1 = ((r1.Molarity / 1000) * r1.Volume) / reaction.stoichiometryR1;
            float limitingFactor2 = ((r2.Molarity / 1000) * r2.Volume) / reaction.stoichiometryR2;
            Debug.Log("limit1 =" + limitingFactor1.ToString() + "; limit2 = " + limitingFactor2.ToString());

            float trueLimiting;
            float limitingStoichiometry;
            if (limitingFactor1 <= limitingFactor2)               //Case: limiting reagent is R1
            {
                trueLimiting          = limitingFactor1;
                limitingStoichiometry = reaction.stoichiometryR1;
                //Defining the order of reagents. The first is always the limiting reagent
                leftovers.Add(r1);
                leftovers.Add(r2);
            }
            else
            {
                trueLimiting          = limitingFactor2;
                limitingStoichiometry = reaction.stoichiometryR2;

                leftovers.Add(r2);
                leftovers.Add(r1);
            }

            //Calculating mass of product
            //mass = limiting mols consumed * (stoichiometry of product / limiting stoichiometry) * product molar mass
            float productMass = ((trueLimiting * limitingStoichiometry) * reaction.stoichiometryMainProduct / limitingStoichiometry) * product.MolarMass;
            //Calculating total amount of water
            waterVolume  = (r1.RealMass - ((r1.Molarity / 1000) * r1.Volume * r1.MolarMass)) / Compound.waterDensity;
            waterVolume += (r2.RealMass - ((r2.Molarity / 1000) * r2.Volume * r2.MolarMass)) / Compound.waterDensity;
            if (reaction.subProduct == "H2O")
            {
                waterVolume += (((trueLimiting * limitingStoichiometry) * (reaction.stoichiometrySubProduct / limitingStoichiometry)) * Compound.waterMolarMass) / Compound.waterDensity;
            }


            //Setting product's molarity
            product.Purity   = 1.0f;
            product.Molarity = ((product.Purity * product.Density) / product.MolarMass);
            product.RealMass = productMass;
            this.Volume      = r1.Volume + r2.Volume;        //TODO:For the time being, the final volume is the sum of both volumes

            //Setting leftovers's values
            leftovers[0].Purity   = 1.0f;
            leftovers[0].Molarity = 0.0f;
            leftovers[0].RealMass = 0.0f;
            leftovers[0].Density  = 0.0f;
            leftovers[0].Volume   = 0.0f;

            float massOfReagent = (leftovers[1].Molarity * (leftovers[1].Volume / 1000) * leftovers[1].MolarMass)
                                  - (((trueLimiting * limitingStoichiometry) * (reaction.stoichiometryR2 / limitingStoichiometry)) * leftovers[1].MolarMass); // Mass = previous mass of reagent - mass consumed;

            leftovers[1].setValues(CompoundFactory.GetInstance().GetCupboardCompound(leftovers[1].Name));
            leftovers[1].Purity   = 1.0f;
            leftovers[1].RealMass = massOfReagent;
            if (leftovers[1].IsSolid)
            {
                //CHECK FOR PRECIPITATE
                //FOR THE TIME BEING, IT WILL BE DILUTED, AND WON'T CHANGE THE VOLUME
                leftovers[1].Volume = 0.0f;
            }
            else
            {
                //leftovers[1].Volume = leftovers[1].RealMass * leftovers[1].Density;
                leftovers[1].Volume = 0.0f;
            }

            //Setting Mixture's values
            //this.RealMass = this.GetMass ();
            //this.Volume = this.GetVolume ();
            this.Density = this.RealMass / this.Volume;
            this.Name    = reaction.name;

            //Setting product's values that depends on the mixture's final values
            product.Molarity      = (productMass / product.MolarMass) / (this.Volume * 0.001f);
            leftovers[1].Molarity = (leftovers[1].RealMass / leftovers[1].MolarMass) / (this.Volume * 0.001f);

            /*
             * TODO: VERIFICAR PRECIPITADOS
             */

            /*if ((reaction.subProduct != "H2O") || (reaction.subProduct != "")) { TODO: VERIFICAR REACTION.SUBPRODUCT E COMPONENTSAVER UTILIZANDO NAME AO INVES DE FORMULA
             *      leftovers.Add((Compound)CompoundFactory.GetInstance ().GetCompound (reaction.subProduct));
             *      leftovers[2].Purity = 1.0f;
             *      leftovers[2].RealMass = (trueLimiting * reaction.stoichiometrySubProduct / limitingStoichiometry) * leftovers[3].MolarMass;
             *      leftovers[2].Molarity = leftovers[3].RealMass / this.Volume;
             *      if(leftovers[2].IsSolid) {
             *              //CHECK FOR PRECIPITATE
             *              //FOR THE TIME BEING, IT WILL BE DILUTED, AND WON'T CHANGE THE VOLUME
             *              leftovers[2].Volume = 0.0f;
             *      }
             *      else {
             *              leftovers[2].Volume = leftovers[3].RealMass * leftovers[3].Density;
             *      }
             * }*/
        }
        else             //There was no reaction
        {
            Debug.Log("falha");
            product = null;

            leftovers.Add(r1);
            leftovers.Add(r2);

            Name = "UnknownMixture";

            float auxVolume = 0.0f;

            //Cases where the physical states are the same, the volumes do not change
            if (leftovers[0].IsSolid && (!leftovers[1].IsSolid))              //Case: l0 is solid, l1 is liquid
            {
                leftovers[0].Volume = 0.0f;
                this.IsSolid        = false;
            }
            else if (leftovers[1].IsSolid && (!leftovers[0].IsSolid))               //Case: l0 is liquid, l1 is solid
            {
                leftovers[1].Volume = 0.0f;
                this.IsSolid        = false;
            }
            else if (leftovers[0].IsSolid && leftovers[1].IsSolid)
            {
                this.IsSolid = true;
            }
            else if ((!leftovers[0].IsSolid) && (!leftovers[1].IsSolid))
            {
                this.IsSolid = false;
            }
        }
    }