Пример #1
0
        public void Stop()
        {
            currentSimNode.ImageKey = "simset_complete";
            currentSim = null;

            timer.Enabled = false;
        }
Пример #2
0
        public void Start()
        {
            currentSim = new SummarySimulation();
            root.simulations.Add(currentSim);
            loopCount = 0;

            // Create Node
            currentSimNode          = loopsTreeView.Nodes.Add(currentSim.startDate.ToString());
            currentSimNode.Tag      = currentSim;
            currentSimNode.ImageKey = "simset_running";

            timer.Enabled = true;
        }
Пример #3
0
        private void tree_select(object sender, TreeViewEventArgs e)
        {
            if (loopsTreeView.SelectedNode != null)
            {
                summaryListView.Items.Clear();

                // In case of a selected loop
                if (loopsTreeView.SelectedNode.Tag is SummaryLoop)
                {
                    SummaryLoop loop = (SummaryLoop)loopsTreeView.SelectedNode.Tag;

                    int teamcount = 0;
                    foreach (SummaryTeam team in loop.teams.Values)
                    {
                        teamcount++;

                        ListViewGroup teamGroup = summaryListView.Groups["team" + teamcount + "Group"];

                        foreach (SummaryPlayer player in team.players.Values)
                        {
                            SummaryValueSet set = player.values[player.values.Count - 1];

                            ListViewItem item = summaryListView.Items.Add(player.name, "colony");
                            item.SubItems.Add(set.collectedFood.ToString());
                            item.SubItems.Add(set.collectedFruit.ToString());
                            item.SubItems.Add(set.killedAnts.ToString());
                            item.SubItems.Add(set.killedBugs.ToString());
                            item.SubItems.Add(set.starvedAnts.ToString());
                            item.SubItems.Add(set.beatenAnts.ToString());
                            item.SubItems.Add(set.eatenAnts.ToString());
                            item.SubItems.Add(set.totalPoints.ToString());
                            item.Group = teamGroup;
                        }
                    }
                }

                // In case of a selected simulation-set
                if (loopsTreeView.SelectedNode.Tag is SummarySimulation)
                {
                    SummarySimulation simulation = (SummarySimulation)loopsTreeView.SelectedNode.Tag;

                    // Check for any Teaminformation
                    if (simulation.loops.Count > 0)
                    {
                        // Create the summary for included loops
                        int loops = 0;
                        Dictionary <Guid, SummaryTeam> teams =
                            new Dictionary <Guid, SummaryTeam>(simulation.loops[0].teams.Count);
                        foreach (SummaryTeam team in simulation.loops[0].teams.Values)
                        {
                            // Clone team
                            SummaryTeam summaryTeam = new SummaryTeam();
                            summaryTeam.guid    = team.guid;
                            summaryTeam.name    = team.name;
                            summaryTeam.players = new Dictionary <Guid, SummaryPlayer>(team.players.Count);
                            teams.Add(team.guid, summaryTeam);

                            foreach (SummaryPlayer player in team.players.Values)
                            {
                                // Clone player
                                SummaryPlayer summaryPlayer = new SummaryPlayer();
                                summaryPlayer.guid   = player.guid;
                                summaryPlayer.name   = player.name;
                                summaryPlayer.values = new List <SummaryValueSet>(1);
                                summaryPlayer.values.Add(new SummaryValueSet());
                                summaryTeam.players.Add(summaryPlayer.guid, summaryPlayer);
                            }
                        }

                        // Sum up all loops
                        foreach (SummaryLoop loop in simulation.loops)
                        {
                            if (loop.completed)
                            {
                                loops++;

                                foreach (SummaryTeam team in loop.teams.Values)
                                {
                                    foreach (SummaryPlayer player in team.players.Values)
                                    {
                                        SummaryValueSet set = player.values[player.values.Count - 1];
                                        teams[team.guid].players[player.guid].values[0].Add(set);
                                    }
                                }
                            }
                        }

                        // Fill into Listview
                        int teamcount = 0;
                        foreach (SummaryTeam team in teams.Values)
                        {
                            teamcount++;

                            ListViewGroup teamGroup = summaryListView.Groups["team" + teamcount + "Group"];

                            foreach (SummaryPlayer player in team.players.Values)
                            {
                                SummaryValueSet set = player.values[0];

                                if (loops > 0)
                                {
                                    // Calculate average values
                                    float collectedFood  = (float)set.collectedFood / loops;
                                    float collectedFruit = (float)set.collectedFruit / loops;
                                    float killedAnts     = (float)set.killedAnts / loops;
                                    float killedBugs     = (float)set.killedBugs / loops;
                                    float starvedAnts    = (float)set.starvedAnts / loops;
                                    float beatenAnts     = (float)set.beatenAnts / loops;
                                    float eatenAnts      = (float)set.eatenAnts / loops;
                                    float totalPoints    = (float)set.totalPoints / loops;

                                    // push it to listview
                                    ListViewItem item = summaryListView.Items.Add(player.name, "colony");
                                    item.SubItems.Add(collectedFood.ToString("0.00"));
                                    item.SubItems.Add(collectedFruit.ToString("0.00"));
                                    item.SubItems.Add(killedAnts.ToString("0.00"));
                                    item.SubItems.Add(killedBugs.ToString("0.00"));
                                    item.SubItems.Add(starvedAnts.ToString("0.00"));
                                    item.SubItems.Add(beatenAnts.ToString("0.00"));
                                    item.SubItems.Add(eatenAnts.ToString("0.00"));
                                    item.SubItems.Add(totalPoints.ToString("0.00"));
                                    item.Group = teamGroup;
                                }
                                else
                                {
                                    // push empty row
                                    ListViewItem item = summaryListView.Items.Add(player.name, "colony");
                                    item.Group = teamGroup;
                                }
                            }
                        }
                    }
                }
            }
        }