Exemple #1
0
    public BattleMapSystem(IBattleManager manager) : base(manager)
    {
        width  = battleManager.mapWidth;
        height = battleManager.mapHeight;

        _YDelta = new Vector3Int(-1, 0, 1);
        _XDelta = new Vector3Int(1, 0, 1);

        //测试数据赋值
        tileNames = new string[] { "Hill", "Gobi", "Plain", "River" };
        weights   = new float[] { 100, 100, 100, 100 };
        walkable  = new bool[] { false, true, true, true };

        xOriMax = 2;
        yOriMax = 2;
        scale   = 5f;

        _SceneCamera    = GameObject.FindGameObjectWithTag(GlobalSetting.TAG_BATTLE_SCENE_CAMERA_NAME).GetComponent <Camera>();
        _CameraTF       = _SceneCamera.transform;
        _CameraParentTF = _CameraTF.parent;
        tileParent      = GameObject.FindGameObjectWithTag(GlobalSetting.TAG_TILE_PARENT_NAME).transform;
        tiles           = new GameObject[4];
        tiles[0]        = ResourcesMgr.Instance.Load <GameObject>("Hill").res;
        tiles[1]        = ResourcesMgr.Instance.Load <GameObject>("Gobi").res;
        tiles[2]        = ResourcesMgr.Instance.Load <GameObject>("Plain").res;
        tiles[3]        = ResourcesMgr.Instance.Load <GameObject>("River").res;

        _Creator = new MapCreator(this);
        _Checker = new MapChecker(this);
        _Printer = new Map45DegreesPrinter(this, tileParent);

        _MapProxy = facade.RetrieveProxy(MapVOProxy.NAME) as MapVOProxy;

        for (int i = 0; i < tileNames.Length; i++)
        {
            //PoolManager.Instance.IncreaseObjectCache(tileNames[i], maxShowX * maxShowY * 3);
        }
    }
Exemple #2
0
    public override void Execute(INotification notification)
    {
        var msgParam = notification.Body as TwoMsgParams <PlayerVO, IBuildingVO>;

        if (msgParam != null && msgParam.first != null && msgParam.second != null)
        {
            PlayerVO        playerVo      = msgParam.first;
            IBuildingVO     building      = msgParam.second;
            PlayerVOProxy   playerVOProxy = Facade.RetrieveProxy(PlayerVOProxy.NAME) as PlayerVOProxy;
            MapVOProxy      mapVOProxy    = Facade.RetrieveProxy(MapVOProxy.NAME) as MapVOProxy;
            BuildingVOProxy buildingProxy = Facade.RetrieveProxy(BuildingVOProxy.NAME) as BuildingVOProxy;

            //判断资源是否满足创建需求
            if (playerVo.gold < building.createCostGold || playerVo.grain < building.createCostGrain)
            {
                return;
            }

            playerVo.gold  -= building.createCostGold;
            playerVo.grain -= building.createCostGrain;

            switch (building.buildingType)
            {
            case E_Building.None:
                break;

            case E_Building.MainBase:
                //判断是否可以被添加....
                MainBaseVO mainBaseVO = building as MainBaseVO;
                if (mainBaseVO != null)
                {
                    if (mapVOProxy.IsCanOccupedArea(mainBaseVO.tilePositon, mainBaseVO.radius))
                    {
                        mainBaseVO.SetOwer(playerVo);
                        buildingProxy.CreateBuilding(mainBaseVO, mainBaseVO, playerVo);
                        //更新地图建筑信息
                        mapVOProxy.SetBuildingInfo(true, building.tilePositon, building.rect);
                        //更新占领信息
                        mapVOProxy.SetOccupiedInfo(true, building.tilePositon, mainBaseVO.radius);
                    }
                }
                break;

            case E_Building.FarmLand:
            case E_Building.GoldMine:
            case E_Building.MilitaryCamp:
                MainBaseVO mainBase = playerVOProxy.GetMainBasePlayerBuildingBelongTo(building, playerVo);
                if (mainBase != null)
                {
                    //添加建筑
                    mainBase.AddBuilding(building);
                    //更新地图建筑信息
                    mapVOProxy.SetBuildingInfo(true, building.tilePositon, building.rect);
                    buildingProxy.CreateBuilding(building, mainBase, playerVo);
                }
                break;

            default:
                break;
            }

            TwoMsgParamsPool <PlayerVO, IBuildingVO> .Instance.Push(msgParam);
        }

        BattleManager.Instance.CancelConstraction();
    }