Exemplo n.º 1
0
    //自分以外の土地の料金の平均を求める
    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);
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
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();
            });
        });
    }
Exemplo n.º 5
0
    // 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);
        });
    }
Exemplo n.º 6
0
    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);
    }