예제 #1
0
    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();
    }
예제 #2
0
    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);
    }
예제 #3
0
    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;
    }
예제 #4
0
    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();
    }
예제 #5
0
    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);
        }
    }
예제 #6
0
    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
            }
        }
    }
예제 #7
0
 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());
 }