IEnumerator InitBuffBaseData() { JsonData json = null; if (buffBaseDataDic == null) { buffBaseDataDic = new Dictionary <string, BuffBaseData>(); } buffBaseDataDic.Clear(); yield return(StartCoroutine(AssetLoader.LoadJsonData("data/buff", "Buff", x => json = x))); for (int i = 0; i < json.Count; i++) { BuffBaseData buffBaseData = new BuffBaseData(json[i]); buffBaseDataDic.Add(buffBaseData.id, buffBaseData); } ArtifactBaseDataDic = new Dictionary <string, ArtifactBaseData>(); yield return(StartCoroutine(AssetLoader.LoadJsonData("json", "Artifact", x => json = x))); for (int i = 0; i < json.Count; i++) { ArtifactBaseData data = new ArtifactBaseData(json[i]); ArtifactBaseDataDic.Add(data.id, data); } }
public void SlotInit(ArtifactBaseData data) { particleObject.SetActive(false); artifactBaseData = data; artifactName.text = data.name; artifactName.gameObject.SetActive(true); AssetLoader.AssignImage(artifactImage, "sprite/artifact", "Atlas_Artifact", artifactBaseData.icon, null); ArtifactController artifactController = Battle.currentBattleGroup.artifactController; Artifact artifact = artifactController.artifactList.Find(x => x.baseData.id == data.id); //현재 스택 상태에 따라 패러미터 변화량 보여줌 int currentStack = 0; if (artifact != null) { currentStack = artifact.stack; } float power = 0; float.TryParse(data.formula, out power); string powerBefore = (power * currentStack).ToString(); string powerAfter = (power * (currentStack + 1)).ToString(); string description = data.message.Replace("[formula]", "<color=#00ff00ff>" + powerAfter + "</color>"); if (artifact != null) { description = data.message.Replace("[formula]", "<color=#00ff00ff>" + powerBefore + " → " + powerAfter + "</color>"); } artifactMessage.text = description; artifactMessage.gameObject.SetActive(true); artifactImage.material.SetFloat("_Threshold", 0f); //버튼 활성화 button.interactable = true; //캔버스 랜더러들 알파 다 켜기 for (int i = 0; i < canvasRenderers.Length; i++) { canvasRenderers[i].SetAlpha(1f); } //유물 선택되었을 때 콜백 등록 UIArtifactSelect.onSelected += OnSelected; //게임 오브젝트 활성화 gameObject.SetActive(true); }
/// <summary> 버프 전체에서 3개 랜덤하게 보여줌 </summary> public void ShowBuff() { if (showArtifactIDList.Count > 0) { return; } int count = 3; //유물 리스트 List <ArtifactBaseData> artifactBaseDataList = GameDataManager.ArtifactBaseDataDic.Values.ToList(); //사용 가능한 애들만 보여줌 artifactBaseDataList = artifactBaseDataList.FindAll(x => x.enable); for (int i = 0; i < count;) { ArtifactBaseData artifactBaseData = null; while (artifactBaseData == null) { //최대 스택이면 선택지에서 제외 int index = Random.Range(0, artifactBaseDataList.Count); ArtifactBaseData data = artifactBaseDataList[index]; Artifact a = artifactList.Find(x => x.baseData == data); if (data.maxStack > 0 && a != null && a.stack >= data.maxStack) { continue; } artifactBaseData = data; } if (showArtifactIDList.Find(x => x == artifactBaseData.id) == null) { showArtifactIDList.Add(artifactBaseData.id); i++; } } }
/// <summary> 유물 획득(추가) </summary> public void AddArtifact(ArtifactBaseData data, bool forceSave = true) { Artifact artifact = null; if (artifactList == null) { return; } bool isAdd = false; if (artifactList.Count <= 0) { isAdd = true; } else { isAdd = true; for (int i = 0; i < artifactList.Count; i++) { if (artifactList[i].baseData.id == data.id) { if (artifact != null) { continue; } artifact = artifactList[i]; isAdd = false; } } } //아티펙트 포인트 감소 artifactPoint -= cost; //목록에 추가 if (isAdd) { artifact = new Artifact(data); artifactList.Add(artifact); } artifact.stack++; if (artifact.baseData.type == "hero") { for (int i = 0; i < battleGroup.redTeamList.Count; i++) { battleGroup.redTeamList[i].buffController.AttachBuff(battleGroup.redTeamList[i], artifact.baseData.buffID); } } //유물 선택지 리스트 초기화 showArtifactIDList.Clear(); //유물 선택창 닫기 UIArtifactSelect.Close(); if (onChangedArtifactList != null) { onChangedArtifactList(battleGroup); } //유물 선택 후 강제 저장 함 if (forceSave) { Battle.SaveArtifactInfo(battleGroup); } }
public Artifact(ArtifactBaseData data) { baseData = data; }