Art of Simulation Posted August 26 Share Posted August 26 Hi, I'm currently thinking about a mod / application structure for my mod, but I'm not sure about the structure I'm currently applying. What application structure do you use for your (big) mod projects? For example, I'm having a Main class, which just handles enabling/disabling of the mod and some global stuff. I also have folders containing "Handlers", which execute certain parts of code. The handlers donot derive from GTA.Script, but they do set properties to Peds for example. So I would be calling the handler from the Main class for example. This way I can keep things seperated, and maintainable. So for example when I want to check if the current weapon of a ped is a pistol, I would have following code. Normally, you could just do it like this all in your main class: private void SomeMethod() { if (Game.Player.Character.Weapons.Current == WeaponHash.Pistol || Game.Player.Character.Weapons.Current == WeaponHash.Pistol50 || Game.Player.Character.Weapons.Current == WeaponHash.MachinePistol || Game.Player.Character.Weapons.Current == WeaponHash.PistolMk2 || Game.Player.Character.Weapons.Current == WeaponHash.SNSPistol || Game.Player.Character.Weapons.Current == WeaponHash.CombatPistol) { // Yes, it's a pistol. } } But, eventually the class will grow and grow, and you could do some checks in seperate classes (in my opinion), to keep the code clean, readable and maintainable. So I create a "weaponHandler" for it. So I make a class "WeaponHandler.cs" (not deriving from GTA.Script). Eventually it will look like this: WeaponHandler.cs: public bool IsPistol(WeaponHash weaponHash) { if (weaponHash == WeaponHash.Pistol || weaponHash == WeaponHash.Pistol50 || weaponHash == WeaponHash.MachinePistol || weaponHash == WeaponHash.PistolMk2 || weaponHash == WeaponHash.SNSPistol || weaponHash == WeaponHash.CombatPistol) { return true; } return false; } Main.cs: private void SomeMethod() { if (weaponHandler.IsPistol(Game.Player.Character.Weapons.Current)) { // Yes, it's a pistol! } } You see, the main method is now much shorter, and when there's something wrong in checking the weapon type, or you want to add another weapon, you can do it in the weaponHandler. But, I'm wondering, is this a good way to do this combined with scripthook? I'm used to this application structure as an WebAPI developer, but scripthook is a whole different thing. What ways do you use to organize your code and keep it short, clean and readable? I would be happy to hear them! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now