目的
實踐跨平臺的成就發佈系統
目標平臺
iOS, Android
UML
CBAchievementExhibitor這個類,繼承自觀察者模式中的CBObserver類。
因爲可能根據不同的需求,會實踐不同的擴充,像是國外用戶可能較少使用微博,國內用戶因爲牆較少上fb跟推特,所以提供這個接口供擴充用。
在跨平臺方面,則是在內部解決。
例如:CBWeiboExhibitor中會聲明一個CBAchievementExhibitor成員,而會在分別實踐個CBiOSWeiboExhibitor及CBAndroidWeiboExhibitor
CBWeiboExhibitor的方法則是呼叫抽象成員的方法,,在不同平臺下則載入不同的實踐。
這個類則是成就的管理類,負責從載入成就的設定檔以及目前成就的存檔,並且處理成就新增等問題。同時提供添加Exhibitor的方法。
同時所有成就值都透過管理類來變更,而管理類也會將變更過後的結果派送到Exhibitor。
將成就的部份的數據封裝到一個類中,已簡化擴充時的難度
運作方式如上圖:
1. 讀取默認的設定檔
2. 讀取已經有的成就存檔
3. 同步成就,若設定檔有改版,如新增成就,則新增該成就到成就存檔。
4. 透過管理類增加成就值。
5. 若完成則通知註冊的CBAchievementExhibitor展示成就。
輸出至上CBDebugExhibitor
call CBDebugExhibitor::post()
ID:com.cloudbox.superbabypig.stage1_clear [100.00%]
Current Value:[1.00], Target Value:[1.00]
Complete:[YES]
Description:Stage 1 clear, Image Name:achievement1.png
輸出至畫面(CBScreenExhibitor)
至此本地端成就係統就算完成可以運作了,可以跨平臺,以及成就結果可儲存於本地端。
接下來只要逐一實踐GameCenter, Facebook, Weibo等的功能,逐一加上,增加其完整性。