コード例 #1
0
ファイル: DecisionGroup.cs プロジェクト: sericaer/HuangD3
    public GameObject NewDecisionUI(Decision decision)
    {
        var rslt = DecisionLogic.newInstance(decision, this.transform);

        list.Add(rslt.gameObject);

        return(rslt);
    }
コード例 #2
0
ファイル: GameState.cs プロジェクト: KonH/LD44Project
    public GameState(Messages messges, Environment environment, Parameters parameters, Events events, Action onUpdated)
    {
        _messages    = messges;
        _environment = environment;
        _parameters  = parameters;
        _events      = events;
        _onUpdated   = onUpdated;

        _decisionLogic = new DecisionLogic(_messages, environment, _parameters, this);

        _startDate          = DateTime.MinValue.AddDays(_parameters.StartDay);
        Date                = _startDate;
        Traits[Trait.Money] = _parameters.StartMoney;

        _lastPayDate     = Date;
        _lastInflateDate = Date;

        var startAct = new NoticeAction(_messages.Welcome, HighPriority);

        EnqueNoticeOnce(startAct);

        Analytics.enabled = !Application.isEditor;
        AnalyticsEvent.GameStart();
    }
コード例 #3
0
    private IEnumerator ExecutionRoutine()
    {
        while (true)
        {
            AddOutline(_currentProgrammableBlock);
            DecisionLogic logic = _currentProgrammableBlock.GetComponent <DecisionLogic>();

            if (!logic)
            {
                yield return(null);
            }

            yield return(new WaitForSeconds(1));

            RemoveOutline(_currentProgrammableBlock);

            if (logic.Decide())
            {
                #region Execute Actions

                ProgrammableBlock tempProgrammableBlock = _currentProgrammableBlock;
                ExecutionLogic    executionLogic        = null;

                while (true)
                {
                    tempProgrammableBlock = tempProgrammableBlock.GetConnectedProgrammableBlock(ProgrammableBlock.Direction.Right);

                    if (!tempProgrammableBlock)
                    {
                        break;
                    }

                    executionLogic = tempProgrammableBlock.GetComponent <ExecutionLogic>();
                    AddOutline(tempProgrammableBlock);

                    if (!executionLogic)
                    {
                        yield return(new WaitForSeconds(1));

                        RemoveOutline(tempProgrammableBlock);
                        continue;
                    }

                    executionLogic.Execute();

                    yield return(new WaitForSeconds(1));

                    RemoveOutline(tempProgrammableBlock);
                }

                #endregion
            }

            _currentProgrammableBlock = _currentProgrammableBlock.GetConnectedProgrammableBlock(ProgrammableBlock.Direction.Down);

            if (!_currentProgrammableBlock)
            {
                break;
            }
        }

        _isRunning = false;
        OnFinish.Invoke();

        yield return(null);
    }