public void AddHeroToFormaiton(FormationPosition formationPosition, uint heroInstanceID) { FormationPosition oldFormationPosition = GetHeroFormationPosition(heroInstanceID); //新英雄旧位置 teamPosDictionary.Remove(oldFormationPosition); if (!IsPositionEmpty(formationPosition)) //新位置有英雄 { uint newPositionOldCharacterInstanceID = teamPosDictionary.GetValue(formationPosition); if (oldFormationPosition != FormationPosition.Invalid_Position) //新英雄已在队伍中 { teamPosDictionary[oldFormationPosition] = newPositionOldCharacterInstanceID; teamPosDictionary[formationPosition] = heroInstanceID; } else { teamPosDictionary[formationPosition] = heroInstanceID; } } else if (teamPosDictionary.Count < 5) { teamPosDictionary.Add(formationPosition, heroInstanceID); } FormationTeamInfoLuaTable.GetLuaFunction("AddHeroToFormaiton").Call(FormationTeamInfoLuaTable, (int)formationPosition, (int)heroInstanceID); }
public bool RemoveHeroFromFormation(FormationPosition formationPosition) { bool result = false; if (IsPositionEmpty(formationPosition)) { return(result); } result = teamPosDictionary.Remove(formationPosition); FormationTeamInfoLuaTable.GetLuaFunction("RemoveHeroByFormationPosition").Call(FormationTeamInfoLuaTable, (int)formationPosition); return(result); }
public void TransferPlayer(uint newPlayerInstanceID) { FormationTeamInfoLuaTable.GetLuaFunction("TransferPlayer").Call(FormationTeamInfoLuaTable, newPlayerInstanceID); foreach (var value in teamPosDictionary) { if (GameProxy.instance.IsPlayer(value.Value)) { teamPosDictionary[value.Key] = newPlayerInstanceID; break; } } }
public void SetFormationId(int id) { formationId = id; FormationTeamInfoLuaTable.GetLuaFunction("SetFormationId").Call(FormationTeamInfoLuaTable, id); }
public void ClearTeam() { teamPosDictionary.Clear(); FormationTeamInfoLuaTable.GetLuaFunction("ClearTeam").Call(FormationTeamInfoLuaTable); }
public bool CanAddToFormationPosition(FormationPosition formationPosition, uint addCharacterInstanceID, bool playerCanLeaveTeam = false) { if (!formationInfo.formationData.GetPosEnalbe(formationPosition)) { return(false); } FormationTeamInfoLuaTable.GetLuaFunction("CanAddToFormationPosition").Call(FormationTeamInfoLuaTable, (int)formationPosition, addCharacterInstanceID, playerCanLeaveTeam); uint oldId = teamPosDictionary.GetValue(formationPosition); bool can = true; bool isPosEmpty = IsPositionEmpty(formationPosition); bool playerFlag = playerCanLeaveTeam ? true : !GameProxy.instance.IsPlayer(oldId); // if (IsHeroInFormation(addCharacterInstanceID)) //新英雄在阵中 { if (!isPosEmpty && oldId == addCharacterInstanceID) { can = false; } } else { HeroInfo heroInfo = HeroProxy.instance.GetHeroInfo(addCharacterInstanceID); bool hasSame = GameProxy.instance.IsPlayer(addCharacterInstanceID) ? false : HasSameHeroInFormation(heroInfo.heroData.id); if (hasSame) //有同类型英雄 { if (!isPosEmpty) { if (playerFlag && HeroProxy.instance.GetHeroInfo(oldId).heroData.id == heroInfo.heroData.id) { can = true; } else { can = false; } } else { can = false; } } else { if (!isPosEmpty && !playerFlag) { can = false; } else { if (!HasEmptyFormationPosition()) { if (!isPosEmpty) { can = true; } else { can = false; } } else { can = true; } } } } return(can); }