1. ActionScript / Говнокод #12289

    −116

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    public static function giveReward (
                    rewardVector : Vector.<ResourceData>,
                    mediator : GameObjectMediator,
                    collectionItem : GnomeCollectionItem = null,
                    sendAddItems : Boolean = false,
                    moneySyncCategory:String = "reward",
                    moneySyncItemId:String = null) : void
            {
                var facade : IFacade = Facade.getInstance();
                for each (var resourceData : ResourceData in rewardVector) {
                    var resourceType : String = resourceData.resourcetype;
                    if (SoundFileCollection.instance.getEntry(resourceType)) {
                        facade.sendNotification(SoundNotifications.SOUND_PLAY, resourceType);
                    }
                    else if (NoticeCollection.instance.getEntry(resourceType)) {
                        facade.sendNotification(UINotifications.SHOW_NOTICE, resourceType);
                    }
                    else if (Quests.instance.getEntry(resourceType)) {
                        var quest : Quest = Quests.instance.getProxy(resourceType) as Quest;
                        if (quest.status != QuestData.ACTIVE && quest.status != QuestData.COMPLETE) {
                            Player.instance.runDirective(DQuestActivate.NAME, {id : resourceType});
                        }
                    }
                    else if (RewardCollection.instance.getEntry(resourceType)) {
                        var rewardProxy : Reward = RewardCollection.instance.getProxy(resourceType) as Reward;
                        Reward.giveReward(rewardProxy.reward, mediator, null, sendAddItems, moneySyncCategory, moneySyncItemId);
                    }
                    else if (BehaviorCollection.instance.getEntry(resourceType)) {
                        var behavior : Behavior = BehaviorCollection.instance.getProxy(resourceType) as Behavior;
                        behavior.process();
                    }
                    else {
                        if (sendAddItems) {
                            Player.instance.runDirective(DAddItem.NAME, { 'id' : resourceType, 'value' : resourceData.quantity });
                        }
                        var consumable : Consumable = ConsumableCollection.instance.getProxy(resourceType) as Consumable;
                        if (consumable) {
                            if (consumable.tags.find(Consumable.TAG_WORKER)) {
                                Player.instance.runDirective(DPlaceHelper.NAME, {asset : consumable.flex, x : mediator.cell.cx, y : mediator.cell.cy});
                            }
                            else if (CharacterDefinitionCollection.instance.getEntry(consumable.flex)) {
                                if (resourceData.quantity > 0) {
                                    Player.instance.runDirective(DPlaceNPC.NAME, { id : consumable.id, asset: consumable.flex } );
                                } else if (resourceData.quantity < 0) {
                                    Player.instance.runDirective(DRemoveNPC.NAME, {id : consumable.id});
                                }
                            }
                        } else {
                            var charDef : CharacterDefinition = CharacterDefinitionCollection.instance.getProxy(resourceType) as CharacterDefinition;
                            if (charDef) {
                                if (charDef.tags.find(CharacterDefinition.TAG_NPC)) {
                                    if (resourceData.quantity > 0) {
                                        Player.instance.runDirective(DPlaceNPC.NAME, {id : charDef.id});
                                    } else if (resourceData.quantity < 0) {
                                        Player.instance.runDirective(DRemoveNPC.NAME, {id : charDef.id});
                                    }
                                } else {
                                    Player.instance.runDirective(DPlaceHelper.NAME, {asset : charDef.id, x : mediator.cell.cx, y : mediator.cell.cy});
                                }
                            } else {
                                Player.instance.setResource(resourceType, resourceData.quantity, true);
                                if (!moneySyncItemId && mediator) {
                                    moneySyncItemId = mediator.id;
                                }
                                var moneySync : MoneySync = new MoneySync(moneySyncCategory, moneySyncItemId, resourceType, resourceData.quantity);
                                Player.instance.sendNotification(GameNotifications.MONEY_SYNC, moneySync);
                            }
                        }
    
                        if (resourceType.indexOf('GOTO') != -1) {
                            // goto world
                            var wordId : String = resourceType.split('-')[1];
                            var uiMed:UIMediator = Facade.getInstance().retrieveMediator(UIMediator.NAME) as UIMediator;
                            uiMed.hide();
                            Player.instance.runDirective(DSetLocation.NAME, {id : wordId});
                        }
                    }
                }
                var lootObject : Object = { container : mediator.view, loot : rewardVector };
                if (collectionItem != null) {
                    lootObject.additionalItem = collectionItem;
                }
                facade.sendNotification(MidLayNotifications.ML_LOOT_OBJECT, lootObject);
                Player.instance.runDirective(CheckIn.NAME);
            }

    А вот и получение награды.

    Запостил: kyzi007, 14 Декабря 2012

    Комментарии (14) RSS

    • Ну, как бы прототип такой. Редко когда сразу можно предугадать как именно и чего именно будет происходить, тем более, что система развивающаяся наверное... Но криминала нет. Можно теперь все проанализировать и переписать красивше, но, наверное, во время написания не было времени на такой анализ, да и данных, скорее всего не было.
      Я тоже так делаю, когда точно не знаю, как в итоге что будет выглядеть: лучше сначала написать так, чтобы хоть как-то работало, потом найти / выделить общие свойства и сократить / привести к общему знаменателю.
      Тем более, видно, что человек развивается. Вот, про for each наконец-то узнал.
      Ответить
      • А, так я на другом проекте, с него почти ничего не кидала - задница горела, некогда было.
        Ответить
        • Кузя, это ты модераст, или твой бывший?
          Или ты и есть твой бывшый... точнее тогда НЕ бывшый.
          Ответить
      • И у нас все такое, это понятно что как и почему - но разобраться в тоннах кода которые прошли уже через два проекта в стиле "аа быстра быстра кодить" и покрылись от того разноплановыми заплатками достаточно сложно.
        Я в принципе еще не кидаю потому что кашу смотреть неинтересно.
        Ответить
    • > var facade : IFacade = Facade.getInstance();
      по-моему, это можно было отдельным постом
      Ответить
      • думаю к шаблону проектирования фас ад это отношения не имеет
        Ответить
        • Фасад-одиночка.
          Ответить
          • Ну это банально. А вот интересно кто ещё из здесь присутствующих сможет вменяймо совместить паттерны, не соединяя их как отдельные сущности?
            Ответить
      • А это puremvc.
        Ответить

    Добавить комментарий