Example #1
0
    def loadStories(self):
        storyNum = 0
        for st in self.gamedata.stories.story:
            storyNum += 1
            currStory = Story(storyNum, st.name.cdata, st.startRoom.cdata,
                              st.description.cdata)

            for room in st.room:
                currRoom = Room(room.name.cdata, room.description.cdata,
                                room.art.cdata, room.interactables.cdata)
                currStory.addRoom(currRoom)

            for item in st.item:
                currItem = Item(item.name.cdata, item.description.cdata,
                                item.sellable.cdata, item.value.cdata)
                currStory.addItem(currItem)

            for interactable in st.interactable:
                currInteractable = Interactable(
                    interactable.name.cdata, interactable.description.cdata,
                    interactable.requiredEffects.cdata.split(','))
                #this is fine, we can just check for req effect name in player's effect list
                for action in interactable.action:
                    currAction = Action(
                        action.name.cdata, action.description.cdata,
                        action.failDescription.cdata, action.item.cdata,
                        action.requiredEffects.cdata,
                        action.givenEffects.cdata, action.removedEffects.cdata,
                        action.requiredItems.cdata, action.givenItems.cdata,
                        action.removedItems.cdata, action.newDesc.cdata,
                        action.newItems.cdata, action.newArt.cdata,
                        action.newInteractables.cdata)

                    currInteractable.addAction(currAction)
                currStory.addInteractable(currInteractable)

            for effect in st.effect:
                try:
                    effectName = effect.name.cdata
                    if effect.isRoomChange.cdata == "True" and effect.isRoomChange[
                            'roomname'] == '':
                        raise invalidSetup(Exception)
                    currEffect = Effect(effect.name.cdata,
                                        effect.description.cdata,
                                        effect.isRoomChange.cdata,
                                        effect.isRoomChange['roomname'])
                except AttributeError:
                    currEffect = Effect(effect.name.cdata,
                                        effect.description.cdata)
                except invalidSetup:
                    print('Warning: InvalidEffect - EFFECT[' + effectName +
                          '] STORY[' + currStory.name + '] ROOMCHANGE INGORED')
                    currEffect = Effect(effect.name.cdata,
                                        effect.description.cdata)
                currStory.addEffect(currEffect)

            player = Player(st.player.name.cdata, st.player.description.cdata,
                            st.player.effects.cdata, st.player.items.cdata,
                            st.player.art.cdata)
            currStory.setPlayer(player)

            self.stories.append(currStory)