Example #1
0
 public void MedAdminister(MedAdministerMsg msg)
 {
     // process effects
     foreach (MedEffect effect in msg.Med.Effects)
     {
         switch (effect.Type)
         {
             // state change
             case MedEffect.EffectType.StateChange:
                 StateChange(effect);
                 break;
             // setting individual values
             case MedEffect.EffectType.ValueChange:
                 ValueChange(effect);                    
                 break;                   
         }
     }
 }
    public void OnGUI()
    {
        if (IsVisible() == false)
            return;

        w = 800;
        h = 500;
        x = Screen.width/2 - w / 2;
        y = Screen.height/2 - h / 2;

        GUILayout.BeginArea(new Rect(x,y,w,h));
        GUILayout.Box("MedAdminister",GUILayout.Width(w),GUILayout.Height(h));
        GUILayout.EndArea();

        int selectw = 700;
        int selecth = 400;
        int selectx = Screen.width / 2 - selectw / 2;
        int selecty = Screen.height / 2 - selecth / 2;
        GUILayout.BeginArea(new Rect(selectx,selecty,selectw,selecth));
        scrollposition = GUILayout.BeginScrollView(scrollposition,GUILayout.Width(selectw),GUILayout.Height(selecth/2));
        selected = GUILayout.SelectionGrid(selected, deliverys.ToArray(), 4);
        GUILayout.EndScrollView();
        GUILayout.EndArea();

        if (selected != -1)
        {
            int adminx = selectx;
            int adminy = selecty + selecth/2 + 20;
            int adminw = selectw;
            int adminh = 150;

            GUILayout.BeginArea(new Rect(adminx,adminy,adminw,adminh));
            GUILayout.Box("", GUILayout.Width(adminw), GUILayout.Height(adminh));
            GUILayout.EndArea();
            GUILayout.BeginArea(new Rect(adminx + 20, adminy + 10, adminw - 40, adminy - 40));
            GUILayout.BeginVertical();

            if (selectedMed != null)
            {
                GUILayout.Label("Selected : " + deliverys[selected], GUILayout.Width(200));
                GUILayout.Label(selectedMed.InteractionMap.note);

                GUILayout.Space(5);
                delivery = GUILayout.SelectionGrid(delivery, deliveryNames.ToArray(), deliveryNames.Count, GUILayout.Width(300));

                if (delivery != -1)
                {
                    GUILayout.Space(5);
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Dosage (mg) : ", GUILayout.Width(100));
                    selectWidget.OnGUI();
                    GUILayout.EndHorizontal();
                }
            }

            GUILayout.EndVertical();
            GUILayout.EndArea();
        }

        GUILayout.BeginArea(new Rect(selectx, selecty + selecth - 30, selectw, selecth));
        GUILayout.Space(10);
        GUILayout.BeginHorizontal();
        if (selectWidget.position != -1)
        {
            if (GUILayout.Button("Administer", GUILayout.Width(100)))
            {
                // NOTE....We may need the concept of "ordering" meds first.  This is part of the
                // med manager but I am sending the Med Administer command first

                // broadcast Administer message
                MedAdministerMsg msg = new MedAdministerMsg();
                msg.Med = selectedMed;
                msg.Type = selectedMed.GetDeliveryType(deliveryNames[delivery]);
                msg.Dosage = Convert.ToInt32(selectWidget.GetString());
                msg.Time = elapsedTime;
                // send to all objects
                ObjectManager.GetInstance().PutMessage(msg);
                // send to MedMgr
                MedMgr.GetInstance().PutMessage(msg);
                //
                SetVisible(false);
                selected = -1;
                selectWidget.SetNoValue("---");
            }
        }
        if (GUILayout.Button("Cancel", GUILayout.Width(100)))
        {
            SetVisible(false);
            selected = -1;
            selectWidget.SetNoValue("---");
        }
        GUILayout.EndHorizontal();
        GUILayout.EndArea();
    }
Example #3
0
    public virtual void MedAdminister(MedAdministerMsg msg)
    {
        UnityEngine.Debug.Log("Patient<" + this + "> : MedAdminister : med=" + msg.Med.Name + " : delivery=" + msg.Type.ToString() + " : dosage=" + msg.Dosage);

        if ( Vitals != null )
            Vitals.MedAdminister(msg);
    }