成就係統實踐

目的

實踐跨平臺的成就發佈系統

目標平臺

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等的功能,逐一加上,增加其完整性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章