Example #1
0
    protected void createBarrier()
    {
        object[] barriers = (object[])ConfigConstant.combat["barrier"];
        int      fixedNum = null == this.mapData.barriers ? 0 : this.mapData.barriers.Length;

        for (int i = 0, len = this.mapData.barrierCount; i < len; i++)
        {
            BarrierEntity barrier = (BarrierEntity)this.createFightEntity(ConfigConstant.ENTITY_BARRIER);

            int index = -1;
            if (i < fixedNum)
            {
                object[] barrierInfo = (object[])this.mapData.barriers[i];
                index = (int)barrierInfo[2];
                barrier.position.copy(Vector2D.createVector((int)barrierInfo[0], (int)barrierInfo[1]));
            }
            else
            {
                index = (int)this.getRandomRange(0, barriers.Length);
                barrier.position.copy(barrier.createBirthPosition());
            }

            barrier.id = "barrier" + index;
            barrier.initConfig((Dictionary <string, object>)barriers[index]);
        }
    }
Example #2
0
    public void createBirthGrids()
    {
        for (int j = 0; j < this.rowNum; j++)
        {
            for (int i = this.colNum - 1; i >= 0; i--)
            {
                Grid grid = this.birthPlayerGrids[j][i];
                //倒叙移除掉有障碍物的格子。 因为障碍物从此就不用了!
                if (grid.hasBirthEntity(ConfigConstant.ENTITY_BARRIER))
                {
                    this.birthPlayerGrids[j].RemoveAt(i);
                }
            }
        }
        //重新生成小的障碍物。 给item用!
        for (int i = 0, len = this.map.others.Count; i < len; i++)
        {
            BarrierEntity entity = this.map.others[i] as BarrierEntity;
            if (null != entity)
            {
                entity.generateBirthGrids(-1);
            }
        }

        for (int j = 0; j < this.rowNum; j++)
        {
            for (int i = this.colNum - 1; i >= 0; i--)
            {
                Grid grid = this.birthBeanGrids[j][i];
                //倒叙移除掉有障碍物的格子。 因为障碍物从此就不用了!
                if (grid.hasBirthEntity(ConfigConstant.ENTITY_BARRIER))
                {
                    this.birthBeanGrids[j].RemoveAt(i);
                }
            }
        }
    }
Example #3
0
    public override FightEntity createFightEntity(int type, int netId = -1)
    {
        FightEntity entity = null;

        switch (type)
        {
        case ConfigConstant.ENTITY_LOOP_BEAN:        //
            entity = new LoopBeanEntity(this);
            break;

        case ConfigConstant.ENTITY_PLAYER:
            entity = new PlayerEntity(this);
            break;

        case ConfigConstant.ENTITY_BULLET:
            entity = new BulletEntity(this);
            break;

        case ConfigConstant.ENTITY_PRICE_BEAN:
            entity = new PriceBeanEntity(this);
            break;

        case ConfigConstant.ENTITY_CALL:
            entity = new CallEntity(this);
            break;

        case ConfigConstant.ENTITY_BARRIER:
            entity = new BarrierEntity(this);
            break;

        case ConfigConstant.ENTITY_RADISH:
            entity = new RadishEntity(this);
            break;
        }
        return(entity);
    }
Example #4
0
    public void checkBarrier()
    {
        //相对位置
        List <FightEntity> entitys = this._map.getFightEntitysByRange(this._shape, new List <int>()
        {
            ConfigConstant.ENTITY_BARRIER
        }, null, -1);

        for (int i = 0, len = entitys.Count; i < len; i++)
        {
            BarrierEntity barrier = (BarrierEntity)entitys[i];
            CollisionInfo info    = Collision.checkCollision(barrier.shape, this._shape, this._map.mapData);
            if (info.isHit)
            {
                Vector2D deltaPos = info.deltaPos;
                double   radius   = this._shape.radius + barrier.shape.radius;
                //把萝卜向外推,越中心越强
                double rate = 1 - Math2.range(info.dist / radius, 1, 0);
                deltaPos.length = deltaPos.length * rate * 0.4;
                this.addForce(deltaPos);
                barrier.dispatchEventWith(EventConstant.HIT);
            }
        }
    }