public void initEnterData(SceneEnterData data) { if (!enabled) { return; } ScenePreInfoData preInfo = _scene.getPreInfo(); if (preInfo != null) { RoleShowData[] signedPlayers = _scene.getPreInfo().signedPlayers; if (signedPlayers != null) { foreach (RoleShowData v in signedPlayers) { _signedPlayers.put(v.playerID, v); } } } BattleSceneData bData = data.battleData; onRefreshBattleStateByServer(bData.state, bData.timeTick); if (_scene.isDriveAll()) { //客户端场景,直接进入pre状态 switchState(BattleStateType.Pre); } }
private void Awake() { pathToSaveFile = Application.streamingAssetsPath + "/save.json"; if (!File.Exists(pathToSaveFile)) { ProgressData save = new ProgressData(); BattleSceneData sceneData = _battleScenesManager.GetBattleSceneDataById(BattleScenesManager.SceneName.Tutorial01); LevelData levelData = new LevelData(); levelData.SceneName = sceneData.TargetSceneName; foreach (ObjectiveData objective in sceneData.Objectives) { levelData.Objectives.Add(objective); } foreach (ObjectiveData quest in sceneData.Quests) { levelData.Quests.Add(quest); } save.LevelsData.Add(levelData); string savedJson = JsonUtility.ToJson(save); File.WriteAllText(pathToSaveFile, savedJson); } }
/// <summary> /// 回池 /// </summary> protected override void toRelease(DataPool pool) { this.hero = null; this.units = null; this.roles = null; this.selfBindFieldItemBags = null; this.bindVisionUnits = null; this.battleData = null; }
public void StartBattle(BattleSceneData battleSceneData) { _previousLevel = battleSceneData.PreviousLevel; /* -- Set up Battle -- */ PlayerLoader.BattleSetUp(battleSceneData.PlayerMingmings, battleSceneData.PlayerCards.ToList()); EnemyLoader.BattleSetUp(battleSceneData.EnemyMingmings, battleSceneData.EnemyCards.ToList()); _playerTurn = PlayerTurn.PlayerOne; StartCoroutine(StartTurnAfterSeconds(1)); }
/// <summary> /// 复制(潜拷贝) /// </summary> protected override void toShadowCopy(BaseData data) { if (!(data is BattleSceneData)) { return; } BattleSceneData mData = (BattleSceneData)data; this.state = mData.state; this.timeTick = mData.timeTick; }
// Use this for initialization void Start() { if (GameSceneController.Singleton is null) { var _playerMingmings = playerMinmings.Select(m => new MingmingInstance(m.MingMingData, m.Level)); var _enemyMingmings = enemyMinmings.Select(m => new MingmingInstance(m.MingMingData, m.Level)); var battleScene = new BattleSceneData(sceneName, playerCards, enemyCards, null, _playerMingmings, _enemyMingmings); BattleManager.Singleton.StartBattle(battleScene); } }
public void GetEncounter() { OnStartEncounter?.Invoke(); var thisScene = new LevelSceneData(gameObject.scene.name, this, _player); var battleScene = new BattleSceneData( GameSceneController.BattleScene, _player.DevController.DeckHolder.CurrentDeck, trainerController.DevController.DeckHolder.CurrentDeck, thisScene, _player.DevController.PlayableMingmings, trainerController.DevController.PlayableMingmings ); GameSceneController.Singleton.SwapScenes(thisScene, battleScene); }
/// <summary> /// 复制(潜拷贝) /// </summary> protected override void toShadowCopy(BaseData data) { if (!(data is SceneEnterData)) { return; } SceneEnterData mData = (SceneEnterData)data; this.hero = mData.hero; this.units = mData.units; this.roles = mData.roles; this.selfBindFieldItemBags = mData.selfBindFieldItemBags; this.bindVisionUnits = mData.bindVisionUnits; this.battleData = mData.battleData; }
/// <summary> /// 是否数据一致 /// </summary> protected override bool toDataEquals(BaseData data) { BattleSceneData mData = (BattleSceneData)data; if (this.state != mData.state) { return(false); } if (this.timeTick != mData.timeTick) { return(false); } return(true); }
public void SetData(PlayerPreferencesManager playerPreferencesManager, BattleSceneData data) { sceneData = data; Title.text = data.SceneTitle; Thumbnail.sprite = data.SceneThumbnail; int objectivesAmount = data.Objectives.Count; int questsAmount = data.Quests.Count; ObjectivesLabel.text = LanguageManager.Instance.GetTextValue(_objectivesLabelLocId); ProgressData progressData = playerPreferencesManager.LoadProgressData(); for (int i = 0; i < objectivesAmount; i++) { GameObject objective = GameObject.Instantiate(ObjectivePrefab); objective.transform.SetParent(ObjectivesContainer); objective.transform.localScale = Vector3.one; objective.transform.SetSiblingIndex(i + 1); objective.GetComponent <HUDBattleSceneObjective>().Label.text = data.GetObjectiveById(i).Name; objective.GetComponent <HUDBattleSceneObjective>().SetToggle(progressData.GetLevelDataById(data.TargetSceneName).GetObjectiveById(i).Completed); } QuestsLabel.text = LanguageManager.Instance.GetTextValue(_questsLabelLocId); for (int i = 0; i < questsAmount; i++) { GameObject quest = GameObject.Instantiate(ObjectivePrefab); quest.transform.SetParent(ObjectivesContainer); quest.transform.localScale = Vector3.one; quest.transform.SetSiblingIndex(i + objectivesAmount + 2); quest.GetComponent <HUDBattleSceneObjective>().Label.text = data.GetQuestById(i).Name; quest.GetComponent <HUDBattleSceneObjective>().SetToggle(progressData.GetLevelDataById(data.TargetSceneName).GetQuestById(i).Completed); } AcceptButtonLabel.text = LanguageManager.Instance.GetTextValue(_acceptButtonLabelLocId); CancelButtonLabel.text = LanguageManager.Instance.GetTextValue(_cancelButtonLabelLocId); //AcceptButtonLabel.GetComponentInParent<UIButton>().OnClick.AddListener(OnAcceptClicked); //CancelButtonLabel.GetComponentInParent<UIButton>().OnClick.AddListener(OnCancelClicked); //if (data.MapConversation != null) // Card._Common._ConversationsManager.StartConversation(data.MapConversation); }
public void GetEncounter() { bool hasEncounter = Rules.GetRandomFloat() <= EncounterChance; if (!hasEncounter) { return; } mingmings.Clear(); int mingmingSpawns = Rules.GetRandomInt(1, MaxMingmings + 1); for (int i = 0; i < mingmingSpawns; i++) { var _drop = DropTable.GetDrop(); if (_drop != null) { int mingmingLevel = Rules.GetRandomInt(MinMingmingLevel, MaxMingmingLevel + 1); var _mingming = new MingmingInstance((MingmingData)_drop, mingmingLevel); _mingming.Name = "Wild " + _mingming.Name; mingmings.Add(_mingming); } } if (mingmings.Any()) { OnStartEncounter?.Invoke(); var player = FindObjectOfType <PlayerController>(); var thisScene = new LevelSceneData(gameObject.scene.name, this, player); var battleScene = new BattleSceneData(GameSceneController.BattleScene, player.DevController.DeckHolder.CurrentDeck, new List <CardData>(), thisScene, player.DevController.PlayableMingmings, mingmings); GameSceneController.Singleton.SwapScenes(thisScene, battleScene); } }
public virtual void makeSceneEnterData(SceneEnterData data) { if (!enabled) { return; } BattleSceneData bData = GameC.factory.createBattleSceneData(); bData.state = _state; bData.timeTick = _timeTick; data.battleData = bData; //units ScenePreInfoData preInfo = _scene.getPreInfo(); if (preInfo != null) { //指定进入角色构造 RoleShowData[] signedPlayers = preInfo.signedPlayers; if (signedPlayers != null) { foreach (RoleShowData v in signedPlayers) { //不是自己(有其他角色就自行创建) if (v.playerID != data.hero.identity.playerID) { UnitData unitData = _scene.inout.createCharacterDataForRobot(v.playerID); data.units.add(unitData); } } } } }
private void Start() { currentMode = m_gameManager.GetGameMode(); //데이터 초기화 if (currentMode == 1 || currentMode == 2)//스토리모드일경우 { m_gameManager.SetCurrentSceneKey(m_gameManager.GetCurrentSceneKey() + 1); sceneData = m_gameManager.GetSceneIndData(currentMode); m_data = m_gameManager.GetBattleSceneData(currentMode); } else if (currentMode == 3) //연습모드 일경우 { m_gameManager.SetPracticeSceneDataKey(m_gameManager.GetPracticeSceneKey() + 1); sceneData = m_gameManager.GetSceneIndData(currentMode); m_data = m_gameManager.GetBattleSceneData(currentMode); } m_generator.SetProblempocket(m_data.problemPocket, m_data.hellProblemPocket); //백그라운드 오디오 가져오기 및 재생 bg_audioclip = Resources.Load("BGM/" + m_data.BGM) as AudioClip; m_audioSource.clip = bg_audioclip; m_audioSource.Play(); m_audioSource.loop = true; show_chapter_num = m_data.chapterNum; show_stage_num = m_data.stageNum; Debug.Log(" Chapter : " + show_chapter_num.ToString() + " : Stage : " + show_stage_num.ToString()); /// /* * m_enemy.GetComponent<SpriteRenderer>().sprite = Resources.Load("EnemySprite/" + m_data.enemyPrefab.ToString())as Sprite; * m_enemy.transform.position = new Vector3(507.392f, 405.248f, -9000f); * m_enemy.transform.rotation = transform.rotation;///확인후 삭제 */ /// //m_enemy = Resources.Load("EnemyPref/" + m_data.key.ToString()) as GameObject; m_enemy = Instantiate(Resources.Load("EnemyPref/Mob_" + m_data.enemyPrefab.ToString()) as GameObject, new Vector3(0f, 0f, 0f), transform.rotation) as GameObject; m_enemy.transform.Translate(new Vector3(-m_enemy.GetComponent <SpriteRenderer>().bounds.size.x / 2, m_enemy.GetComponent <SpriteRenderer>().bounds.size.y / 2, 0)); //m_enemy = Instantiate(Resources.Load("EnemyPref/Boss_" + m_data.enemyPrefab.ToString()) as GameObject, new Vector3(507.392f, 405.248f, -9000f), transform.rotation) as GameObject; m_enemy.transform.SetParent(m_canvas.transform, false); /// bg_image_.sprite = Resources.Load("Background/" + m_data.BGImage, typeof(Sprite)) as Sprite; //bullet 이미지 받아오기 ///더미데이터 받아오는중. 투사체 이미지 업로드 완료 후 수정요망 Sprite[] bullets = new Sprite[3]; for (int i = 0; i < 3; i++) { //"chapter-imageNum" bullets[i] = Resources.Load("EnemyBullet/projectile_" + m_data.chapterNum.ToString() + "_" + m_data.stageNum.ToString(), typeof(Sprite)) as Sprite; // Debug.Log(bullets[i].name); } hintHandler.LoadBulletImage(bullets); if (Is2to5BossStage() == 8) { chunjiin.GetComponent <KeyboardHandler>().isSejong = true; } stageStatus = StageState.READY; }
/// <summary> /// 读取字节流(完整版) /// </summary> protected override void toReadBytesFull(BytesReadStream stream) { stream.startReadObj(); if (stream.readBoolean()) { BaseData heroT = stream.readDataFullNotNull(); if (heroT != null) { if (heroT is UnitData) { this.hero = (UnitData)heroT; } else { this.hero = new UnitData(); if (!(heroT.GetType().IsAssignableFrom(typeof(UnitData)))) { stream.throwTypeReadError(typeof(UnitData), heroT.GetType()); } this.hero.shadowCopy(heroT); } } else { this.hero = null; } } else { this.hero = null; } int unitsLen = stream.readLen(); if (this.units != null) { this.units.clear(); this.units.ensureCapacity(unitsLen); } else { this.units = new SList <UnitData>(); } SList <UnitData> unitsT = this.units; for (int unitsI = unitsLen - 1; unitsI >= 0; --unitsI) { UnitData unitsV; BaseData unitsVT = stream.readDataFullNotNull(); if (unitsVT != null) { if (unitsVT is UnitData) { unitsV = (UnitData)unitsVT; } else { unitsV = new UnitData(); if (!(unitsVT.GetType().IsAssignableFrom(typeof(UnitData)))) { stream.throwTypeReadError(typeof(UnitData), unitsVT.GetType()); } unitsV.shadowCopy(unitsVT); } } else { unitsV = null; } unitsT.add(unitsV); } int rolesLen = stream.readLen(); if (this.roles != null) { this.roles.clear(); this.roles.ensureCapacity(rolesLen); } else { this.roles = new LongObjectMap <SceneRoleData>(rolesLen); } LongObjectMap <SceneRoleData> rolesT = this.roles; for (int rolesI = rolesLen - 1; rolesI >= 0; --rolesI) { SceneRoleData rolesV; BaseData rolesVT = stream.readDataFullNotNull(); if (rolesVT != null) { if (rolesVT is SceneRoleData) { rolesV = (SceneRoleData)rolesVT; } else { rolesV = new SceneRoleData(); if (!(rolesVT.GetType().IsAssignableFrom(typeof(SceneRoleData)))) { stream.throwTypeReadError(typeof(SceneRoleData), rolesVT.GetType()); } rolesV.shadowCopy(rolesVT); } } else { rolesV = null; } rolesT.put(rolesV.playerID, rolesV); } if (stream.readBoolean()) { int selfBindFieldItemBagsLen = stream.readLen(); if (this.selfBindFieldItemBags != null) { this.selfBindFieldItemBags.clear(); this.selfBindFieldItemBags.ensureCapacity(selfBindFieldItemBagsLen); } else { this.selfBindFieldItemBags = new IntObjectMap <FieldItemBagBindData>(selfBindFieldItemBagsLen); } IntObjectMap <FieldItemBagBindData> selfBindFieldItemBagsT = this.selfBindFieldItemBags; for (int selfBindFieldItemBagsI = selfBindFieldItemBagsLen - 1; selfBindFieldItemBagsI >= 0; --selfBindFieldItemBagsI) { FieldItemBagBindData selfBindFieldItemBagsV; if (stream.readBoolean()) { BaseData selfBindFieldItemBagsVT = stream.readDataFullNotNull(); if (selfBindFieldItemBagsVT != null) { if (selfBindFieldItemBagsVT is FieldItemBagBindData) { selfBindFieldItemBagsV = (FieldItemBagBindData)selfBindFieldItemBagsVT; } else { selfBindFieldItemBagsV = new FieldItemBagBindData(); if (!(selfBindFieldItemBagsVT.GetType().IsAssignableFrom(typeof(FieldItemBagBindData)))) { stream.throwTypeReadError(typeof(FieldItemBagBindData), selfBindFieldItemBagsVT.GetType()); } selfBindFieldItemBagsV.shadowCopy(selfBindFieldItemBagsVT); } } else { selfBindFieldItemBagsV = null; } } else { selfBindFieldItemBagsV = null; } selfBindFieldItemBagsT.put(selfBindFieldItemBagsV.instanceID, selfBindFieldItemBagsV); } } else { this.selfBindFieldItemBags = null; } if (stream.readBoolean()) { int bindVisionUnitsLen = stream.readLen(); if (this.bindVisionUnits != null) { this.bindVisionUnits.clear(); this.bindVisionUnits.ensureCapacity(bindVisionUnitsLen); } else { this.bindVisionUnits = new IntObjectMap <UnitSimpleData>(bindVisionUnitsLen); } IntObjectMap <UnitSimpleData> bindVisionUnitsT = this.bindVisionUnits; for (int bindVisionUnitsI = bindVisionUnitsLen - 1; bindVisionUnitsI >= 0; --bindVisionUnitsI) { int bindVisionUnitsK; UnitSimpleData bindVisionUnitsV; bindVisionUnitsK = stream.readInt(); if (stream.readBoolean()) { BaseData bindVisionUnitsVT = stream.readDataFullNotNull(); if (bindVisionUnitsVT != null) { if (bindVisionUnitsVT is UnitSimpleData) { bindVisionUnitsV = (UnitSimpleData)bindVisionUnitsVT; } else { bindVisionUnitsV = new UnitSimpleData(); if (!(bindVisionUnitsVT.GetType().IsAssignableFrom(typeof(UnitSimpleData)))) { stream.throwTypeReadError(typeof(UnitSimpleData), bindVisionUnitsVT.GetType()); } bindVisionUnitsV.shadowCopy(bindVisionUnitsVT); } } else { bindVisionUnitsV = null; } } else { bindVisionUnitsV = null; } bindVisionUnitsT.put(bindVisionUnitsK, bindVisionUnitsV); } } else { this.bindVisionUnits = null; } if (stream.readBoolean()) { BaseData battleDataT = stream.readDataFullNotNull(); if (battleDataT != null) { if (battleDataT is BattleSceneData) { this.battleData = (BattleSceneData)battleDataT; } else { this.battleData = new BattleSceneData(); if (!(battleDataT.GetType().IsAssignableFrom(typeof(BattleSceneData)))) { stream.throwTypeReadError(typeof(BattleSceneData), battleDataT.GetType()); } this.battleData.shadowCopy(battleDataT); } } else { this.battleData = null; } } else { this.battleData = null; } stream.endReadObj(); }
void LoadXml() { System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); TextAsset[] textAsset = new TextAsset[] { (TextAsset)Resources.Load("2umjul_Goyu"), (TextAsset)Resources.Load("2umjul_Hanja"), (TextAsset)Resources.Load("2umjul_Waerae"), (TextAsset)Resources.Load("2umjul_Honjong"), //(TextAsset)Resources.Load("BattleSceneXml"), (TextAsset)Resources.Load("BattleSceneXml_0607"), (TextAsset)Resources.Load("DialogSceneXml"), (TextAsset)Resources.Load("SceneDataXml") }; XmlDocument xmlDoc = new XmlDocument(); for (int i = 0; i < 4; i++) // 단어 데이터들 딕셔너리에 저장 { dictTbl[i] = new Dictionary <string, string>(); xmlDoc.LoadXml(textAsset[i].text); XmlNodeList nodes = xmlDoc.SelectNodes("WordDic/WordSet"); // 가져올 노드 설정 int count = 0; foreach (XmlNode node in nodes) { dictTbl[i].Add(node.SelectSingleNode("Key").InnerText, node.SelectSingleNode("Value").InnerText); count++; } Debug.Log("wordCount:" + count); } if (hintXmlTool == null) { for (int i = 4; i < 5; i++) // 배틀씬데이터 저장 { xmlDoc.LoadXml(textAsset[i].text); XmlNodeList nodes = xmlDoc.SelectNodes("BattleScene/BattleSceneSet"); int indCount = 0; foreach (XmlNode node in nodes) { BattleSceneData BSD = new BattleSceneData(); BSD.key = int.Parse(node.SelectSingleNode("key").InnerText); BSD.chapterNum = int.Parse(node.SelectSingleNode("chapterNum").InnerText); BSD.stageNum = int.Parse(node.SelectSingleNode("stageNum").InnerText); string tmp_prob = node.SelectSingleNode("problemPocket").InnerText; BSD.problemPocket = tmp_prob.Split(new char[] { ',' }); string tmp_hellprob = node.SelectSingleNode("hellProblemPocket").InnerText; BSD.hellProblemPocket = tmp_hellprob.Split(new char[] { ',' }); BSD.enemyPrefab = int.Parse(node.SelectSingleNode("enemyPrefab").InnerText); BSD.enemyHp = float.Parse(node.SelectSingleNode("enemyHP").InnerText); BSD.enemyDamage = float.Parse(node.SelectSingleNode("enemyDamage").InnerText); BSD.isBoss = bool.Parse(node.SelectSingleNode("isBoss").InnerText); BSD.bossPattern = int.Parse(node.SelectSingleNode("bossPattern").InnerText); BSD.nextDialogNum = int.Parse(node.SelectSingleNode("nextDialogNum").InnerText); BSD.BGImage = node.SelectSingleNode("BGImage").InnerText; BSD.BGM = node.SelectSingleNode("BGM").InnerText; //암것도 안 들어있어서 주석 처리. 나중에 넣어주세요! battleDataTbl[indCount++] = BSD; } } for (int i = 5; i < 6; i++) //다이얼로그 데이터 저장 { xmlDoc.LoadXml(textAsset[i].text); XmlNodeList nodes = xmlDoc.SelectNodes("DialogScene/DialogSet"); int indCount = 0; foreach (XmlNode node in nodes) { DialogData DLD = new DialogData(); DLD.key = int.Parse(node.SelectSingleNode("key").InnerText); DLD.chapterNum = int.Parse(node.SelectSingleNode("chapterNum").InnerText); DLD.stageNum = int.Parse(node.SelectSingleNode("stageNum").InnerText); string tmp_script = node.SelectSingleNode("script").InnerText; DLD.script = tmp_script.Split(new char[] { '/' }); string tmp_conv_state = node.SelectSingleNode("conv_state").InnerText; string[] tmp_conv_state_arr = tmp_conv_state.Split(new char[] { '/' }); DLD.conv_state = tmp_conv_state_arr; //DLD.conv_state = Array.ConvertAll<string, int>(tmp_conv_state_arr, int.Parse); DLD.isKnockDown = bool.Parse(node.SelectSingleNode("isKnockDown").InnerText); DLD.BGImage = node.SelectSingleNode("BGImage").InnerText; DLD.enemyImage = node.SelectSingleNode("enemyImage").InnerText; DLD.enemyWholeImage = node.SelectSingleNode("enemyWholeImage").InnerText; DLD.BGM = node.SelectSingleNode("BGM").InnerText; //암것도 안 들어있어서 주석 처리. 나중에 넣어주세요! dialogDataTbl[indCount++] = DLD; } } for (int i = 6; i < 7; i++) //다이얼로그 데이터 저장 { xmlDoc.LoadXml(textAsset[i].text); XmlNodeList nodes = xmlDoc.SelectNodes("SceneData/SceneDataSet"); int indCount = 0; foreach (XmlNode node in nodes) { SceneData SCD = new SceneData(); SCD.key = int.Parse(node.SelectSingleNode("key").InnerText); SCD.nextScene = int.Parse(node.SelectSingleNode("nextSceneCase").InnerText); SCD.nextSceneKey = int.Parse(node.SelectSingleNode("nextSceneKey").InnerText); sceneDataTbl[indCount++] = SCD; } } } sw.Stop();//시간측정을 위한 함수 Debug.Log(sw.ElapsedMilliseconds.ToString() + "ms"); if (hintXmlTool == null) { m_gameManager.SetXmlDictData(dictTbl); m_gameManager.SetXmlBattleSceneData(battleDataTbl); m_gameManager.SetXmlDialogData(dialogDataTbl); m_gameManager.SetXmlSceneData(sceneDataTbl); } else { hintXmlTool.Loop(); } }
/// <summary> /// 复制(深拷贝) /// </summary> protected override void toCopy(BaseData data) { if (!(data is SceneEnterData)) { return; } SceneEnterData mData = (SceneEnterData)data; if (mData.hero != null) { this.hero = (UnitData)mData.hero.clone(); } else { this.hero = null; } if (mData.units != null) { if (this.units != null) { this.units.clear(); this.units.ensureCapacity(mData.units.size()); } else { this.units = new SList <UnitData>(); } SList <UnitData> unitsT = this.units; if (!mData.units.isEmpty()) { UnitData[] unitsVValues = mData.units.getValues(); for (int unitsVI = 0, unitsVLen = mData.units.length(); unitsVI < unitsVLen; ++unitsVI) { UnitData unitsV = unitsVValues[unitsVI]; UnitData unitsU; if (unitsV != null) { unitsU = (UnitData)unitsV.clone(); } else { unitsU = null; nullObjError("unitsU"); } unitsT.add(unitsU); } } } else { this.units = null; nullObjError("units"); } if (mData.roles != null) { if (this.roles != null) { this.roles.clear(); this.roles.ensureCapacity(mData.roles.size()); } else { this.roles = new LongObjectMap <SceneRoleData>(mData.roles.size()); } LongObjectMap <SceneRoleData> rolesT = this.roles; if (!mData.roles.isEmpty()) { SceneRoleData[] rolesVValues = mData.roles.getValues(); for (int rolesVI = rolesVValues.Length - 1; rolesVI >= 0; --rolesVI) { SceneRoleData rolesV = rolesVValues[rolesVI]; if (rolesV != null) { SceneRoleData rolesU; if (rolesV != null) { rolesU = (SceneRoleData)rolesV.clone(); } else { rolesU = null; nullObjError("rolesU"); } rolesT.put(rolesU.playerID, rolesU); } } } } else { this.roles = null; nullObjError("roles"); } if (mData.selfBindFieldItemBags != null) { if (this.selfBindFieldItemBags != null) { this.selfBindFieldItemBags.clear(); this.selfBindFieldItemBags.ensureCapacity(mData.selfBindFieldItemBags.size()); } else { this.selfBindFieldItemBags = new IntObjectMap <FieldItemBagBindData>(mData.selfBindFieldItemBags.size()); } IntObjectMap <FieldItemBagBindData> selfBindFieldItemBagsT = this.selfBindFieldItemBags; if (!mData.selfBindFieldItemBags.isEmpty()) { FieldItemBagBindData[] selfBindFieldItemBagsVValues = mData.selfBindFieldItemBags.getValues(); for (int selfBindFieldItemBagsVI = selfBindFieldItemBagsVValues.Length - 1; selfBindFieldItemBagsVI >= 0; --selfBindFieldItemBagsVI) { FieldItemBagBindData selfBindFieldItemBagsV = selfBindFieldItemBagsVValues[selfBindFieldItemBagsVI]; if (selfBindFieldItemBagsV != null) { FieldItemBagBindData selfBindFieldItemBagsU; if (selfBindFieldItemBagsV != null) { selfBindFieldItemBagsU = (FieldItemBagBindData)selfBindFieldItemBagsV.clone(); } else { selfBindFieldItemBagsU = null; } selfBindFieldItemBagsT.put(selfBindFieldItemBagsU.instanceID, selfBindFieldItemBagsU); } } } } else { this.selfBindFieldItemBags = null; } if (mData.bindVisionUnits != null) { if (this.bindVisionUnits != null) { this.bindVisionUnits.clear(); this.bindVisionUnits.ensureCapacity(mData.bindVisionUnits.size()); } else { this.bindVisionUnits = new IntObjectMap <UnitSimpleData>(mData.bindVisionUnits.size()); } IntObjectMap <UnitSimpleData> bindVisionUnitsT = this.bindVisionUnits; if (!mData.bindVisionUnits.isEmpty()) { int bindVisionUnitsKFreeValue = mData.bindVisionUnits.getFreeValue(); int[] bindVisionUnitsKKeys = mData.bindVisionUnits.getKeys(); UnitSimpleData[] bindVisionUnitsVValues = mData.bindVisionUnits.getValues(); for (int bindVisionUnitsKI = bindVisionUnitsKKeys.Length - 1; bindVisionUnitsKI >= 0; --bindVisionUnitsKI) { int bindVisionUnitsK = bindVisionUnitsKKeys[bindVisionUnitsKI]; if (bindVisionUnitsK != bindVisionUnitsKFreeValue) { UnitSimpleData bindVisionUnitsV = bindVisionUnitsVValues[bindVisionUnitsKI]; int bindVisionUnitsW; UnitSimpleData bindVisionUnitsU; bindVisionUnitsW = bindVisionUnitsK; if (bindVisionUnitsV != null) { bindVisionUnitsU = (UnitSimpleData)bindVisionUnitsV.clone(); } else { bindVisionUnitsU = null; } bindVisionUnitsT.put(bindVisionUnitsW, bindVisionUnitsU); } } } } else { this.bindVisionUnits = null; } if (mData.battleData != null) { this.battleData = (BattleSceneData)mData.battleData.clone(); } else { this.battleData = null; } }
/// <summary> /// 读取字节流(简版) /// </summary> protected override void toReadBytesSimple(BytesReadStream stream) { if (stream.readBoolean()) { this.hero = (UnitData)stream.readDataSimpleNotNull(); } else { this.hero = null; } int unitsLen = stream.readLen(); if (this.units != null) { this.units.clear(); this.units.ensureCapacity(unitsLen); } else { this.units = new SList <UnitData>(); } SList <UnitData> unitsT = this.units; for (int unitsI = unitsLen - 1; unitsI >= 0; --unitsI) { UnitData unitsV; unitsV = (UnitData)stream.readDataSimpleNotNull(); unitsT.add(unitsV); } int rolesLen = stream.readLen(); if (this.roles != null) { this.roles.clear(); this.roles.ensureCapacity(rolesLen); } else { this.roles = new LongObjectMap <SceneRoleData>(rolesLen); } LongObjectMap <SceneRoleData> rolesT = this.roles; for (int rolesI = rolesLen - 1; rolesI >= 0; --rolesI) { SceneRoleData rolesV; rolesV = (SceneRoleData)stream.readDataSimpleNotNull(); rolesT.put(rolesV.playerID, rolesV); } if (stream.readBoolean()) { int selfBindFieldItemBagsLen = stream.readLen(); if (this.selfBindFieldItemBags != null) { this.selfBindFieldItemBags.clear(); this.selfBindFieldItemBags.ensureCapacity(selfBindFieldItemBagsLen); } else { this.selfBindFieldItemBags = new IntObjectMap <FieldItemBagBindData>(selfBindFieldItemBagsLen); } IntObjectMap <FieldItemBagBindData> selfBindFieldItemBagsT = this.selfBindFieldItemBags; for (int selfBindFieldItemBagsI = selfBindFieldItemBagsLen - 1; selfBindFieldItemBagsI >= 0; --selfBindFieldItemBagsI) { FieldItemBagBindData selfBindFieldItemBagsV; if (stream.readBoolean()) { selfBindFieldItemBagsV = (FieldItemBagBindData)stream.readDataSimpleNotNull(); } else { selfBindFieldItemBagsV = null; } selfBindFieldItemBagsT.put(selfBindFieldItemBagsV.instanceID, selfBindFieldItemBagsV); } } else { this.selfBindFieldItemBags = null; } if (stream.readBoolean()) { int bindVisionUnitsLen = stream.readLen(); if (this.bindVisionUnits != null) { this.bindVisionUnits.clear(); this.bindVisionUnits.ensureCapacity(bindVisionUnitsLen); } else { this.bindVisionUnits = new IntObjectMap <UnitSimpleData>(bindVisionUnitsLen); } IntObjectMap <UnitSimpleData> bindVisionUnitsT = this.bindVisionUnits; for (int bindVisionUnitsI = bindVisionUnitsLen - 1; bindVisionUnitsI >= 0; --bindVisionUnitsI) { int bindVisionUnitsK; UnitSimpleData bindVisionUnitsV; bindVisionUnitsK = stream.readInt(); if (stream.readBoolean()) { bindVisionUnitsV = (UnitSimpleData)stream.readDataSimpleNotNull(); } else { bindVisionUnitsV = null; } bindVisionUnitsT.put(bindVisionUnitsK, bindVisionUnitsV); } } else { this.bindVisionUnits = null; } if (stream.readBoolean()) { this.battleData = (BattleSceneData)stream.readDataSimpleNotNull(); } else { this.battleData = null; } }