public void UnitShot(uint userId, Vector2w pos) { User user = d.GetUser(userId); Unit unit = user.GetSelectUnit(); Battle battle = d.GetBattle(user.battleId); if (!battle.IsUserTurn(userId)) { return; } Vector2f startPos = new Vector2f(unit.pos.x + 0.5f, unit.pos.y + 0.5f); Vector2f endPos = new Vector2f(pos.x + 0.5f, pos.y + 0.5f); List <Vector2f> list = new List <Vector2f>(); if (VisiblePoint.TraceRayShot(startPos, endPos, 64, out list, false, battle.GetMap(), GameData.blockInfo)) { if (list.Count > 0) { Vector2w p = new Vector2w((short)list[0].x, (short)list[0].y); int damage = 10; int armorPiercing = 10; SendAllShot(userId, pos, battle, unit); DamagePoint(p, damage, armorPiercing); } } }
public void UnitRotate(uint userId, int dir) { User user = d.GetUser(userId); Unit unit = user.GetSelectUnit(); Battle battle = d.GetBattle(user.battleId); if (!battle.IsUserTurn(userId)) { return; } int ap = GameUtil.CalcDir(unit.dir, dir) * GameData.unitInfo[unit.id].apRotate; if (unit.ap < ap) { return; } unit.ap -= ap; unit.dir = dir; BattleData data = battle.GetData(); for (int i = 0; i < data.users.Count; i++) { Vector2w pos = d.GetBattleUnitPos(data.users[i].userid); if (data.users[i].userid == userId || VisiblePoint.IsVisible(unit.pos, pos, battle.GetMap(), GameData.blockInfo)) { Data.t.netMsg.Add(new MsgServerGameAction(data.users[i].userid, new GameActionRotateUnit(unit.uid, unit.dir, unit.pos))); Data.t.netMsg.Add(new MsgServerGameAction(data.users[i].userid, new GameActionInfoUnit(unit))); } } }
private void SendAllMoveUnit(uint userId, Unit unit, Battle battle, List <GameAction> actions) { BattleData data = battle.GetData(); for (int i = 0; i < data.users.Count; i++) { List <GameAction> list = new List <GameAction>(); if (data.users[i].userid == userId) { list.AddRange(actions); } else { bool isVisible = false; User user = d.GetUser(data.users[i].userid); Unit unitEnemy = user.GetSelectUnit(); for (int j = 0; j < actions.Count; j++) { if (VisiblePoint.IsVisible(unitEnemy.pos, actions[i].GetPos(), battle.GetMap(), GameData.blockInfo)) { if (!isVisible) { list.Add(new GameActionVisible(unit, true)); isVisible = true; } } } } Data.t.netMsg.Add(new MsgServerGameActionList(data.users[i].userid, list)); } }
private void UpdateEnemyVisible(uint userId, Vector2w pos, Battle battle) { var data = battle.GetData(); for (int i = 0; i < data.users.Count; i++) { if (data.users[i].userid != userId) { Unit unit = d.GetBattleUnit(userId); bool isVisible = VisiblePoint.IsVisible(pos, unit.pos, battle.GetMap(), GameData.blockInfo); Data.t.netMsg.Add(new MsgServerGameAction(userId, new GameActionVisible(unit, isVisible))); } } }
private void SendAllShot(uint userId, Vector2w pos, Battle battle, Unit unit) { BattleData data = battle.GetData(); for (int i = 0; i < data.users.Count; i++) { Vector2w posEnemy = d.GetBattleUnitPos(data.users[i].userid); if (data.users[i].userid == userId || VisiblePoint.IsVisible(posEnemy, unit.pos, battle.GetMap(), GameData.blockInfo) || VisiblePoint.IsVisible(posEnemy, pos, battle.GetMap(), GameData.blockInfo)) { Data.t.netMsg.Add(new MsgServerGameAction(data.users[i].userid, new GameActionShotUnit(unit.uid, unit.pos))); Data.t.netMsg.Add(new MsgServerGameAction(data.users[i].userid, new GameActionInfoUnit(unit))); } } }
private bool IsNewUnitVisible(UnitVisible unitVisible, uint userId, Vector2w pos, Battle battle) { var data = battle.GetData(); for (int i = 0; i < data.users.Count; i++) { if (data.users[i].userid != userId) { Vector2w unitPos = d.GetBattleUnitPos(userId); if (VisiblePoint.IsVisible(pos, unitPos, battle.GetMap(), GameData.blockInfo) && !unitVisible.IsVisible(data.users[i].userid)) { return(true); } } } return(false); }
private UnitVisible CreateUnitVisible(uint userId, Vector2w pos, Battle battle) { UnitVisible unitVisible = new UnitVisible(); var data = battle.GetData(); for (int i = 0; i < data.users.Count; i++) { if (data.users[i].userid != userId) { Vector2w unitPos = d.GetBattleUnitPos(userId); if (VisiblePoint.IsVisible(pos, unitPos, battle.GetMap(), GameData.blockInfo)) { unitVisible.AddVisible(data.users[i].userid); } } } return(unitVisible); }