/*
Copyright (C) 2005 David Green <green@couchpotato.net>
All Rights Reserved.

This file is part of Aelfengard.

Aelfengard is proprietary software. You may not redistribute it without
prior written permission from the copyright holder.
*/

package server.token;

import java.util.List;
import java.util.Set;

import server.Player;
import server.RoomEntity;

class AccusativePart extends Part {

    public AccusativePart(boolean capitalize, int idx) {
        super(Type.ENTITY, idx, capitalize);
    }
    
    @Override
    public ResolvedPart apply(Player observer, boolean somebodyIfUnknown, String[] strings, RoomEntity... entities) {
        int idx = getIdx();
        RoomEntity entity = idx == 0 ? observer : entities[idx - 1];
        return new AccusativeResolvedPart(entity.getAccusativePronoun(observer));
    }
    
    private class AccusativeResolvedPart extends ResolvedPart {

        private String text;
        
        public AccusativeResolvedPart(String text) {
            this.text = text;
        }

        @Override
        public void add(ResolvedPart part) {
            text = "them";
        }
        
        @Override
        public String toString(Player observer, boolean somebodyIfUnknown, List<Set<String>> strings, List<Set<RoomEntity>> entities) {
            return text;
        }
        
    }

}