//--------------------------------------------------------------------------------------- private void load() { World = PlayerPrefs.GetInt("World"); //Load in our character data PlayerCharacters = new Character_SO[_numberOfChars]; Character_SO character; int cnt = -1; while (++cnt != _numberOfChars) { character = Character_SO.CreateInstance(cnt); PlayerCharacters[cnt] = character; string loadedJson = PlayerPrefs.GetString("char_" + cnt); character.LoadData(loadedJson); } //And load in the characters the player has selected SelectedCharacters = new bool[_numberOfChars]; cnt = -1; while (++cnt != _numberOfChars) { SelectedCharacters[cnt] = PlayerPrefs.GetInt("selectedChar_" + cnt) != 0; } }
//--------------------------------------------------------------------------------------- public void Init() { _gameController = GameController.Instance; //Get the positions in front of the player heroes, that's where the baddie will move to for attacking int len = BaddieAttackPositions.Length; _baddieAttackPositions = new Vector2[len]; int cnt = -1; while (++cnt != len) { _baddieAttackPositions[cnt] = BaddieAttackPositions[cnt].position; BaddieAttackPositions[cnt].gameObject.SetActive(false); //No longer needed } int world = DataManager.Data.World; //Get our Character_SO BaddieCharData = DataManager.Data.BaddieCharacter; //Set the name var baddieNames = DataManager.Data.BaddieNames; BaddieCharData.Name = baddieNames[wrap(world - 1, 0, baddieNames.Length)]; //We don't care about the baddies XP, just it's level, as that affects it's stats BaddieCharData.Level = _gameController.SquadHandler.GetHighestHeroLevel(); //Attack and defence values int attackValue = Random.Range(10, 20); int defenceValue = 35 - attackValue; //We're going to cheat here a little and weaken the baddie on world 1 as we want the player to win the first //time they play if (DataManager.Data.World == 1) { defenceValue -= 10; } BaddieCharData.Attack = attackValue; BaddieCharData.Defence = defenceValue; //Hardcoded 5 baddie types, it *is* a tight deadline int baddieAnims = wrap(world, 0, 5); Animation_SO animData = _gameController.BaddieAnimationDataHolder.CharacterAnimFrames[baddieAnims]; //Finally we can populate our (anti)Hero's data Baddie.SetInitialHealth(200); //They've got to have more health than the player Baddie.ThisHero = Hero.HeroType.Baddie; Baddie.Init(BaddieCharData, animData); }
//--------------------------------------------------------------------------------------- public void Init(Character_SO charData, Sprite avatarSprite, bool selected) { SelectedBorder.enabled = selected; Name.text = charData.Name; Avatar.sprite = avatarSprite; id = charData.ID; HoldProgressDial.fillAmount = 0; HoldProgressDial.enabled = false; PadLock.gameObject.SetActive(!charData.IsLocked); }
//--------------------------------------------------------------------------------------- private void populateDataAndDisplay(Character_SO charData) { Name.text = charData.Name; AttackStat.text = charData.Attack.ToString(); DefenceStat.text = charData.Defence.ToString(); LevelStat.text = charData.Level.ToString(); //The XP bar is a little more convoluted to work out, because it seems I'm treating having a week to do this //like a year int nextXPLevel = _dataManager.Ranks.GetNextRankXP(charData.Level - 1); //So that's the next XP we need to bump a level, work out our percentage of being the way there int currentXP = charData.XP; float perc = ((float)currentXP / nextXPLevel); XPBar.fillAmount = perc; //All done so we can display it now _canvasGroup.alpha = 0; _canvas.enabled = true; Fader.Instance.FadeUp(_canvasGroup, 0.2f, null); }
//--------------------------------------------------------------------------------------- public void Init(Character_SO CharacterData, Animation_SO animData) { _gameController = GameController.Instance; _hud = _gameController.HUD; _characterData = CharacterData; _animFrames = animData; //Flip the sprite if it's a baddie HeroSprite.flipX = ThisHero == HeroType.Baddie; //Set up the default frame _animOffset = Random.Range(0, 3); //So the idle animations aren't in perfect sync HeroSprite.sprite = _animFrames.IdleFrames[_animOffset]; _animIdleLength = _animFrames.IdleFrames.Length; _animWalkingLength = _animFrames.WalkingFrames.Length; AnimationState = AnimationTypes.Idle; _healthBarScale = Vector2.one; _healthBarXScaleTarget = 1; }
//--------------------------------------------------------------------------------------- private void init() { //Create our Rank SO Ranks = Rank_SO.CreateInstance(); //Set up the baddie next as we never save his data it's just created at runtime (Aside from the names) BaddieNames = new string[10]; BaddieNames[0] = "Clanon Jonesness"; BaddieNames[1] = "Merlturner Hawkinsness"; BaddieNames[2] = "Jarramos"; BaddieNames[3] = "Chavethumper"; BaddieNames[4] = "Bareth"; BaddieNames[5] = "Andersonganto"; BaddieNames[6] = "Cal"; BaddieNames[7] = "Khanbell"; BaddieNames[8] = "Tinkerdley"; BaddieNames[9] = "Wandlee Fordelline"; BaddieCharacter = Character_SO.CreateInstance(_numberOfChars); //Unique ID //Have we played this before ? If so we can just load that data in if (PlayerPrefs.HasKey("World")) { load(); return; } //From https://www.name-generator.org.uk/ _names = new string[_numberOfChars]; _names[0] = "Hubus Harkrper"; _names[1] = "Holmesstomper"; _names[2] = "Sanchewand Anspell"; _names[3] = "Gogmaders"; _names[4] = "Nuaknight"; _names[5] = "Evansspell Aumrobertson"; _names[6] = "Shizne"; _names[7] = "Elmsquez Bellden"; _names[8] = "Gigantlane"; _names[9] = "Hagmagog"; //Going to use random numbers for now, deadlines and all that _attack = new int[_numberOfChars]; _defence = new int[_numberOfChars]; int attackValue; int defenceValue; int cnt = -1; while (++cnt != _numberOfChars) { attackValue = Random.Range(5, 20); defenceValue = 35 - attackValue; _attack[cnt] = attackValue; _defence[cnt] = defenceValue; } //Set our world unlock values and the default Character level int[] unlockWorldStorage = new int[_numberOfChars]; int[] defaultCharLevel = new int[_numberOfChars]; int unlockWorld = 4; int charLevel = 3; cnt = -1; while (++cnt != _numberOfChars) { if (cnt < 3) { unlockWorldStorage[cnt] = 1; defaultCharLevel[cnt] = 1; } else { unlockWorldStorage[cnt] = unlockWorld; unlockWorld += 3; defaultCharLevel[cnt] = charLevel; charLevel++; } } //Now we can finally create our characters Character_SO character; PlayerCharacters = new Character_SO[_numberOfChars]; cnt = -1; while (++cnt != _numberOfChars) { character = Character_SO.CreateInstance(cnt); character.Name = _names[cnt]; character.Attack = _attack[cnt]; character.Defence = _defence[cnt]; character.Level = defaultCharLevel[cnt]; character.UnlockWorld = unlockWorldStorage[cnt]; character.TestForUnlocked(World); PlayerCharacters[cnt] = character; } //Lets select the default characters SelectedCharacters = new bool[_numberOfChars]; SelectedCharacters[0] = true; SelectedCharacters[1] = true; SelectedCharacters[2] = true; //We're at the stage where we can save our data save(); }