public ProductionRequestCommand(ProductionReq.ProductionRequestType requestType, BuildingVO building, ProductionItemVO productionItem, int diamondCount = 0)
 {
     this.requestType    = requestType;
     this.productionItem = productionItem;
     this.diamondCount   = diamondCount;
     this.building       = building;
 }
Beispiel #2
0
    /// <summary>
    /// 替换Entity
    /// </summary>
    /// <param name="model"></param>
    /// <returns>替换后的对象</returns>
    public TileEntity ReplaceWith(EntityModel model, BuildingVO buildingVO)
    {
        var newEntity = Create(owner, model);

        newEntity.buildingVO = buildingVO;
        newEntity.SetTilePosition(GetTilePos());
        newEntity.tileOffset = tileOffset;
        newEntity.Init();
        if (IsoMap.Instance.Contains(this))
        {
            IsoMap.Instance.ForceRemoveEntity(this);
            IsoMap.Instance.ForceAddEntity(newEntity);
        }
        Destroy();
        return(newEntity);
    }
    public override com.pureland.proto.ReqWrapper Execute()
    {
        var buildTime  = entity.model.buildTime;
        var buildingVO = new BuildingVO();

        buildingVO.buildingStatus = buildTime == 0 ? BuildingVO.BuildingStatus.On : BuildingVO.BuildingStatus.Construct;
        buildingVO.cid            = entity.model.baseId;
        buildingVO.sid            = DataCenter.Instance.CreateNextItemSid();
        buildingVO.endTime        = ServerTime.Instance.GetTimestamp(buildTime);
        buildingVO.x = entity.GetTilePos().x;
        buildingVO.y = entity.GetTilePos().y;

        if (EntityTypeUtil.IsGatherResourceBuilding(entity.model))
        {
            buildingVO.resourceBuildingVO = new ResourceBuildingVO()
            {
                lastGatherTime = buildingVO.endTime
            };                                                                                               //建造完成开始计算产量
        }
        //替换为有建筑动画的对象
        var newEntity = entity.ReplaceWith(entity.model, buildingVO);

        IsoMap.Instance.ForceAddEntity(newEntity);

        if (buildTime != 0)
        {
            //占用工人数量
            DataCenter.Instance.FreeWorker -= 1;
        }
        //添加到建筑vo,方便计数等
        DataCenter.Instance.AddBuilding(buildingVO);
        //消耗资源
        DataCenter.Instance.AddResource(new ResourceVO()
        {
            resourceType = entity.model.costResourceType, resourceCount = -entity.model.costResourceCount
        });


        var buildingConsReq = new BuildingConsReq();

        buildingConsReq.buildingVO   = buildingVO;
        buildingConsReq.resourceType = resourceType;
        return(new ReqWrapper()
        {
            requestType = ReqWrapper.RequestType.BuildingCons, buildingConsReq = buildingConsReq
        });
    }
Beispiel #4
0
 public void AddBuilding(BuildingVO building)
 {
     Defender.buildings.Add(building);
 }
 public TrapRefillCommand(TrapRefillReq.RefillType type, BuildingVO building = null)
 {
     this.type     = type;
     this.building = building;
 }