public Character(string characterName, int difficulty) { try { var fantasyNameSettings = new FantasyNameSettings(Classes.Warrior, Race.None, true, true, Gender.Male); IFantasyNameGenerator fantasyNameGenerator = FantasyNameGenerator.FromSettingsInfo(fantasyNameSettings); FantasyName[] names = fantasyNameGenerator.GetFantasyNames(1); CharacterName = characterName == null || characterName == "" ? names[0].FullName : characterName; } catch { CharacterName = characterName == null || characterName == "" ? "Grim Stekspade" : characterName; } _difficulty = difficulty / 3.0; Strength = rnd.Next(10, 18); Agility = rnd.Next(10, 18); MaxHealth = Convert.ToInt32(100 * _difficulty); Health = MaxHealth; SetDamage(); SetHitChance(); SetCritChance(); SetBlock(); SetSpeed(); }
public Character(string characterName) { try { var fantasyNameSettings = new FantasyNameSettings(Classes.Warrior, Race.None, true, true, Gender.Male); IFantasyNameGenerator fantasyNameGenerator = FantasyNameGenerator.FromSettingsInfo(fantasyNameSettings); FantasyName[] names = fantasyNameGenerator.GetFantasyNames(1); CharacterName = characterName == null || characterName == "" ? names[0].FullName : characterName; } catch { CharacterName = characterName == null || characterName == "" ? "Crash Bandicoot" : characterName; } Strength = rnd.Next(10, 18); Agility = rnd.Next(10, 18); MaxHealth = 100; Health = MaxHealth; SetDamage(); SetHitChance(); SetCritChance(); SetBlock(); SetSpeed(); }
public void Female_Goblin_Warrior() { // arrange NameGenerator.GetRandomNumber = (maxValue) => 1; IFantasyNameGenerator fantasyNameGenerator = FantasyNameGenerator.FromSettingsInfo(new FantasyNameSettings(Classes.Warrior, Race.Goblin, true, true, Gender.Female)); // act var names = fantasyNameGenerator.GetFantasyNames(2); // assert ApprovalTests.Approvals.VerifyAll("Female Goblin Names", names, "names"); }
void Start() { nav2DAgent = GetComponent <Nav2DAgent>(); character = GetComponent <Character>(); nav2DAgent.Speed = character.GetSpeed(); nav2DAgent.addSeparationIgnored(GameObject.FindWithTag("Player")); characterName = FantasyNameGenerator.GetCharacterNameGenerator(new FantasyNameSettings( RPGKit.FantasyNameGenerator.Generators.Classes.Warrior, RPGKit.FantasyNameGenerator.Generators.Race.None, false, UnityEngine.Random.value > 0.5 ? RPGKit.FantasyNameGenerator.Generators.Gender.Male : RPGKit.FantasyNameGenerator.Generators.Gender.Female) ).GetFantasyName().FullName; }
public void Init() { for (var i = 0; i < transform.childCount; i++) { Destroy(transform.GetChild(i).gameObject); } //create the city data model cityName = FantasyNameGenerator.GetTownName(); cityModel = new Model(settings); //create buildings foreach (var patch in cityModel.patches) { var ward = Instantiate(wardPrefab, this.transform, false); ward.GetComponent <WardController>().ward = patch.ward; foreach (var shape in patch.ward.geometry) { if (shape._perimeter() > 0) { var b = Instantiate(buildingPrefab, this.transform, false); b.transform.rotation = Quaternion.identity; Debug.DrawLine(transform.position, cityModel.center.vec, Color.magenta, 20); var buildingController = b.GetComponent <BuildingController>(); buildingController.shape = shape; } } } // create walls and towers and gates var castle = cityModel.citadel.ward as Castle; if (cityModel.wallsNeeded) { // city wall and towers for (var i = 0; i < cityModel.wall.shape.Count; i++) { if (castle.wall.shape.findEdge(cityModel.wall.shape[(i + 1) % cityModel.wall.shape.Count], cityModel.wall.shape[i]) != -1) { // castle wall creation below will take care of the wall. continue; } // wall var start = cityModel.wall.shape[i].vec; var end = cityModel.wall.shape[(i + 1) % cityModel.wall.shape.Count].vec; var nextEnd = cityModel.wall.shape[(i + 2) % cityModel.wall.shape.Count].vec; var startToEnd = end - start; var endToStart = start - end; var dis = endToStart.magnitude; //connectedToGate if (cityModel.wall.gates.Select(x => x.vec).Contains(new Point(end).vec)) { // shorten wall end = start + startToEnd.normalized * (dis - gateOpeningSize / 2); // add gate tower Instantiate(gatePrefab, transform.TransformPoint(end), Quaternion.Euler(90, 0, 0), this.transform ); } if (cityModel.wall.gates.Select(x => x.vec).Contains(new Point(start).vec)) { // shorten wall start = end + endToStart.normalized * (dis - gateOpeningSize / 2); // add gate tower Instantiate(gatePrefab, transform.TransformPoint(start), Quaternion.Euler(90, 0, 0), this.transform ); } var vec = end - start; var pos = Vector2.Lerp(start, end, 0.5f); var wall = Instantiate(wallPrefab, this.transform); wall.transform.rotation = Quaternion.Euler(0, 0, Mathf.Atan2(vec.y, vec.x) * Mathf.Rad2Deg); wall.transform.position = transform.TransformPoint(pos); wall.transform.localScale = new Vector3(dis, 1, 22); } foreach (var tower in cityModel.wall.towers .Where(x => !castle.wall.towers.Concat(castle.wall.gates) .Select(p => p.vec).Contains(x.vec))) { Instantiate(towerPrefab, transform.TransformPoint(tower.vec), Quaternion.Euler(90, 0, 0), this.transform); } } // build castle walls for (var i = 0; i < castle.wall.shape.Count; i++) { // wall var start = castle.wall.shape[i].vec; var end = castle.wall.shape[(i + 1) % castle.wall.shape.Count].vec; var startToEnd = end - start; var endToStart = start - end; var dis = endToStart.magnitude; //connectedToGate if ((cityModel.citadel.ward as Castle).wall.gates .Select(x => x.vec).Contains(new Point(end).vec)) { // shorten wall end = start + startToEnd.normalized * (dis - gateOpeningSize / 2); // add gate tower Instantiate(gatePrefab, transform.TransformPoint(end), Quaternion.Euler(90, 0, 0), this.transform ); } if ((cityModel.citadel.ward as Castle).wall.gates .Select(x => x.vec).Contains(new Point(start).vec)) { // shorten wall start = end + endToStart.normalized * (dis - gateOpeningSize / 2); // add gate tower Instantiate(gatePrefab, transform.TransformPoint(start), Quaternion.Euler(90, 0, 0), this.transform ); } var vec = end - start; var pos = Vector2.Lerp(start, end, 0.5f); var wall = Instantiate(wallPrefab, this.transform); wall.transform.rotation = Quaternion.Euler(0, 0, Mathf.Atan2(vec.y, vec.x) * Mathf.Rad2Deg); wall.transform.position = transform.TransformPoint(pos); wall.transform.localScale = new Vector3(dis, 1, 22); } foreach (var tower in castle.wall.towers) { var t = Instantiate(towerPrefab, transform.TransformPoint(tower.vec), Quaternion.Euler(90, 0, 0), this.transform); } // roads // foreach (var street in cityModel.streets) // { // var roadControl = Instantiate(roadPrefab, this.transform.position, Quaternion.identity, this.transform).GetComponent<RoadController>(); // roadControl.points = street.Select(x => transform.TransformPoint(x.vec)).ToList(); // } foreach (var street in cityModel.roads) { var roadControl = Instantiate(roadPrefab, this.transform.position, Quaternion.identity, this.transform).GetComponent <RoadController>(); roadControl.points = street.Select(x => transform.TransformPoint(x.vec)).ToList(); roadControl.roadWidth = 4; } MovePlayerToSpawnPoint(transform.TransformPoint(cityModel.roads[0][1].vec)); var edges = new List <Polygon>(); foreach (var patch in cityModel.inner) { patch.shape.forEdge((start, end) => { if (!cityModel.wall.bordersBy(patch, start, end)) { if (!edges.Any(x => x.findEdge(start, end) != -1) && !edges.Any(x => x.findEdge(end, start) != -1)) { var edge = new Polygon { start, end }; edges.Add(edge); var roadControl = Instantiate(roadPrefab, this.transform.position, Quaternion.identity, this.transform).GetComponent <RoadController>(); roadControl.points = new List <Vector3> { transform.TransformPoint(edge[0].vec), transform.TransformPoint(edge[1].vec) }; roadControl.roadWidth = patch.withinWalls ? 8 : 4; } } }); } // foreach (var street in cityModel.arteries) // { // var roadControl = Instantiate(roadPrefab, this.transform.position, Quaternion.identity, this.transform).GetComponent<RoadController>(); // roadControl.points = street.Select(x => transform.TransformPoint(x.vec)).ToList(); // } // init nav mesh // navGrid = Instantiate(navGridPrefab, transform.position, Quaternion.identity).GetComponent<Nav2D>(); // navGrid.transform.SetParent(this.gameObject.transform); //navGrid.GenerateNavMesh(); StartCoroutine("GenerateNav2d"); }