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; } } }
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); }
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 }