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