Beispiel #1
0
    public void ShowPopUp(bool willAgree, List <SimpleContract> contracts)
    {
        if (contracts.Count == 0)
        {
            return;
        }
        popUp.SetActive(true);

        string state           = willAgree ? "<color=#0000ffff>[동의]</color>" : "<color=#ff0000ff>[거절]</color>";
        string text            = "이 조항에 " + state + "할 시 ";
        string relateContracts = "\n";

        for (int i = 0; i < contracts.Count; i++)
        {
            SingleContract contract = Contract.instance.GetContract(contracts[i].article, contracts[i].clause);;
            text += contract.Article + "조 " + contract.Clause + "항";

            relateContracts += contract.Article + "조 " + contract.Clause + "항\n";
            relateContracts += "- " + contract.ContractText;

            if (i != contracts.Count - 1)
            {
                text            += ", ";
                relateContracts += "\n";
            }
        }
        text += "에 " + state + "하는 것으로 간주합니다.";

        warningText.text          = text;
        relatedContractsText.text = relateContracts;
    }
Beispiel #2
0
    private GameObject CreateClause(SingleContract contract)
    {
        GameObject clause = Instantiate(clausePrefab, transform);

        string number;

        if (contract.Clause == 0)
        {
            number = contract.Article + "조";
            RectTransform rect = clause.GetComponent <RectTransform>();
            rect.localPosition += new Vector3(-60f, 0, 0);
            rect.sizeDelta     -= new Vector2(0, 50f);
        }
        else
        {
            number = contract.Clause + "항";
        }

        string text = contract.ContractText;

        clause.name = "Article" + contract.Article + " Clause" + contract.Clause;
        clause.transform.GetChild(0).GetComponent <Text>().text = number;
        clause.transform.GetChild(1).GetComponent <Text>().text = text;
        clause.GetComponent <ContractController>().Init(contract.Article, contract.Clause, contract.RelatedContracts);

        return(clause);
    }
Beispiel #3
0
    private void ActivateBossResult(int i, ref BossStatChanger changer)
    {
        SingleContract contract = contracts[i];

        switch (contract.ResultClass)
        {
        case ResultClass.BossHealth:
            changer.changedHealthAmount += (int)contract.ResultValue;
            PlayerStatus.instance.AddEffectQueue(new ContractEffect(ResultClass.BossHealth, contract.ResultValue, false));
            break;
        }
    }
Beispiel #4
0
    public void KillContractCheck()
    {
        if (SceneManager.GetActiveScene().name.Contains("Village"))
        {
            // 기본 세팅으로 전환
            return;
        }

        for (int i = 0; i < contracts.Count; i++)
        {
            SingleContract contract = contracts[i];

            if (contract.ConditionClass != ConditionClass.Kill)
            {
                continue;
            }
            if (contract.isAgree == false)
            {
                continue;
            }

            switch (contract.ConditionType)
            {
            case ConditionType.Less:
                //if (killCnt < contract.ConditionValue) ActivateKillResult(i);
                Debug.LogError("사용하지 않아서 삭제했습니다. 나오면 버그");
                break;

            case ConditionType.Greater:
                if (killCnt == contract.ConditionValue)
                {
                    ActivateKillResult(i);
                }
                break;

            case ConditionType.Per:
                int nowKillCnt = killCnt;
                if (nowKillCnt > 0 && nowKillCnt % contract.ConditionValue == 0)
                {
                    ActivateKillResult(i);
                }
                break;
            }
        }

        PlayerStatus.instance.UpdateStatus();
    }
Beispiel #5
0
    public List <SingleContract> ParseContract(int level)
    {
        List <SingleContract> ret = new List <SingleContract>();

        List <List <string> > data = Parser.ContractParse(contractAsset[level]);

        for (int i = 0; i < data.Count; i++)
        {
            int                   article          = int.Parse(data[i][0]);
            int                   clause           = int.Parse(data[i][1]);
            ConditionClass        conditionClass   = (ConditionClass)System.Enum.Parse(typeof(ConditionClass), data[i][2]);
            ConditionType         conditionType    = (ConditionType)System.Enum.Parse(typeof(ConditionType), data[i][3]);
            int                   conditionValue   = int.Parse(data[i][4]);
            ResultClass           resultClass      = (ResultClass)System.Enum.Parse(typeof(ResultClass), data[i][5]);
            float                 resultValue      = float.Parse(data[i][6]);
            string                contractText     = data[i][7];
            List <SimpleContract> relatedContracts = new List <SimpleContract>();

            if (data[i].Count > 8)
            {
                for (int j = 8; j < data[i].Count; j++)
                {
                    if (data[i][j] == "")
                    {
                        continue;
                    }
                    int relatedContract = int.Parse(data[i][j]);
                    int relatedArticle  = relatedContract / 10;
                    int relatedClause   = relatedContract % 10;

                    SimpleContract cont = new SimpleContract(relatedArticle, relatedClause);
                    relatedContracts.Add(cont);
                }
            }

            SingleContract contract = new SingleContract(article, clause, conditionClass, conditionType, conditionValue, resultClass, resultValue, contractText, relatedContracts);
            if (contract.Article == 0)
            {
                contract.isAgree = true;
            }
            ret.Add(contract);
        }

        return(ret);
    }
Beispiel #6
0
    private BossStatChanger BossContractCheck()
    {
        BossStatChanger changer = new BossStatChanger();

        for (int i = 0; i < contracts.Count; i++)
        {
            SingleContract contract = contracts[i];

            if (contract.ConditionClass != ConditionClass.MaxHealth)
            {
                continue;
            }
            if (contract.isAgree == false)
            {
                continue;
            }

            switch (contract.ConditionType)
            {
            case ConditionType.Less:
                if (PlayerStatus.instance.MaxHealth < contract.ConditionValue)
                {
                    ActivateBossResult(i, ref changer);
                }
                break;

            case ConditionType.Greater:
                if (PlayerStatus.instance.MaxHealth >= contract.ConditionValue)
                {
                    ActivateBossResult(i, ref changer);
                }
                break;
            }
        }

        return(changer);
    }
Beispiel #7
0
    private void ActivateKillResult(int i)
    {
        SingleContract contract = contracts[i];

        switch (contract.ResultClass)
        {
        case ResultClass.AttackSpeed:
            PlayerStatus.instance.AttackSpeed = contract.ResultValue;
            break;

        case ResultClass.AttackDamage:
            if (contract.ConditionType == ConditionType.Per)
            {
                PlayerStatus.instance.Damage += (int)contract.ResultValue;
            }
            else
            {
                PlayerStatus.instance.Damage = (int)contract.ResultValue;
            }
            break;

        case ResultClass.MaxHealth:
            if (contract.ConditionType == ConditionType.Per)
            {
                PlayerStatus.instance.MaxHealth += (int)contract.ResultValue;
            }
            else
            {
                PlayerStatus.instance.MaxHealth = (int)contract.ResultValue;
            }
            break;

        case ResultClass.Speed:
            if (contract.ConditionType == ConditionType.Per)
            {
                PlayerStatus.instance.Speed += contract.ResultValue;
            }
            else
            {
                PlayerStatus.instance.Speed = contract.ResultValue;
            }
            break;

        case ResultClass.MoveDamping:
            PlayerStatus.instance.MovementDamping = contract.ResultValue;
            break;

        case ResultClass.JumpForce:
            PlayerStatus.instance.JumpForce = contract.ResultValue;
            break;

        case ResultClass.InvincibleTime:
            PlayerStatus.instance.InvincibleTime = contract.ResultValue;
            break;

        case ResultClass.KnockBackForce:
            PlayerStatus.instance.KnockBackForce = contract.ResultValue;
            break;

        case ResultClass.KillCnt:
            killCntChanger = (int)contract.ResultValue;
            break;

        default:
            Debug.LogError("해당하는 결과 클래스를 찾지 못했습니다.");
            break;
        }
    }