Exemplo n.º 1
0
    void ReadTeamMember(XmlNode node, Team.Side team, GameMatchData matchData)
    {
        foreach (XmlNode child in node.ChildNodes)
        {
            XmlElement element             = child as XmlElement;
            GameMatch.Config.TeamMember tm = new GameMatch.Config.TeamMember();
            tm.pos  = XmlUtils.XmlGetAttr_Int(element, "pos");
            tm.id   = XmlUtils.XmlGetAttr_String(element, "id");
            tm.team = team;

            if (element.Name == "NPC")
            {
                matchData.npcList.Add(tm);
            }
            else if (child.Name == "MainRole")
            {
                matchData.mainRole = tm;
            }
            else if (child.Name == "RemotePlayer")
            {
                matchData.remoteList.Add(tm);
            }
            else
            {
                Debug.Log(ToString() + ": Invalid config.");
                return;
            }
        }
    }
Exemplo n.º 2
0
    static int OnSwitch(IntPtr L)
    {
        LuaScriptMgr.CheckArgsCount(L, 2);
        GameMatch_MultiPlayer obj = (GameMatch_MultiPlayer)LuaScriptMgr.GetNetObjectSelf(L, 1, "GameMatch_MultiPlayer");

        Team.Side arg0 = (Team.Side)LuaScriptMgr.GetNetObject(L, 2, typeof(Team.Side));
        obj.OnSwitch(arg0);
        return(0);
    }
Exemplo n.º 3
0
    public void OnSwitch(Team.Side side)
    {
        if (side == Team.Side.eNone)
        {
            return;
        }

        if (switchCD[(int)side - 1] > IM.Number.zero)
        {
            return;
        }
        else
        {
            switchCD[(int)side - 1] = SWITCH_CD_TIME;
        }

        //Debug.Log("On Switch");

        //choose nearest player closed to ball
        UBasketball ball = mCurScene.mBall;

        if (ball == null)
        {
            return;
        }

        if (m_nextSwitchTarget != null)
        {
            m_lastSwitchPlayer = mainRole;
            SwitchMainrole(m_nextSwitchTarget);
            m_nextSwitchTarget = mainRole.m_team.members.Find((Player player) => { return(player != m_lastSwitchPlayer && player != mainRole); });
        }
        else
        {
            Player     target = null;
            IM.Vector3 vBallPos;
            if (ball.m_owner == null)
            {
                vBallPos = ball.position;
            }
            else
            {
                vBallPos = ball.m_owner.position;
            }

            Team      team         = side == Team.Side.eHome ? m_homeTeam : m_awayTeam;
            Player    curMainRole  = mainRole;
            IM.Number fMinDistance = IM.Number.max;
            foreach (Player player in team)
            {
                if (player == curMainRole)
                {
                    continue;
                }
                IM.Number fDistance = GameUtils.HorizonalDistance(vBallPos, player.position);
                if (fMinDistance < fDistance)
                {
                    continue;
                }
                fMinDistance = fDistance;
                target       = player;
            }
            if (target == null)
            {
                return;
            }

            m_lastSwitchPlayer = mainRole;
            SwitchMainrole(target);
            m_nextSwitchTarget = mainRole.m_team.members.Find((Player player) => { return(player != m_lastSwitchPlayer && player != target); });
        }
        m_cam.m_UseSwitchSpeed = true;
        restoreCamSpeed        = true;
    }
        public void Fetch(string[] commandStrings)
        {
            #region
            // GrabingMapObjectsInformationResponseMessage•FreeChallenge#10/9#1#A  °  hamid#0#konoha#50#angel#9\yassin#0#konoha#50#angel#9    |    FreeChallenge#15/4#1#B  °  #morad#0#konoha#50#angel#9/soufian#0#konoha#50#angel#9
            // GrabingMapObjectsInformationResponseMessage•FreeChallenge#map_position#IdBattle#side°Pseudo#ClassID#Village#Level#Spirite#SpiriteLvl \ <-- séparateur entre les joueur de la team en cour ... | <-- séparateur entre les objets en cours sur la map

            string objs = commandStrings[1];
            foreach (string t in objs.Split('|'))
            {
                // t = FreeChallenge#map_position#IdBattle#side  °  Pseudo#ClassID#Village#Level#Spirite#SpiriteLvl \ Pseudo#ClassID#Village#Level#Spirite#SpiriteLvl
                // |    séparateur entre les tous les objets du map
                // t = FreeChallenge#map_position#IdBattle#side  °  Pseudo#ClassID#Village#Level#Spirite#SpiriteLvl \ Pseudo#ClassID#Village#Level#Spirite#SpiriteLvl
                // les données de tous les joueurs present dans le combats sont séparé par le caractère \      comme ca Pseudo#ClassID#Village#Level#Spirite#SpiriteLvl \ Pseudo#ClassID#Village#Level#Spirite#SpiriteLvl \ Pseudo#ClassID#Village#Level#Spirite#SpiriteLvl ...

                // ...
                if (t.Split('#').Length > 0 && t.Split('#')[0] == BattleType.Type.FreeChallenge.ToString())
                {
                    // objParamsStrings[0] = FreeChallenge#10/9#1#A
                    // objParamsStrings[1] = hamid#0#konoha#50#angel#9\yassin#0#konoha#50#angel#9
                    string[] objParamsStrings = t.Split('°');

                    string[] metaData = objParamsStrings[0].Split('#');
                    const BattleType.Type battleType = BattleType.Type.FreeChallenge;
                    Point     mapPoint = new Point(int.Parse(metaData[1].Split('/')[0]), int.Parse(metaData[1].Split('/')[1]));
                    int       idBattle = int.Parse(metaData[2]);
                    Team.Side side     = (Team.Side)Enum.Parse(typeof(Team.Side), metaData[3]);

                    TagedBattleForSpectators tagedBattleForSpectators = new TagedBattleForSpectators
                    {
                        BattleType = battleType,
                        MapPoint   = mapPoint,
                        IdBattle   = idBattle,
                        TeamSide   = side
                    };

                    // on parcour tous les joueurs presents
                    foreach (string actorDataString in objParamsStrings[1].Split('\\'))
                    {
                        string[] actorParams  = actorDataString.Split('#');
                        Actor    currentActor = new Actor
                        {
                            pseudo        = actorParams[0],
                            teamSide      = side,
                            className     = CommonCode.IdToClassName(int.Parse(actorParams[1])),
                            hiddenVillage =
                                (HiddenVillage.Names)
                                Enum.Parse(typeof(HiddenVillage.Names), actorParams[2]),
                            level       = int.Parse(actorParams[3]),
                            spirit      = (Spirit.Name)Enum.Parse(typeof(Spirit.Name), actorParams[4]),
                            spiritLevel = int.Parse(actorParams[5])
                        };

                        tagedBattleForSpectators.AllPlayersByOrder.Add(currentActor);
                    }

                    //tag = battleID#sideA ou sideB#pseudo#classID#Village#Class Level#Spirit#Level Alignement Séparé par |
                    Bmp mapDataObjFreeChallenge =
                        new Bmp(@"gfx\general\obj\3\challenge\" + BattleType.Type.FreeChallenge + ".dat", mapPoint,
                                "_MapDataObj_" + BattleType.Type.FreeChallenge, Manager.TypeGfx.Obj, true, 1,
                                SpriteSheet.GetSpriteSheet(BattleType.Type.FreeChallenge.ToString(), 0))
                    {
                        tag = tagedBattleForSpectators
                    };
                    int x = tagedBattleForSpectators.MapPoint.X * 30;
                    int y = tagedBattleForSpectators.MapPoint.Y * 30;
                    x += 15 - mapDataObjFreeChallenge.rectangle.Size.Width / 2;
                    y += 30 - mapDataObjFreeChallenge.rectangle.Size.Height;
                    mapDataObjFreeChallenge.point = new Point(x, y);

                    // voir si ces methodes sont appelé par d'autre procedures si non les supprimer psuiqu'il existe en double dans commonCode
                    mapDataObjFreeChallenge.MouseOver += _MapDataObj_FreeChallenge_MouseOver;
                    mapDataObjFreeChallenge.MouseOut  += _MapDataObj_FreeChallenge_MouseOut;
                    mapDataObjFreeChallenge.MouseClic += _MapDataObj_FreeChallenge_MouseClic;
                    mapDataObjFreeChallenge.MouseMove += _MapDataObj_FreeChallenge_MouseMove;
                    Manager.manager.GfxObjList.Add(mapDataObjFreeChallenge);
                }
            }
            #endregion
        }