public void readFromNbt(NbtCompound tag) { this.resources = tag.getIntArray("resources"); foreach (NbtCompound compound in tag.getList("mapObjects")) { int id = compound.getInt("id"); RegisteredObject registeredObject = Registry.getObjectFromRegistry(id); if (registeredObject != null) { SpawnInstructions <MapObject> instructions = this.spawnEntity <MapObject>(registeredObject, compound); instructions.getObj().map = this; instructions.getObj().nbtTag = compound; } else { Logger.logError("MapObject with an unknown ID of " + id + " was found! Ignoring!"); } } // Now that every MapObject is loaded and their Guid is set, preform the normal reading from nbt. foreach (MapObject obj in this.mapObjects) { obj.readFromNbt(obj.nbtTag); } }
protected override void preformTask(float deltaTime) { if (this.trainingQueue.Count != 0) { if (this.isTeamFull()) { return; } this.trainingProgress += deltaTime; UnitBase nextInQueue = this.trainingQueue[0].getPrefab().GetComponent <UnitBase>(); if (this.trainingProgress >= 0) // nextInQueue.getData().getProductionTime()) { { Vector2 v = Random.insideUnitCircle * 2f; float i = 1.5f; v.x += (v.x < 0 ? -i : i); v.y += (v.x < 0 ? -i : i); Vector3 pos = this.transform.position + new Vector3(v.x, 0, v.y); RegisteredObject regObj = this.trainingQueue[0]; this.trainingQueue.RemoveAt(0); SpawnInstructions <SidedEntity> instructions = this.map.spawnEntity <SidedEntity>( regObj, pos, Quaternion.Euler(0, Random.Range(0, 359), 0)); instructions.getObj().setTeam(this.getTeam()); instructions.spawn(); this.trainingProgress = 0; } } }
public void spawnEntity(MessageSpawnEntity msg) { SpawnInstructions <SidedEntity> instructions = this.map.spawnEntity <SidedEntity>( Registry.getObjectFromRegistry(msg.entityId), msg.position, msg.rotation); instructions.getObj().setTeam(msg.getTeam()); instructions.spawn(); }
public void constructBuilding(MessageConstructBuilding msg) { // Create the new building GameObject and set it's team. SpawnInstructions <BuildingBase> instructions = this.map.spawnEntity <BuildingBase>( Registry.getObjectFromRegistry(msg.entityId), new Vector3(msg.position.x, 0, msg.position.z), Quaternion.identity); BuildingBase newBuilding = instructions.getObj(); Team team = Team.getTeamFromId(msg.teamId); newBuilding.setTeam(team); // Remove resources from the builder's team. this.map.reduceResources(team, newBuilding.getData().getCost()); // Set the buildings health and send the builder to build it. BuildingData bd = newBuilding.getData(); if (bd.isInstantBuild()) { newBuilding.setHealth(bd.getMaxHealth()); } else { newBuilding.setHealth(1); UnitBuilder builder = map.findMapObjectFromGuid <UnitBuilder>(msg.builderGuid); builder.setTask(new TaskConstructBuilding(builder, newBuilding)); builder.unitStats.buildingsBuilt.increase(); } if (newBuilding is BuildingBridge) { } instructions.spawn(); }