public void CombatCalcRedirect(Unit origin, Unit affected, _Ability ability) { if (gameController.GameType == GameType.SERVER || gameController.GameType == GameType.LOCAL) { combatCalc(origin, affected, ability); } if (gameController.GameType == GameType.CLIENT) { gameController.Client.ClientSender.CombatCalc(origin, affected, ability); } }
public bool CombatCalc(int clientId, string packetId, int length, int order, byte[] data) { if (packetSeries.ContainsKey(packetId) == false) { newPacketSeries(packetId, length); } if (isPacketSeriesComplete(packetId, length, order, data) == false) { return(false); } byte[][] series = packetSeries[packetId]; Unit attacker = (Unit)server.Serializer.Deserialize(series[0]); Unit defender = (Unit)server.Serializer.Deserialize(series[1]); _Ability ability = (_Ability)server.Serializer.Deserialize(series[2]); server.Lobbys[server.Clients[clientId].LobbyId].GameController.CombatController.CombatCalcRedirect(attacker, defender, ability); return(true); }
public void CombatCalc(Unit origin, Unit affected, _Ability ability) { //PineappleLogger.Log(LogType.INFO, $"{type} [{client.Id}] CombatCalc()"); string id = GetPacketId(PacketType.CombactCalc); int length = 3; using (Packet packet = new Packet((int)PacketType.CombactCalc)) { packet.Write(client.Id); packet.Write(id); packet.Write(length); packet.Write(0); packet.Write(serializer.Serialize(origin)); SendTCPData(packet); } using (Packet packet = new Packet((int)PacketType.CombactCalc)) { packet.Write(client.Id); packet.Write(id); packet.Write(length); packet.Write(1); packet.Write(serializer.Serialize(affected)); SendTCPData(packet); } using (Packet packet = new Packet((int)PacketType.CombactCalc)) { packet.Write(client.Id); packet.Write(id); packet.Write(length); packet.Write(2); packet.Write(serializer.Serialize(ability)); SendTCPData(packet); } }
private void combatCalc(Unit origin, Unit affected, _Ability ability) { affectedUnits = new List <Unit>(); foreach (var effect in ability.AbilityEffects) { switch (effect) { case AbilityEffect.DAMAGE: DamageCalc(origin, affected, ability); break; default: throw new NotImplementedException(); } } if (gameController.GameType == GameType.SERVER && affectedUnits.Count > 0) { //TODO send updated units to all clients throw new NotImplementedException(); } }
private void DamageCalc(Unit origin, Unit affected, _Ability ability) { affected.AdjustHealth(ability.Damage, true); affectedUnits.Add(affected); }