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(); }
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); }