Hi Adriano, I’m glad if you are finding this useful. I’ll get back to you on `add` and `remove`, but just let me confirm with you: You actually want to allow multiple, say, `Health` components to be added to your `Character`? Most of the complication in my suggested code comes from trying to prevent that! Things would be simpler if this is not your requirement. I just need to double check that with you, since I can not think of a reason that would be a good thing. I expressly sketched out the implementation so that you can keep `Health` and such immutable, so that you can update the character’s state simply by `add`ing (and therefore replacing) the existing `Health` value.
milos > On 8 Apr 2016, at 15:12, Adriano Ferreira <adriano.ferre...@me.com> wrote: > > Milos, > > Thanks for taking a look at it, I appreciate you suggestion. > > It’s protocol-oriented, quite different from the idea I was trying to emulate > — the one provided by GameplayKit. > > Well, I tried it and it works great. > > > Now, would you implement those methods differently? > > mutating func add<T: Component>(component: T) { > self.components[T.name] = component > } > > mutating func remove<T: Component>(_: T.Type) { > self.components[T.name] = nil > } > > Also, since the key to the components dictionary is the name, adding a > component of the same type will replace the exiting one. > > How would you change that so it would be possible to add some components more > than once, as Jens mentioned? > > Best, > > —A
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users