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