public Behavior(Behavior otherBehavior) { Tag = otherBehavior.Tag; Table = otherBehavior.Table; Cycle = new LifeCycle(otherBehavior.Cycle); Properties = new LifeProperties(otherBehavior.Properties); }
public Behavior(BehaviorTag tag) { Tag = tag; Table = new ReactionTable(); Cycle = new LifeCycle(); Properties = new LifeProperties(); }
public static ReactionTable GetInstance() { if (instance == null) { instance = new ReactionTable(); } return(instance); }
public ReactionPopUp(int ArticleID_, bool Reacted_, ReactionTable RT_, NewsPage NP) { ArticleID = ArticleID_; RT = RT_; Reacted = Reacted_; activeNP = NP; InitializeComponent(); }
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(); } }
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); }
// 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 }
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); }
//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(""", "'"); Ingress.Text = RSS.Description.Replace("*", "-").Replace(""", "'"); 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(""", "'"), 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; } } }