Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision | ||
skillsystem [2020/11/06 12:54] – created admin | skillsystem [2020/11/06 13:16] – [Skillsystem] admin | ||
---|---|---|---|
Line 4: | Line 4: | ||
Imagine you're playing a character in a RPG or sports game you normally have many different skills you can evolve to get better or make progress. | Imagine you're playing a character in a RPG or sports game you normally have many different skills you can evolve to get better or make progress. | ||
- | A SkillSystem manages groups which contains skills. | + | A SkillSystem manages groups which contains skills |
+ | |||
+ | <file pascal> | ||
+ | uses | ||
+ | Gorilla.Utils.SkillSystem; | ||
+ | |||
+ | [...] | ||
+ | |||
+ | FSkillSystem : TGorillaSkillSystem; | ||
+ | FMySkills : TGorillaSkillGroup; | ||
+ | FSkills : Array[0..2] of TGorillaSkill; | ||
+ | |||
+ | [...] | ||
+ | |||
+ | // create a new empty skill system | ||
+ | FSkillSystem := TGorillaSkillSystem.Create(Self); | ||
+ | FSkillSystem.Language := ' | ||
+ | |||
+ | // add a group for managing general skills | ||
+ | FMySkills := FSkillSystem.AddGroup(); | ||
+ | FMySkills.Name := ' | ||
+ | |||
+ | // add some skill to this group | ||
+ | FSkills[0] := FMySkills.AddSkill(); | ||
+ | FSkills[0].Name := ' | ||
+ | FSkills[0].Level := 1; | ||
+ | FSkills[0].MaxLevel := 10; | ||
+ | |||
+ | FSkills[1] := FMySkills.AddSkill(); | ||
+ | FSkills[1].Name := ' | ||
+ | |||
+ | FSkills[2] := FMySkills.AddSkill(); | ||
+ | FSkills[2].Name := ' | ||
+ | FSkills[2].Level := 0; | ||
+ | FSkills[2].MaxLevel := 1; | ||
+ | // we can enable this by leveling up the " | ||
+ | FSkills[2].Enabled := false; | ||
+ | // just link to another skill | ||
+ | FSkills[1].NextSkill := FSkills[1].GUID; | ||
+ | </ | ||
+ | |||
+ | ===== Skill ===== | ||
+ | |||
+ | Each skill is completely configurable. You activate/ | ||
+ | |||
+ | ^Property ^Description^ | ||
+ | |Activated |Defines if the skill is activated for use. It is different to " | ||
+ | |Value |Defines the main property/ | ||
+ | |Factor |Defines an interpolation factor used with the interpolation method to calculate the level corresponding value. By default this value is set to 1.0.| | ||
+ | |Interpolation |Defines an interpolation function by which a new value is computed, in dependency to the level. By default this value is set to LinearInterpolation.| | ||
+ | |Level |Defines a value to identify a level category. By default this value is set to 0.| | ||
+ | |MaxLevel |Defines the maximum level to be reached. By default this value is set to 0.| | ||
+ | |LevelingTime |Defines the time for leveling up this skill. By default this value is set to 1000ms.| | ||
+ | |NextSkill | Defines a linked skill which will be enabled on leveling up. Use this property instead of interpolation mechanism. By default this value is not set.| | ||
+ | |Data |Use this value to store skill specific variable content. For example if the Value field do not provide enough information for this skill. By default this value is set to TValue.Empty.| | ||
+ | |||
+ | ==== Leveling Up ==== | ||
+ | |||
+ | In most games it's not enough to just manage skill values, you also like to evolve your character. | ||
+ | Leveling up allows you to change values and factors by levels. Each leveling up will start a TGorillaSkillProcess, | ||
+ | you might won't change the value immediately. The " | ||
+ | At the moment only leveling up is allowed. | ||
+ | |||
+ | Besides easy leveling up, you can also enable new skill values by this method. Simply set the " | ||
+ | |||
+ | <file pascal> | ||
+ | var LLevelProc : TGorillaSkillProcess; | ||
+ | begin | ||
+ | LLevelProc := FSkills[0].StartLevelingUp(); | ||
+ | LLevelProc.Start(); | ||
+ | end; | ||
+ | </ | ||
===== User Interface ===== | ===== User Interface ===== | ||
Line 15: | Line 86: | ||
Sadly AssetsManager support is not given yet. | Sadly AssetsManager support is not given yet. | ||
+ | Next step: [[inputpolling|InputPolling]] |