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

Reply via email to