Package net.cloudcodex.server.data.Data

Examples of net.cloudcodex.server.data.Data.Scene


      logger.severe("Invalid character " + characterKey);
      return false;
    }

    final Key sceneKey = character.getScene();
    final Scene scene = dao.readScene(context, sceneKey);
   
    // random a number of messages to write.
    final Random random = new Random();
    final int countMessages = random.nextInt(4);
    logger.info("random " + countMessages + " to write randomly");
   
    for(int n = 0; n < countMessages; n++) {
     
      final List<Key> characters = new ArrayList<Key>(scene.getNonNullCharacters());

      // Remove current character.
      while(characters.remove(characterKey));
      if(characters.isEmpty()) {
        return false;
View Full Code Here


      logger.severe("Invalid character " + characterKey);
      return false;
    }

    final Key sceneKey = character.getScene();
    final Scene scene = dao.readScene(context, sceneKey);
   
    // random a number of messages to write.
    final Random random = new Random();
   
    final List<Key> charactersKeys = new ArrayList<Key>(scene.getNonNullCharacters());

    // Remove current character.
    while(charactersKeys.remove(characterKey));
    if(charactersKeys.isEmpty()) {
      return false;
    }

    List<Data.Character> characters = dao.read(context, Data.Character.class, charactersKeys);
    characters = removeNPCs(characters);

    if(characters.isEmpty()) {
      return false;
    }
   
    final Data.Character roller = characters.get(random.nextInt(characters.size()));

    final User rollerOwner = dao.readUser(context, roller.getOwner());
    if(rollerOwner == null) {
      logger.severe("Owner not found " + roller.getOwner());
      return false;
    }
   
    final Map<Integer, Integer> dices = new HashMap<Integer, Integer>();
    final int types = random.nextInt(4) + 1;
    logger.info("Roll " + types + " types of dices");
    for(int n = 0; n < types; n++) {
      boolean ok = false;
      while(!ok) {
        final int sides = random.nextInt(100) + 1;
        if(!dices.containsKey(sides)) {
          final int number = random.nextInt(4) + 1;
          logger.info("Roll " + number + " dices of " + sides + " sides");
          dices.put(sides, number);
          ok = true;
        }
      }
    }
   
    return playerRollDices(new Context(context, rollerOwner), roller.getKey(),
      sceneKey, scene.getTimestamp(),
      dices, "A random dice roll !");
  }
View Full Code Here

    // choose a number of scene to fetch before deleting a message
    final Random random = new Random();
    final int countScenes = random.nextInt(5);

    Key sceneKey = character.getScene();
    Scene scene = null;
    for(int n = 0; n < countScenes; n++) {
      if(sceneKey != null) {
        scene = dao.readScene(context, sceneKey);
        sceneKey = scene.getPrevious(String.valueOf(characterId));
      }
    }

    if(scene == null) {
      logger.severe("was not able to find a scene where delete a message");
      context.addError(Errors.IMPOSSIBLE);
      return false;
    }

    sceneKey = scene.getKey();
   
    final List<Message> messages = dao.getSceneMessages(context, sceneKey);
   
    if(messages == null || messages.isEmpty()) {
      logger.severe("no messages in scene " + sceneKey);
View Full Code Here

    // choose a number of scene to fetch before deleting a message
    final Random random = new Random();
    final int countScenes = random.nextInt(5);

    Key sceneKey = character.getScene();
    Scene scene = null;
    for(int n = 0; n < countScenes; n++) {
      if(sceneKey != null) {
        scene = dao.readScene(context, sceneKey);
        sceneKey = scene.getPrevious(String.valueOf(characterId));
      }
    }

    if(scene == null) {
      logger.severe("was not able to find a scene where reindex messages");
      context.addError(Errors.IMPOSSIBLE);
      return false;
    }

    sceneKey = scene.getKey();
   
    final List<Message> messages = dao.getSceneMessages(context, sceneKey);
   
    if(messages == null || messages.size() < 2) {
      logger.severe("no enough messages in scene " + sceneKey);
View Full Code Here

    // choose a number of scene to fetch before deleting a message
    final Random random = new Random();
    final int countScenes = random.nextInt(5);

    Key sceneKey = character.getScene();
    Scene scene = null;
    for(int n = 0; n < countScenes; n++) {
      if(sceneKey != null) {
        scene = dao.readScene(context, sceneKey);
        sceneKey = scene.getPrevious(String.valueOf(characterId));
      }
    }

    if(scene == null) {
      logger.severe("was not able to find a scene where insert a message");
      context.addError(Errors.IMPOSSIBLE);
      return false;
    }

    sceneKey = scene.getKey();
   
    final List<Message> messages = dao.getSceneMessages(context, sceneKey);
   
    if(messages == null || messages.isEmpty()) {
      logger.severe("no messages in scene " + sceneKey);
View Full Code Here

      return false;
    }
   
    // find the message before
    final Key sceneKey = Scene.createKey(campaignKey, sceneId);
    final Scene scene = dao.readScene(context, sceneKey);
    if(scene == null) {
      logger.severe("Scene not found " + sceneKey);
      context.addError(Errors.NOT_FOUND_SCENE, sceneKey);
      return false;
    }

    final Key messageBeforeKey = Message.createKey(sceneKey, messageBeforeId);
    final Message messageBefore = dao.readMessage(context, messageBeforeKey);
    if(messageBefore == null) {
      logger.severe("Message not found " + messageBeforeKey);
      context.addError(Errors.NOT_FOUND_MESSAGE, messageBeforeKey);
      return false;
    }

    final Transaction tx = dao.beginTransaction();
    try {
      final long newIndex;
     
      // find the message after
      final Key messageAfterKey = messageBefore.getNext();
      final Message messageAfter;
      if(messageAfterKey != null) {
        messageAfter = dao.readMessage(context, messageAfterKey);
        if(messageAfter == null) {
          logger.severe("Message not found " + messageAfterKey);
          context.addError(Errors.NOT_FOUND_MESSAGE, messageAfterKey);
          return false;
        }
       
        newIndex = (messageBefore.getIndex() + messageAfter.getIndex()) / 2;
       
        if(newIndex == messageBefore.getIndex()
            || newIndex == messageAfter.getIndex()) {
          logger.severe("No more indexes to insert between "
            + messageBeforeKey + " and " + messageAfterKey);
          context.addError(Errors.IMPOSSIBLE, "index");
          return false;
        }

      } else {
        newIndex = getNewMessageIndex(messageBefore.getIndex());
        messageAfter = null;
      }

      final Message message = new Message(scene);
      message.setDate(new Date());
      message.setType(MessageType.OFF.getCode());
      message.setPrevious(messageBeforeKey);
      message.setContent(content);
      message.setIndex(newIndex);
      if(messageAfter != null) {
        message.setNext(messageAfterKey);
      }
      dao.save(context, message);
     
      messageBefore.setNext(message);
      dao.save(context, messageBefore);
     
      if(messageAfter != null) {
        messageAfter.setPrevious(message);
        dao.save(context, messageAfter);
      } else {
        scene.setLastMessage(message);
        dao.save(context, scene);
      }

      tx.commit();
View Full Code Here

TOP

Related Classes of net.cloudcodex.server.data.Data.Scene

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.