Пример #1
0
    public virtual ActorView createActor(uint id,
                                         FBTeam team,
                                         string avatarName,
                                         Dictionary <string, string> avatarPart,
                                         float[] runAnimiationNormalSpeed,
                                         float height,
                                         bool gk,
                                         string name,
                                         FiveElements element,
                                         uint roleId)
    {
        ActorView  se = null;
        GameObject ga = ModelResourceLoader.inst.createAvatar(avatarName, avatarPart, go => onActorLoaded(se, go));

        ga.transform.parent = this.transform;
        se        = ga.AddComponent <ActorView>();
        se.id     = id;
        se.testId = id;
        se.team   = team;
        se.runAnimiationNormalSpeed = runAnimiationNormalSpeed;
        se.height   = height;
        se.gk       = gk;
        se.nickName = name;
        se.element  = element;
        se.roleId   = roleId;

        se.onCreate();
        sceneEntityList.Add(id, se);

        return(se);
    }
Пример #2
0
 public void init(uint beginFrame,
                  uint endFrame,
                  ushort goalTime,
                  ushort replayTime,
                  ulong goaler,
                  Location goalDoor,
                  ushort blueScore,
                  ushort redScore,
                  uint gkId,
                  float positionRandomValue,
                  float shootRandomValue,
                  float goalRandomValue,
                  FBTeam goalTeam)
 {
     this.beginFrame          = beginFrame;
     this.endFrame            = endFrame;
     this.replayTime          = (byte)replayTime;
     this.goalDoor            = goalDoor;
     this.positionRandomValue = positionRandomValue;
     this.shootRandomValue    = shootRandomValue;
     this.goaler    = goaler;
     this.blueScore = blueScore;
     this.redScore  = redScore;
     this.goalTime  = goalTime;
     this.goalTeam  = goalTeam;
 }
Пример #3
0
    public void removeGK(FBTeam team)
    {
        var gkGoach = getGKCoach(team);

        if (gkGoach != null)
        {
            gkGoach.gk = null;
        }
    }
Пример #4
0
        void onBallGoal(FBTeam team, Location door, uint id)
        {
            var actions = cameraPosition.getGoalActions(cameraCtrl.goalRandomValue);

            if (!actions.isNullOrEmpty())
            {
                actions.forEach(a => playAction(a));
            }
        }
Пример #5
0
    public CampType getCampType(FBTeam team)
    {
        switch (team)
        {
        case FBTeam.kBlue: return(blueCamp);

        case FBTeam.kRed: return(redCamp);
        }
        return(CampType.Attack);
    }
Пример #6
0
    FBGKCoachAgent getGKCoach(FBTeam team)
    {
        switch (team)
        {
        case FBTeam.kBlue: return(blueGKCoach);

        case FBTeam.kRed: return(redGKCoach);
        }
        return(null);
    }
Пример #7
0
 public FBActor getActorByTeam(FBTeam team)
 {
     for (int i = 0; i < m_actors.Count; ++i)
     {
         if (m_actors[i].team == team)
         {
             return(m_actors[i]);
         }
     }
     return(null);
 }
Пример #8
0
    public FBGKCoachAgent(IGameInfo gameInfo, FBWorld world, FBTeam team, behaviac.Workspace workspace)
    {
        var behaviour = new BTGKCoach();

        behaviour.Init(workspace);
        behaviour.agent = this;
        base.behaviour  = behaviour;
        this.gameInfo   = gameInfo;
        this.world      = world;
        this.team       = team;
    }
Пример #9
0
 public uint getEnemyGKId(FBTeam team)
 {
     for (int i = 0; i < m_actors.Count; ++i)
     {
         var action = m_actors[i];
         if (action.team != team && action.isDoorKeeper())
         {
             return(action.id);
         }
     }
     return(0);
 }
Пример #10
0
 FBActor getDoorKeeper(FBTeam team)
 {
     for (int i = 0; i < m_actors.Count; ++i)
     {
         var actor = m_actors[i];
         if (actor.isDoorKeeper() && actor.team == team)
         {
             return(actor);
         }
     }
     return(null);
 }
Пример #11
0
        public void init(uint id,
                         uint roleId,
                         FBTeam team,
                         string name,
                         Vector2 position,
                         bool gk,
                         FiveElements element,
                         float height,
                         float[] runAnimiationNormalSpeeds)
        {
            base.init(id);
            this.roleId   = roleId;
            this.team     = team;
            this.name     = name;
            this.position = position;
            this.gk       = gk;
            this.element  = element;
            this.height   = height;
            this.runAnimiationNormalSpeeds = runAnimiationNormalSpeeds;
            switch (roleId)
            {
            case 1:
                avatarName        = "P0102_01";
                avatarPart["000"] = "P0102_01_1_01";
                break;

            case 2:
                avatarName        = "P0504_01";
                avatarPart["000"] = "P0504_01_1_01";
                break;

            case 3:
                avatarName        = "P0307_01";
                avatarPart["000"] = "P0307_01_1_01";
                break;

            case 4:
                avatarName        = "GK0701_01";
                avatarPart["000"] = "GK0701_01_1_01";
                break;

            case 5:
                avatarName        = "GK0701_01";
                avatarPart["000"] = "GK0701_01_1_01";
                break;

            case 6:
                avatarName        = "GK0701_01";
                avatarPart["000"] = "GK0701_01_1_01";
                break;
            }
        }
Пример #12
0
    public void removeAgent(FBPlayerAgent agent, FBTeam team)
    {
        if (agent == null)
        {
            Debuger.LogError("agent is null");
            return;
        }
        var coach = getCoach(team);

        if (coach != null)
        {
            coach.removePlayer(agent);
        }
    }
Пример #13
0
    public void addGK(FBGKAgent agent, FBTeam team)
    {
        if (agent == null)
        {
            Debuger.LogError("agent is null");
            return;
        }
        var gkGoach = getGKCoach(team);

        if (gkGoach != null)
        {
            gkGoach.gk = agent;
        }
    }
Пример #14
0
    public FixVector2 getDoorPosition(FBTeam team, bool self)
    {
        switch (team)
        {
        case FBTeam.kBlue: return(new FixVector2 {
                x = m_mainExtent.x * (self ? -Fix64.One : Fix64.One)
            });

        case FBTeam.kRed: return(new FixVector2 {
                x = m_mainExtent.x * (self ? Fix64.One : -Fix64.One)
            });
        }
        return(FixVector2.kZero);
    }
Пример #15
0
    public void addAgent(FBPlayerAgent agent, FBTeam team)
    {
        if (agent == null)
        {
            Debuger.LogError("agent is null");
            return;
        }

        FBCoachAgent coach = getCoach(team);

        if (coach != null)
        {
            coach.addPlayer(agent);
        }
    }
Пример #16
0
    void onChangeCampState(FBTeam team)
    {
        switch (team)
        {
        case FBTeam.kBlue:
            blueCamp = CampType.Attack;
            redCamp  = CampType.Defence;
            break;

        case FBTeam.kRed:
            blueCamp = CampType.Defence;
            redCamp  = CampType.Attack;
            break;
        }
    }
Пример #17
0
 public override void unserialize(BytesStream stream)
 {
     base.unserialize(stream);
     beginFrame          = stream.ReadUInt32();
     endFrame            = stream.ReadUInt32();
     replayTime          = stream.ReadByte();
     goalDoor            = (Location)stream.ReadByte();
     positionRandomValue = stream.ReadSingle();
     shootRandomValue    = stream.ReadSingle();
     goalRandomValue     = stream.ReadSingle();
     goaler    = stream.ReadUInt64();
     blueScore = stream.ReadUInt16();
     redScore  = stream.ReadUInt16();
     goalTime  = stream.ReadUInt16();
     goalTeam  = (FBTeam)stream.ReadByte();
 }
Пример #18
0
    //创建门将教练
    public void createGKCoach(IGameInfo gameInfo, FBTeam team, Workspace workspace, string btName)
    {
        var gkCoach = new FBGKCoachAgent(gameInfo, this, team, workspace);

        gkCoach.setBehaviour(btName);
        switch (team)
        {
        case FBTeam.kBlue:
            blueGKCoach = gkCoach;
            break;

        case FBTeam.kRed:
            redGKCoach = gkCoach;
            break;
        }
    }
Пример #19
0
    public FBPlayer(uint id, uint baseID, FBTeam team, string name, bool mainActor, bool ai, FBWorld world, Workspace btWorkspace)
    {
        this.world       = world;
        this.btWorkspace = btWorkspace;

        FBActor.Configuration config = loadConfig(baseID);

        //actor = new FBActor(config,baseID);
        //测试代码-fbactor_configuration
        actor = new FBActor(config, baseID, mainActor);

        actor.id   = id;
        actor.team = team;
        actor.name = name;
        world.addActor(actor);
        this.ai = ai;
    }
Пример #20
0
    public void changeCampState(FBTeam team)
    {
        //UnityEngine.Debug.LogError("changeCampState " + team);
        //jlx 2017.07.12-log:进球以后变为敌方开球
        switch (team)
        {
        case FBTeam.kBlue:
            blueCamp = CampType.Defence;
            redCamp  = CampType.Attack;
            break;

        case FBTeam.kNone:
        case FBTeam.kRed:
            blueCamp = CampType.Attack;
            redCamp  = CampType.Defence;
            break;
        }
    }
Пример #21
0
    public TeamState getTeamState(FBTeam team)
    {
        switch (curStateType)
        {
        case GameState.Enter:
            return(TeamState.BeforeGame);

        case GameState.Gaming:
            var camp = getCampType(team);
            switch (camp)
            {
            case CampType.Attack: return(TeamState.Attack);

            case CampType.Defence: return(TeamState.Defence);
            }
            return(TeamState.None);

        case GameState.Goal:
            return(goalTeam == team ? TeamState.Goal : TeamState.EnemyGoal);

        case GameState.Over:
            if (blueScore == redScore)
            {
                return(TeamState.AfterGameDraw);
            }
            switch (team)
            {
            case FBTeam.kBlue:
                return(blueScore < redScore ? TeamState.AfterGameLose : TeamState.AfterGameWin);

            case FBTeam.kRed:
                return(redScore < blueScore ? TeamState.AfterGameLose : TeamState.AfterGameWin);
            }
            break;

        case GameState.Ready: break;

        case GameState.Replay: break;
        }
        //Debuger.LogError("getTeamState  team: " + team + "  curStateType: " + curStateType + "   TeamState.None");
        return(TeamState.None);
    }
Пример #22
0
    public List <FBActor> getTeamMates(FBTeam team, bool includeGK = true)
    {
        var enemys = new List <FBActor>();

        for (int i = 0; i < m_actors.Count; ++i)
        {
            var actor = m_actors[i];
            if (actor.team != team)
            {
                continue;
            }
            if (actor.isDoorKeeper() && !includeGK)
            {
                continue;
            }

            enemys.Add(actor);
        }
        return(enemys);
    }
Пример #23
0
    /// <summary>
    /// 测试使用函数,后面删除
    /// </summary>
    public void onCheckBallState()
    {
        if (ConstTable.DebugStateAction == 2)
        {
            if (fbWorld.ball.owner != null)
            {
                //自己停止Defend
                fbWorld.ball.owner.stopDefend();

                FBTeam  notHodlingBallTeam = (FBTeam)(3 - (int)fbWorld.ball.owner.team);
                FBActor actor = fbWorld.getActorByTeam(notHodlingBallTeam);
                if (actor != null && actor.checkMovingState())
                {
                    actor.startDefend(fbWorld.ball.owner);
                }
            }
            else
            {
            }
        }
    }
Пример #24
0
    public uint getNearPlayer(FBTeam team, PlayerType type)
    {
        var ballPosition = ball.getPosition();
        var minDistance  = Fix64.MaxValue;
        var id           = 0u;
        var teamMates    = getTeamMates(team);

        for (int i = 0; i < teamMates.Count; i++)
        {
            var teamMate = teamMates[i];
            if ((type & (teamMate.AIing ? PlayerType.AI : PlayerType.Player)) == 0)
            {
                continue;
            }

            var distance = teamMate.getPosition().squareDistance(ballPosition);
            if (distance < minDistance)
            {
                id          = teamMate.id;
                minDistance = distance;
            }
        }
        return(id);
    }
Пример #25
0
        public override void unserialize(BytesStream stream)
        {
            base.unserialize(stream);
            team     = (FBTeam)stream.ReadByte();
            position = stream.readVector2();
            height   = stream.ReadSingle();
            for (int i = 0; i < runAnimiationNormalSpeeds.Length; ++i)
            {
                runAnimiationNormalSpeeds[i] = stream.ReadSingle();
            }

            //avatar相关 begin
            avatarName = stream.ReadString();
            for (int i = 0; i < maxAvatarPartNum; i++)
            {
                avatarPart.Add(stream.ReadString(), stream.ReadString());
            }
            //avatar相关 end

            gk      = stream.ReadBoolean();
            name    = stream.ReadString();
            element = (FiveElements)stream.ReadByte();
            roleId  = stream.ReadUInt32();
        }
Пример #26
0
 public override void unserialize(BytesStream stream)
 {
     base.unserialize(stream);
     team = (FBTeam)stream.ReadByte();
 }
Пример #27
0
 public void init(uint playerID, FBTeam team)
 {
     base.init(playerID);
     this.team = team;
 }
Пример #28
0
 public Vector3 getEnemyDoorPosition(FBTeam team)
 {
     return(team == FBTeam.kBlue ? rightDoorPosition : leftDoorPosition);
 }
Пример #29
0
 public void init(uint id, FBTeam team, Location door)
 {
     base.init(id);
     this.team = team;
     this.door = door;
 }
Пример #30
0
 void onBallGoal(FBTeam team, Location door, uint id)
 {
     endShoot();
     cameraCtrl.goaler = id;
     cameraCtrl.fsm.changeState(GameState.Goal);
 }