/// <summary> /// 解锁所有拼图 /// </summary> private void unlockPuzzles() { List <PuzzlesInfoBean> listData = PuzzlesInfoManager.LoadAllPuzzlesData(); foreach (PuzzlesInfoBean itemData in listData) { PuzzlesCompleteStateBean completeStateBean = DataStorageManage.getPuzzlesCompleteDSHandle().getData(itemData.id); if (completeStateBean == null) { completeStateBean = new PuzzlesCompleteStateBean(); } completeStateBean.puzzleId = itemData.id; completeStateBean.puzzleType = itemData.data_type; completeStateBean.unlockState = JigsawUnlockEnum.UnLock; DataStorageManage.getPuzzlesCompleteDSHandle().saveData(completeStateBean); } }
public void CreateInstallItemList(List <SteamWorkshopQueryInstallInfoBean> listData) { //删除原数据 for (int i = 0; i < transform.childCount; i++) { if (transform.GetChild(i).gameObject.activeSelf) { Destroy(transform.GetChild(i).gameObject); } } List <PuzzlesInfoBean> listPuzzlesInfo = CreateGameInfoListByInstallInfo(listData); List <PuzzlesCompleteStateBean> listCompleteData = DataStorageManage.getPuzzlesCompleteDSHandle().getAllData(); List <PuzzlesProgressBean> listProgressData = DataStorageManage.getPuzzlesProgressDSHandle().getAllData(); List <PuzzlesGameInfoBean> listGameInfoData = PuzzlesDataUtil.MergePuzzlesInfo(listPuzzlesInfo, listCompleteData, listProgressData); for (int itemPosition = 0; itemPosition < listData.Count; itemPosition++) { PuzzlesGameInfoBean itemInfo = listGameInfoData[itemPosition]; CreateInstallItem(itemInfo); } }
/// <summary> /// 读取拼图信息 /// </summary> /// <param name="resourcesEnum"></param> public void loadJigsaw(JigsawResourcesEnum resourcesEnum) { StopAllCoroutines(); resourcesType = resourcesEnum; //删除原数据 for (int i = 0; i < transform.childCount; i++) { Destroy(transform.GetChild(i).gameObject); } //加载该类型下所有拼图数据 List <PuzzlesInfoBean> listInfoData = null; if (resourcesEnum.Equals(JigsawResourcesEnum.Custom)) { listInfoData = DataStorageManage.getCustomPuzzlesInfoDSHandle().getAllData(); createAddItem(); } else { listInfoData = PuzzlesInfoManager.LoadAllPuzzlesDataByType(resourcesEnum); } if (listInfoData == null || listInfoData.Count == 0) { return; } listInfoData.Sort((x, y) => x.Level.CompareTo(y.Level)); List <PuzzlesCompleteStateBean> listCompleteData = DataStorageManage.getPuzzlesCompleteDSHandle().getAllData(); List <PuzzlesProgressBean> listProgressData = DataStorageManage.getPuzzlesProgressDSHandle().getAllData(); List <PuzzlesGameInfoBean> listData = PuzzlesDataUtil.MergePuzzlesInfo(listInfoData, listCompleteData, listProgressData); for (int itemPosition = 0; itemPosition < listData.Count; itemPosition++) { PuzzlesGameInfoBean itemInfo = listData[itemPosition]; createSelectItem(itemPosition, itemInfo); } }
/// <summary> /// 记录完成时间 /// </summary> /// <param name="selectItem"></param> /// <param name="completeTime"></param> public static void FinshSaveCompleteData(PuzzlesGameInfoBean selectItem, TimeBean completeTime) { PuzzlesInfoBean puzzlesInfo = selectItem.puzzlesInfo; PuzzlesCompleteStateBean completeStateBean = selectItem.completeStateInfo; if (completeStateBean == null) { completeStateBean = new PuzzlesCompleteStateBean(); } List <PuzzlesCompleteStateBean> listCompleteState = DataStorageManage.getPuzzlesCompleteDSHandle().getAllData(); if (listCompleteState == null || listCompleteState.Count == 0) { listCompleteState = new List <PuzzlesCompleteStateBean>(); completeStateBean.puzzleId = puzzlesInfo.id; completeStateBean.puzzleType = puzzlesInfo.data_type; completeStateBean.puzzleName = puzzlesInfo.name; completeStateBean.puzzleMarkName = puzzlesInfo.mark_file_name; completeStateBean.completeTime = completeTime; completeStateBean.unlockState = JigsawUnlockEnum.UnLock; listCompleteState.Add(completeStateBean); } else { int listCompleteSize = listCompleteState.Count; bool hasData = false; for (int i = 0; i < listCompleteSize; i++) { PuzzlesCompleteStateBean itemCompleteBean = listCompleteState[i]; bool isThisPuzzles = false; if (itemCompleteBean.puzzleType.Equals((int)JigsawResourcesEnum.Custom)) { if (itemCompleteBean.puzzleMarkName.Equals(puzzlesInfo.mark_file_name)) { isThisPuzzles = true; } } else { if (itemCompleteBean.puzzleId.Equals(puzzlesInfo.Id)) { isThisPuzzles = true; } } if (isThisPuzzles) { hasData = true; if (itemCompleteBean.completeTime.totalSeconds != 0 && !TimeUtil.isFasterTime(itemCompleteBean.completeTime, completeTime)) { //存时间更快的 } else { itemCompleteBean.puzzleId = puzzlesInfo.id; itemCompleteBean.puzzleType = puzzlesInfo.data_type; completeStateBean.puzzleName = puzzlesInfo.name; completeStateBean.puzzleMarkName = puzzlesInfo.mark_file_name; itemCompleteBean.unlockState = JigsawUnlockEnum.UnLock; itemCompleteBean.completeTime = completeTime; completeStateBean = itemCompleteBean; } break; } } if (!hasData) { completeStateBean.puzzleId = puzzlesInfo.id; completeStateBean.puzzleType = puzzlesInfo.data_type; completeStateBean.puzzleName = puzzlesInfo.name; completeStateBean.puzzleMarkName = puzzlesInfo.mark_file_name; completeStateBean.completeTime = completeTime; completeStateBean.unlockState = JigsawUnlockEnum.UnLock; listCompleteState.Add(completeStateBean); } } DataStorageManage.getPuzzlesCompleteDSHandle().saveAllData(listCompleteState); }
/// <summary> /// 创建未解锁样式 /// </summary> /// <param name="itemInfo"></param> private GameObject createLockItem(int position, PuzzlesGameInfoBean itemInfo) { PuzzlesInfoBean infoBean = itemInfo.puzzlesInfo; PuzzlesCompleteStateBean completeStateBean = itemInfo.completeStateInfo; //解锁点数处理 if (infoBean.unlock_point == 1) { infoBean.unlock_point = infoBean.level; } GameObject itemObj = Instantiate(ResourcesManager.LoadData <GameObject>(JigsawSelectLockItemPath)); Button itemBT = itemObj.GetComponent <Button>(); //设置大小 setItemSize(itemObj); itemObj.name = infoBean.Mark_file_name; itemObj.transform.SetParent(transform); //设置按键 Button unLockBT = CptUtil.getCptFormParentByName <Transform, Button>(itemObj.transform, "JigsawUnLock"); unLockBT.onClick.AddListener( delegate() { SoundUtil.playSoundClip(AudioButtonOnClickEnum.btn_sound_1); long userPoint = DataStorageManage.getUserInfoDSHandle().getData(0).puzzlesPoint; if (userPoint < infoBean.unlock_point) { //如果没有PP则提示不足 DialogManager.createToastDialog().setToastText(CommonData.getText(16)); } else { //如果有PP则解锁 //保存信息 ((UserInfoDSHandle)DataStorageManage.getUserInfoDSHandle()).decreaseUserPuzzlesPoint(infoBean.unlock_point); menuSelectUIControl.refreshPuzzlesPoint(); //解锁拼图 if (completeStateBean == null) { completeStateBean = new PuzzlesCompleteStateBean(); completeStateBean.puzzleId = infoBean.id; completeStateBean.puzzleType = infoBean.data_type; } completeStateBean.unlockState = JigsawUnlockEnum.UnLock; DataStorageManage.getPuzzlesCompleteDSHandle().saveData(completeStateBean); //menuSelectUIControl.refreshJigsawSelectData(); menuSelectUIControl.refreshItemJigsawSelectData(position, itemObj, itemInfo); //解锁成功动画 string filePath = infoBean.Data_file_path + infoBean.Mark_file_name; DialogManager.createUnlockPuzzlesDialog(infoBean.name, infoBean.mark_file_name, filePath); } }); //设置文本信息 Text jigsawUnLockText = CptUtil.getCptFormParentByName <Button, Text>(itemBT, "JigsawUnLockText"); jigsawUnLockText.text = CommonData.getText(13) + "( " + infoBean.unlock_point + "PP )"; //设置拼图等级 setLevel(itemObj, infoBean.level); return(itemObj); }
/// <summary> /// 游戏完成 /// </summary> public void gameFinsh() { CommonData.GameStatus = 2; CommonData.IsDargMove = false; CommonData.IsMoveCamera = false; //删除游戏进度 PuzzlesProgressBean progressTemp = new PuzzlesProgressBean(); progressTemp.puzzleId = CommonData.SelectPuzzlesInfo.puzzlesInfo.id; progressTemp.markFileName = CommonData.SelectPuzzlesInfo.puzzlesInfo.mark_file_name; ((PuzzlesProgressDSHandle)DataStorageManage.getPuzzlesProgressDSHandle()).deleteData(progressTemp); float startCameraOrthographicSize = cameraControl.startCameraOrthographicSize; //结束游戏时间 GameMainUIControl gameMainUI = uiMasterControl.getUIByType <GameMainUIControl>(UIEnum.GameMainUI); TimeBean completeTime = null; if (gameMainUI != null) { gameMainUI.endTimer(); completeTime = gameMainUI.getGameTimer(); } if (!CommonData.IsCheating) { if (CommonData.SelectPuzzlesInfo.puzzlesInfo.data_type.Equals((int)JigsawResourcesEnum.Custom)) { } else { //增加PP int addPuzzlesPoint = CommonData.SelectPuzzlesInfo.puzzlesInfo.level * 2; DialogManager.createPuzzlesPointAddDialog(addPuzzlesPoint); } //保存数据 GameUtil.FinshSaveCompleteData(CommonData.SelectPuzzlesInfo, completeTime); } //动画结束后显示排行榜 transform.DOScale(new Vector3(1, 1), gameFinshAnimTime).OnComplete(delegate() { if (CommonData.SelectPuzzlesInfo.puzzlesInfo.data_type.Equals((int)JigsawResourcesEnum.Custom)) { SceneUtil.jumpMainScene(); } else { int leaderType = 0; if (CommonData.IsCheating) { leaderType = 1; } else { //没有作弊 放烟花 //GameObject dialogObj = Instantiate(ResourcesManager.LoadData<GameObject>("Prefab/Particle/Background/GameFinshParticle")); //Canvas gameFinshCanvas = dialogObj.GetComponent<Canvas>(); //gameFinshCanvas.renderMode = RenderMode.ScreenSpaceCamera; //gameFinshCanvas.worldCamera = Camera.main; } DialogManager .createLeaderBoradDialog(leaderType, CommonData.SelectPuzzlesInfo) .setUserScore(completeTime.totalSeconds) .setCallBack(this) .setCancelButtonStr(CommonData.getText(21)) .setSubmitButtonStr(CommonData.getText(23)); } CommonData.IsCheating = false; }); //镜头移动 cameraControl.transform.DOMove(cameraControl.startCameraPosition, gameFinshAnimTime); Tween cameraTW = DOTween .To(() => Camera.main.orthographicSize, x => Camera.main.orthographicSize = x, startCameraOrthographicSize, gameFinshAnimTime); //图像归位 int containerListSize = containerList.Count; for (int i = 0; i < containerListSize; i++) { GameObject container = containerList[i]; if (container != null) { JigsawContainerCpt containerCpt = container.GetComponent <JigsawContainerCpt>(); Rigidbody2D containerRB = container.GetComponent <Rigidbody2D>(); containerRB.Sleep(); container.transform.DORotate(new Vector3(containerCpt.startRotation.x, containerCpt.startRotation.y), gameFinshAnimTime); container.transform.DOMove(containerCpt.startPosition, gameFinshAnimTime); break; } } //设置成就 List <PuzzlesCompleteStateBean> listCompleteState = ((PuzzlesCompleteDSHandle)DataStorageManage.getPuzzlesCompleteDSHandle()).getDefAllData(); if (listCompleteState != null && listCompleteState.Count != 0) { int completeNumber = 0; foreach (PuzzlesCompleteStateBean itemState in listCompleteState) { if (itemState.completeTime != null && itemState.completeTime.totalSeconds != 0) { completeNumber++; } } IUserAchievementHandle userAchievement = new UserStatsHandleImpl(); userAchievement.userCompleteNumberChange(completeNumber); } }