//自分以外の土地の料金の平均を求める public int getFeeAverage(PlayerStatus aMyStatus, GameFeild aFeild) { int tTotalFee = 0; int tTotalNum = 0; foreach (GameMass tMass in aFeild.mMassList) { if (!(tMass is LandMass)) { continue; } LandMass tLand = (LandMass)tMass; if (tLand.mOwner == aMyStatus.mPlayerNumber) { continue; } if (tLand.mOwner <= 0) { continue; } tTotalFee += tLand.mFeeCost; tTotalNum++; } if (tTotalFee == 0) { return(0); } return(tTotalFee / tTotalNum); }
static public List <PlayerStatus> create(GameSetting aSetting, GameFeild aFeild, Arg aStageData) { List <PlayerStatus> tStatusList = new List <PlayerStatus>(); List <GameSetting.CharaData> tCharaDataList = new List <GameSetting.CharaData>(); tCharaDataList.Add(aSetting.mCharaData1); tCharaDataList.Add(aSetting.mCharaData2); tCharaDataList.Add(aSetting.mCharaData3); tCharaDataList.Add(aSetting.mCharaData4); for (int i = 0; i < 4; i++) { GameSetting.CharaData tCharaData = tCharaDataList[i]; if (tCharaData.mFile == "none") { tStatusList.Add(null); continue; } PlayerStatus tStatus = new PlayerStatus(); //ai switch (tCharaData.mAi) { case "player": tStatus.mAi = new PlayerAi(); break; case "solid": tStatus.mAi = new SolidAi(); break; case "carefully": case "impulse": tStatus.mAi = new ImpulseAi(); break; } //chara tStatus.mCharaFile = tCharaData.mFile; tStatus.mCharaName = tCharaData.mName; //金 tStatus.mMoney = (int)(aStageData.get <int>("initialMoney") * aSetting.mInitialMoneyRate); tStatus.mProperty = 0; tStatus.mAssets = tStatus.mMoney; tStatus.mRank = 1; tStatus.mOrbit = 1; tStatus.mPlayerNumber = i + 1; //coma int tStartMassNumber = getStartMassNumber(aFeild, i + 1); tStatus.mCurrentMassNumber = tStartMassNumber; tStatus.mComa = GameObject.Instantiate(Resources.Load <PlayerComa>("prefabs/game/player/coma")); tStatus.mComa.mImg.sprite = Resources.Load <Sprite>("sprites/chara/" + tCharaData.mFile + "/" + tCharaData.mFile); tStatus.mComa.name = "coma : " + tStatus.mCharaFile; tStatus.mComa.position = aFeild.mMassList[tStartMassNumber].worldPosition; tStatus.mComa.transform.SetParent(aFeild.mComaContainer.transform, true); tStatusList.Add(tStatus); } return(tStatusList); }
static public int getStartMassNumber(GameFeild aFeild, int aPlayerNumber) { for (int i = 0; i < aFeild.mMassList.Count; i++) { if (aFeild.mMassList[i] is StartMass) { return(i); } } return(0); }
public void start(GameFeild aFeild, List <PlayerStatus> aStatus, PlayerStatusMain aPlayerStatusMain) { mFeild = aFeild; mPlayerStatus = aStatus; mPlayerStatusMain = aPlayerStatusMain; decideTurnOrder(); mCamera.shoot(mTurnOrder[0].mComa); moveComaToWaitePosition(() => { mPlayerStatusMain.sortInOrder(mTurnOrder, () => { mTurnManager = new TurnManager(); mTurnManager.mMassEventManager = new MassEventManager(); mTurnManager.mMassEventManager.mMaster = this; nextTurn(); }); }); }
// Start is called before the first frame update void Start() { mArg = MySceneManager.getArg("game"); mSetting = mArg.get <GameSetting>("setting"); mStageData = new Arg(MyJson.deserializeResourse("stage/data/" + mSetting.mStageName)); mFeeRate = mSetting.mFeeRate; mAcquisitionRate = mSetting.mAcqusitionRate; GameFeild tFeild = GameFeildFactory.create(mStageData); List <PlayerStatus> tStatus = PlayerFactory.create(mSetting, tFeild, mStageData); MySceneManager.openScene("playerStatus", null, (aScene) => { PlayerStatusMain tMain = GameObject.Find("playerStatusMain").GetComponent <PlayerStatusMain>(); tMain.initialize(tStatus); mMaster = new GameMaster(); mMaster.mCamera = GameObject.Find("gameMainCamera").GetComponent <GameMainCamera>(); mMaster.start(tFeild, tStatus, tMain); }); }
static public GameFeild create(Arg aStageData) { GameFeild tFeild = MyBehaviour.create <GameFeild>(); tFeild.name = "gameFeild"; //マス作成 foreach (Arg tData in aStageData.get <List <Arg> >("mass")) { GameMass tMass = GameMassFactory.create(tData); tFeild.mMassList.Add(tMass); tMass.transform.SetParent(tFeild.mMassContainer.transform, true); } //ルート作成 for (int i = 0; i < tFeild.mMassList.Count - 1; i++) { MyBehaviour tRoute = createRoute(tFeild.mMassList[i], tFeild.mMassList[i + 1]); tRoute.transform.SetParent(tFeild.mRouteContainer.transform, true); } MyBehaviour tRouteLast = createRoute(tFeild.mMassList[tFeild.mMassList.Count - 1], tFeild.mMassList[0]); tRouteLast.transform.SetParent(tFeild.mRouteContainer.transform, true); //東西南北 foreach (GameMass tMass in tFeild.mMassList) { if (tFeild.mNorth < tMass.worldPosition.z) { tFeild.mNorth = tMass.worldPosition.z; } if (tFeild.mEast < tMass.worldPosition.x) { tFeild.mEast = tMass.worldPosition.x; } if (tFeild.mSouth > tMass.worldPosition.z) { tFeild.mSouth = tMass.worldPosition.z; } if (tFeild.mWest > tMass.worldPosition.x) { tFeild.mWest = tMass.worldPosition.x; } } tFeild.mNorth += 10; tFeild.mEast += 10; tFeild.mSouth -= 15; tFeild.mWest -= 10; tFeild.mHeight = 10; //壁 float tFloorOffset = -0.5f; //床 MyBehaviour tWall = MyBehaviour.create <MyBehaviour>(); tWall.name = "floor"; tWall.transform.SetParent(tFeild.mWallContainer.transform); tWall.gameObject.AddComponent <Canvas>(); Image tImage = tWall.gameObject.AddComponent <Image>(); tImage.sprite = Resources.Load <Sprite>("sprites/wall/" + aStageData.get <string>("floor")); tImage.type = Image.Type.Tiled; tImage.pixelsPerUnitMultiplier = Mathf.Max(tFeild.mEast - tFeild.mWest, tFeild.mNorth - tFeild.mSouth); tWall.rotateX = 90; tWall.position = new Vector3((tFeild.mWest + tFeild.mEast) / 2, tFloorOffset, (tFeild.mNorth + tFeild.mSouth) / 2); tWall.GetComponent <RectTransform>().sizeDelta = new Vector2(tFeild.mEast - tFeild.mWest, tFeild.mNorth - tFeild.mSouth); //北の壁 tWall = MyBehaviour.create <MyBehaviour>(); tWall.name = "north"; tWall.transform.SetParent(tFeild.mWallContainer.transform); tWall.gameObject.AddComponent <Canvas>(); tImage = tWall.gameObject.AddComponent <Image>(); tImage.sprite = Resources.Load <Sprite>("sprites/wall/" + aStageData.get <string>("wall")); tImage.type = Image.Type.Tiled; tImage.pixelsPerUnitMultiplier = Mathf.Max(tFeild.mEast - tFeild.mWest, tFeild.mHeight + tFloorOffset); tWall.position = new Vector3((tFeild.mWest + tFeild.mEast) / 2, (tFeild.mHeight + tFloorOffset) / 2, tFeild.mNorth); tWall.GetComponent <RectTransform>().sizeDelta = new Vector2(tFeild.mEast - tFeild.mWest, tFeild.mHeight - tFloorOffset); //東の壁 tWall = MyBehaviour.create <MyBehaviour>(); tWall.name = "east"; tWall.transform.SetParent(tFeild.mWallContainer.transform); tWall.gameObject.AddComponent <Canvas>(); tImage = tWall.gameObject.AddComponent <Image>(); tImage.sprite = Resources.Load <Sprite>("sprites/wall/" + aStageData.get <string>("wall")); tImage.type = Image.Type.Tiled; tImage.pixelsPerUnitMultiplier = Mathf.Max(tFeild.mNorth - tFeild.mSouth, tFeild.mHeight + tFloorOffset); tWall.rotateY = -90; tWall.position = new Vector3(tFeild.mEast, (tFeild.mHeight + tFloorOffset) / 2, (tFeild.mNorth + tFeild.mSouth) / 2); tWall.GetComponent <RectTransform>().sizeDelta = new Vector2(tFeild.mNorth - tFeild.mSouth, tFeild.mHeight - tFloorOffset); //西の壁 tWall = MyBehaviour.create <MyBehaviour>(); tWall.name = "west"; tWall.transform.SetParent(tFeild.mWallContainer.transform); tWall.gameObject.AddComponent <Canvas>(); tImage = tWall.gameObject.AddComponent <Image>(); tImage.sprite = Resources.Load <Sprite>("sprites/wall/" + aStageData.get <string>("wall")); tImage.type = Image.Type.Tiled; tImage.pixelsPerUnitMultiplier = Mathf.Max(tFeild.mNorth - tFeild.mSouth, tFeild.mHeight + tFloorOffset); tWall.rotateY = 90; tWall.position = new Vector3(tFeild.mWest, (tFeild.mHeight + tFloorOffset) / 2, (tFeild.mNorth + tFeild.mSouth) / 2); tWall.GetComponent <RectTransform>().sizeDelta = new Vector2(tFeild.mNorth - tFeild.mSouth, tFeild.mHeight - tFloorOffset); return(tFeild); }