2015-08-27 01:48:33 +02:00
|
|
|
package de.vanitasvitae.enigmandroid.enigma;
|
|
|
|
|
2015-10-09 00:57:54 +02:00
|
|
|
import android.util.Log;
|
|
|
|
|
2015-10-04 22:51:35 +02:00
|
|
|
import java.math.BigInteger;
|
2015-09-26 16:04:02 +02:00
|
|
|
|
2015-10-09 00:57:54 +02:00
|
|
|
import de.vanitasvitae.enigmandroid.MainActivity;
|
Started new Iteration of MainActivity as Main2, moved getters and setters of preferences to SettingsActivity
Added Enigma KD, Added protocol version to ensure compatibility with upcoming releases, Added options to share configuration as string, organized sharing/receiving of configuration, moved preference-management to SettingsActivity, Added whats-New-Dialog that informs user about latest changes
Translated some strings, commented some methods in MainActivity
New Icon!
Added comment and removed unused import, peanuts if you ask me
Added Script to automatically render icon in all dimensions
Reformated code and moved Plugboard, EntryWheel, Reflector, Rotor to new package parts
Cleaned repository
Merge branch 'development'
2017-05-05 16:49:30 +02:00
|
|
|
import de.vanitasvitae.enigmandroid.enigma.parts.EntryWheel;
|
|
|
|
import de.vanitasvitae.enigmandroid.enigma.parts.Plugboard;
|
|
|
|
import de.vanitasvitae.enigmandroid.enigma.parts.Reflector;
|
|
|
|
import de.vanitasvitae.enigmandroid.enigma.parts.Rotor;
|
2015-08-27 01:48:33 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Concrete implementation of an enigma machine model M3
|
|
|
|
* Copyright (C) 2015 Paul Schaub
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
* @author vanitasvitae
|
|
|
|
*/
|
|
|
|
public class Enigma_M3 extends Enigma_I
|
|
|
|
{
|
Started new Iteration of MainActivity as Main2, moved getters and setters of preferences to SettingsActivity
Added Enigma KD, Added protocol version to ensure compatibility with upcoming releases, Added options to share configuration as string, organized sharing/receiving of configuration, moved preference-management to SettingsActivity, Added whats-New-Dialog that informs user about latest changes
Translated some strings, commented some methods in MainActivity
New Icon!
Added comment and removed unused import, peanuts if you ask me
Added Script to automatically render icon in all dimensions
Reformated code and moved Plugboard, EntryWheel, Reflector, Rotor to new package parts
Cleaned repository
Merge branch 'development'
2017-05-05 16:49:30 +02:00
|
|
|
public Enigma_M3()
|
|
|
|
{
|
|
|
|
super();
|
|
|
|
machineType = "M3";
|
|
|
|
Log.d(MainActivity.APP_ID, "Created Enigma M3");
|
|
|
|
}
|
2015-09-26 16:04:02 +02:00
|
|
|
|
Started new Iteration of MainActivity as Main2, moved getters and setters of preferences to SettingsActivity
Added Enigma KD, Added protocol version to ensure compatibility with upcoming releases, Added options to share configuration as string, organized sharing/receiving of configuration, moved preference-management to SettingsActivity, Added whats-New-Dialog that informs user about latest changes
Translated some strings, commented some methods in MainActivity
New Icon!
Added comment and removed unused import, peanuts if you ask me
Added Script to automatically render icon in all dimensions
Reformated code and moved Plugboard, EntryWheel, Reflector, Rotor to new package parts
Cleaned repository
Merge branch 'development'
2017-05-05 16:49:30 +02:00
|
|
|
@Override
|
|
|
|
protected void establishAvailableParts()
|
|
|
|
{
|
|
|
|
addAvailableEntryWheel(new EntryWheel.EntryWheel_ABCDEF());
|
|
|
|
addAvailableRotor(new Rotor.Rotor_I(0, 0));
|
|
|
|
addAvailableRotor(new Rotor.Rotor_II(0,0));
|
|
|
|
addAvailableRotor(new Rotor.Rotor_III(0,0));
|
|
|
|
addAvailableRotor(new Rotor.Rotor_IV(0,0));
|
|
|
|
addAvailableRotor(new Rotor.Rotor_V(0,0));
|
|
|
|
addAvailableRotor(new Rotor.Rotor_VI(0,0));
|
|
|
|
addAvailableRotor(new Rotor.Rotor_VII(0,0));
|
|
|
|
addAvailableRotor(new Rotor.Rotor_VIII(0,0));
|
|
|
|
addAvailableReflector(new Reflector.Reflector_B());
|
|
|
|
addAvailableReflector(new Reflector.Reflector_C());
|
|
|
|
}
|
2015-10-04 22:51:35 +02:00
|
|
|
|
Started new Iteration of MainActivity as Main2, moved getters and setters of preferences to SettingsActivity
Added Enigma KD, Added protocol version to ensure compatibility with upcoming releases, Added options to share configuration as string, organized sharing/receiving of configuration, moved preference-management to SettingsActivity, Added whats-New-Dialog that informs user about latest changes
Translated some strings, commented some methods in MainActivity
New Icon!
Added comment and removed unused import, peanuts if you ask me
Added Script to automatically render icon in all dimensions
Reformated code and moved Plugboard, EntryWheel, Reflector, Rotor to new package parts
Cleaned repository
Merge branch 'development'
2017-05-05 16:49:30 +02:00
|
|
|
@Override
|
|
|
|
protected void generateState() {
|
|
|
|
int r1, r2=-1, r3=-1;
|
|
|
|
r1 = rand.nextInt(8);
|
|
|
|
while(r2 == -1 || r2 == r1) r2 = rand.nextInt(8);
|
|
|
|
while(r3 == -1 || r3 == r2 || r3 == r1) r3 = rand.nextInt(8);
|
|
|
|
int ref = rand.nextInt(2);
|
2015-09-26 16:04:02 +02:00
|
|
|
|
Started new Iteration of MainActivity as Main2, moved getters and setters of preferences to SettingsActivity
Added Enigma KD, Added protocol version to ensure compatibility with upcoming releases, Added options to share configuration as string, organized sharing/receiving of configuration, moved preference-management to SettingsActivity, Added whats-New-Dialog that informs user about latest changes
Translated some strings, commented some methods in MainActivity
New Icon!
Added comment and removed unused import, peanuts if you ask me
Added Script to automatically render icon in all dimensions
Reformated code and moved Plugboard, EntryWheel, Reflector, Rotor to new package parts
Cleaned repository
Merge branch 'development'
2017-05-05 16:49:30 +02:00
|
|
|
int rot1 = rand.nextInt(26);
|
|
|
|
int rot2 = rand.nextInt(26);
|
|
|
|
int rot3 = rand.nextInt(26);
|
|
|
|
int ring1 = rand.nextInt(26);
|
|
|
|
int ring2 = rand.nextInt(26);
|
|
|
|
int ring3 = rand.nextInt(26);
|
2015-09-26 16:04:02 +02:00
|
|
|
|
Started new Iteration of MainActivity as Main2, moved getters and setters of preferences to SettingsActivity
Added Enigma KD, Added protocol version to ensure compatibility with upcoming releases, Added options to share configuration as string, organized sharing/receiving of configuration, moved preference-management to SettingsActivity, Added whats-New-Dialog that informs user about latest changes
Translated some strings, commented some methods in MainActivity
New Icon!
Added comment and removed unused import, peanuts if you ask me
Added Script to automatically render icon in all dimensions
Reformated code and moved Plugboard, EntryWheel, Reflector, Rotor to new package parts
Cleaned repository
Merge branch 'development'
2017-05-05 16:49:30 +02:00
|
|
|
this.entryWheel = getEntryWheel(0);
|
|
|
|
this.rotor1 = getRotor(r1, rot1, ring1);
|
|
|
|
this.rotor2 = getRotor(r2, rot2, ring2);
|
|
|
|
this.rotor3 = getRotor(r3, rot3, ring3);
|
|
|
|
this.reflector = getReflector(ref);
|
2015-09-30 14:25:49 +02:00
|
|
|
|
Started new Iteration of MainActivity as Main2, moved getters and setters of preferences to SettingsActivity
Added Enigma KD, Added protocol version to ensure compatibility with upcoming releases, Added options to share configuration as string, organized sharing/receiving of configuration, moved preference-management to SettingsActivity, Added whats-New-Dialog that informs user about latest changes
Translated some strings, commented some methods in MainActivity
New Icon!
Added comment and removed unused import, peanuts if you ask me
Added Script to automatically render icon in all dimensions
Reformated code and moved Plugboard, EntryWheel, Reflector, Rotor to new package parts
Cleaned repository
Merge branch 'development'
2017-05-05 16:49:30 +02:00
|
|
|
this.plugboard = new Plugboard();
|
|
|
|
plugboard.setConfiguration(Plugboard.seedToPlugboardConfiguration(rand));
|
|
|
|
}
|
2015-09-30 14:25:49 +02:00
|
|
|
|
Started new Iteration of MainActivity as Main2, moved getters and setters of preferences to SettingsActivity
Added Enigma KD, Added protocol version to ensure compatibility with upcoming releases, Added options to share configuration as string, organized sharing/receiving of configuration, moved preference-management to SettingsActivity, Added whats-New-Dialog that informs user about latest changes
Translated some strings, commented some methods in MainActivity
New Icon!
Added comment and removed unused import, peanuts if you ask me
Added Script to automatically render icon in all dimensions
Reformated code and moved Plugboard, EntryWheel, Reflector, Rotor to new package parts
Cleaned repository
Merge branch 'development'
2017-05-05 16:49:30 +02:00
|
|
|
@Override
|
|
|
|
public BigInteger getEncodedState(int protocol_version) {
|
|
|
|
BigInteger s = Plugboard.configurationToBigInteger(plugboard.getConfiguration());
|
|
|
|
s = addDigit(s, rotor3.getRingSetting(), 26);
|
|
|
|
s = addDigit(s, rotor3.getRotation(), 26);
|
|
|
|
s = addDigit(s, rotor2.getRingSetting(), 26);
|
|
|
|
s = addDigit(s, rotor2.getRotation(), 26);
|
|
|
|
s = addDigit(s, rotor1.getRingSetting(), 26);
|
|
|
|
s = addDigit(s, rotor1.getRotation(), 26);
|
|
|
|
s = addDigit(s, reflector.getIndex(), availableReflectors.size());
|
|
|
|
s = addDigit(s, rotor3.getIndex(), availableRotors.size());
|
|
|
|
s = addDigit(s, rotor2.getIndex(), availableRotors.size());
|
|
|
|
s = addDigit(s, rotor1.getIndex(), availableRotors.size());
|
|
|
|
s = addDigit(s, 1, 20); //Machine #1
|
|
|
|
s = addDigit(s, protocol_version, MainActivity.max_protocol_version);
|
2015-09-30 14:25:49 +02:00
|
|
|
|
Started new Iteration of MainActivity as Main2, moved getters and setters of preferences to SettingsActivity
Added Enigma KD, Added protocol version to ensure compatibility with upcoming releases, Added options to share configuration as string, organized sharing/receiving of configuration, moved preference-management to SettingsActivity, Added whats-New-Dialog that informs user about latest changes
Translated some strings, commented some methods in MainActivity
New Icon!
Added comment and removed unused import, peanuts if you ask me
Added Script to automatically render icon in all dimensions
Reformated code and moved Plugboard, EntryWheel, Reflector, Rotor to new package parts
Cleaned repository
Merge branch 'development'
2017-05-05 16:49:30 +02:00
|
|
|
return s;
|
|
|
|
}
|
2015-08-27 01:48:33 +02:00
|
|
|
}
|