private void CreateUnit(short playerId, short type, Position pos) { InfoLog.WriteInfo("CreateUnit", EPrefix.Test); Player p = players[playerId]; Unit u = null; ObjectID id = new ObjectID(playerId, p.GenerateObjectID()); InfoLog.WriteInfo(id.ToString() + " dla jednostki: " + type, EPrefix.Test); if (GlobalSettings.Wrapper.harvestersMap.ContainsKey(type)) { u = new UnitHarvester(id, GlobalSettings.Wrapper.harvestersMap[type], pos, this._map, this, GlobalSettings.Wrapper.harvestersMap[type].__Speed); ((UnitHarvester)u).SpiceUnload += new SpiceUnloadDelegate(SpiceUnload); } else if (GlobalSettings.Wrapper.mcvsMap.ContainsKey(type)) { u = new UnitMCV(id, GlobalSettings.Wrapper.mcvsMap[type], pos, this._map, this); } else if (GlobalSettings.Wrapper.tanksMap.ContainsKey(type)) { u = new UnitTank(id, GlobalSettings.Wrapper.tanksMap[type], pos, this._map, this); } else if (GlobalSettings.Wrapper.troopersMap.ContainsKey(type)) { u = new UnitTrooper(id, GlobalSettings.Wrapper.troopersMap[type], pos, this._map, this); } p.AddUnit(u); ClearFogOfWar(u); OnUnitCompleted(u); }
void Instance_GameInitialization(object sender, GameInitEventArgs e) { PlayerInfo pi = ClientPlayerInfo.Player; PositionData[] aPd = e.gameInitInfo; foreach (PositionData pd in aPd) { //TODO: get info //_currPlayer = _sim.Players[pd.PlayerId]; Player p = _sim.Players[pd.PlayerId]; ObjectID mcvID = new ObjectID(p.Id, p.GenerateObjectID()); InfoLog.WriteInfo(mcvID.ToString() + " for MVC", EPrefix.GObj); UnitMCV mcv = new UnitMCV(mcvID, GlobalSettings.Wrapper.MCVs[0], new Position(pd.X, _sim.Map.Height - pd.Y - 1), _sim.Map, this._sim); p.AddUnit(mcv); _sim.ClearFogOfWar(mcv); // vjust for fun ;p ObjectID tankID = new ObjectID(p.Id, p.GenerateObjectID()); UnitTank u = new UnitTank(tankID, GlobalSettings.Wrapper.Tanks[0], new Position((short)((pd.X + 1) % _sim.Map.Width), _sim.Map.Height - pd.Y - 1), this._sim.Map, this._sim); InfoLog.WriteInfo(tankID.ToString() + " for tank: " + u.TypeID, EPrefix.GObj); p.AddUnit(u); _sim.ClearFogOfWar(u); // ^ //this.sim.Map.Units[u.Position.X, u.Position.Y].AddLast(u); } this._sim.StartSimulation(); this._sim.DoTurn(1); }
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); } }
protected override void onMessageCreate(CreateUnitMessage cum) { InfoLog.WriteInfo("MessageCreate", EPrefix.Test); int cost = 0; Player p = players[cum.IdPlayer]; BoardObjectClass boc = cum.UnitKind; Unit u = null; ObjectID id = new ObjectID(cum.IdPlayer, p.GenerateObjectID()); InfoLog.WriteInfo(id.ToString() + " unit created: " + cum.Type, EPrefix.GObj); if (boc == BoardObjectClass.UnitTank) { if (players[cum.IdPlayer].Credits < (cost = GlobalSettings.Wrapper.tanksMap[cum.UnitType].Cost)) { return; } u = new UnitTank(id, GlobalSettings.Wrapper.tanksMap[cum.UnitType], cum.Position, this._map, this); players[cum.IdPlayer].Credits -= GlobalSettings.Wrapper.tanksMap[cum.UnitType].Cost; } else if (boc == BoardObjectClass.UnitTrooper) { if (players[cum.IdPlayer].Credits < (cost = GlobalSettings.Wrapper.troopersMap[cum.UnitType].Cost)) { return; } u = new UnitTrooper(id, GlobalSettings.Wrapper.troopersMap[cum.UnitType], cum.Position, this._map, this); players[cum.IdPlayer].Credits -= GlobalSettings.Wrapper.troopersMap[cum.UnitType].Cost; } else if (boc == BoardObjectClass.UnitHarvester) { if (players[cum.IdPlayer].Credits < (cost = GlobalSettings.Wrapper.harvestersMap[cum.UnitType].Cost)) { return; } u = new UnitHarvester(id, GlobalSettings.Wrapper.harvestersMap[cum.UnitType], cum.Position, this._map, this, GlobalSettings.Wrapper.harvestersMap[cum.UnitType].__Speed); ((UnitHarvester)u).SpiceUnload += new SpiceUnloadDelegate(SpiceUnload); players[cum.IdPlayer].Credits -= GlobalSettings.Wrapper.harvestersMap[cum.UnitType].Cost; } else if (boc == BoardObjectClass.UnitMCV) { if (players[cum.IdPlayer].Credits < (cost = GlobalSettings.Wrapper.mcvsMap[cum.UnitType].Cost)) { return; } u = new UnitMCV(id, GlobalSettings.Wrapper.mcvsMap[cum.UnitType], cum.Position, this._map, this); players[cum.IdPlayer].Credits -= GlobalSettings.Wrapper.mcvsMap[cum.UnitType].Cost; } else if (boc == BoardObjectClass.UnitSandworm) { u = new UnitSandworm(id, GlobalSettings.Wrapper.sandwormsMap[cum.UnitType], cum.Position, this._map, this, GlobalSettings.Wrapper.sandwormsMap[cum.UnitType].__Speed); Sandworms[id.ObjectId] = (UnitSandworm)u; return; //} else if (boc == BoardObjectClass.UnitTank) { // u = new UnitTank(id, GlobalSettings.Wrapper.tanksMap[cum.UnitType], cum.Position, this._map, this); //} else if (boc == BoardObjectClass.UnitTrooper) { // u = new UnitTrooper(id, GlobalSettings.Wrapper.troopersMap[cum.UnitType], cum.Position, this._map, this); } OnCreditsUpdate(cum.IdPlayer, cost); p.AddUnit(u); ClearFogOfWar(u); OnUnitCompleted(u); }