public void AddNewEvent() { if (eventList.Count >= C.P_HEIGHT_LIMIT) { SfxManager.Instance.PlaySfx(SfxManager.SFX_INCORRECT); return; } SfxManager.Instance.PlaySfx(SfxManager.SFX_TICK); // Create a new copy of the prefab and set it as a child GameObject newObject = Instantiate(eventPrefab[0]); RectTransform newTransform = newObject.GetComponent <RectTransform>(); ProbabilityEvent newEvent = newObject.GetComponent <ProbabilityEvent>(); // Set parameters, add it to the list int idNo = eventList.Count; newTransform.SetParent(this.gameObject.transform, false); SetEventParameters(newTransform, newEvent, idNo); eventList.Add(newObject); BroadcastManager.Instance.EventUpdated(); }
public List <long> GetEventInstanceIds(long sampleSpaceNo) { List <long> instanceIdList = new List <long>(); long sampleSpaceSize = currentSampleSpaceSize; for (int i = 0; i < EventListManager.currentEventList.Count; ++i) { ProbabilityEvent current = GetProbabilityEvent(i); sampleSpaceSize /= current.GetSampleSpaceSize(); long currentInstanceId = Mathf.FloorToInt(sampleSpaceNo / sampleSpaceSize); instanceIdList.Add(currentInstanceId); sampleSpaceNo %= sampleSpaceSize; } return(instanceIdList); }
public void UpdateList(long instanceNo) { long sampleSpaceSize = EventListManager.currentSampleSpaceSize; for (int i = 0; i < EventListManager.currentEventList.Count; ++i) { ProbabilityEvent current = EventListManager.currentEventList[i].GetComponent <ProbabilityEvent>(); sampleSpaceSize /= current.GetSampleSpaceSize(); int currentInstanceId = Mathf.FloorToInt(instanceNo / sampleSpaceSize); string newText = current.GetSentence(currentInstanceId); Sprite newSprite = current.GetSprite(); SetContent(i, newText, newSprite); instanceNo %= sampleSpaceSize; } for (int i = EventListManager.currentEventList.Count; i < lastSize; ++i) { contentList[i].SetActive(false); } lastSize = EventListManager.currentEventList.Count; }
public void ChangeEvent(int index) { ProbabilityEvent oldEvent = eventList[index].GetComponent <ProbabilityEvent>(); int newType = oldEvent.typeSelector.value; GameObject newObject = Instantiate(eventPrefab[newType]); RectTransform newTransform = newObject.GetComponent <RectTransform>(); ProbabilityEvent newEvent = newObject.GetComponent <ProbabilityEvent>(); // Set parameters, add it to the list int idNo = index; newTransform.SetParent(this.gameObject.transform, false); SetEventParameters(newTransform, newEvent, idNo); newEvent.SetName(oldEvent.GetName()); newEvent.SetAmount(oldEvent.GetAmount()); newEvent.ResetAmountValues(); Destroy(eventList[index]); eventList[index] = newObject; BroadcastManager.Instance.EventUpdated(); }
public void UpdateRow(int row) { rows[row - 1].SetActive(true); dropdowns[row - 1].ClearOptions(); if (row == 1) { List <string> options = new List <string>(C.TYPE_OPTIONS); //shallow copy instead of copy by reference if (currentVar.onlyEvent) { options.RemoveAt(2); //remove variable option if first variable } if (currentVar.val_1 >= options.Count) { currentVar.SetValue(1, 0); } dropdowns[row - 1].AddOptions(options); dropdowns[row - 1].value = currentVar.val_1; UpdateValue(1); } else if (row == 2) { List <string> options; if (currentVar.val_1 == C.TYPE_EVENT) // Event { textLabels[row - 1].text = C.EVENT_LABEL; options = new List <string>(); options.Add(C.EVENT_DEFAULT_OPTION); foreach (GameObject go in EventListManager.currentEventList) { ProbabilityEvent pe = go.GetComponent <ProbabilityEvent>(); options.Add(pe.GetEventName()); } } else // Value { textLabels[row - 1].text = C.VALUE_LABEL; options = C.VALUE_OPTIONS; } if (currentVar.val_2 >= options.Count) { currentVar.SetValue(2, 0); } dropdowns[row - 1].AddOptions(options); dropdowns[row - 1].value = currentVar.val_2; UpdateValue(2); } else if (row == 3) { List <string> options = new List <string>(); inputField.gameObject.SetActive(false); dropdowns[row - 1].gameObject.SetActive(true); if (currentVar.val_1 == C.TYPE_EVENT) // Event { textLabels[row - 1].text = C.SELECTION_LABEL; options = C.SELECTION_OPTIONS; } else // Value { if (currentVar.val_2 == C.VAL_DICE) { textLabels[row - 1].text = C.VAL_DEFAULT_LABEL; options = C.VAL_OPTIONS_DICE; } else if (currentVar.val_2 == C.VAL_COIN) { textLabels[row - 1].text = C.VAL_DEFAULT_LABEL; options = C.VAL_OPTIONS_COIN; } else if (currentVar.val_2 == C.VAL_CARD) { textLabels[row - 1].text = C.VAL_NUMBER_LABEL; options = C.VAL_OPTIONS_CARD_NUM; } else if (currentVar.val_2 == C.VAL_EVENT) { textLabels[row - 1].text = C.VAL_DEFAULT_LABEL; options = C.VAL_OPTIONS_EVENT; } else if (currentVar.val_2 == C.VAL_NUMBER) { textLabels[row - 1].text = C.VAL_NUMBER_LABEL; dropdowns[row - 1].gameObject.SetActive(false); inputField.gameObject.SetActive(true); inputField.text = currentVar.val_3.ToString(); UpdateNumber(); return; } } if (currentVar.val_3 >= options.Count) { currentVar.SetValue(3, 0); } dropdowns[row - 1].AddOptions(options); dropdowns[row - 1].value = currentVar.val_3; UpdateValue(3); } else if (row == 4) { List <string> options = new List <string>(); if (currentVar.val_1 == C.TYPE_EVENT) // Event { int eventId = currentVar.val_2 - 1; if (currentVar.val_3 == C.SEL_ALL) //All { textLabels[row - 1].text = C.AGGREGATE_LABEL; options = C.AGGREGATE_OPTIONS; } else if (currentVar.val_3 == C.SEL_SPECIFIC) //Specific { textLabels[row - 1].text = C.INSTANCE_LABEL; for (int i = 1; i <= EventListManager.Instance.GetEventAmount(eventId); ++i) { options.Add(i.ToString()); } } else if (currentVar.val_3 != C.SEL_NONE) //At least, at most, exactly { textLabels[row - 1].text = C.X_LABEL; for (int i = 0; i <= EventListManager.Instance.GetEventAmount(eventId); ++i) { options.Add(i.ToString()); } } } else // Value { textLabels[row - 1].text = C.VAL_SUIT_LABEL; options = C.VAL_OPTIONS_CARD_SUIT; } if (currentVar.val_4 >= options.Count) { currentVar.SetValue(4, 0); } dropdowns[row - 1].AddOptions(options); dropdowns[row - 1].value = currentVar.val_4; UpdateValue(4); } }
public void UpdateValues(long globalInstanceCode) { // Updates VarValues, VarSelectType, VarSelectVal if (val_1 == C.TYPE_UNDEF) { varValues.Clear(); } else if (val_1 == C.TYPE_EVENT) { //event if (val_2 == C.EVENT_SELECT) // None selected { varValues.Clear(); } else { int eventId = val_2 - 1; ProbabilityEvent currentEvent = EventListManager.Instance.GetProbabilityEvent(eventId); int instanceCode = (int)EventListManager.Instance.GetEventInstanceIds(globalInstanceCode)[eventId]; varValues = currentEvent.GetValueList(instanceCode); if (EventListManager.Instance.GetEventAmount(eventId) > 1) { // multiple event if (val_3 == C.SEL_ALL) { if (val_4 == C.AGG_ALL) { varSelectType = C.SEL_ALL; } else { int aggVal = 0; if (val_4 == C.AGG_SUM) { foreach (int val in varValues) { aggVal += val; } } else if (val_4 == C.AGG_MAX) { aggVal = varValues[0]; for (int i = 1; i < varValues.Count; ++i) { aggVal = Mathf.Max(aggVal, varValues[i]); } } else if (val_4 == C.AGG_MIN) { aggVal = varValues[0]; for (int i = 1; i < varValues.Count; ++i) { aggVal = Mathf.Min(aggVal, varValues[i]); } } varValues.Clear(); varValues.Add(aggVal); } } if (val_3 == C.SEL_SPECIFIC) { int aggVal = varValues[val_4]; varValues.Clear(); varValues.Add(aggVal); } else { varSelectType = val_3; varSelectVal = val_4; } } } } else if (val_1 == C.TYPE_VALUE) //value { varValues.Clear(); if (val_2 == C.VAL_SELECT) { varValues.Clear(); } else if (val_2 == C.VAL_DICE) { varValues.Add(val_3 + 1); //dice: 1..6 from 0..5 } else if (val_2 == C.VAL_COIN || val_2 == C.VAL_EVENT || val_2 == C.VAL_NUMBER) { varValues.Add(val_3); //dice: 1..6 from 0..5 } else if (val_2 == C.VAL_CARD) { List <int> cardList = new List <int>(); List <int> suitList = new List <int>(); if (val_3 == 0) { for (int i = 0; i < 13; ++i) { cardList.Add(i); } } else { cardList.Add(val_3 - 1); } if (val_4 == 0) { for (int i = 0; i < 4; ++i) { suitList.Add(i); } } else { suitList.Add(val_4 - 1); } foreach (int suit in suitList) { foreach (int card in cardList) { varValues.Add(Util.Card_GetID(suit, card)); } } varSelectType = C.SEL_ANY; //any of these values will do } } }
private void SetEventParameters(RectTransform tf, ProbabilityEvent pe, int idNo) { tf.anchoredPosition = new Vector3(0, C.P_START_HEIGHT - C.P_DISTANCE * idNo, 0); pe.SetIndexNumber(idNo); pe.SetName(FindName()); }