protected override void onMessageMove(MoveMessage gm) { InfoLog.WriteInfo("MessageMove: PlayerID:" + gm.IdPlayer + " UnitID:" + gm.IdUnit, EPrefix.Move); Player p = this.players[gm.IdPlayer]; Unit u = p.GetUnit(ObjectID.From(gm.IdUnit, gm.IdPlayer)); if (u == null) { InfoLog.WriteInfo("MessageMove: PlayerID:" + gm.IdPlayer + " unit has been already destroyed", EPrefix.Move); return; } u.OrderedAttack = false; u.MoveTo(gm.Destination); }
protected override void onMessageDeployMCV(Yad.Net.Messaging.GMDeployMCV dmcv) { Player p = players[dmcv.IdPlayer]; UnitMCV mcv = (UnitMCV)p.GetUnit(ObjectID.From(dmcv.McvID.ObjectId, dmcv.McvID.PlayerID)); if (mcv == null) { InfoLog.WriteInfo("No mcv to deploy found.", EPrefix.SimulationInfo); return; } string bName = mcv.MCVData.BuildingCanProduce; short btype = GlobalSettings.Wrapper.namesToIds[bName]; this._map.Units[mcv.Position.X, mcv.Position.Y].Remove(mcv); BuildingData bd = GlobalSettings.Wrapper.buildingsMap[btype]; if (!Building.CheckBuildPosition(bd, mcv.Position, _map, dmcv.McvID.PlayerID)) { this._map.Units[mcv.Position.X, mcv.Position.Y].AddLast(mcv); if (InvalidBuild != null) { InvalidBuild(-1); } return; } this._map.Units[mcv.Position.X, mcv.Position.Y].AddLast(mcv); Building b = AddBuilding(dmcv.McvID.PlayerID, -1, btype, mcv.Position); b.State = Building.BuildingState.normal; UpdatePowerManagement(b); OnBuildingCompleted(b, -1); destroyUnit(mcv); //OnUnitDestroyed(mcv); if (MCVDeployed != null) { MCVDeployed(mcv); } }