public void modKomanariObj(string objName, string narigomaName, int x, int y) { string objNarigomaName = CreateKomaObj(narigomaName, x, y); MasuManager manager = MasuManager.Instance; manager.SetMasu(x, y, KomaFunction.GetKomaNameByObjName(objNarigomaName)); manager.UpdMasuObjNameByXAndY(objNarigomaName, x, y); DestroyKomaObj(objName); }
// 駒成確認&実行時 void execCheckNarigoma(string name, int x, int y) { GameObject gameObj = GameObject.Find(name); KomaScript sc = gameObj.GetComponent <KomaScript>(); if (sc.selfFlag) { // 駒がまだ成ってない if (KomaFunction.isNotNarigoma(sc.komaName)) { if (y <= 3 || sc.y <= 3 && sc.y != 0) { if (KomaFunction.isRequireNarigoma(sc.komaName, x, y)) { modKomanariObj(chooseKomaObjName, KomaFunction.GetNarigomaByKoma(sc.komaName), x, y); } else { string[] names = name.Split(new char[] { '_' }); name = "koma_" + names [1]; CreateNarigomaBg(KomaFunction.GetNarigomaByKoma(name), x, y); CreateNarigomaBg2(name, x, y); narigomaBgFlag = true; } } } } else if (sc.enemyFlag) { // 駒がまだ成ってない if (KomaFunction.isNotNarigoma(sc.komaName)) { if (y >= 7 || sc.y >= 7) { if (KomaFunction.isRequireNarigoma(sc.komaName, x, y)) { modKomanariObj(chooseKomaObjName, KomaFunction.GetNarigomaByKoma(sc.komaName), x, y); } else { string[] names = name.Split(new char[] { '_' }); name = "koma_" + names [1]; CreateNarigomaBg(KomaFunction.GetNarigomaByKoma(name), x, y); CreateNarigomaBg2(name, x, y); narigomaBgFlag = true; } } } } }
// 駒移動処理 public void MoveKomaObj(string name, int x, int y) { bool motigomaFlag = false; // 持ち駒の場合 if (name.IndexOf(KomaConst.motigoma) > -1) { name = name.Replace(KomaConst.motigoma, ""); MotigomaManager motigomaManager = MotigomaManager.Instance; motigomaManager.Minus(name); if (KomaFunction.isSelfKoma(name)) { GameObject obj = transform.Find("../Motigoma1").gameObject; MotigomaScript mSc = obj.GetComponent <MotigomaScript> (); mSc.RefreshKoma(); } else { GameObject obj = transform.Find("../Motigoma2").gameObject; MotigomaScript mSc = obj.GetComponent <MotigomaScript> (); mSc.RefreshKoma(); } name = CreateKomaObj(name, x, y); MasuManager manager = MasuManager.Instance; manager.SetMasu(x, y, KomaFunction.GetKomaNameByObjName(name)); manager.UpdMasuObjNameByXAndY(name, x, y); motigomaFlag = true; } GameObject gameObj = GameObject.Find(name); KomaScript sc = gameObj.GetComponent <KomaScript> (); gameObj.transform.position = new Vector3(basex - per1x * x, basey - per1y * y, 2); // 持ち駒でない場合 if (!motigomaFlag) { Debug.Log("motigomadenai " + name); execCheckGetEnemyKoma(name, x, y); execCheckNarigoma(name, x, y); // 移動前のマスを初期化 MasuManager manager = MasuManager.Instance; manager.EmptyMasu(sc.x, sc.y); sc.x = x; sc.y = y; manager.SetMasu(x, y, KomaFunction.GetKomaNameByObjName(name)); manager.UpdMasuObjNameByXAndY(name, x, y); } }
// 持ち駒選択処理 public void chooseMotigoma(string name) { Debug.Log(name); // 選択持ち駒を浮かせる if (KomaFunction.isSelfKoma(name)) { GameObject obj = transform.Find("../Motigoma1").gameObject; MotigomaScript mSc = obj.GetComponent <MotigomaScript> (); mSc.floatKomaObj(name); } else { GameObject obj = transform.Find("../Motigoma2").gameObject; MotigomaScript mSc = obj.GetComponent <MotigomaScript> (); mSc.floatKomaObj(name); } string[] names = name.Split(new char[] { '_' }); string komaname = "koma_" + names[1]; Debug.Log(komaname); GameObject komaObj = GameObject.Find(name); KomaScript sc = komaObj.GetComponent <KomaScript> (); List <KomaMove> moves = new List <KomaMove> (); if (komaname.Equals(KomaConst.komaOu) || komaname.Equals(KomaConst.komaGy)) { KomaOu koma = new KomaOu(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaHi)) { KomaHi koma = new KomaHi(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaKa)) { KomaKa koma = new KomaKa(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaKi)) { KomaKi koma = new KomaKi(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaGi)) { KomaGi koma = new KomaGi(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaKe)) { KomaKe koma = new KomaKe(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaKy)) { KomaKy koma = new KomaKy(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaFu)) { KomaFu koma = new KomaFu(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaOu2) || komaname.Equals(KomaConst.komaGy2)) { KomaOu koma = new KomaOu(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaHi2)) { KomaHi koma = new KomaHi(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaKa2)) { KomaKa koma = new KomaKa(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaKi2)) { KomaKi koma = new KomaKi(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaGi2)) { KomaGi koma = new KomaGi(); moves = koma.GetMotigomaMoves(sc); } else if (komaname.Equals(KomaConst.komaKe2)) { KomaKe koma = new KomaKe(); moves = koma.GetMotigomaMoves(sc, true); } else if (komaname.Equals(KomaConst.komaKy2)) { KomaKy koma = new KomaKy(); moves = koma.GetMotigomaMoves(sc, true); } else if (komaname.Equals(KomaConst.komaFu2)) { KomaFu koma = new KomaFu(); moves = koma.GetMotigomaMoves(sc, true); } this.RefresAbles(sc, moves, name); }
// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { Vector2 tap = Camera.main.ScreenToWorldPoint(Input.mousePosition); Collider2D collition = Physics2D.OverlapPoint(tap); GameObject masuObj = GameObject.Find("Canvas/Masu"); MasuScript masuScript = masuObj.GetComponent <MasuScript> (); // 成り駒bgが開いている時 if (masuScript.narigomaBgFlag) { if (collition) { string name = collition.transform.gameObject.name; if (name.IndexOf(KomaConst.narigomaBg) > -1) { // 駒を成る選択をした時 if (name.Equals(KomaConst.narigomaBg + "1")) { masuScript.modKomanariObj(masuScript.chooseKomaObjName , masuScript.narigomaBgName , masuScript.narigomaBgx , masuScript.narigomaBgy ); } masuScript.DestroyNarigomaBg(); masuScript.narigomaBgFlag = false; } } // 駒が移動選択状態の時 } else if (masuScript.chooseFlag) { if (collition) { string name = collition.transform.gameObject.name; if (name.IndexOf("KomaAble") > -1) { Debug.Log(name); GameObject gameObj = GameObject.Find(name); KomaAble komaAble = gameObj.GetComponent <KomaAble> (); masuScript.MoveKomaObj(masuScript.chooseKomaObjName, komaAble.x, komaAble.y); } } // 持ち駒でない時の浮き駒戻し if (masuScript.chooseKomaObjName.IndexOf(KomaConst.motigoma) == -1) { masuScript.resetFloatKomaObj(masuScript.chooseKomaObjName); } else { // 持ち駒の時の浮き駒戻し if (KomaFunction.isSelfKoma(masuScript.chooseKomaObjName)) { GameObject motigomaObj = GameObject.Find("Canvas/Motigoma1"); MotigomaScript motigomaScript = motigomaObj.GetComponent <MotigomaScript> (); motigomaScript.resetFloatKomaObj(masuScript.chooseKomaObjName); } else { GameObject motigomaObj = GameObject.Find("Canvas/Motigoma2"); MotigomaScript motigomaScript = motigomaObj.GetComponent <MotigomaScript> (); motigomaScript.resetFloatKomaObj(masuScript.chooseKomaObjName); } } masuScript.DelchooseMoves(); } else { if (collition) { string name = collition.transform.gameObject.name; // 持ち駒の場合 if (name.IndexOf(KomaConst.motigoma) > -1) { masuScript.chooseMotigoma(name); // 盤上の駒の場合 } else { masuScript.chooseKoma(name); } } } } }