All pastes #470141 Raw Edit

Something

public text v1 · immutable
·published 2007-05-04 02:47 UTC
rendered paste body
using System;
using System.Collections;
using System.Text;
using System.Runtime.Serialization;


namespace InsulinSim
{
    [Serializable()]
    public class Person : ISerializable
    {

        private double bloodsugar_level;
        private double insulin_level;
        private int body_mass;
        private double insulin_decrement;
        int curr_action;
        ActionCollection action_collection;
        DataCollection insulin_data, bloodsugar_data;
        double life_time;
        Queue action_queue;

        public Person()
        {
            action_queue = new Queue();

            action_collection = new ActionCollection();
            insulin_data = new DataCollection("Insulin");
            bloodsugar_data = new DataCollection("Blood Sugar");

            life_time = 0;
            insulin_decrement = .5;

            bloodsugar_level = 150;
            body_mass = 200;

            curr_action = (int)Actions.NOTHING;
            action_queue.Enqueue(curr_action);

        }


        public int ActionProgress
        {
            get
            {
                Action temp = this.action_collection.getAction(curr_action);

                if (temp.Duration == 0)
                    return 0;
                else
                {
                    double progress;
                    progress = temp.ElapsedTime / temp.Duration;
                    progress *= 100;

                    if (progress > 100)
                        progress = 100;

                    return Convert.ToInt32(progress);
                }
            }
        }



        public DataCollection InsulinData
        {
            get { return this.insulin_data; }
        }

        public DataCollection BloodSugarData
        {
            get { return this.bloodsugar_data; }
        }


        public double LifeTime
        {
            get { return this.life_time; }
        }
        public String NextActionDescription
        {
            get
            {
                try
                {
                    int temp = (int)action_queue.Peek();
                    Action temp2 = action_collection.getAction(temp);
                    return temp2.Description;
                }
                catch
                {
                    return "No Action Next";
                }
            }


        }


        public int Action
        {
  
            set { action_queue.Enqueue(value); }
        }


        public String ActionDescription
        {
            get {
                Action temp = action_collection.getAction(curr_action);

                return temp.Description; 
            }
        }


        public void cancelCurrentAction()
        {
            Action temp = action_collection.getAction(curr_action);
            temp.resetElapsedTime();

            if (action_queue.Count == 0)
                action_queue.Enqueue((int)Actions.NOTHING);

            curr_action = (int)action_queue.Dequeue();
        }



        public void updatePerson(double time, double time_mod)
        {
            double temp_sugar = bloodsugar_level;

            double deltaTime = time * time_mod;

            life_time += (time * time_mod);

            Action temp = action_collection.getAction(curr_action);


            if (temp.ElapsedTime >= temp.Duration)
                cancelCurrentAction();
            else
                temp.modifyElapsedTime((int)deltaTime);


            bloodsugar_level += temp.Modifier * (deltaTime / 1000);

            insulin_level -= insulin_decrement * (bloodsugar_level - temp_sugar);

            if (insulin_level < 0) insulin_level = 0;

            bloodsugar_data.insertData(life_time, bloodsugar_level);
  
            insulin_data.insertData(life_time, insulin_level);

        }

        public int BodyMass
        {
            set { this.body_mass = value; }
            get { return this.body_mass; }
        }

        public double BloodSugarLevel
        {
            get { return this.bloodsugar_level; }

        }

        public double InsulinLevel
        {
            get { return this.insulin_level; }
        }

        public Person(SerializationInfo info, StreamingContext ctxt)
        {
            insulin_decrement = .5;
            body_mass = (int)info.GetValue("BodyMass", typeof(int));
            insulin_data = (DataCollection)info.GetValue("InsulinData", typeof(DataCollection));
            bloodsugar_data = (DataCollection)info.GetValue("BloodSugarData", typeof(DataCollection));
            curr_action = (int)info.GetValue("CurrentAction", typeof(int));
            insulin_level = (double)info.GetValue("InsulinLevel", typeof(double));
            bloodsugar_level = (double)info.GetValue("BloodSugarLevel", typeof(double));
            action_collection = (ActionCollection)info.GetValue("ActionCollection", typeof(ActionCollection));
            life_time = (double)info.GetValue("LifeTime", typeof(double));
            action_queue = (Queue)info.GetValue("ActionQueue", typeof(Queue));

        }
        public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {
            info.AddValue("BodyMass", body_mass);
            info.AddValue("InsulinData", insulin_data);
            info.AddValue("BloodSugarData", bloodsugar_data);
            info.AddValue("CurrentAction", curr_action);
            info.AddValue("InsulinLevel", insulin_level);
            info.AddValue("BloodSugarLevel", bloodsugar_level);
            info.AddValue("ActionCollection", action_collection);
            info.AddValue("LifeTime", life_time);
            info.AddValue("ActionQueue", action_queue);

        }

        public ActionCollection ActionCollection
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
            }
        }

        public DataCollection DataCollection
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
            }
        }



    }


}